From fd1554fc9907ba91bfaa1b23fff43aece80b5eb6 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 8 Apr 2017 13:27:06 +0200 Subject: [PATCH] Commit version 1.4.6 --- admin.php | 1353 ++++++++ backgroundimages/blue_lozange.gif | Bin 0 -> 144 bytes backgroundimages/blue_nebula.jpg | Bin 0 -> 73261 bytes backgroundimages/blue_x.gif | Bin 0 -> 159 bytes backgroundimages/flower.jpg | Bin 0 -> 98123 bytes backgroundimages/green_lozange.gif | Bin 0 -> 144 bytes backgroundimages/nebula.jpg | Bin 0 -> 71655 bytes backgroundimages/red_lozange.gif | Bin 0 -> 144 bytes backgroundimages/red_x.gif | Bin 0 -> 159 bytes backgroundimages/roses.jpg | Bin 0 -> 139924 bytes backgroundimages/sky.jpg | Bin 0 -> 76395 bytes backgroundimages/takelage.jpg | Bin 0 -> 169994 bytes backgroundimages/yellow_lozange.gif | Bin 0 -> 144 bytes changelog.txt | 334 ++ config/config.php | 34 + config/config2.php | 88 + config/metaconfig.php | 34 + content/.gitignore | 0 css/crossout.gif | Bin 0 -> 1149 bytes css/editor.css | 48 + css/overwrite.css | 183 ++ css/redstripes.gif | Bin 0 -> 190 bytes css/stripes.gif | Bin 0 -> 125 bytes css/stylesheet.css | 1080 ++++++ dp/backstripes.gif | Bin 0 -> 234 bytes dp/bg_header.jpg | Bin 0 -> 1792 bytes dp/bullet1.gif | Bin 0 -> 55 bytes dp/bullet2.gif | Bin 0 -> 262 bytes dp/cal-grey.gif | Bin 0 -> 170 bytes dp/cal.gif | Bin 0 -> 127 bytes dp/datepicker.css | 511 +++ dp/datepicker.js | 2898 +++++++++++++++++ dp/datepicker.packed.js | 1 + dp/gradient-e5e5e5-ffffff.gif | Bin 0 -> 526 bytes dp/lang/ar.js | 9 + dp/lang/cs.js | 9 + dp/lang/da.js | 10 + dp/lang/de.js | 10 + dp/lang/en.js | 9 + dp/lang/eo.js | 13 + dp/lang/es.js | 9 + dp/lang/et.js | 23 + dp/lang/fi.js | 7 + dp/lang/fr.js | 69 + dp/lang/he.js | 9 + dp/lang/hu.js | 9 + dp/lang/id.js | 9 + dp/lang/it.js | 11 + dp/lang/kr.js | 9 + dp/lang/lt.js | 8 + dp/lang/lv.js | 9 + dp/lang/nl.js | 9 + dp/lang/no.js | 9 + dp/lang/pl.js | 10 + dp/lang/pt-br.js | 11 + dp/lang/pt.js | 9 + dp/lang/ru.js | 11 + dp/lang/se.js | 9 + dp/lang/si.js | 9 + dp/lang/sk.js | 9 + dp/lang/tr.js | 9 + editorconfigs/ckeditorconfig_for_calendar.php | 93 + editorconfigs/tinymceconfig_for_calendar.php | 110 + .../FCKeditor/FCKeditor_for_Calendar.txt | 11 + .../editor/css/behaviors/disablehandles.htc | 15 + .../editor/css/behaviors/showtableborders.htc | 36 + .../FCKeditor/editor/css/fck_editorarea.css | 110 + .../FCKeditor/editor/css/fck_internal.css | 199 ++ .../editor/css/fck_showtableborders_gecko.css | 49 + .../editor/css/images/block_address.png | Bin 0 -> 288 bytes .../editor/css/images/block_blockquote.png | Bin 0 -> 293 bytes .../FCKeditor/editor/css/images/block_div.png | Bin 0 -> 229 bytes .../FCKeditor/editor/css/images/block_h1.png | Bin 0 -> 218 bytes .../FCKeditor/editor/css/images/block_h2.png | Bin 0 -> 220 bytes .../FCKeditor/editor/css/images/block_h3.png | Bin 0 -> 219 bytes .../FCKeditor/editor/css/images/block_h4.png | Bin 0 -> 229 bytes .../FCKeditor/editor/css/images/block_h5.png | Bin 0 -> 236 bytes .../FCKeditor/editor/css/images/block_h6.png | Bin 0 -> 216 bytes .../FCKeditor/editor/css/images/block_p.png | Bin 0 -> 205 bytes .../FCKeditor/editor/css/images/block_pre.png | Bin 0 -> 223 bytes .../editor/css/images/fck_anchor.gif | Bin 0 -> 184 bytes .../editor/css/images/fck_flashlogo.gif | Bin 0 -> 599 bytes .../editor/css/images/fck_hiddenfield.gif | Bin 0 -> 105 bytes .../editor/css/images/fck_pagebreak.gif | Bin 0 -> 54 bytes .../editor/css/images/fck_plugin.gif | Bin 0 -> 1709 bytes .../dialog/common/fck_dialog_common.css | 85 + .../editor/dialog/common/fck_dialog_common.js | 347 ++ .../editor/dialog/common/images/locked.gif | Bin 0 -> 74 bytes .../editor/dialog/common/images/reset.gif | Bin 0 -> 104 bytes .../editor/dialog/common/images/unlocked.gif | Bin 0 -> 75 bytes .../FCKeditor/editor/dialog/fck_about.html | 161 + .../FCKeditor/editor/dialog/fck_anchor.html | 220 ++ .../FCKeditor/editor/dialog/fck_button.html | 104 + .../FCKeditor/editor/dialog/fck_checkbox.html | 104 + .../editor/dialog/fck_colorselector.html | 172 + .../FCKeditor/editor/dialog/fck_div.html | 396 +++ .../FCKeditor/editor/dialog/fck_docprops.html | 600 ++++ .../FCKeditor/editor/dialog/fck_form.html | 109 + .../editor/dialog/fck_hiddenfield.html | 115 + .../FCKeditor/editor/dialog/fck_image.html | 276 ++ .../editor/dialog/fck_image/fck_image.js | 512 +++ .../dialog/fck_image/fck_image_preview.html | 72 + .../FCKeditor/editor/dialog/fck_link.html | 295 ++ .../editor/dialog/fck_link/fck_link.js | 893 +++++ .../FCKeditor/editor/dialog/fck_listprop.html | 120 + .../FCKeditor/editor/dialog/fck_paste.html | 347 ++ .../editor/dialog/fck_radiobutton.html | 104 + .../FCKeditor/editor/dialog/fck_replace.html | 650 ++++ .../FCKeditor/editor/dialog/fck_scayt.html | 746 +++++ .../editor/dialog/fck_scayt/scayt_dialog.css | 169 + .../FCKeditor/editor/dialog/fck_select.html | 180 + .../editor/dialog/fck_select/fck_select.js | 194 ++ .../FCKeditor/editor/dialog/fck_smiley.html | 111 + .../FCKeditor/editor/dialog/fck_source.html | 68 + .../editor/dialog/fck_specialchar.html | 121 + .../editor/dialog/fck_spellerpages.html | 70 + .../FCKeditor/editor/dialog/fck_table.html | 440 +++ .../editor/dialog/fck_tablecell.html | 293 ++ .../FCKeditor/editor/dialog/fck_template.html | 242 ++ .../dialog/fck_template/images/template1.gif | Bin 0 -> 375 bytes .../dialog/fck_template/images/template2.gif | Bin 0 -> 333 bytes .../dialog/fck_template/images/template3.gif | Bin 0 -> 422 bytes .../dialog/fck_template/images/template4.gif | Bin 0 -> 606 bytes .../dialog/fck_template/images/template5.gif | Bin 0 -> 717 bytes .../FCKeditor/editor/dialog/fck_textarea.html | 94 + .../editor/dialog/fck_textfield.html | 136 + .../FCKeditor/editor/dtd/fck_dtd_test.html | 41 + .../FCKeditor/editor/dtd/fck_xhtml10strict.js | 116 + .../editor/dtd/fck_xhtml10transitional.js | 140 + fckeditor/FCKeditor/editor/fckdebug.html | 153 + fckeditor/FCKeditor/editor/fckdialog.html | 819 +++++ fckeditor/FCKeditor/editor/fckeditor.html | 317 ++ .../filemanager/browser/cmsimple/browser.css | 99 + .../filemanager/browser/cmsimple/browser.html | 202 ++ .../browser/cmsimple/frmactualfolder.html | 80 + .../browser/cmsimple/frmcreatefolder.html | 122 + .../browser/cmsimple/frmfolders.html | 221 ++ .../browser/cmsimple/frmresourceslist.html | 247 ++ .../browser/cmsimple/frmresourcetype.html | 73 + .../browser/cmsimple/frmupload.html | 108 + .../browser/cmsimple/images/ButtonArrow.gif | Bin 0 -> 138 bytes .../browser/cmsimple/images/Downloads.png | Bin 0 -> 1837 bytes .../browser/cmsimple/images/File.png | Bin 0 -> 1658 bytes .../browser/cmsimple/images/Flash.png | Bin 0 -> 2044 bytes .../browser/cmsimple/images/Folder.gif | Bin 0 -> 128 bytes .../browser/cmsimple/images/Folder32.gif | Bin 0 -> 281 bytes .../browser/cmsimple/images/FolderOpened.gif | Bin 0 -> 132 bytes .../cmsimple/images/FolderOpened32.gif | Bin 0 -> 264 bytes .../browser/cmsimple/images/FolderUp.gif | Bin 0 -> 132 bytes .../browser/cmsimple/images/Image.png | Bin 0 -> 2483 bytes .../browser/cmsimple/images/Media.png | Bin 0 -> 1797 bytes .../images/applications-graphics2.png | Bin 0 -> 1673 bytes .../browser/cmsimple/images/edit-delete.png | Bin 0 -> 325 bytes .../browser/cmsimple/images/edit-delete1.png | Bin 0 -> 1211 bytes .../browser/cmsimple/images/edit-delete2.png | Bin 0 -> 680 bytes .../browser/cmsimple/images/folder-new1.png | Bin 0 -> 838 bytes .../browser/cmsimple/images/folder-new2.png | Bin 0 -> 1399 bytes .../browser/cmsimple/images/folder-open.png | Bin 0 -> 625 bytes .../browser/cmsimple/images/folder-open1.png | Bin 0 -> 905 bytes .../browser/cmsimple/images/folder-open2.png | Bin 0 -> 1184 bytes .../browser/cmsimple/images/folder.png | Bin 0 -> 581 bytes .../browser/cmsimple/images/folder1.png | Bin 0 -> 848 bytes .../browser/cmsimple/images/go-home2.png | Bin 0 -> 1774 bytes .../browser/cmsimple/images/go-jump.png | Bin 0 -> 723 bytes .../browser/cmsimple/images/go-previous.png | Bin 0 -> 655 bytes .../browser/cmsimple/images/go-top1.png | Bin 0 -> 917 bytes .../browser/cmsimple/images/go-up1.png | Bin 0 -> 877 bytes .../browser/cmsimple/images/icons/32/ai.gif | Bin 0 -> 1140 bytes .../browser/cmsimple/images/icons/32/avi.gif | Bin 0 -> 454 bytes .../browser/cmsimple/images/icons/32/bmp.gif | Bin 0 -> 709 bytes .../browser/cmsimple/images/icons/32/cs.gif | Bin 0 -> 224 bytes .../cmsimple/images/icons/32/default.icon.gif | Bin 0 -> 177 bytes .../browser/cmsimple/images/icons/32/dll.gif | Bin 0 -> 258 bytes .../browser/cmsimple/images/icons/32/doc.gif | Bin 0 -> 260 bytes .../browser/cmsimple/images/icons/32/exe.gif | Bin 0 -> 170 bytes .../browser/cmsimple/images/icons/32/fla.gif | Bin 0 -> 946 bytes .../browser/cmsimple/images/icons/32/gif.gif | Bin 0 -> 704 bytes .../browser/cmsimple/images/icons/32/htm.gif | Bin 0 -> 1527 bytes .../browser/cmsimple/images/icons/32/html.gif | Bin 0 -> 1527 bytes .../browser/cmsimple/images/icons/32/jpg.gif | Bin 0 -> 463 bytes .../browser/cmsimple/images/icons/32/js.gif | Bin 0 -> 274 bytes .../browser/cmsimple/images/icons/32/mdb.gif | Bin 0 -> 274 bytes .../browser/cmsimple/images/icons/32/mp3.gif | Bin 0 -> 454 bytes .../browser/cmsimple/images/icons/32/pdf.gif | Bin 0 -> 567 bytes .../browser/cmsimple/images/icons/32/png.gif | Bin 0 -> 464 bytes .../browser/cmsimple/images/icons/32/ppt.gif | Bin 0 -> 254 bytes .../browser/cmsimple/images/icons/32/rdp.gif | Bin 0 -> 1493 bytes .../browser/cmsimple/images/icons/32/swf.gif | Bin 0 -> 725 bytes .../browser/cmsimple/images/icons/32/swt.gif | Bin 0 -> 724 bytes .../browser/cmsimple/images/icons/32/txt.gif | Bin 0 -> 213 bytes .../browser/cmsimple/images/icons/32/vsd.gif | Bin 0 -> 277 bytes .../browser/cmsimple/images/icons/32/xls.gif | Bin 0 -> 271 bytes .../browser/cmsimple/images/icons/32/xml.gif | Bin 0 -> 408 bytes .../browser/cmsimple/images/icons/32/zip.gif | Bin 0 -> 368 bytes .../browser/cmsimple/images/icons/ai.gif | Bin 0 -> 403 bytes .../browser/cmsimple/images/icons/avi.gif | Bin 0 -> 249 bytes .../browser/cmsimple/images/icons/bmp.gif | Bin 0 -> 126 bytes .../browser/cmsimple/images/icons/cs.gif | Bin 0 -> 128 bytes .../cmsimple/images/icons/default.icon.gif | Bin 0 -> 113 bytes .../browser/cmsimple/images/icons/dll.gif | Bin 0 -> 132 bytes .../browser/cmsimple/images/icons/doc.gif | Bin 0 -> 140 bytes .../browser/cmsimple/images/icons/exe.gif | Bin 0 -> 109 bytes .../browser/cmsimple/images/icons/fla.gif | Bin 0 -> 382 bytes .../browser/cmsimple/images/icons/gif.gif | Bin 0 -> 125 bytes .../browser/cmsimple/images/icons/htm.gif | Bin 0 -> 621 bytes .../browser/cmsimple/images/icons/html.gif | Bin 0 -> 621 bytes .../browser/cmsimple/images/icons/jpg.gif | Bin 0 -> 125 bytes .../browser/cmsimple/images/icons/js.gif | Bin 0 -> 139 bytes .../browser/cmsimple/images/icons/mdb.gif | Bin 0 -> 146 bytes .../browser/cmsimple/images/icons/mp3.gif | Bin 0 -> 249 bytes .../browser/cmsimple/images/icons/pdf.gif | Bin 0 -> 230 bytes .../browser/cmsimple/images/icons/png.gif | Bin 0 -> 125 bytes .../browser/cmsimple/images/icons/ppt.gif | Bin 0 -> 139 bytes .../browser/cmsimple/images/icons/rdp.gif | Bin 0 -> 606 bytes .../browser/cmsimple/images/icons/swf.gif | Bin 0 -> 388 bytes .../browser/cmsimple/images/icons/swt.gif | Bin 0 -> 388 bytes .../browser/cmsimple/images/icons/txt.gif | Bin 0 -> 122 bytes .../browser/cmsimple/images/icons/vsd.gif | Bin 0 -> 136 bytes .../browser/cmsimple/images/icons/xls.gif | Bin 0 -> 138 bytes .../browser/cmsimple/images/icons/xml.gif | Bin 0 -> 231 bytes .../browser/cmsimple/images/icons/zip.gif | Bin 0 -> 235 bytes .../browser/cmsimple/images/spacer.gif | Bin 0 -> 43 bytes .../browser/cmsimple/images/user-home2.png | Bin 0 -> 1416 bytes .../filemanager/browser/cmsimple/js/common.js | 88 + .../filemanager/browser/cmsimple/js/fckxml.js | 147 + .../filemanager/connectors/php/basexml.php | 99 + .../filemanager/connectors/php/commands.php | 306 ++ .../filemanager/connectors/php/config.php | 226 ++ .../filemanager/connectors/php/connector.php | 90 + .../editor/filemanager/connectors/php/io.php | 303 ++ .../filemanager/connectors/php/phpcompat.php | 17 + .../filemanager/connectors/php/upload.php | 59 + .../filemanager/connectors/php/util.php | 220 ++ .../filemanager/connectors/test.html.txt | 210 ++ .../connectors/uploadtest.html.txt | 192 ++ fckeditor/FCKeditor/editor/images/anchor.gif | Bin 0 -> 184 bytes .../FCKeditor/editor/images/arrow_ltr.gif | Bin 0 -> 49 bytes .../FCKeditor/editor/images/arrow_rtl.gif | Bin 0 -> 49 bytes .../editor/images/smiley/msn/angel_smile.gif | Bin 0 -> 445 bytes .../editor/images/smiley/msn/angry_smile.gif | Bin 0 -> 453 bytes .../editor/images/smiley/msn/broken_heart.gif | Bin 0 -> 423 bytes .../editor/images/smiley/msn/cake.gif | Bin 0 -> 453 bytes .../images/smiley/msn/confused_smile.gif | Bin 0 -> 322 bytes .../editor/images/smiley/msn/cry_smile.gif | Bin 0 -> 473 bytes .../editor/images/smiley/msn/devil_smile.gif | Bin 0 -> 444 bytes .../images/smiley/msn/embaressed_smile.gif | Bin 0 -> 1077 bytes .../editor/images/smiley/msn/envelope.gif | Bin 0 -> 1030 bytes .../editor/images/smiley/msn/heart.gif | Bin 0 -> 1012 bytes .../editor/images/smiley/msn/kiss.gif | Bin 0 -> 978 bytes .../editor/images/smiley/msn/lightbulb.gif | Bin 0 -> 303 bytes .../editor/images/smiley/msn/omg_smile.gif | Bin 0 -> 342 bytes .../images/smiley/msn/regular_smile.gif | Bin 0 -> 1036 bytes .../editor/images/smiley/msn/sad_smile.gif | Bin 0 -> 1039 bytes .../editor/images/smiley/msn/shades_smile.gif | Bin 0 -> 1059 bytes .../editor/images/smiley/msn/teeth_smile.gif | Bin 0 -> 1064 bytes .../editor/images/smiley/msn/thumbs_down.gif | Bin 0 -> 992 bytes .../editor/images/smiley/msn/thumbs_up.gif | Bin 0 -> 989 bytes .../editor/images/smiley/msn/tounge_smile.gif | Bin 0 -> 1055 bytes .../smiley/msn/whatchutalkingabout_smile.gif | Bin 0 -> 1034 bytes .../editor/images/smiley/msn/wink_smile.gif | Bin 0 -> 1041 bytes fckeditor/FCKeditor/editor/images/spacer.gif | Bin 0 -> 43 bytes fckeditor/FCKeditor/editor/js/fckadobeair.js | 176 + .../editor/js/fckeditorcode_gecko.js | 109 + .../FCKeditor/editor/js/fckeditorcode_ie.js | 110 + fckeditor/FCKeditor/editor/lang/da.js | 539 +++ fckeditor/FCKeditor/editor/lang/de.js | 539 +++ fckeditor/FCKeditor/editor/lang/en.js | 539 +++ fckeditor/FCKeditor/editor/lang/fr.js | 539 +++ fckeditor/FCKeditor/editor/lang/it.js | 539 +++ fckeditor/FCKeditor/editor/lang/nl.js | 539 +++ fckeditor/FCKeditor/editor/lang/sk.js | 539 +++ .../editor/plugins/autogrow/fckplugin.js | 111 + .../plugins/dragresizetable/fckplugin.js | 529 +++ .../editor/plugins/nbsp/CHANGELOG.txt | 3 + .../editor/plugins/nbsp/fckplugin.js | 48 + .../FCKeditor/editor/plugins/nbsp/lang/de.js | 20 + .../FCKeditor/editor/plugins/nbsp/lang/en.js | 19 + .../FCKeditor/editor/plugins/nbsp/lang/hu.js | 21 + .../FCKeditor/editor/plugins/nbsp/lang/pl.js | 19 + .../FCKeditor/editor/plugins/nbsp/lang/sk.js | 19 + .../FCKeditor/editor/plugins/nbsp/nbsp.gif | Bin 0 -> 66 bytes .../editor/plugins/nbsp/readme_de.txt | 28 + .../editor/plugins/nbsp/readme_en.txt | 27 + .../editor/plugins/nbsp/readme_pl.txt | 27 + .../plugins/placeholder/fck_placeholder.html | 105 + .../editor/plugins/placeholder/fckplugin.js | 187 ++ .../editor/plugins/placeholder/lang/de.js | 27 + .../editor/plugins/placeholder/lang/en.js | 27 + .../editor/plugins/placeholder/lang/es.js | 27 + .../editor/plugins/placeholder/lang/fr.js | 27 + .../editor/plugins/placeholder/lang/hu.js | 27 + .../editor/plugins/placeholder/lang/it.js | 27 + .../editor/plugins/placeholder/lang/pl.js | 27 + .../editor/plugins/placeholder/lang/sk.js | 27 + .../plugins/placeholder/placeholder.gif | Bin 0 -> 96 bytes .../plugins/simplecommands/fckplugin.js | 29 + .../editor/plugins/sitelink/fck_sitelink.gif | Bin 0 -> 206 bytes .../editor/plugins/sitelink/fckplugin.js | 17 + .../editor/plugins/sitelink/lang/de.js | 2 + .../editor/plugins/sitelink/lang/en.js | 2 + .../editor/plugins/sitelink/lang/hu.js | 2 + .../editor/plugins/sitelink/lang/sk.js | 2 + .../editor/plugins/sitelink/sitelink.js | 98 + .../editor/plugins/sitelink/sitelink.php | 226 ++ .../editor/skins/_fckviewstrips.html | 121 + .../editor/skins/default/fck_dialog.css | 402 +++ .../editor/skins/default/fck_dialog_ie6.js | 110 + .../editor/skins/default/fck_editor.css | 465 +++ .../editor/skins/default/fck_strip.gif | Bin 0 -> 5175 bytes .../skins/default/images/dialog.sides.gif | Bin 0 -> 48 bytes .../skins/default/images/dialog.sides.png | Bin 0 -> 178 bytes .../skins/default/images/dialog.sides.rtl.png | Bin 0 -> 181 bytes .../editor/skins/default/images/sprites.gif | Bin 0 -> 959 bytes .../editor/skins/default/images/sprites.png | Bin 0 -> 3250 bytes .../default/images/toolbar.arrowright.gif | Bin 0 -> 53 bytes .../default/images/toolbar.buttonarrow.gif | Bin 0 -> 46 bytes .../skins/default/images/toolbar.collapse.gif | Bin 0 -> 152 bytes .../skins/default/images/toolbar.end.gif | Bin 0 -> 43 bytes .../skins/default/images/toolbar.expand.gif | Bin 0 -> 152 bytes .../default/images/toolbar.separator.gif | Bin 0 -> 58 bytes .../skins/default/images/toolbar.start.gif | Bin 0 -> 105 bytes fckeditor/FCKeditor/fckconfig.js | 325 ++ fckeditor/FCKeditor/fckeditor.js | 330 ++ fckeditor/FCKeditor/fckeditor.php | 32 + fckeditor/FCKeditor/fckeditor_php4.php | 263 ++ fckeditor/FCKeditor/fckeditor_php5.php | 258 ++ fckeditor/FCKeditor/license.txt | 1246 +++++++ fckeditor/fckconfig_calendar.js | 207 ++ fckeditor/fckeditor_for_calendar.php | 126 + fckeditor/fckstyles_calendar.xml | 88 + fckeditor/fcktemplate_calendar.xml | 42 + help/angle.gif | Bin 0 -> 150 bytes help/fckeditor_image_insert.jpg | Bin 0 -> 39250 bytes help/help_en.htm | 708 ++++ help/multicalendar_3-3.jpg | Bin 0 -> 19283 bytes help/multicalendar_3.jpg | Bin 0 -> 16234 bytes help/tinymce_image_class.jpg | Bin 0 -> 57808 bytes help/tinymce_image_style.jpg | Bin 0 -> 42644 bytes help/year_-4.jpg | Bin 0 -> 62471 bytes images/1/external_link.gif | Bin 0 -> 134 bytes images/1/info.gif | Bin 0 -> 989 bytes images/1/internal_link.gif | Bin 0 -> 135 bytes images/1past/external_link.gif | Bin 0 -> 134 bytes images/1past/info.gif | Bin 0 -> 317 bytes images/1past/internal_link.gif | Bin 0 -> 135 bytes images/2/external_link.gif | Bin 0 -> 131 bytes images/2/info.gif | Bin 0 -> 312 bytes images/2/internal_link.gif | Bin 0 -> 132 bytes images/2past/external_link.gif | Bin 0 -> 130 bytes images/2past/info.gif | Bin 0 -> 984 bytes images/2past/internal_link.gif | Bin 0 -> 132 bytes images/3/external_link.gif | Bin 0 -> 148 bytes images/3/info.gif | Bin 0 -> 301 bytes images/3/internal_link.gif | Bin 0 -> 174 bytes images/3past/external_link.gif | Bin 0 -> 148 bytes images/3past/info.gif | Bin 0 -> 226 bytes images/3past/internal_link.gif | Bin 0 -> 163 bytes images/4/external_link.gif | Bin 0 -> 250 bytes images/4/info.gif | Bin 0 -> 527 bytes images/4/internal_link.gif | Bin 0 -> 899 bytes images/4past/external_link.gif | Bin 0 -> 240 bytes images/4past/info.gif | Bin 0 -> 165 bytes images/4past/internal_link.gif | Bin 0 -> 142 bytes images/5/external_link.gif | Bin 0 -> 139 bytes images/5/info.gif | Bin 0 -> 985 bytes images/5/internal_link.gif | Bin 0 -> 263 bytes images/5past/external_link.gif | Bin 0 -> 887 bytes images/5past/info.gif | Bin 0 -> 984 bytes images/5past/internal_link.gif | Bin 0 -> 237 bytes images/6/external_link.png | Bin 0 -> 961 bytes images/6/info.png | Bin 0 -> 3423 bytes images/6/internal_link.png | Bin 0 -> 600 bytes images/6past/external_link.png | Bin 0 -> 906 bytes images/6past/info.png | Bin 0 -> 3308 bytes images/6past/internal_link.png | Bin 0 -> 499 bytes images/7/external_link.gif | Bin 0 -> 146 bytes images/7/info.png | Bin 0 -> 3423 bytes images/7/internal_link.gif | Bin 0 -> 133 bytes images/7past/external_link.gif | Bin 0 -> 146 bytes images/7past/info.png | Bin 0 -> 3308 bytes images/7past/internal_link.gif | Bin 0 -> 134 bytes images/Juri_Gagarin_thumb.jpg | Bin 0 -> 4104 bytes images/add.png | Bin 0 -> 769 bytes images/copy.png | Bin 0 -> 704 bytes images/delete.png | Bin 0 -> 715 bytes images/help_icon.png | Bin 0 -> 899 bytes images/minus_icon.gif | Bin 0 -> 97 bytes images/ok.png | Bin 0 -> 740 bytes images/pdf.gif | Bin 0 -> 650 bytes images/pdf_past.gif | Bin 0 -> 1023 bytes images/plus_icon.gif | Bin 0 -> 104 bytes images/template_icon.gif | Bin 0 -> 521 bytes images/ul-list-button.gif | Bin 0 -> 82 bytes images/up.gif | Bin 0 -> 97 bytes images/word.gif | Bin 0 -> 184 bytes images/word_past.gif | Bin 0 -> 925 bytes includes/calendar.php | 1081 ++++++ includes/calendarconfig.php | 872 +++++ includes/editevents.php | 380 +++ includes/eventform.php | 1041 ++++++ includes/eventlist.php | 1282 ++++++++ includes/eventlistconfig.php | 549 ++++ includes/holidayconfig.php | 106 + includes/jquery.marquee.js | 168 + includes/loadeventfile.php | 183 ++ includes/marqueeconfig.php | 225 ++ includes/nextevent.php | 351 ++ includes/presets.php | 382 +++ includes/readcss.php | 235 ++ includes/saveeventfile.php | 141 + includes/simplemarkup.php | 156 + index.php | 423 +++ jscolor/arrow.gif | Bin 0 -> 66 bytes jscolor/calendarcolor.js | 926 ++++++ jscolor/cross.gif | Bin 0 -> 83 bytes jscolor/hs.png | Bin 0 -> 2684 bytes jscolor/hv.png | Bin 0 -> 2865 bytes jscolor/jscolor.js | 926 ++++++ languages/.php | 0 languages/2site.php | 322 ++ languages/cs.php | 281 ++ languages/da.php | 63 + languages/de.php | 285 ++ languages/default.php | 328 ++ languages/en.php | 11 + languages/fr.php | 41 + languages/it.php | 37 + languages/nl.php | 39 + languages/sk.php | 37 + languages/yogaschool.php | 322 ++ licence.txt | 20 + readme.txt | 92 + templates/blue_nebula.calendar.php | 79 + templates/boxes.tpl | 93 + templates/brown_nebula.calendar.php | 79 + templates/clean.calendar.php | 66 + templates/colorful.eventlist.php | 43 + templates/flower.calendar.php | 83 + templates/green.eventlist.php | 42 + templates/minimum.eventlist.php | 46 + templates/oldnema.tpl | 89 + templates/oldstylecolors.eventlist.php | 42 + templates/simple.tpl | 47 + version.nfo | 1 + 444 files changed, 43418 insertions(+) create mode 100644 admin.php create mode 100644 backgroundimages/blue_lozange.gif create mode 100644 backgroundimages/blue_nebula.jpg create mode 100644 backgroundimages/blue_x.gif create mode 100644 backgroundimages/flower.jpg create mode 100644 backgroundimages/green_lozange.gif create mode 100644 backgroundimages/nebula.jpg create mode 100644 backgroundimages/red_lozange.gif create mode 100644 backgroundimages/red_x.gif create mode 100644 backgroundimages/roses.jpg create mode 100644 backgroundimages/sky.jpg create mode 100644 backgroundimages/takelage.jpg create mode 100644 backgroundimages/yellow_lozange.gif create mode 100644 changelog.txt create mode 100644 config/config.php create mode 100644 config/config2.php create mode 100644 config/metaconfig.php create mode 100644 content/.gitignore create mode 100644 css/crossout.gif create mode 100644 css/editor.css create mode 100644 css/overwrite.css create mode 100644 css/redstripes.gif create mode 100644 css/stripes.gif create mode 100644 css/stylesheet.css create mode 100644 dp/backstripes.gif create mode 100644 dp/bg_header.jpg create mode 100644 dp/bullet1.gif create mode 100644 dp/bullet2.gif create mode 100644 dp/cal-grey.gif create mode 100644 dp/cal.gif create mode 100644 dp/datepicker.css create mode 100644 dp/datepicker.js create mode 100644 dp/datepicker.packed.js create mode 100644 dp/gradient-e5e5e5-ffffff.gif create mode 100644 dp/lang/ar.js create mode 100644 dp/lang/cs.js create mode 100644 dp/lang/da.js create mode 100644 dp/lang/de.js create mode 100644 dp/lang/en.js create mode 100644 dp/lang/eo.js create mode 100644 dp/lang/es.js create mode 100644 dp/lang/et.js create mode 100644 dp/lang/fi.js create mode 100644 dp/lang/fr.js create mode 100644 dp/lang/he.js create mode 100644 dp/lang/hu.js create mode 100644 dp/lang/id.js create mode 100644 dp/lang/it.js create mode 100644 dp/lang/kr.js create mode 100644 dp/lang/lt.js create mode 100644 dp/lang/lv.js create mode 100644 dp/lang/nl.js create mode 100644 dp/lang/no.js create mode 100644 dp/lang/pl.js create mode 100644 dp/lang/pt-br.js create mode 100644 dp/lang/pt.js create mode 100644 dp/lang/ru.js create mode 100644 dp/lang/se.js create mode 100644 dp/lang/si.js create mode 100644 dp/lang/sk.js create mode 100644 dp/lang/tr.js create mode 100644 editorconfigs/ckeditorconfig_for_calendar.php create mode 100644 editorconfigs/tinymceconfig_for_calendar.php create mode 100644 fckeditor/FCKeditor/FCKeditor_for_Calendar.txt create mode 100644 fckeditor/FCKeditor/editor/css/behaviors/disablehandles.htc create mode 100644 fckeditor/FCKeditor/editor/css/behaviors/showtableborders.htc create mode 100644 fckeditor/FCKeditor/editor/css/fck_editorarea.css create mode 100644 fckeditor/FCKeditor/editor/css/fck_internal.css create mode 100644 fckeditor/FCKeditor/editor/css/fck_showtableborders_gecko.css create mode 100644 fckeditor/FCKeditor/editor/css/images/block_address.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_blockquote.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_div.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_h1.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_h2.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_h3.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_h4.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_h5.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_h6.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_p.png create mode 100644 fckeditor/FCKeditor/editor/css/images/block_pre.png create mode 100644 fckeditor/FCKeditor/editor/css/images/fck_anchor.gif create mode 100644 fckeditor/FCKeditor/editor/css/images/fck_flashlogo.gif create mode 100644 fckeditor/FCKeditor/editor/css/images/fck_hiddenfield.gif create mode 100644 fckeditor/FCKeditor/editor/css/images/fck_pagebreak.gif create mode 100644 fckeditor/FCKeditor/editor/css/images/fck_plugin.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.css create mode 100644 fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.js create mode 100644 fckeditor/FCKeditor/editor/dialog/common/images/locked.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/common/images/reset.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/common/images/unlocked.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_about.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_anchor.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_button.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_checkbox.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_colorselector.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_div.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_docprops.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_form.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_hiddenfield.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_image.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_image/fck_image.js create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_image/fck_image_preview.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_link.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_link/fck_link.js create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_listprop.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_paste.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_radiobutton.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_replace.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_scayt.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_scayt/scayt_dialog.css create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_select.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_select/fck_select.js create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_smiley.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_source.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_specialchar.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_spellerpages.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_table.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_tablecell.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_template.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_template/images/template1.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_template/images/template2.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_template/images/template3.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_template/images/template4.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_template/images/template5.gif create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_textarea.html create mode 100644 fckeditor/FCKeditor/editor/dialog/fck_textfield.html create mode 100644 fckeditor/FCKeditor/editor/dtd/fck_dtd_test.html create mode 100644 fckeditor/FCKeditor/editor/dtd/fck_xhtml10strict.js create mode 100644 fckeditor/FCKeditor/editor/dtd/fck_xhtml10transitional.js create mode 100644 fckeditor/FCKeditor/editor/fckdebug.html create mode 100644 fckeditor/FCKeditor/editor/fckdialog.html create mode 100644 fckeditor/FCKeditor/editor/fckeditor.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.css create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmactualfolder.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmcreatefolder.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmfolders.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourceslist.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourcetype.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmupload.html create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/ButtonArrow.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Downloads.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/File.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Flash.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Folder.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Folder32.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderOpened.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderOpened32.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderUp.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Image.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Media.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/applications-graphics2.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/edit-delete.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/edit-delete1.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/edit-delete2.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-new1.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-new2.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open1.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open2.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder1.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-home2.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-jump.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-previous.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-top1.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-up1.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/ai.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/avi.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/bmp.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/cs.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/default.icon.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/dll.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/doc.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/exe.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/fla.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/gif.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/htm.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/html.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/jpg.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/js.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/mdb.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/mp3.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/pdf.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/png.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/ppt.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/rdp.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/swf.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/swt.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/txt.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/vsd.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/xls.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/xml.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/zip.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/ai.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/avi.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/bmp.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/cs.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/default.icon.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/dll.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/doc.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/exe.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/fla.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/gif.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/htm.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/html.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/jpg.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/js.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/mdb.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/mp3.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/pdf.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/png.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/ppt.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/rdp.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/swf.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/swt.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/txt.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/vsd.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/xls.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/xml.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/zip.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/spacer.gif create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/user-home2.png create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/js/common.js create mode 100644 fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/js/fckxml.js create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/basexml.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/commands.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/config.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/connector.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/io.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/phpcompat.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/upload.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/php/util.php create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/test.html.txt create mode 100644 fckeditor/FCKeditor/editor/filemanager/connectors/uploadtest.html.txt create mode 100644 fckeditor/FCKeditor/editor/images/anchor.gif create mode 100644 fckeditor/FCKeditor/editor/images/arrow_ltr.gif create mode 100644 fckeditor/FCKeditor/editor/images/arrow_rtl.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/angel_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/angry_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/broken_heart.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/cake.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/confused_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/cry_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/devil_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/embaressed_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/envelope.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/heart.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/kiss.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/lightbulb.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/omg_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/sad_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/shades_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/thumbs_down.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/thumbs_up.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/tounge_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif create mode 100644 fckeditor/FCKeditor/editor/images/spacer.gif create mode 100644 fckeditor/FCKeditor/editor/js/fckadobeair.js create mode 100644 fckeditor/FCKeditor/editor/js/fckeditorcode_gecko.js create mode 100644 fckeditor/FCKeditor/editor/js/fckeditorcode_ie.js create mode 100644 fckeditor/FCKeditor/editor/lang/da.js create mode 100644 fckeditor/FCKeditor/editor/lang/de.js create mode 100644 fckeditor/FCKeditor/editor/lang/en.js create mode 100644 fckeditor/FCKeditor/editor/lang/fr.js create mode 100644 fckeditor/FCKeditor/editor/lang/it.js create mode 100644 fckeditor/FCKeditor/editor/lang/nl.js create mode 100644 fckeditor/FCKeditor/editor/lang/sk.js create mode 100644 fckeditor/FCKeditor/editor/plugins/autogrow/fckplugin.js create mode 100644 fckeditor/FCKeditor/editor/plugins/dragresizetable/fckplugin.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/CHANGELOG.txt create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/fckplugin.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/lang/de.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/lang/en.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/lang/hu.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/lang/pl.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/lang/sk.js create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/nbsp.gif create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/readme_de.txt create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/readme_en.txt create mode 100644 fckeditor/FCKeditor/editor/plugins/nbsp/readme_pl.txt create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/fck_placeholder.html create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/fckplugin.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/de.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/en.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/es.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/fr.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/hu.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/it.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/pl.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/lang/sk.js create mode 100644 fckeditor/FCKeditor/editor/plugins/placeholder/placeholder.gif create mode 100644 fckeditor/FCKeditor/editor/plugins/simplecommands/fckplugin.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/fck_sitelink.gif create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/fckplugin.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/lang/de.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/lang/en.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/lang/hu.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/lang/sk.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.js create mode 100644 fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.php create mode 100644 fckeditor/FCKeditor/editor/skins/_fckviewstrips.html create mode 100644 fckeditor/FCKeditor/editor/skins/default/fck_dialog.css create mode 100644 fckeditor/FCKeditor/editor/skins/default/fck_dialog_ie6.js create mode 100644 fckeditor/FCKeditor/editor/skins/default/fck_editor.css create mode 100644 fckeditor/FCKeditor/editor/skins/default/fck_strip.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.png create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.rtl.png create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/sprites.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/sprites.png create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.arrowright.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.collapse.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.end.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.expand.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.separator.gif create mode 100644 fckeditor/FCKeditor/editor/skins/default/images/toolbar.start.gif create mode 100644 fckeditor/FCKeditor/fckconfig.js create mode 100644 fckeditor/FCKeditor/fckeditor.js create mode 100644 fckeditor/FCKeditor/fckeditor.php create mode 100644 fckeditor/FCKeditor/fckeditor_php4.php create mode 100644 fckeditor/FCKeditor/fckeditor_php5.php create mode 100644 fckeditor/FCKeditor/license.txt create mode 100644 fckeditor/fckconfig_calendar.js create mode 100644 fckeditor/fckeditor_for_calendar.php create mode 100644 fckeditor/fckstyles_calendar.xml create mode 100644 fckeditor/fcktemplate_calendar.xml create mode 100644 help/angle.gif create mode 100644 help/fckeditor_image_insert.jpg create mode 100644 help/help_en.htm create mode 100644 help/multicalendar_3-3.jpg create mode 100644 help/multicalendar_3.jpg create mode 100644 help/tinymce_image_class.jpg create mode 100644 help/tinymce_image_style.jpg create mode 100644 help/year_-4.jpg create mode 100644 images/1/external_link.gif create mode 100644 images/1/info.gif create mode 100644 images/1/internal_link.gif create mode 100644 images/1past/external_link.gif create mode 100644 images/1past/info.gif create mode 100644 images/1past/internal_link.gif create mode 100644 images/2/external_link.gif create mode 100644 images/2/info.gif create mode 100644 images/2/internal_link.gif create mode 100644 images/2past/external_link.gif create mode 100644 images/2past/info.gif create mode 100644 images/2past/internal_link.gif create mode 100644 images/3/external_link.gif create mode 100644 images/3/info.gif create mode 100644 images/3/internal_link.gif create mode 100644 images/3past/external_link.gif create mode 100644 images/3past/info.gif create mode 100644 images/3past/internal_link.gif create mode 100644 images/4/external_link.gif create mode 100644 images/4/info.gif create mode 100644 images/4/internal_link.gif create mode 100644 images/4past/external_link.gif create mode 100644 images/4past/info.gif create mode 100644 images/4past/internal_link.gif create mode 100644 images/5/external_link.gif create mode 100644 images/5/info.gif create mode 100644 images/5/internal_link.gif create mode 100644 images/5past/external_link.gif create mode 100644 images/5past/info.gif create mode 100644 images/5past/internal_link.gif create mode 100644 images/6/external_link.png create mode 100644 images/6/info.png create mode 100644 images/6/internal_link.png create mode 100644 images/6past/external_link.png create mode 100644 images/6past/info.png create mode 100644 images/6past/internal_link.png create mode 100644 images/7/external_link.gif create mode 100644 images/7/info.png create mode 100644 images/7/internal_link.gif create mode 100644 images/7past/external_link.gif create mode 100644 images/7past/info.png create mode 100644 images/7past/internal_link.gif create mode 100644 images/Juri_Gagarin_thumb.jpg create mode 100644 images/add.png create mode 100644 images/copy.png create mode 100644 images/delete.png create mode 100644 images/help_icon.png create mode 100644 images/minus_icon.gif create mode 100644 images/ok.png create mode 100644 images/pdf.gif create mode 100644 images/pdf_past.gif create mode 100644 images/plus_icon.gif create mode 100644 images/template_icon.gif create mode 100644 images/ul-list-button.gif create mode 100644 images/up.gif create mode 100644 images/word.gif create mode 100644 images/word_past.gif create mode 100644 includes/calendar.php create mode 100644 includes/calendarconfig.php create mode 100644 includes/editevents.php create mode 100644 includes/eventform.php create mode 100644 includes/eventlist.php create mode 100644 includes/eventlistconfig.php create mode 100644 includes/holidayconfig.php create mode 100644 includes/jquery.marquee.js create mode 100644 includes/loadeventfile.php create mode 100644 includes/marqueeconfig.php create mode 100644 includes/nextevent.php create mode 100644 includes/presets.php create mode 100644 includes/readcss.php create mode 100644 includes/saveeventfile.php create mode 100644 includes/simplemarkup.php create mode 100644 index.php create mode 100644 jscolor/arrow.gif create mode 100644 jscolor/calendarcolor.js create mode 100644 jscolor/cross.gif create mode 100644 jscolor/hs.png create mode 100644 jscolor/hv.png create mode 100644 jscolor/jscolor.js create mode 100644 languages/.php create mode 100644 languages/2site.php create mode 100644 languages/cs.php create mode 100644 languages/da.php create mode 100644 languages/de.php create mode 100644 languages/default.php create mode 100644 languages/en.php create mode 100644 languages/fr.php create mode 100644 languages/it.php create mode 100644 languages/nl.php create mode 100644 languages/sk.php create mode 100644 languages/yogaschool.php create mode 100644 licence.txt create mode 100644 readme.txt create mode 100644 templates/blue_nebula.calendar.php create mode 100644 templates/boxes.tpl create mode 100644 templates/brown_nebula.calendar.php create mode 100644 templates/clean.calendar.php create mode 100644 templates/colorful.eventlist.php create mode 100644 templates/flower.calendar.php create mode 100644 templates/green.eventlist.php create mode 100644 templates/minimum.eventlist.php create mode 100644 templates/oldnema.tpl create mode 100644 templates/oldstylecolors.eventlist.php create mode 100644 templates/simple.tpl create mode 100644 version.nfo diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..31163fb --- /dev/null +++ b/admin.php @@ -0,0 +1,1353 @@ +' + . '' .$plugin_tx['calendar']['menu_main'].'  ' + . '' .$plugin_tx['calendar']['menu_test_event_list'].'  ' + . '' .$plugin_tx['calendar']['menu_show_calendar'].'  '; + + if ($plugin_cf['calendar']['second-calendar_filename']) { + $o .= '2. ' .$plugin_tx['calendar']['menu_main'].'  ' + . '2. ' .$plugin_tx['calendar']['menu_test_event_list'].'  ' + . '2. ' .$plugin_tx['calendar']['menu_show_calendar'].'  '; + } + + $o .= '' .$plugin_tx['calendar']['menu_marquee'].'  ' + . '' .$plugin_tx['calendar']['menu_holidays'].'  ' + . '' .$plugin_tx['calendar']['menu_backup'].'  ' + . '' .$plugin_tx['calendar']['menu_config'].'  ' + . '' .$plugin_tx['calendar']['menu_css'].'  ' + . '' .$plugin_tx['calendar']['menu_language'].'  ' + . '' .$plugin_tx['calendar']['menu_help'].'  ' + . '' .$plugin_tx['calendar']['menu_credits'].'

' . "\n"; + + + // enabling navigation to stylesheet, config, language + if($admin){ + $o .= plugin_admin_common($action,$admin,$plugin); + $hjs .= ''."\n"; + + } elseif(!$admxx) $admxx='plugin_main'; + + + // ================ + // editing events + // ================ + if($admxx=='plugin_main'){ + + $o .= '
Calendar_XH '.constant('CALENDAR_VERSION').'
'; + $o .= '

'. $plugin_tx['calendar']['menu_main'] + . '   '; + + $o .= $plugin_tx['calendar']['config_presets']; + if(isset($_POST['preset']) || isset($_POST['backup'])) { + $o .= tag('input type="button" value="–" class="calendar_edit_on" id="presets_button" style="margin-left:0;" + onclick=\'openedit("presets_button","presets","–","+","block");\''); + $displaypresets = ''; + } else { + $o .= tag('input type="button" value="+" class="calendar_edit_off" id="presets_button" style="margin-left:0;" + onclick=\'openedit("presets_button","presets","–","+","block");\''); + $displaypresets = 'style="display:none;"'; + } + + $o .= '   '. $plugin_tx['calendar']['menu_eventlistconfig']; + if(isset($_POST['config'])) { + $o .= tag('input type="button" value="–" class="calendar_edit_on" id="eventlistconfig_button" style="margin-left:0;" + onclick=\'openedit("eventlistconfig_button","eventlistconfig","–","+","block");\''); + $displayeventlistconfig = ''; + } else { + $o .= tag('input type="button" value="+" class="calendar_edit_off" id="eventlistconfig_button" style="margin-left:0;" + onclick=\'openedit("eventlistconfig_button","eventlistconfig","–","+","block");\''); + $displayeventlistconfig = 'style="display:none;"'; + } + + $o .= '

' . "\n"; + $o .= "
" + . presets('eventlist') + . "
\n"; + $o .= "
" + . eventlistConfig() + . "
\n"; + $o .= editevents(); + } + if($admxx=='editevents2'){ + $o .= '

'. $plugin_tx['calendar']['menu_main'] + . ' 2  '.$plugin_cf['calendar']['second-calendar_filename'] . '

'; + $o .= editevents($plugin_cf['calendar']['second-calendar_filename'],1,1); + } + + + //*********************** + // show the event list + //*********************** + if ($admxx=='eventlist') { + $o .= eventlistconfigmenu(); + $o .= events('','','','','','',$calendar_cf['show_eventlist_style']); + } + if ($admxx=='eventlist2') { + $o .= eventlistconfigmenu(); + $o .= events('','','','',$plugin_cf['calendar']['second-calendar_filename'],'',$calendar_cf['show_eventlist_style']); + } + + + //********************* + // show the marquee + //********************* + if ($admxx=='marquee') { + $o .= '

'.$plugin_tx['calendar']['menu_marquee'].'

'; + $o .= marqueeConfig(); + $o .= nextevent(); + $o .= tag('br') . '

'.$plugin_tx['calendar']['marquee_contents'].':

'; + $o .= nextevent('','','',1); + } + + + //********************* + // show holiday wizard + //********************* + if ($admxx=='holidays') { + $o .= '

'.$plugin_tx['calendar']['menu_holidays'].'

'; + $o .= holidayConfig(); + } + + //************************************************** + // options and display of month and year calendar + //************************************************** + if ($admxx=='calendar') { + $o .= calendarconfigmenu(); + if($calendar_cf['show_year_in_backend']) { + $o .= bigcalendar(); + } else { + $o .= year(); + } + } + if ($admxx=='calendar2') { + $o .= calendarconfigmenu(); + if($calendar_cf['show_year_in_backend']) { + $o .= bigcalendar2(); + } else { + $o .= year2(); + } + } + + + //*************************************** + // credits page with version check + //*************************************** + if ($admxx=='credits') { + $o .= '

Calendar_XH '.constant('CALENDAR_VERSION')."

\n"; + + $o .= "
    \n" + . "
  • © 2011-2013 by svasti, based on" + . "
  • versions 1.2.1–1.2.9 and 1.3 beta 1–9 by svasti\n" + . "
  • version 1.2 © 2011 by Holger
  • \n" + . "
  • version 1.1 (major update) by svasti
  • \n" + . "
  • version 1.0 by Tory
  • \n" + . "
  • mod 02/2008 by Bob (cmsimple.fr)
  • \n" + . "
  • versions 0.6–0.9 by Tory
  • \n" + . "
  • versions 0.1–0.5 by Michael Svarrer, who started the plugin in 2005.
\n" + . '

Acknowledgements:' . tag('br') + . 'This version uses JSColor by Jan Odvárko (CZ),'. tag('br') + . 'datePicker by Brian McAllister (IR/FR),'. tag('br') + . 'and was written using the PSpad-Editor of Jan Fiala (CZ).

' + . '

A big thank you to cmb (D) for valuable coding hints,' . tag('br') + . 'and to oldnema (CZ) for repeated testing during development of the plugin.' + . '

' + . '

For bug reports and suggestions please use the CMSimple Forum

' + . "\n"; + } + + + //****************************** + // backup and file managing + //****************************** + + // here the user can look into all event files, merge and delete files, and save files under a new name + //===================================================================================================== + if (substr($admxx,0,6)=='backup') { + + // 3 choices; e = edit view, s = source code view, t = templates/presets + // everything is there, but is rendered invisible by java script + $view = substr($admxx,6,1); + if($action=="delete") $view='e'; + if($action=="delete1") $view='s'; + if($action=="delete2") $view='t'; + + $returnview = isset($_POST['returnview'])? $_POST['returnview'] : ''; + $view = $returnview? $returnview : $view; + + $o .= '

Calendar Backup   ' + . $plugin_tx['calendar']['notice_backup_setting'] .': ' + . $plugin_cf['calendar']['backups'] + . "

\n"; + + // 3 buttons for selection: Open in edit view/ in source code view/ open template-files + $o .= "

\n"; + $o .= ""; + + $o .= ""; + + $o .= ""; + + $o .= tag('br') . $plugin_tx['calendar']['backup-admin_saving_hint'] . "\n

\n"; + + // this listing disappears after actions. The actions call listFiles again to get an updated file list + + if(!isset($_POST['action']) && !$newfilename) $o .= listFiles(); + + // forwarding the file for opening + //================================ + $file_to_open = substr($admxx,7); + if($file_to_open) { + + // 1st case: edit view chosen + if ($view == "e") { + if(!$newfilename)$o .= closeFileViewButton(); + $o .= editevents($file_to_open,false); + } + + // 2nd case: source view chosen + if ($view == "s") { + if(!isset($_POST['action'])) $o .= closeFileViewButton('s'); + $o .= sourceView($file_to_open); + } + // 3nd case: templates chosen + if ($view == "t") { + if(!isset($_POST['action'])) $o .= closeFileViewButton('t'); + $o .= sourceView($file_to_open,1); + } + + } else { + // nothing chosen: show 2 buttons for merging and deleting files + $o .= deleteAndCombine(); + } + + if($view=='s') $o .= ''; + if($view=='t') $o .= ''; + } +} +//================================== +// +// F U N C T I O N S +// +//================================== + + +//******************************************* +// configuration functions +//******************************************* +function presets($filetype) +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/presets.php'); + return $o; +} +function eventlistConfig() +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/eventlistconfig.php'); + return $o; +} +function calendarConfig() +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/calendarconfig.php'); + return $o; +} +function marqueeConfig() +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/marqueeconfig.php'); + return $o; +} +function holidayConfig() +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/holidayconfig.php'); + return $o; +} + + +//******************************************* +// function to change values in files +//******************************************* +function changevalue($valuearray,$file,$type=0) +{ + global $plugin_cf; + + foreach ($valuearray as $trigger=>$value) { + if($type==1) { + //config files, also language files + $pattern = "!(".$trigger."']=\")(.*)\"!"; + $replacement ='${1}'.$value.'"'; + } + + if($type==2) { + //language files with check if entry is missing and generation of missing entries + $pattern = "!(".$trigger."']=\")(.*)\"!"; + $replacement ='${1}'.$value.'"'; + + if (!preg_match($pattern,$file)) { + $file = str_replace('?>',"\t".'$plugin_tx[\'calendar\'][\''.$trigger.'\']="";'."\n?>",$file); + } + } + + if(!$type) { + //css files + $special = ''; //for special cases + if(strpos($trigger,',')) { + list($trigger,$special) = explode(',',$trigger); + } + + if($special=='sU') { + $pattern = "!(\/\*".$trigger."\*\/)(.*)\}!sU"; + $replacement ='${1}'.$value.'}'; + + } else $pattern = "!(\/\*".$trigger."\*\/)(.*);!"; + + if($special=='!im') { + $replacement ='${1}'.$value.' !important;'; + + } elseif ($special=='url!' && $value) { + $replacement ='${1} url(' . $plugin_cf['calendar']['filepath_calendar_background_images'] . $value .') !important;'; + + } elseif ($special=='url' && $value) { + $replacement ='${1} url(' . $plugin_cf['calendar']['filepath_calendar_background_images'] . $value .');'; + + } elseif ($special!='sU') $replacement ='${1}'.$value.';'; + } + + $file = preg_replace($pattern,$replacement,$file); + } + + return $file; +} + + +//============================================== +// little helper function of eventlist and +// calendar configuration, +// shows options menu of available templates +//============================================== +function templateSelect($cf_value,$name_postvar) +{ + global $pth,$plugin_tx; + $o = ''; + + // basic code taken from Martin Dampken's page_params + // and modified by svasti + $handle = opendir($pth['folder']['templates']); + $templates = array(); + while(false !== ($file = readdir($handle))) { + if(is_dir($pth['folder']['templates'].$file) && strpos($file, '.') !== 0) { + $templates[] = $file; + } + } + natcasesort($templates); + $templates_select = ''; + foreach($templates as $file){ + $selected = ''; + if($cf_value && $file == $cf_value) {$selected = 'selected';} + $templates_select .= "\n\t".''; + } + $o .= ""; + + return $o; +} + +//============================================== +// config menu on top of calendar +//============================================== +function calendarconfigmenu() +{ + global $pth,$plugin_tx,$plugin,$calendar_cf; + $o = ''; + + //settings for hiding or showing of configuration possibilities + if(isset($_POST['hideconfig'])) { + $configfile = file_get_contents($pth['folder']['plugins'] . $plugin . '/config/config2.php'); + if(isset($_POST['showbigcalendar'])) $configfile = preg_replace("!show_bigcalendar_config.*\"(.*)\"!","show_bigcalendar_config']=\"1\"",$configfile); + if(isset($_POST['hidebigcalendar'])) $configfile = preg_replace("!show_bigcalendar_config.*\"(.*)\"!","show_bigcalendar_config']=\"\"",$configfile); + if(isset($_POST['showsmallcalendar'])) $configfile = preg_replace("!show_smallcalendar_config.*\"(.*)\"!","show_smallcalendar_config']=\"1\"",$configfile); + if(isset($_POST['hidesmallcalendar'])) $configfile = preg_replace("!show_smallcalendar_config.*\"(.*)\"!","show_smallcalendar_config']=\"\"",$configfile); + if(isset($_POST['showpopupconfig'])) $configfile = preg_replace("!show_popup_config.*\"(.*)\"!","show_popup_config']=\"1\"",$configfile); + if(isset($_POST['hidepopupconfig'])) $configfile = preg_replace("!show_popup_config.*\"(.*)\"!","show_popup_config']=\"\"",$configfile); + if(isset($_POST['show_year_in_backend'])) $configfile = preg_replace("!show_year_in_backend.*\"(.*)\"!","show_year_in_backend']=\"1\"",$configfile); + if(isset($_POST['show_month'])) $configfile = preg_replace("!show_year_in_backend.*\"(.*)\"!","show_year_in_backend']=\"\"",$configfile); + unset( + $_POST['showbigcalendar'], + $_POST['hidebigcalendar'], + $_POST['showsmallcalendar'], + $_POST['hidesmallcalendar'], + $_POST['showpopupconfig'], + $_POST['hidepopupconfig'], + $_POST['show_year_in_backend'], + $_POST['show_month'] + ); + file_put_contents($pth['folder']['plugins'] . $plugin . '/config/config2.php',$configfile); + include ($pth['folder']['plugins'] . $plugin .'/config/config2.php'); + } + + + $o .= "
\n"; + $o .= tag('input type="hidden" value="1" name="hideconfig"') . "\n"; + + $o .= '

'; + + $o .= $plugin_tx['calendar']['config_presets']; + if(isset($_POST['preset']) || isset($_POST['backup'])) { + $o .= tag('input type="button" value="–" class="calendar_edit_on" id="presets_button" style="margin-left:0;" + onclick=\'openedit("presets_button","presets","–","+","block");\''); + $displaypresets = ''; + } else { + $o .= tag('input type="button" value="+" class="calendar_edit_off" id="presets_button" style="margin-left:0;" + onclick=\'openedit("presets_button","presets","–","+","block");\''); + $displaypresets = 'display:none;"'; + } + + $o .= ' '; + + $o .= $plugin_tx['calendar']['config_bigcalendar']; + if($calendar_cf['show_bigcalendar_config']) { + $o .= tag('input type="submit" class="config_button_pressed" value="–" name="hidebigcalendar" '); + } else $o .= tag('input type="submit" class="config_button" value="+" name="showbigcalendar" '); + + + $o .= ' '; + + $o .= $plugin_tx['calendar']['config_small_calendar']; + if($calendar_cf['show_smallcalendar_config']) { + $o .= tag('input type="submit" class="config_button_pressed" value="–" name="hidesmallcalendar" '); + } else $o .= tag('input type="submit" class="config_button" value="+" name="showsmallcalendar" '); + + $o .= ' '; + + $o .= '' . $plugin_tx['calendar']['config_popup']; + if($calendar_cf['show_popup_config']) { + $o .= tag('input type="submit" class="config_button_pressed" value="–" name="hidepopupconfig" '); + } else $o .= tag('input type="submit" class="config_button" value="+" name="showpopupconfig" '); + $o .= ''; + + $o .= ' '; + + if($calendar_cf['show_year_in_backend']) { + $o .= tag('input type="submit" style="width:auto;" value="'.$plugin_tx['calendar']['config_year'].'" name="show_month" '); + } else $o .= tag('input type="submit" style="width:auto;" value="'.$plugin_tx['calendar']['config_month'].'" name="show_year_in_backend" '); + + + $o .= "

\n"; + $o .= "
"; + + $o .= "
" + . presets('calendar') + . "
\n"; + + $o .= calendarConfig(); + + return $o; +} + +//============================================== +// config menu on top of eventlist +//============================================== +function eventlistconfigmenu() +{ + global $pth,$cf,$calendar_cf,$plugin_tx,$plugin,$datapath; + $o = ''; + + $style = isset($_POST['style']) ? $_POST['style'] : $calendar_cf['show_eventlist_style']; + + if(isset($_POST['style'])) { + $configfile = file_get_contents($pth['folder']['plugins'] . $plugin . '/config/config2.php'); + $configfile = preg_replace("!show_eventlist_style.*\"(.*)\"!","show_eventlist_style']=\"$style\"",$configfile); + file_put_contents($pth['folder']['plugins'] . '/calendar/config/config2.php',$configfile); + include ($pth['folder']['plugins'] . '/calendar/config/config2.php'); + } + + // template change + if ($calendar_cf['test_event_list_template']) { + $cf['site']['template'] = $calendar_cf['test_event_list_template']; + $pth['folder']['template'] = $pth['folder']['templates'].$cf['site']['template'].'/'; + $pth['file']['template'] = $pth['folder']['template'].'template.htm'; + $pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css'; + $pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/'; + $pth['folder']['templateimages'] = $pth['folder']['template'].'images/'; + } + $o .= "
\n"; + + // list all availabel event-list templates + $handle=opendir($pth['folder']['plugins'].'/calendar/templates/'); + $templates = array(); + while (false !== ($reading = readdir($handle))) { + if(strpos($reading, '.tpl')) { + $templates[] = $reading; + } + } + closedir($handle); + natcasesort($templates); + $styles_select = ''; + foreach($templates as $key=>$eventliststyle){ + $selected = ''; + if($eventliststyle == $calendar_cf['show_eventlist_style']) {$selected = ' selected';} + $styles_select .= "\n"; + } + + $standardselected = !$calendar_cf['show_eventlist_style']? ' selected':''; + $tableselected = $calendar_cf['show_eventlist_style'] == 1? ' selected':''; + +// $o .= tag('input type="submit" value="'.$plugin_tx['calendar']['menu_test'].'"'); + $o .= "\n"; + + $o .= "
"; + + return $o; +} + +//============================================== +// little helper function of basic configuration +// shows the Icons used +//============================================== +function showIcons() +{ + global $pth,$plugin,$plugin_tx; + $path = $pth['folder']['plugins'] . '/calendar/images/'; + + $icon_set_array = array(); + $icon_set = ''; + $o = ''; + + $handle = opendir ($path); + while (false !== ($icon_folder = readdir ($handle))) { + if ($icon_folder != "." && $icon_folder != ".." && is_dir($path . $icon_folder)) { + + $icon_set .= $icon_folder.": \n"; + $icon_array = array(); + $handle2 = opendir ($path.$icon_folder); + while (false !== ($icon = readdir ($handle2))) { + if ($icon != "." && $icon != "..") { + list($width, $height, $type, $attr) = getimagesize($path.$icon_folder."/".$icon); + array_push($icon_array, tag('img src="'.$path.$icon_folder.'/'.$icon.'" '.$attr.'') ." \n"); + } + } + closedir($handle2); + rsort($icon_array); + $icon_set .= implode (" ",$icon_array); + array_push($icon_set_array,$icon_set); + $icon_set = ''; + } + } + closedir($handle); + //sorting necessary, otherwise on some servers the list will be disordered + natsort($icon_set_array); + foreach($icon_set_array as $key => $value){ + if (!strpos($value, "past")) { + $o .= "Icon set $value\n" . tag('br') . tag ('br'); + } else { + $o .= "                \n" + . preg_replace('!^.+(past:)!','',$value) + . "\n" . tag('br') . tag ('br'); + } + } + //$o .= "(→ ".$plugin_tx['calendar']['menu_config'].")"; + return $o; +} + + +//============================================= +// a little helper function of Backup function +// closees the shown file view +//============================================= +function closeFileViewButton($mode='') +{ + global $plugin_tx,$plugin; + $o = ''; + $o .= ''; + $o .= tag('br'); + return $o; +} + + +//******************************************************* +// +// showing the list of files in calendar/content/ + calendar/templates/ +// +//******************************************************* +function listFiles() +{ + global $pth,$plugin,$file,$datapath; + $o = ''; + + // 1st list for edit view + //================================ + $o .= "\n"; + + $handle=opendir ($datapath); + while (false !== ($file = readdir ($handle))) { + if ($file!='.' && $file!='..' ) { + $o .= "\n\n"; + } + } + closedir($handle); + $o .= "\n"; + + // 2nd list for source code view + //================================ + $o .= "\n"; + $handle=opendir ($datapath); + while (false !== ($file = readdir ($handle))) { + if ($file!='.' && $file!='..') { + $o .= "\n\n"; + } + } + closedir($handle); + $o .= "\n"; + + // 3nd list for presets/templates + //================================= + $o .= "\n"; + $handle=opendir ($pth['folder']['plugins'].'/calendar/templates/'); + while (false !== ($file = readdir ($handle))) { + if ($file!='.' && $file!='..') { + list($f1,$f2) = explode ('.',$file,2); + $f1array[] = $f1; + $f2array[] = $f2; + } + } + array_multisort($f2array,$f1array); + foreach ($f2array as $key=>$value) { + $templatefile = $f1array[$key].'.'.$f2array[$key]; + $o .= "\n\n"; + } + closedir($handle); + $o .= "\n"; + + return $o; +} + + + +//***************************************** +// +// showing and saving the source-code +// +//***************************************** +function sourceView($file,$template=0) +{ + global $plugin_tx,$pth,$plugin,$plugin_cf,$tx,$datapath; + $notice = ""; + $name_error = FALSE; + $o = ''; + + $datapath2 = $template? $pth['folder']['plugins'].'/calendar/templates/' : $datapath; + // saving function + //=================================================== + $action = isset($_POST['action']) ? $_POST['action'] : ''; + $savedfile = isset($_POST['file']) ? $_POST['file'] : ''; + $data = isset($_POST['data']) ? $_POST['data'] : ''; + if(get_magic_quotes_gpc()) $data = stripslashes($data); + $data = str_replace('¬','­',$data); + + // check if the new filename has unwanted characters + if(preg_match('/[^(\w|.)]/',$savedfile)) { + $notice .= "" + . $plugin_tx['calendar']['error_file_name_wrong'] . ''; + $name_error = True; + + } else { + if ($action == "savesource") { + if(is_file($datapath2.$savedfile)) chmod($datapath2.$savedfile, 0666); + $savedbytes = file_put_contents($datapath2.$savedfile,$data); + if ($savedbytes!==FALSE) { + $notice = "$savedbytes " + . $plugin_tx['calendar']['backup-admin_bytes_saved_in'] . " \"$savedfile\""; + } else { + $notice = "".$plugin_tx['calendar']['error_file_not_writable'].""; + } + } + } + + // if the function performed an action, the file view has to be adjusted accordingly + if($savedfile) $file = $savedfile; + if(!$name_error) {$eventfile = file_get_contents($datapath2.$file);} else {$eventfile = $data;} + + // after actions: updating the file list + if($action) { + $o .= listFiles(); + $o .= $template? closeFileViewButton('t') : closeFileViewButton('s'); + } + + // This java script "presses the button" for source code or template view, so that after an action you stay in the previous mode + if(strpos($file,'.php') || strpos($file,'.tpl')) { + $o .= ''; + } else { + $o .= ''; + } + + // for bug hunting only + //$o = "data: $data magic quotes:".get_magic_quotes_gpc() ; + + //=================================================== + // displaying the source code + //=================================================== + $o .= '
'; + $o .= tag('input type="hidden" value="savesource" name="action"'); + $source_view_zindex = $plugin_cf['calendar']['z-index']? 2+$plugin_cf['calendar']['z-index']:2; + $o .= ''."\n"; + $o .= ''; + $o .= ''; + if(substr($file,-3)!='php' && substr($file,-3)!='tpl') { + $o .= ''; + $o .= ''; + } + $eventfile = str_replace('­','¬',$eventfile); + $o .= ''; + $o .= ""; + $o .= ''; + $o .= '
' . tag('input class="submit" type="submit" value="' . ucfirst($tx['action']['save']).'" name="send"'); + $o .= tag('input type="text" value="'.$file.'" name="file" style="width:17em" class="filename"') . $notice; + $o .= '
[*=' . $plugin_tx['calendar']['event_not_on_marquee'] . ']' + . $plugin_tx['calendar']['event_start'].$plugin_tx['calendar']['event_date'] . ',' + + . '[*=' .$plugin_tx['calendar']['event_booked_out']. "]" + . $plugin_tx['calendar']['event_end'].$plugin_tx['calendar']['event_date'] . ',' + + . '[*=' .$plugin_tx['calendar']['event_times_are_daily']. "]" + . $plugin_tx['calendar']['event_end'].$plugin_tx['calendar']['event_time'] . ',' + . $plugin_tx['calendar']['event_entry1'] . ';' + + . '[' . $plugin_tx['calendar']['event_additional'] . '|]' + . $plugin_tx['calendar']['event_main_entry'] . ';' + . '[###/#*#=' . $plugin_tx['calendar']['event_yearly'] + . '|***=' . $plugin_tx['calendar']['event_weekly'] + . '|*#*=' . $plugin_tx['calendar']['event_multiple'] + . '][' . $plugin_tx['calendar']['event_except'] . '|]' + + . $plugin_tx['calendar']['event_entry3'] . ';' + . "[*=" .$plugin_tx['calendar']['event_icon']. "](ext:|int:)" + . $plugin_tx['calendar']['hint_links'] . ',' + . $plugin_tx['calendar']['event_link_text'] . ',' + . "[*/+=" . $plugin_tx['calendar']['event_icon'] . "]" + . $plugin_tx['calendar']['event_info_text'] . ';' + . $plugin_tx['calendar']['event_start'].$plugin_tx['calendar']['event_time'] . ';' + . $plugin_tx['calendar']['event_description']; + $o .= '
'; + $o .= '
'; + $o .= ''; + + +return $o; +} + + +//***************************************** +// +// deleting and merging files +// +//***************************************** +function deleteAndCombine() +{ + global $plugin_tx,$pth,$plugin,$datapath; + $o = ''; + $notice = ''; + + if(isset($_POST['action'])) + $action = $_POST['action']; + elseif(isset($_GET['action'])) + $action = $_GET['action']; + else + $action = ""; + + // starting with the actions to be done + + if ($action == "") $notice = ""; + + // deleting files + //========================================================= + if ($action == "delete" || $action == "delete1" || $action == "delete2" ) { + + $file = isset($_POST['file']) ? $_POST['file'] : $file; + + $datapath2 = $action == "delete2"? $pth['folder']['plugins'].'/calendar/templates/' : $datapath; + + if(is_file($datapath2.$file)) { + $notice .= "$file ".$plugin_tx['calendar']['backup-admin_found']."" . tag('br'); + + chmod($datapath2.$file, 0666); + $x = unlink($datapath2.$file); + if($x===TRUE) { + $notice .= "$file ".$plugin_tx['calendar']['backup-admin_deleted']."" . tag('br'); + + } else $notice .= "$file ".$plugin_tx['calendar']['backup-admin_not_deleted']."" . tag('br'); + + } else $notice .= "$file ".$plugin_tx['calendar']['backup-admin_not_found']."" . tag('br'); + + $o .= listFiles(); + + } + + // merging files + //========================================================== + if ($action == "merge" || $action == "merge1") { + + $firstfile = isset($_POST['firstfile']) ? $_POST['firstfile'] : ''; + $secondfile = isset($_POST['secondfile']) ? $_POST['secondfile'] : ''; + $f = 0; + $s = 0; + + if(is_file($datapath.$firstfile)) { + $firstfilearray = file($datapath.$firstfile,FILE_SKIP_EMPTY_LINES); + $f = count($firstfilearray); + // checking the version of the event file + if (isset($firstfilearray[0]) && substr($firstfilearray[0],0,19)=="Calendar eventfile ") { + $version1 = substr($firstfilearray[0],19,3);print_r($firstfilearray); + array_shift($firstfilearray);print_r($firstfilearray); + $f--; + } else { + $version1 = FALSE; + } + $notice .= "$firstfile ".$plugin_tx['calendar']['backup-admin_found_with']." $f " + . $plugin_tx['calendar']['backup-admin_events']."" . tag('br'); + } else $notice .= "".$plugin_tx['calendar']['backup-admin_1st_file'] + . " $firstfile ".$plugin_tx['calendar']['backup-admin_not_found']."" . tag('br'); + + + if(is_file($datapath.$secondfile)) { + chmod($datapath.$secondfile, 0666); + $secondfilearray = file($datapath.$secondfile,FILE_SKIP_EMPTY_LINES); + $s = count($secondfilearray); + if(!strpos("\n",$secondfilearray[($s-1)])) $secondfilearray[($s-1)] .= "\n"; + // checking the version of the event file + if (isset($secondfilearray[0]) && substr($secondfilearray[0],0,19)=="Calendar eventfile ") { + $version2 = substr($secondfilearray[0],19,3);print_r($secondfilearray); + $s--; + } else { + $version2 = FALSE; + } + $notice .= "$secondfile ".$plugin_tx['calendar']['backup-admin_found_with']." $s " + . $plugin_tx['calendar']['backup-admin_events']."" . tag('br'); + } else $notice .= "".$plugin_tx['calendar']['backup-admin_2nd_file'] + . " $secondfile ".$plugin_tx['calendar']['backup-admin_not_found']."" . tag('br'); + + if($f && $s && $version1==$version2) { + // merge the file arrays + $secondfilearray = array_merge($secondfilearray,$firstfilearray); + // remove duplicates + $secondfilearray = array_unique($secondfilearray); + // count number of events in resulting file + $sf = count($secondfilearray); + if($version2) $sf--;print_r($secondfilearray); + if (($f + $s) > $sf) $notice .= "".(($f + $s) - $sf) . " ".$plugin_tx['calendar']['backup-admin_duplicates_deleted']."". tag('br'); + // save the resulting file or give an error notice + $success = file_put_contents($datapath.$secondfile,$secondfilearray); + if ($success!==false) { + $notice .= "$secondfile ". $plugin_tx['calendar']['backup-admin_saved_with'] + . " $sf ".$plugin_tx['calendar']['backup-admin_events'].''. tag('br'). tag('br'); + } else $notice .= "ERROR: could not save $secondfile". tag('br'). tag('br'); + } elseif($f && $s && $version1!=$version2) { + $notice .= '' + . $plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions'] + . '' + . tag('br'). tag('br'); + } else $notice .= ''.$plugin_tx['calendar']['backup-admin_no_merge'].''. tag('br'). tag('br'); + + $o .= listFiles(); + + } + + //"merge files" button switching the following dialogue on and off + //========================================================================================================== + $o .= "" + . "
".$plugin_tx['calendar']['backup-admin_merge_instruction'] ."". tag('br') ."\n" + . "
" + . "
"; + + // starting the merge dialogue + // make a list of files that can be chosen as initial files of the merging process + $handle=opendir ($datapath); + while (false !== ($files = readdir ($handle))) { + if ($files != "." && $files != ".." && substr($files,-3)!='php') { + $o .= "$files" . tag('br') ."\n"; + } + } + closedir($handle); + // display a big arrow + $o .= "  →  "; + + // again a list of files that can be chosen receiving files in the merging process + $handle=opendir ($datapath); + while (false !== ($files = readdir ($handle))) { + if ($files != "." && $files != ".." && substr($files,-3)!='php') { + $o .= "$files" . tag('br') ."\n"; + } + } + closedir($handle); + $o .= "
" + . "" + . "" + . "" + . "
" . tag('br') . "\n
"; + // end of merge dialogue + + + //"delete files" (edit-mode) button switching the following dialogue on and off (button alway visible)) + //=========================================================================================================== + $o .= ""; + + //"delete files" (source mode) button + //=========================================================================================================== + $o .= ""; + + $handle=opendir($datapath); + $filearray = array(); + while (false !== ($file = readdir($handle))) { + if($file != "." && $file != "..") { + $filearray[] = $file; + } + } + closedir($handle); + natcasesort($filearray); + $files_select = ''; + foreach($filearray as $file){ + $files_select .= "\n"; + } + + //div controlled by delete button (edit mode) + $o .= "
".$plugin_tx['calendar']['backup-admin_delete_instruction'] ."". tag('br') ."\n" + . "
"; + $o .= '
' + . ""; + $o .= "
\n"; + $o .= "\n" + . "" + . "
\n
\n\n"; + + //div controlled by delete button (source mode) + $o .= "\n\n"; + + + //"delete templates" button switching the following dialogue on and off (button always visible)) + //=========================================================================================================== + $o .= "" + . "\n\n"; + + $o .= "

$notice

\n"; + + return $o; +} + + +//***************************************** +// +// select font and fontsize +// +//***************************************** +function selectFont($name=0,$fontvalue=0,$size=0,$sizevalue=0,$height=0,$heightvalue=0) +{ + global $plugin_tx,$plugin_cf; + $o = ''; + + if($name) { + $array = explode(";", $plugin_cf['calendar']['selectable_fonts']); + $values_select = ''; + $j = 0; + foreach ($array as $option) { + $selected = ''; + if($option == $fontvalue) {$selected = ' selected'; $j = 1;} + $values_select .= "\n"; + } + $preselect = (!$j && $fontvalue && $fontvalue!='inherit')? '' : ''; + $o .= ""; + } + + if($size) { + $array = explode(",", $plugin_cf['calendar']['selectable_fontsizes']); + $values_select = ''; + $j = 0; + foreach ($array as $option) { + $selected = ''; + if($option == $sizevalue) {$selected = ' selected'; $j = 1;} + $values_select .= "\n"; + } + $preselect = (!$j && $sizevalue && $sizevalue!='inherit')? '' : ''; + $o .= "'; + } + + if($height) { + $array = explode(",", $plugin_cf['calendar']['selectable_lineheights']); + $values_select = ''; + $j = 0; + foreach ($array as $option) { + $selected = ''; + if($option == $heightvalue) {$selected = ' selected'; $j = 1;} + $values_select .= "\n"; + } + $preselect = (!$j && $heightvalue && $heightvalue!='inherit')? '' : ''; + $o .= "'; + } + return $o; +} + +?> diff --git a/backgroundimages/blue_lozange.gif b/backgroundimages/blue_lozange.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3fe8f3d67509a96258980ccfcab377fa0bc9d1b GIT binary patch literal 144 zcmZ?wbhEHblw^=(n8?6z=Hh=KU;qQfpDdgV42%pqARb8Gfg_QDnM1}SK%t?DgPSSh z#D;~3TRE9+=G-tyI?^m=9CW0kVDa&Gam_TIlLbo-^~?A#n&VNh^hArc@3u7>!fHom qX=PsflW{5a)J(g4DITsMrNDNF=1DF$FDv^k_L$G7Gt*Fk!5RRb>oK|j literal 0 HcmV?d00001 diff --git a/backgroundimages/blue_nebula.jpg b/backgroundimages/blue_nebula.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23dc96fc959806cd8d3b1f90ec9abd58371dadf7 GIT binary patch literal 73261 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 z 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 I$2}4M+4E`7R{#J2 literal 0 HcmV?d00001 diff --git a/backgroundimages/blue_x.gif b/backgroundimages/blue_x.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a52f9d79c5b6c9040f7c22763306e80ca95f464 GIT binary patch literal 159 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

DIGuE)08=WD(M`rq#@al!p!nB&|4Mr3m?* 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∓vi4#aaMaE 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 literal 0 HcmV?d00001 diff --git a/backgroundimages/nebula.jpg b/backgroundimages/nebula.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd0441bb2aeff3658bda517d6b0f4a00334745bd GIT binary patch literal 71655 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%0DJtqw5Np|J{02)LdSZ#=J8bCU3rPWSXbNd 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 dXPQ9R=M+&=kz1|1L&B=5kH$iU1Y;}M|H(8R&b z6meq1!o#hc%romlzM8WUA`0#SCCR*yF>FNmz$TB{T6%7=hK;KsK8(i0CmqXXaE2J literal 0 HcmV?d00001 diff --git a/backgroundimages/red_x.gif b/backgroundimages/red_x.gif new file mode 100644 index 0000000000000000000000000000000000000000..088784a40466bf4aa42678a3b6029ccf1045e0dc GIT binary patch literal 159 zcmZ?wbhEHblxL7l#Z*PMue2M%2i>@J}MsRQ*iF$IZ&8#v`y7_(w`XbQDxmE4d8VOxC H76xkoTWCB$ literal 0 HcmV?d00001 diff --git a/backgroundimages/roses.jpg b/backgroundimages/roses.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4dda09bcfe6c9512e4c41220f881ca147e7d7ab8 GIT binary patch literal 139924 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͌LjSW7cfAD{s`C@ruuYL2v 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%0At??krH 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 + + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_docprops.html b/fckeditor/FCKeditor/editor/dialog/fck_docprops.html new file mode 100644 index 0000000..935580d --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_docprops.html @@ -0,0 +1,600 @@ + + + + + + + + + + + + + + + + + + +
    +
    + Page Title
    + +
    + + + + + + +
    + Language Direction
    + +
    +     + Language Code
    + +
    +
    + + + + + + + + + + + + + + +
    + Character Set Encoding
    + +
    +     + Other Character Set Encoding
    + +
    +  
    + Document Type Heading
    + +
    + + Other Document Type Heading
    + +
    +
    + + +
    + + + +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_form.html b/fckeditor/FCKeditor/editor/dialog/fck_form.html new file mode 100644 index 0000000..0284527 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_form.html @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    + Name
    + +
    + Action
    + +
    + Method
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_hiddenfield.html b/fckeditor/FCKeditor/editor/dialog/fck_hiddenfield.html new file mode 100644 index 0000000..f9bfb74 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_hiddenfield.html @@ -0,0 +1,115 @@ + + + + + Hidden Field Properties + + + + + + + + + + +
    + + + + + + + +
    + Name
    + +
    + Value
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_image.html b/fckeditor/FCKeditor/editor/dialog/fck_image.html new file mode 100644 index 0000000..fefe7a4 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_image.html @@ -0,0 +1,276 @@ + + + + + Image Properties + + + + + + + +
    + + + + + + + + + + +
    + + + + + + + + +
    + URL +
    + +
    +
    + Short Description
    +
    +
    + + + + + + +
    +
    + + + + + + + + + + + + +
    + Width  + +
    +
    +
    +
    +
    +
    + Height  +
    +
    + + + + +
    + Stylesheet Classes
    + +
    +
    +     + + + + + + + +
    + Preview
    + +
    +
    +
    +
    + + + + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_image/fck_image.js b/fckeditor/FCKeditor/editor/dialog/fck_image/fck_image.js new file mode 100644 index 0000000..c341faa --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_image/fck_image.js @@ -0,0 +1,512 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Scripts related to the Image dialog window (see fck_image.html). + */ + +var dialog = window.parent ; +var oEditor = dialog.InnerDialogLoaded() ; +var FCK = oEditor.FCK ; +var FCKLang = oEditor.FCKLang ; +var FCKConfig = oEditor.FCKConfig ; +var FCKDebug = oEditor.FCKDebug ; +var FCKTools = oEditor.FCKTools ; + +var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ; + +//#### Dialog Tabs + +// Set the dialog tabs. +dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ; + +if ( !bImageButton && !FCKConfig.ImageDlgHideLink ) + dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ; + +if ( FCKConfig.ImageUpload ) + dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ; + +if ( !FCKConfig.ImageDlgHideAdvanced ) + dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ; + +// Function called when a dialog tag is selected. +function OnDialogTabChange( tabCode ) +{ + ShowE('divInfo' , ( tabCode == 'Info' ) ) ; + ShowE('divLink' , ( tabCode == 'Link' ) ) ; + ShowE('divUpload' , ( tabCode == 'Upload' ) ) ; + ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ; +} + +// Get the selected image (if available). +var oImage = dialog.Selection.GetSelectedElement() ; + +if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) ) + oImage = null ; + +// Get the active link. +var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ; + +var oImageOriginal ; + +function UpdateOriginal( resetSize ) +{ + if ( !eImgPreview ) + return ; + + if ( GetE('txtUrl').value.length == 0 ) + { + oImageOriginal = null ; + return ; + } + + oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ; + + if ( resetSize ) + { + oImageOriginal.onload = function() + { + this.onload = null ; + ResetSizes() ; + } + } + + oImageOriginal.src = eImgPreview.src ; +} + +var bPreviewInitialized ; + +window.onload = function() +{ + // Translate the dialog box texts. + oEditor.FCKLanguageManager.TranslatePage(document) ; + + GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ; + GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ; + + // Load the selected element information (if any). + LoadSelection() ; + + // Show/Hide the "Browse Server" button. + GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ; + GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ; + + UpdateOriginal() ; + + // Set the actual uploader URL. + if ( FCKConfig.ImageUpload ) + GetE('frmUpload').action = FCKConfig.ImageUploadURL ; + + dialog.SetAutoSize( true ) ; + + // Activate the "OK" button. + dialog.SetOkButton( true ) ; + + SelectField( 'txtUrl' ) ; +} + +function LoadSelection() +{ + if ( ! oImage ) return ; + + var sUrl = oImage.getAttribute( '_fcksavedurl' ) ; + if ( sUrl == null ) + sUrl = GetAttribute( oImage, 'src', '' ) ; + + GetE('txtUrl').value = sUrl ; + GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ; + GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ; + GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ; + GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ; + GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ; + + var iWidth, iHeight ; + + var regexSize = /^\s*(\d+)px\s*$/i ; + + if ( oImage.style.width ) + { + var aMatchW = oImage.style.width.match( regexSize ) ; + if ( aMatchW ) + { + iWidth = aMatchW[1] ; + oImage.style.width = '' ; + SetAttribute( oImage, 'width' , iWidth ) ; + } + } + + if ( oImage.style.height ) + { + var aMatchH = oImage.style.height.match( regexSize ) ; + if ( aMatchH ) + { + iHeight = aMatchH[1] ; + oImage.style.height = '' ; + SetAttribute( oImage, 'height', iHeight ) ; + } + } + + GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ; + GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ; + + // Get Advances Attributes + GetE('txtAttId').value = oImage.id ; + GetE('cmbAttLangDir').value = oImage.dir ; + GetE('txtAttLangCode').value = oImage.lang ; + GetE('txtAttTitle').value = oImage.title ; + GetE('txtLongDesc').value = oImage.longDesc ; + + if ( oEditor.FCKBrowserInfo.IsIE ) + { + GetE('txtAttClasses').value = oImage.className || '' ; + GetE('txtAttStyle').value = oImage.style.cssText ; + } + else + { + GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ; + GetE('txtAttStyle').value = oImage.getAttribute('style',2) ; + } + + if ( oLink ) + { + var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ; + if ( sLinkUrl == null ) + sLinkUrl = oLink.getAttribute('href',2) ; + + GetE('txtLnkUrl').value = sLinkUrl ; + GetE('cmbLnkTarget').value = oLink.target ; + } + + UpdatePreview() ; +} + +//#### The OK button was hit. +function Ok() +{ + if ( GetE('txtUrl').value.length == 0 ) + { + dialog.SetSelectedTab( 'Info' ) ; + GetE('txtUrl').focus() ; + + alert( FCKLang.DlgImgAlertUrl ) ; + + return false ; + } + + var bHasImage = ( oImage != null ) ; + + if ( bHasImage && bImageButton && oImage.tagName == 'IMG' ) + { + if ( confirm( 'Do you want to transform the selected image on a image button?' ) ) + oImage = null ; + } + else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' ) + { + if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) ) + oImage = null ; + } + + oEditor.FCKUndo.SaveUndoStep() ; + if ( !bHasImage ) + { + if ( bImageButton ) + { + oImage = FCK.EditorDocument.createElement( 'input' ) ; + oImage.type = 'image' ; + oImage = FCK.InsertElement( oImage ) ; + } + else + oImage = FCK.InsertElement( 'img' ) ; + } + + UpdateImage( oImage ) ; + + var sLnkUrl = GetE('txtLnkUrl').value.Trim() ; + + if ( sLnkUrl.length == 0 ) + { + if ( oLink ) + FCK.ExecuteNamedCommand( 'Unlink' ) ; + } + else + { + if ( oLink ) // Modifying an existent link. + oLink.href = sLnkUrl ; + else // Creating a new link. + { + if ( !bHasImage ) + oEditor.FCKSelection.SelectNode( oImage ) ; + + oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ; + + if ( !bHasImage ) + { + oEditor.FCKSelection.SelectNode( oLink ) ; + oEditor.FCKSelection.Collapse( false ) ; + } + } + + SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ; + SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ; + } + + return true ; +} + +function UpdateImage( e, skipId ) +{ + e.src = GetE('txtUrl').value ; + SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ; + SetAttribute( e, "alt" , GetE('txtAlt').value ) ; + SetAttribute( e, "width" , GetE('txtWidth').value ) ; + SetAttribute( e, "height", GetE('txtHeight').value ) ; + SetAttribute( e, "vspace", GetE('txtVSpace').value ) ; + SetAttribute( e, "hspace", GetE('txtHSpace').value ) ; + SetAttribute( e, "border", GetE('txtBorder').value ) ; + SetAttribute( e, "align" , GetE('cmbAlign').value ) ; + + // Advances Attributes + + if ( ! skipId ) + SetAttribute( e, 'id', GetE('txtAttId').value ) ; + + SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ; + SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ; + SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ; + SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ; + + if ( oEditor.FCKBrowserInfo.IsIE ) + { + e.className = GetE('txtAttClasses').value ; + e.style.cssText = GetE('txtAttStyle').value ; + } + else + { + SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ; + SetAttribute( e, 'style', GetE('txtAttStyle').value ) ; + } +} + +var eImgPreview ; +var eImgPreviewLink ; + +function SetPreviewElements( imageElement, linkElement ) +{ + eImgPreview = imageElement ; + eImgPreviewLink = linkElement ; + + UpdatePreview() ; + UpdateOriginal() ; + + bPreviewInitialized = true ; +} + +function UpdatePreview() +{ + if ( !eImgPreview || !eImgPreviewLink ) + return ; + + if ( GetE('txtUrl').value.length == 0 ) + eImgPreviewLink.style.display = 'none' ; + else + { + UpdateImage( eImgPreview, true ) ; + + if ( GetE('txtLnkUrl').value.Trim().length > 0 ) + eImgPreviewLink.href = 'javascript:void(null);' ; + else + SetAttribute( eImgPreviewLink, 'href', '' ) ; + + eImgPreviewLink.style.display = '' ; + } +} + +var bLockRatio = true ; + +function SwitchLock( lockButton ) +{ + bLockRatio = !bLockRatio ; + lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ; + lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ; + + if ( bLockRatio ) + { + if ( GetE('txtWidth').value.length > 0 ) + OnSizeChanged( 'Width', GetE('txtWidth').value ) ; + else + OnSizeChanged( 'Height', GetE('txtHeight').value ) ; + } +} + +// Fired when the width or height input texts change +function OnSizeChanged( dimension, value ) +{ + // Verifies if the aspect ration has to be maintained + if ( oImageOriginal && bLockRatio ) + { + var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ; + + if ( value.length == 0 || isNaN( value ) ) + { + e.value = '' ; + return ; + } + + if ( dimension == 'Width' ) + value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ; + else + value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ; + + if ( !isNaN( value ) ) + e.value = value ; + } + + UpdatePreview() ; +} + +// Fired when the Reset Size button is clicked +function ResetSizes() +{ + if ( ! oImageOriginal ) return ; + if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete ) + { + setTimeout( ResetSizes, 50 ) ; + return ; + } + + GetE('txtWidth').value = oImageOriginal.width ; + GetE('txtHeight').value = oImageOriginal.height ; + + UpdatePreview() ; +} + +function BrowseServer() +{ + OpenServerBrowser( + 'Image', + FCKConfig.ImageBrowserURL, + FCKConfig.ImageBrowserWindowWidth, + FCKConfig.ImageBrowserWindowHeight ) ; +} + +function LnkBrowseServer() +{ + OpenServerBrowser( + 'Link', + FCKConfig.LinkBrowserURL, + FCKConfig.LinkBrowserWindowWidth, + FCKConfig.LinkBrowserWindowHeight ) ; +} + +function OpenServerBrowser( type, url, width, height ) +{ + sActualBrowser = type ; + OpenFileBrowser( url, width, height ) ; +} + +var sActualBrowser ; + +function SetUrl( url, width, height, alt ) +{ + if ( sActualBrowser == 'Link' ) + { + GetE('txtLnkUrl').value = url ; + UpdatePreview() ; + } + else + { + GetE('txtUrl').value = url ; + GetE('txtWidth').value = width ? width : '' ; + GetE('txtHeight').value = height ? height : '' ; + + if ( alt ) + GetE('txtAlt').value = alt; + + UpdatePreview() ; + UpdateOriginal( true ) ; + } + + dialog.SetSelectedTab( 'Info' ) ; +} + +function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg ) +{ + // Remove animation + window.parent.Throbber.Hide() ; + GetE( 'divUpload' ).style.display = '' ; + + switch ( errorNumber ) + { + case 0 : // No errors + alert( 'Your file has been successfully uploaded' ) ; + break ; + case 1 : // Custom error + alert( customMsg ) ; + return ; + case 101 : // Custom warning + alert( customMsg ) ; + break ; + case 201 : + alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ; + break ; + case 202 : + alert( 'Invalid file type' ) ; + return ; + case 203 : + alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ; + return ; + case 500 : + alert( 'The connector is disabled' ) ; + break ; + default : + alert( 'Error on file upload. Error number: ' + errorNumber ) ; + return ; + } + + sActualBrowser = '' ; + SetUrl( fileUrl ) ; + GetE('frmUpload').reset() ; +} + +var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ; +var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ; + +function CheckUpload() +{ + var sFile = GetE('txtUploadFile').value ; + + if ( sFile.length == 0 ) + { + alert( 'Please select a file to upload' ) ; + return false ; + } + + if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) || + ( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) ) + { + OnUploadCompleted( 202 ) ; + return false ; + } + + // Show animation + window.parent.Throbber.Show( 100 ) ; + GetE( 'divUpload' ).style.display = 'none' ; + + return true ; +} diff --git a/fckeditor/FCKeditor/editor/dialog/fck_image/fck_image_preview.html b/fckeditor/FCKeditor/editor/dialog/fck_image/fck_image_preview.html new file mode 100644 index 0000000..db0d2e0 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_image/fck_image_preview.html @@ -0,0 +1,72 @@ + + + + + + + + + + + +
    + + Lorem ipsum dolor sit amet, consectetuer adipiscing + elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus + a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, + nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed + velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper + nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices + a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus + faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget + tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, + tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis + id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, + eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur + ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris. +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_link.html b/fckeditor/FCKeditor/editor/dialog/fck_link.html new file mode 100644 index 0000000..ddc930c --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_link.html @@ -0,0 +1,295 @@ + + + + + Link Properties + + + + + + + + + + + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_link/fck_link.js b/fckeditor/FCKeditor/editor/dialog/fck_link/fck_link.js new file mode 100644 index 0000000..c31c0c4 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_link/fck_link.js @@ -0,0 +1,893 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Scripts related to the Link dialog window (see fck_link.html). + */ + +var dialog = window.parent ; +var oEditor = dialog.InnerDialogLoaded() ; + +var FCK = oEditor.FCK ; +var FCKLang = oEditor.FCKLang ; +var FCKConfig = oEditor.FCKConfig ; +var FCKRegexLib = oEditor.FCKRegexLib ; +var FCKTools = oEditor.FCKTools ; + +//#### Dialog Tabs + +// Set the dialog tabs. +dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ; + +if ( !FCKConfig.LinkDlgHideTarget ) + dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ; + +if ( FCKConfig.LinkUpload ) + dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ; + +if ( !FCKConfig.LinkDlgHideAdvanced ) + dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ; + +// Function called when a dialog tag is selected. +function OnDialogTabChange( tabCode ) +{ + ShowE('divInfo' , ( tabCode == 'Info' ) ) ; + ShowE('divTarget' , ( tabCode == 'Target' ) ) ; + ShowE('divUpload' , ( tabCode == 'Upload' ) ) ; + ShowE('divAttribs' , ( tabCode == 'Advanced' ) ) ; + + dialog.SetAutoSize( true ) ; +} + +//#### Regular Expressions library. +var oRegex = new Object() ; + +oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ; + +oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ; + +oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ; + +oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ; + +oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ; + +// Accessible popups +oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ; + +oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ; + +//#### Parser Functions + +var oParser = new Object() ; + +// This method simply returns the two inputs in numerical order. You can even +// provide strings, as the method would parseInt() the values. +oParser.SortNumerical = function(a, b) +{ + return parseInt( a, 10 ) - parseInt( b, 10 ) ; +} + +oParser.ParseEMailParams = function(sParams) +{ + // Initialize the oEMailParams object. + var oEMailParams = new Object() ; + oEMailParams.Subject = '' ; + oEMailParams.Body = '' ; + + var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ; + if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ; + + aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ; + if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ; + + return oEMailParams ; +} + +// This method returns either an object containing the email info, or FALSE +// if the parameter is not an email link. +oParser.ParseEMailUri = function( sUrl ) +{ + // Initializes the EMailInfo object. + var oEMailInfo = new Object() ; + oEMailInfo.Address = '' ; + oEMailInfo.Subject = '' ; + oEMailInfo.Body = '' ; + + var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ; + if ( aLinkInfo && aLinkInfo[1] == 'mailto' ) + { + // This seems to be an unprotected email link. + var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ; + if ( aParts ) + { + // Set the e-mail address. + oEMailInfo.Address = aParts[1] ; + + // Look for the optional e-mail parameters. + if ( aParts[2] ) + { + var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ; + oEMailInfo.Subject = oEMailParams.Subject ; + oEMailInfo.Body = oEMailParams.Body ; + } + } + return oEMailInfo ; + } + else if ( aLinkInfo && aLinkInfo[1] == 'javascript' ) + { + // This may be a protected email. + + // Try to match the url against the EMailProtectionFunction. + var func = FCKConfig.EMailProtectionFunction ; + if ( func != null ) + { + try + { + // Escape special chars. + func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ; + + // Define the possible keys. + var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ; + + // Get the order of the keys (hold them in the array ) and + // the function replaced by regular expression patterns. + var sFunc = func ; + var pos = new Array() ; + for ( var i = 0 ; i < keys.length ; i ++ ) + { + var rexp = new RegExp( keys[i] ) ; + var p = func.search( rexp ) ; + if ( p >= 0 ) + { + sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ; + pos[pos.length] = p + ':' + keys[i] ; + } + } + + // Sort the available keys. + pos.sort( oParser.SortNumerical ) ; + + // Replace the excaped single quotes in the url, such they do + // not affect the regexp afterwards. + aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ; + + // Create the regexp and execute it. + var rFunc = new RegExp( '^' + sFunc + '$' ) ; + var aMatch = rFunc.exec( aLinkInfo[2] ) ; + if ( aMatch ) + { + var aInfo = new Array(); + for ( var i = 1 ; i < aMatch.length ; i ++ ) + { + var k = pos[i-1].match(/^\d+:(.+)$/) ; + aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ; + } + + // Fill the EMailInfo object that will be returned + oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ; + oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ; + oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ; + + return oEMailInfo ; + } + } + catch (e) + { + } + } + + // Try to match the email against the encode protection. + var aMatch = aLinkInfo[2].match( /^(?:void\()?location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'\)?$/ ) ; + if ( aMatch ) + { + // The link is encoded + oEMailInfo.Address = eval( aMatch[1] ) ; + if ( aMatch[2] ) + { + var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ; + oEMailInfo.Subject = oEMailParams.Subject ; + oEMailInfo.Body = oEMailParams.Body ; + } + return oEMailInfo ; + } + } + return false; +} + +oParser.CreateEMailUri = function( address, subject, body ) +{ + // Switch for the EMailProtection setting. + switch ( FCKConfig.EMailProtection ) + { + case 'function' : + var func = FCKConfig.EMailProtectionFunction ; + if ( func == null ) + { + if ( FCKConfig.Debug ) + { + alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ; + } + return ''; + } + + // Split the email address into name and domain parts. + var aAddressParts = address.split( '@', 2 ) ; + if ( aAddressParts[1] == undefined ) + { + aAddressParts[1] = '' ; + } + + // Replace the keys by their values (embedded in single quotes). + func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ; + func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ; + func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ; + func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ; + + return 'javascript:' + func ; + + case 'encode' : + var aParams = [] ; + var aAddressCode = [] ; + + if ( subject.length > 0 ) + aParams.push( 'subject='+ encodeURIComponent( subject ) ) ; + if ( body.length > 0 ) + aParams.push( 'body=' + encodeURIComponent( body ) ) ; + for ( var i = 0 ; i < address.length ; i++ ) + aAddressCode.push( address.charCodeAt( i ) ) ; + + return 'javascript:void(location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\')' ; + } + + // EMailProtection 'none' + + var sBaseUri = 'mailto:' + address ; + + var sParams = '' ; + + if ( subject.length > 0 ) + sParams = '?subject=' + encodeURIComponent( subject ) ; + + if ( body.length > 0 ) + { + sParams += ( sParams.length == 0 ? '?' : '&' ) ; + sParams += 'body=' + encodeURIComponent( body ) ; + } + + return sBaseUri + sParams ; +} + +//#### Initialization Code + +// oLink: The actual selected link in the editor. +var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ; +if ( oLink ) + FCK.Selection.SelectNode( oLink ) ; + +window.onload = function() +{ + // Translate the dialog box texts. + oEditor.FCKLanguageManager.TranslatePage(document) ; + + // Fill the Anchor Names and Ids combos. + LoadAnchorNamesAndIds() ; + + // Load the selected link information (if any). + LoadSelection() ; + + // Update the dialog box. + SetfindLinkType( GetE('cmbfindLinkType').value ) ; + + // Show/Hide the "Browse Server" button. + GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ; + + // Show the initial dialog content. + GetE('divInfo').style.display = '' ; + + // Set the actual uploader URL. + if ( FCKConfig.LinkUpload ) + GetE('frmUpload').action = FCKConfig.LinkUploadURL ; + + // Set the default target (from configuration). + SetDefaultTarget() ; + + // Activate the "OK" button. + dialog.SetOkButton( true ) ; + + // Select the first field. + switch( GetE('cmbfindLinkType').value ) + { + case 'url' : + SelectField( 'txtUrl' ) ; + break ; + case 'email' : + SelectField( 'txtEMailAddress' ) ; + break ; + case 'anchor' : + if ( GetE('divSelAnchor').style.display != 'none' ) + SelectField( 'cmbAnchorName' ) ; + else + SelectField( 'cmbfindLinkType' ) ; + } +} + +var bHasAnchors ; + +function LoadAnchorNamesAndIds() +{ + // Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon + // to edit them. So, we must look for that images now. + var aAnchors = new Array() ; + var i ; + var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ; + for( i = 0 ; i < oImages.length ; i++ ) + { + if ( oImages[i].getAttribute('_fckanchor') ) + aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ; + } + + // Add also real anchors + var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ; + for( i = 0 ; i < oLinks.length ; i++ ) + { + if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) ) + aAnchors[ aAnchors.length ] = oLinks[i] ; + } + + var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ; + + bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ; + + for ( i = 0 ; i < aAnchors.length ; i++ ) + { + var sName = aAnchors[i].name ; + if ( sName && sName.length > 0 ) + FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ; + } + + for ( i = 0 ; i < aIds.length ; i++ ) + { + FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ; + } + + ShowE( 'divSelAnchor' , bHasAnchors ) ; + ShowE( 'divNoAnchor' , !bHasAnchors ) ; +} + +function LoadSelection() +{ + if ( !oLink ) return ; + + var sType = 'url' ; + + // Get the actual Link href. + var sHRef = oLink.getAttribute( '_fcksavedurl' ) ; + if ( sHRef == null ) + sHRef = oLink.getAttribute( 'href' , 2 ) || '' ; + + // Look for a popup javascript link. + var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ; + if( oPopupMatch ) + { + GetE('cmbTarget').value = 'popup' ; + sHRef = oPopupMatch[1] ; + FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ; + SetTarget( 'popup' ) ; + } + + // Accessible popups, the popup data is in the onclick attribute + if ( !oPopupMatch ) + { + var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ; + if ( onclick ) + { + // Decode the protected string + onclick = decodeURIComponent( onclick ) ; + + oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ; + if( oPopupMatch ) + { + GetE( 'cmbTarget' ).value = 'popup' ; + FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ; + SetTarget( 'popup' ) ; + } + } + } + + // Search for the protocol. + var sProtocol = oRegex.UriProtocol.exec( sHRef ) ; + + // Search for a protected email link. + var oEMailInfo = oParser.ParseEMailUri( sHRef ); + + if ( oEMailInfo ) + { + sType = 'email' ; + + GetE('txtEMailAddress').value = oEMailInfo.Address ; + GetE('txtEMailSubject').value = oEMailInfo.Subject ; + GetE('txtEMailBody').value = oEMailInfo.Body ; + } + else if ( sProtocol ) + { + sProtocol = sProtocol[0].toLowerCase() ; + GetE('cmbLinkProtocol').value = sProtocol ; + + // Remove the protocol and get the remaining URL. + var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ; + sType = 'url' ; + GetE('txtUrl').value = sUrl ; + } + else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link. + { + sType = 'anchor' ; + GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ; + } + else // It is another type of link. + { + sType = 'url' ; + + GetE('cmbLinkProtocol').value = '' ; + GetE('txtUrl').value = sHRef ; + } + + if ( !oPopupMatch ) + { + // Get the target. + var sTarget = oLink.target ; + + if ( sTarget && sTarget.length > 0 ) + { + if ( oRegex.ReserveTarget.test( sTarget ) ) + { + sTarget = sTarget.toLowerCase() ; + GetE('cmbTarget').value = sTarget ; + } + else + GetE('cmbTarget').value = 'frame' ; + GetE('txtTargetFrame').value = sTarget ; + } + } + + // Get Advances Attributes + GetE('txtAttId').value = oLink.id ; + GetE('txtAttName').value = oLink.name ; + GetE('cmbAttLangDir').value = oLink.dir ; + GetE('txtAttLangCode').value = oLink.lang ; + GetE('txtAttAccessKey').value = oLink.accessKey ; + GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ; + GetE('txtAttTitle').value = oLink.title ; + GetE('txtAttContentType').value = oLink.type ; + GetE('txtAttCharSet').value = oLink.charset ; + + var sClass ; + if ( oEditor.FCKBrowserInfo.IsIE ) + { + sClass = oLink.getAttribute('className',2) || '' ; + // Clean up temporary classes for internal use: + sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ; + + GetE('txtAttStyle').value = oLink.style.cssText ; + } + else + { + sClass = oLink.getAttribute('class',2) || '' ; + GetE('txtAttStyle').value = oLink.getAttribute('style',2) || '' ; + } + GetE('txtAttClasses').value = sClass ; + + // Update the Link type combo. + GetE('cmbfindLinkType').value = sType ; +} + +//#### Link type selection. +function SetfindLinkType( linkType ) +{ + ShowE('divfindLinkTypeUrl' , (linkType == 'url') ) ; + ShowE('divfindLinkTypeAnchor' , (linkType == 'anchor') ) ; + ShowE('divfindLinkTypeEMail' , (linkType == 'email') ) ; + + if ( !FCKConfig.LinkDlgHideTarget ) + dialog.SetTabVisibility( 'Target' , (linkType == 'url') ) ; + + if ( FCKConfig.LinkUpload ) + dialog.SetTabVisibility( 'Upload' , (linkType == 'url') ) ; + + if ( !FCKConfig.LinkDlgHideAdvanced ) + dialog.SetTabVisibility( 'Advanced' , (linkType != 'anchor' || bHasAnchors) ) ; + + if ( linkType == 'email' ) + dialog.SetAutoSize( true ) ; +} + +//#### Target type selection. +function SetTarget( targetType ) +{ + GetE('tdTargetFrame').style.display = ( targetType == 'popup' ? 'none' : '' ) ; + GetE('tdPopupName').style.display = + GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ; + + switch ( targetType ) + { + case "_blank" : + case "_self" : + case "_parent" : + case "_top" : + GetE('txtTargetFrame').value = targetType ; + break ; + case "" : + GetE('txtTargetFrame').value = '' ; + break ; + } + + if ( targetType == 'popup' ) + dialog.SetAutoSize( true ) ; +} + +//#### Called while the user types the URL. +function OnUrlChange() +{ + var sUrl = GetE('txtUrl').value ; + var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ; + + if ( sProtocol ) + { + sUrl = sUrl.substr( sProtocol[0].length ) ; + GetE('txtUrl').value = sUrl ; + GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ; + } + else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) ) + { + GetE('cmbLinkProtocol').value = '' ; + } +} + +//#### Called while the user types the target name. +function OnTargetNameChange() +{ + var sFrame = GetE('txtTargetFrame').value ; + + if ( sFrame.length == 0 ) + GetE('cmbTarget').value = '' ; + else if ( oRegex.ReserveTarget.test( sFrame ) ) + GetE('cmbTarget').value = sFrame.toLowerCase() ; + else + GetE('cmbTarget').value = 'frame' ; +} + +// Accessible popups +function BuildOnClickPopup() +{ + var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ; + + var sFeatures = '' ; + var aChkFeatures = document.getElementsByName( 'chkFeature' ) ; + for ( var i = 0 ; i < aChkFeatures.length ; i++ ) + { + if ( i > 0 ) sFeatures += ',' ; + sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ; + } + + if ( GetE('txtPopupWidth').value.length > 0 ) sFeatures += ',width=' + GetE('txtPopupWidth').value ; + if ( GetE('txtPopupHeight').value.length > 0 ) sFeatures += ',height=' + GetE('txtPopupHeight').value ; + if ( GetE('txtPopupLeft').value.length > 0 ) sFeatures += ',left=' + GetE('txtPopupLeft').value ; + if ( GetE('txtPopupTop').value.length > 0 ) sFeatures += ',top=' + GetE('txtPopupTop').value ; + + if ( sFeatures != '' ) + sFeatures = sFeatures + ",status" ; + + return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ; +} + +//#### Fills all Popup related fields. +function FillPopupFields( windowName, features ) +{ + if ( windowName ) + GetE('txtPopupName').value = windowName ; + + var oFeatures = new Object() ; + var oFeaturesMatch ; + while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null ) + { + var sValue = oFeaturesMatch[2] ; + if ( sValue == ( 'yes' || '1' ) ) + oFeatures[ oFeaturesMatch[1] ] = true ; + else if ( ! isNaN( sValue ) && sValue != 0 ) + oFeatures[ oFeaturesMatch[1] ] = sValue ; + } + + // Update all features check boxes. + var aChkFeatures = document.getElementsByName('chkFeature') ; + for ( var i = 0 ; i < aChkFeatures.length ; i++ ) + { + if ( oFeatures[ aChkFeatures[i].value ] ) + aChkFeatures[i].checked = true ; + } + + // Update position and size text boxes. + if ( oFeatures['width'] ) GetE('txtPopupWidth').value = oFeatures['width'] ; + if ( oFeatures['height'] ) GetE('txtPopupHeight').value = oFeatures['height'] ; + if ( oFeatures['left'] ) GetE('txtPopupLeft').value = oFeatures['left'] ; + if ( oFeatures['top'] ) GetE('txtPopupTop').value = oFeatures['top'] ; +} + +//#### The OK button was hit. +function Ok() +{ + var sUri, sInnerHtml ; + oEditor.FCKUndo.SaveUndoStep() ; + + switch ( GetE('cmbfindLinkType').value ) + { + case 'url' : + sUri = GetE('txtUrl').value ; + + if ( sUri.length == 0 ) + { + alert( FCKLang.DlnLnkMsgNoUrl ) ; + return false ; + } + + sUri = GetE('cmbLinkProtocol').value + sUri ; + + break ; + + case 'email' : + sUri = GetE('txtEMailAddress').value ; + + if ( sUri.length == 0 ) + { + alert( FCKLang.DlnLnkMsgNoEMail ) ; + return false ; + } + + sUri = oParser.CreateEMailUri( + sUri, + GetE('txtEMailSubject').value, + GetE('txtEMailBody').value ) ; + break ; + + case 'anchor' : + var sAnchor = GetE('cmbAnchorName').value ; + if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ; + + if ( sAnchor.length == 0 ) + { + alert( FCKLang.DlnLnkMsgNoAnchor ) ; + return false ; + } + + sUri = '#' + sAnchor ; + break ; + } + + // If no link is selected, create a new one (it may result in more than one link creation - #220). + var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ; + + // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26) + var aHasSelection = ( aLinks.length > 0 ) ; + if ( !aHasSelection ) + { + sInnerHtml = sUri; + + // Built a better text for empty links. + switch ( GetE('cmbfindLinkType').value ) + { + // anchor: use old behavior --> return true + case 'anchor': + sInnerHtml = sInnerHtml.replace( /^#/, '' ) ; + break ; + + // url: try to get path + case 'url': + var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ; + var asLinkPath = oLinkPathRegEx.exec( sUri ) ; + if (asLinkPath != null) + sInnerHtml = asLinkPath[1]; // use matched path + break ; + + // mailto: try to get email address + case 'email': + sInnerHtml = GetE('txtEMailAddress').value ; + break ; + } + + // Create a new (empty) anchor. + aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ; + } + + for ( var i = 0 ; i < aLinks.length ; i++ ) + { + oLink = aLinks[i] ; + + if ( aHasSelection ) + sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL). + + oLink.href = sUri ; + SetAttribute( oLink, '_fcksavedurl', sUri ) ; + + var onclick; + // Accessible popups + if( GetE('cmbTarget').value == 'popup' ) + { + onclick = BuildOnClickPopup() ; + // Encode the attribute + onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" ) ; + SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ; + } + else + { + // Check if the previous onclick was for a popup: + // In that case remove the onclick handler. + onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ; + if ( onclick ) + { + // Decode the protected string + onclick = decodeURIComponent( onclick ) ; + + if( oRegex.OnClickPopup.test( onclick ) ) + SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ; + } + } + + oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML + + // Target + if( GetE('cmbTarget').value != 'popup' ) + SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ; + else + SetAttribute( oLink, 'target', null ) ; + + // Let's set the "id" only for the first link to avoid duplication. + if ( i == 0 ) + SetAttribute( oLink, 'id', GetE('txtAttId').value ) ; + + // Advances Attributes + SetAttribute( oLink, 'name' , GetE('txtAttName').value ) ; + SetAttribute( oLink, 'dir' , GetE('cmbAttLangDir').value ) ; + SetAttribute( oLink, 'lang' , GetE('txtAttLangCode').value ) ; + SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ; + SetAttribute( oLink, 'tabindex' , ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ; + SetAttribute( oLink, 'title' , GetE('txtAttTitle').value ) ; + SetAttribute( oLink, 'type' , GetE('txtAttContentType').value ) ; + SetAttribute( oLink, 'charset' , GetE('txtAttCharSet').value ) ; + + if ( oEditor.FCKBrowserInfo.IsIE ) + { + var sClass = GetE('txtAttClasses').value ; + // If it's also an anchor add an internal class + if ( GetE('txtAttName').value.length != 0 ) + sClass += ' FCK__AnchorC' ; + SetAttribute( oLink, 'className', sClass ) ; + + oLink.style.cssText = GetE('txtAttStyle').value ; + } + else + { + SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ; + SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ; + } + } + + // Select the (first) link. + oEditor.FCKSelection.SelectNode( aLinks[0] ); + + return true ; +} + +function BrowseServer() +{ + OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ; +} + +function SetUrl( url ) +{ + GetE('txtUrl').value = url ; + OnUrlChange() ; + dialog.SetSelectedTab( 'Info' ) ; +} + +function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg ) +{ + // Remove animation + window.parent.Throbber.Hide() ; + GetE( 'divUpload' ).style.display = '' ; + + switch ( errorNumber ) + { + case 0 : // No errors + alert( 'Your file has been successfully uploaded' ) ; + break ; + case 1 : // Custom error + alert( customMsg ) ; + return ; + case 101 : // Custom warning + alert( customMsg ) ; + break ; + case 201 : + alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ; + break ; + case 202 : + alert( 'Invalid file type' ) ; + return ; + case 203 : + alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ; + return ; + case 500 : + alert( 'The connector is disabled' ) ; + break ; + default : + alert( 'Error on file upload. Error number: ' + errorNumber ) ; + return ; + } + + SetUrl( fileUrl ) ; + GetE('frmUpload').reset() ; +} + +var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ; +var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ; + +function CheckUpload() +{ + var sFile = GetE('txtUploadFile').value ; + + if ( sFile.length == 0 ) + { + alert( 'Please select a file to upload' ) ; + return false ; + } + + if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) || + ( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) ) + { + OnUploadCompleted( 202 ) ; + return false ; + } + + // Show animation + window.parent.Throbber.Show( 100 ) ; + GetE( 'divUpload' ).style.display = 'none' ; + + return true ; +} + +function SetDefaultTarget() +{ + var target = FCKConfig.DefaultLinkTarget || '' ; + + if ( oLink || target.length == 0 ) + return ; + + switch ( target ) + { + case '_blank' : + case '_self' : + case '_parent' : + case '_top' : + GetE('cmbTarget').value = target ; + break ; + default : + GetE('cmbTarget').value = 'frame' ; + break ; + } + + GetE('txtTargetFrame').value = target ; +} diff --git a/fckeditor/FCKeditor/editor/dialog/fck_listprop.html b/fckeditor/FCKeditor/editor/dialog/fck_listprop.html new file mode 100644 index 0000000..a67af18 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_listprop.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + +
    + + + + + +
    + List Type
    + + +   +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_paste.html b/fckeditor/FCKeditor/editor/dialog/fck_paste.html new file mode 100644 index 0000000..3e11da1 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_paste.html @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + Please paste inside the following box using the keyboard + (Ctrl+V) and hit OK.
    +   +
    +
    + +
    + + + +
    + + + +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_radiobutton.html b/fckeditor/FCKeditor/editor/dialog/fck_radiobutton.html new file mode 100644 index 0000000..556890f --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_radiobutton.html @@ -0,0 +1,104 @@ + + + + + Radio Button Properties + + + + + + + + + + +
    + + + + + + + + + + +
    + Name
    + +
    + Value
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_replace.html b/fckeditor/FCKeditor/editor/dialog/fck_replace.html new file mode 100644 index 0000000..2c574d2 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_replace.html @@ -0,0 +1,650 @@ + + + + + + + + + + + + + + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_scayt.html b/fckeditor/FCKeditor/editor/dialog/fck_scayt.html new file mode 100644 index 0000000..f8ef9b4 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_scayt.html @@ -0,0 +1,746 @@ + + + + + SCAYT Properties + + + + + + + +
    + +
      +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    • + + +
    • +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    + + + + +
    + +
    + +
    +
    +
    +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_scayt/scayt_dialog.css b/fckeditor/FCKeditor/editor/dialog/fck_scayt/scayt_dialog.css new file mode 100644 index 0000000..c2eeb75 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_scayt/scayt_dialog.css @@ -0,0 +1,169 @@ +html, body +{ + background-color: transparent; + margin: 0px; + padding: 0px; +} + +body +{ + padding: 10px; +} + +body, td, input, select, textarea +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; +} + +.midtext +{ + padding:0px; + margin:10px; +} + +.midtext p +{ + padding:0px; + margin:10px; +} + +.Button +{ + border: #737357 1px solid; + color: #3b3b1f; + background-color: #c7c78f; +} + +.PopupTabArea , .button +{ + color: #737357; + background-color: #e3e3c7; +} + +.PopupTitleBorder +{ + border-bottom: #d5d59d 1px solid; +} +.PopupTabEmptyArea +{ + padding-left: 10px; + border-bottom: #d5d59d 1px solid; +} + +.PopupTab, .PopupTabSelected +{ + border-right: #d5d59d 1px solid; + border-top: #d5d59d 1px solid; + border-left: #d5d59d 1px solid; + padding: 3px 5px 3px 5px; + color: #737357; +} + +.PopupTab +{ + margin-top: 1px; + border-bottom: #d5d59d 1px solid; + cursor: pointer; + cursor: hand; +} + +.PopupTabSelected +{ + font-weight: bold; + cursor: default; + padding-top: 4px; + border-bottom: #f1f1e3 1px solid; + background-color: #f1f1e3; +} + +ul { + padding:0; + margin:0px 0px 12px 0px; + list-style-type:none; +} +ul.tabs { + height:20px; + margin:10px 0px; +} +ul.tabs li { + float: left; + display:none; +} +div.tab_container { + /*display:none;*/ + padding: 0px 5px ; +} +.lcol { + float:left; + width:47%; + margin-left:5px; +} +.rcol { + float:right; + width:47%; + margin-right:5px; +} +div.tabs-container{ + height:220px; + overflow-x:hidden; + overflow-y:auto; +} + +div.tabs-container h3{ + margin:5px 15px 7px 15px; + background-color:transparent; + font-size: 14px ; +} + +.li { + border: 1px solid transparent; +} + +#dic_message{ + height: 24px; +} +#dic_message .error{ + color: red ; +} +#dic_message .success{ + color: blue ; +} + +.dic_buttons { + margin-top: 5px; + padding-left:10px; +} +.dic_buttons a { + display: none; +} +a.button { + border: #d5d59d 1px solid; + padding: 2px 4px; + margin-right: 4px; + text-decoration: none; +} + +a.button:hover, +a.button:active, +a.button:visited{ + padding: 2px 4px; + margin-right: 4px; + text-decoration: none; +} +a.button:hover { + border: #d5d59d 1px solid; + color: #e3e3c7; + background-color: #737357; +} + +#scayt_options li { + display: none; +} + +#dic_info { + margin:10px; +} +#dic_tab { + display:none; +} diff --git a/fckeditor/FCKeditor/editor/dialog/fck_select.html b/fckeditor/FCKeditor/editor/dialog/fck_select.html new file mode 100644 index 0000000..2f28da6 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_select.html @@ -0,0 +1,180 @@ + + + + + Select Properties + + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    Name 
    Value 
    Size  lines
    +
    +
    +  Available + Options  + + + + + + + + + + + + + + + + + + +
    Text
    + +
    Value
    + +
    + + +
    +
    + +
       +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_select/fck_select.js b/fckeditor/FCKeditor/editor/dialog/fck_select/fck_select.js new file mode 100644 index 0000000..3120bb3 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_select/fck_select.js @@ -0,0 +1,194 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Scripts for the fck_select.html page. + */ + +function Select( combo ) +{ + var iIndex = combo.selectedIndex ; + + oListText.selectedIndex = iIndex ; + oListValue.selectedIndex = iIndex ; + + var oTxtText = document.getElementById( "txtText" ) ; + var oTxtValue = document.getElementById( "txtValue" ) ; + + oTxtText.value = oListText.value ; + oTxtValue.value = oListValue.value ; +} + +function Add() +{ + var oTxtText = document.getElementById( "txtText" ) ; + var oTxtValue = document.getElementById( "txtValue" ) ; + + AddComboOption( oListText, oTxtText.value, oTxtText.value ) ; + AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ; + + oListText.selectedIndex = oListText.options.length - 1 ; + oListValue.selectedIndex = oListValue.options.length - 1 ; + + oTxtText.value = '' ; + oTxtValue.value = '' ; + + oTxtText.focus() ; +} + +function Modify() +{ + var iIndex = oListText.selectedIndex ; + + if ( iIndex < 0 ) return ; + + var oTxtText = document.getElementById( "txtText" ) ; + var oTxtValue = document.getElementById( "txtValue" ) ; + + oListText.options[ iIndex ].innerHTML = HTMLEncode( oTxtText.value ) ; + oListText.options[ iIndex ].value = oTxtText.value ; + + oListValue.options[ iIndex ].innerHTML = HTMLEncode( oTxtValue.value ) ; + oListValue.options[ iIndex ].value = oTxtValue.value ; + + oTxtText.value = '' ; + oTxtValue.value = '' ; + + oTxtText.focus() ; +} + +function Move( steps ) +{ + ChangeOptionPosition( oListText, steps ) ; + ChangeOptionPosition( oListValue, steps ) ; +} + +function Delete() +{ + RemoveSelectedOptions( oListText ) ; + RemoveSelectedOptions( oListValue ) ; +} + +function SetSelectedValue() +{ + var iIndex = oListValue.selectedIndex ; + if ( iIndex < 0 ) return ; + + var oTxtValue = document.getElementById( "txtSelValue" ) ; + + oTxtValue.value = oListValue.options[ iIndex ].value ; +} + +// Moves the selected option by a number of steps (also negative) +function ChangeOptionPosition( combo, steps ) +{ + var iActualIndex = combo.selectedIndex ; + + if ( iActualIndex < 0 ) + return ; + + var iFinalIndex = iActualIndex + steps ; + + if ( iFinalIndex < 0 ) + iFinalIndex = 0 ; + + if ( iFinalIndex > ( combo.options.length - 1 ) ) + iFinalIndex = combo.options.length - 1 ; + + if ( iActualIndex == iFinalIndex ) + return ; + + var oOption = combo.options[ iActualIndex ] ; + var sText = HTMLDecode( oOption.innerHTML ) ; + var sValue = oOption.value ; + + combo.remove( iActualIndex ) ; + + oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ; + + oOption.selected = true ; +} + +// Remove all selected options from a SELECT object +function RemoveSelectedOptions(combo) +{ + // Save the selected index + var iSelectedIndex = combo.selectedIndex ; + + var oOptions = combo.options ; + + // Remove all selected options + for ( var i = oOptions.length - 1 ; i >= 0 ; i-- ) + { + if (oOptions[i].selected) combo.remove(i) ; + } + + // Reset the selection based on the original selected index + if ( combo.options.length > 0 ) + { + if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ; + combo.selectedIndex = iSelectedIndex ; + } +} + +// Add a new option to a SELECT object (combo or list) +function AddComboOption( combo, optionText, optionValue, documentObject, index ) +{ + var oOption ; + + if ( documentObject ) + oOption = documentObject.createElement("OPTION") ; + else + oOption = document.createElement("OPTION") ; + + if ( index != null ) + combo.options.add( oOption, index ) ; + else + combo.options.add( oOption ) ; + + oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : ' ' ; + oOption.value = optionValue ; + + return oOption ; +} + +function HTMLEncode( text ) +{ + if ( !text ) + return '' ; + + text = text.replace( /&/g, '&' ) ; + text = text.replace( //g, '>' ) ; + + return text ; +} + + +function HTMLDecode( text ) +{ + if ( !text ) + return '' ; + + text = text.replace( />/g, '>' ) ; + text = text.replace( /</g, '<' ) ; + text = text.replace( /&/g, '&' ) ; + + return text ; +} diff --git a/fckeditor/FCKeditor/editor/dialog/fck_smiley.html b/fckeditor/FCKeditor/editor/dialog/fck_smiley.html new file mode 100644 index 0000000..ba3a302 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_smiley.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_source.html b/fckeditor/FCKeditor/editor/dialog/fck_source.html new file mode 100644 index 0000000..0782c65 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_source.html @@ -0,0 +1,68 @@ + + + + + Source + + + + + + + + + + +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_specialchar.html b/fckeditor/FCKeditor/editor/dialog/fck_specialchar.html new file mode 100644 index 0000000..9a8ba77 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_specialchar.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + +
    + + +
    +
         + + + + +
     
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_spellerpages.html b/fckeditor/FCKeditor/editor/dialog/fck_spellerpages.html new file mode 100644 index 0000000..c3b7409 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_spellerpages.html @@ -0,0 +1,70 @@ + + + + + Spell Check + + + + + + + + + + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_table.html b/fckeditor/FCKeditor/editor/dialog/fck_table.html new file mode 100644 index 0000000..3eb85b4 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_table.html @@ -0,0 +1,440 @@ + + + + + Table Properties + + + + + + + + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + Rows: +  
    + Columns: +  
    Headers: +   +
    + Border size: +  
    + Alignment: +  
    +
    +     + + + + + + + + + + + + + + + + + + + + + + + + +
    + Width: +   +  
    + Height: +   +  pixels
     
    + Cell spacing: +   +  
    + Cell padding: +   +  
    +
    + + + + + + + + + + + +
    + Caption +   +
    + Summary +   +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_tablecell.html b/fckeditor/FCKeditor/editor/dialog/fck_tablecell.html new file mode 100644 index 0000000..a4d1c97 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_tablecell.html @@ -0,0 +1,293 @@ + + + + + Table Cell Properties + + + + + + + + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Width: +   
    + Height: +   pixels
    +   +  
    + Word Wrap: +  
    +   +  
    + Horizontal Alignment: +  
    + Vertical Alignment: +  
    +
    +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Cell Type: +   +
    +   +   +  
    + Rows Span: +   + +
    + Columns Span: +   + +
    +   +   +  
    + Background Color: +   +   +
    + Border Color: +   +   +
    +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_template.html b/fckeditor/FCKeditor/editor/dialog/fck_template.html new file mode 100644 index 0000000..e7c1292 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_template.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + +
    + Please select the template to open in the editor
    + (the actual contents will be lost):
    +
    +
    + + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_template/images/template1.gif b/fckeditor/FCKeditor/editor/dialog/fck_template/images/template1.gif new file mode 100644 index 0000000000000000000000000000000000000000..efdabbebd4503ceb55c948fa73b9b83cbd373e57 GIT binary patch literal 375 zcmV--0f_!bNk%w1VPpVC0FeLyva+%O00960{{R30A^8LV00000EC2ui0Av7000092 zgpaAq?GK}zwAu@W-n{z{hT=$;9b%^H%BpA!$8!13_AS@=&Xal%3~GMDB95pDD3{Ep z^T{;k4xj+g%7JRP+$IPq!1Bb&uKB$DQa@x|8x8NO4b`hO25#TOnRw~9=3yE0xyeE4CQ8$(2)Mz>8udZCXX=BRr7DZbW_#-a zYZEHlJM(KAEc4dditDMnJ4(CC+&uK06fIp0D*Z|wX5EYpGb{?;a*WKVoEoWp!Y!`y zeo4*}FFC(bZf@duda#%D-q zaHzPUxA@lRm;@PFNk%w1VPpVC0FeLyva+%O00960{{R30A^8LV00000EC2ui0Av7000092 zgpaAq?GK}zwAu@W-n{z{hT=$;9b%^H%BpA!$8!13_AS@=&Xal%3~GMDB93TG#*l%g z^9hYgr_`$T`us4l+^+W<)gC_JviY3#AeC&_xD98m<8-m1jvsB&<_@0q~XXRsCap^IRqK$(K#c!N9pBf82AawVH$?WN){q&IjedXiz+EX zOS+od%WDgp+d909toAG5`lTy-9D18rOxWx+T}>D*o&1Qa9n5V^96nACtqfi*?*05t zZSMX~zfpQ^<%jRPUfiDEO8=eEuB)DKv}S_cJW8uTxqL`=(AMXYB~Aenu4SM=e_ zrj6M`kqsZ_xrlC}y^5evW>krApudqWP2zFM5Fo{b%sA$2wGU)SI5vkKVQCad(WEn$ zGF`IFr&KONpB8ayRSwduHn4I{;q@zxs8h=VDkqjl*t8(;n#c+zd*_U=jy QeEa(S3plV~2n7HDJNoX*`2YX_ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/dialog/fck_template/images/template4.gif b/fckeditor/FCKeditor/editor/dialog/fck_template/images/template4.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b7ffefd5ac482e41fc08239baef718581539b32 GIT binary patch literal 606 zcmV-k0-^m!Nk%w1VPpVC0FeLyva+%O00960{{R30A^8Le00062EC2ui0Av7006+-- z009UbNU)&6g9sBUT*$EDLIDsXN}NcsqQ#3CGiuy8k)Xu@AVUfW0FflfiV8_`T*(rn z$BF>}gp4WBqC=G}bLxCaai&j!APdI)DO9J?mOLl=T*|cRQj9Z?9!)B>s@1AgC7!&> zwJXJ}Uc-uw2zIPlu4Pq5#i^5RPmyPB4*V!UW>B0pzov{UHSJP@ckdbuI?%0BxO_X# zh3OQiKO%HwRKh{|lwMp$q^4cuwTT^IW(t`mY34zOo`gdV^&U;_0ojtAOi9UL zV}|Cb=b%}p2_I4Uop))4g)-XbgqB|FsgK|>I;Vf>xftGwD0W36Y%!+tN2isoiuG!( sEG>xZPJgPpD`u?zI#sa3@>*xHCLW6{WyCJK(yh*_*Wt9(au^T*JL44^jQ{`u literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/dialog/fck_template/images/template5.gif b/fckeditor/FCKeditor/editor/dialog/fck_template/images/template5.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc645eb5f76b3e704b776ee423411a50983075ca GIT binary patch literal 717 zcmV;;0y6zaNk%w1VPpVC0FeLyva+%O00960{{R30A^8Le00062EC2ui0Av7006+-- z009UbNU)&6g9sBUT*$EDLIDsXN}NcsqQ#3CGiuy8k)Xu@0R)7ksBol6kSIGQG|92$ zMUNE&000^Bpa6p=Wuinmb0JHYKqbPY2y$l8o-}FRgg7(e&ZAF{68sr7=+KE#2SzQr z)9Kc)QHiFkn(->xvuM+j9C%Tw+P82mnvF}hZpFEF^VY>H65`m6IsLlTNVTh7zEo?n z#p(3sQ;|OPzGNFS>_~x*Woq>bR-jJJp2ZH1iae)+=H}2jE{{&Vbl;CERVR&^U36l#*1!HQp32#< z;)CBMBL*OMJbAyK$DT$Hef{5_nCZh`&2#>1iRRH&T5IgFm6T@Joz&WCS%ubIX{@m( zUx5xP*k4vU{g<14JQb9hX--MFl~#{EC>vJ7g(X;u0j`)HTGLTi--$BTcpiI|jmF}R zJnk6Vb2bKf6OBSvM`V#RDyQUb4aj48K8iKvl`jhAVPk*& zsG*A}vS=o6w-JRJmxaCQWnST7q@RUl-gst~U;?-nh5v;l=%9MO2UwRX0f|*vfCieG zQkTie+9*x>rhM( z6e^hMh*Nb~A*x?`3TJ)?!spnqBChr;ZV+DRXMPo8$m^*Y(VD2OsD4JGRAai>p|agh z3MPJ<`WoL~q^8SliQ)?DErS?>`fiGq1&eKn$r9LWPUq4q>#f19iDkWXUOBLO1|JMC zZ~`mLY{Cu;2xguUlci + + + + Text Area Properties + + + + + + + + + + +
    + + + + +
    + Name
    + + Collumns
    + +
    + Rows
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_textfield.html b/fckeditor/FCKeditor/editor/dialog/fck_textfield.html new file mode 100644 index 0000000..43f91a6 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_textfield.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + +
    + Name
    + +
    + + Value
    + +
    + Character Width
    + +
    + + Maximum Characters
    + +
    + Type
    + +
    +   +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dtd/fck_dtd_test.html b/fckeditor/FCKeditor/editor/dtd/fck_dtd_test.html new file mode 100644 index 0000000..c149d15 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dtd/fck_dtd_test.html @@ -0,0 +1,41 @@ + + + + DTD Test Page + + + + + +

    + DTD Contents +

    + + +
    + + diff --git a/fckeditor/FCKeditor/editor/dtd/fck_xhtml10strict.js b/fckeditor/FCKeditor/editor/dtd/fck_xhtml10strict.js new file mode 100644 index 0000000..a39fcfc --- /dev/null +++ b/fckeditor/FCKeditor/editor/dtd/fck_xhtml10strict.js @@ -0,0 +1,116 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Contains the DTD mapping for XHTML 1.0 Strict. + * This file was automatically generated from the file: xhtml10-strict.dtd + */ +FCK.DTD = (function() +{ + var X = FCKTools.Merge ; + + var H,I,J,K,C,L,M,A,B,D,E,G,N,F ; + A = {ins:1, del:1, script:1} ; + B = {hr:1, ul:1, div:1, blockquote:1, noscript:1, table:1, address:1, pre:1, p:1, h5:1, dl:1, h4:1, ol:1, h6:1, h1:1, h3:1, h2:1} ; + C = X({fieldset:1}, B) ; + D = X({sub:1, bdo:1, 'var':1, sup:1, br:1, kbd:1, map:1, samp:1, b:1, acronym:1, '#':1, abbr:1, code:1, i:1, cite:1, tt:1, strong:1, q:1, em:1, big:1, small:1, span:1, dfn:1}, A) ; + E = X({img:1, object:1}, D) ; + F = {input:1, button:1, textarea:1, select:1, label:1} ; + G = X({a:1}, F) ; + H = {img:1, noscript:1, br:1, kbd:1, button:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, select:1, '#':1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, strong:1, textarea:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, map:1, dl:1, del:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, address:1, tt:1, q:1, pre:1, p:1, em:1, dfn:1} ; + + I = X({form:1, fieldset:1}, B, E, G) ; + J = {tr:1} ; + K = {'#':1} ; + L = X(E, G) ; + M = {li:1} ; + N = X({form:1}, A, C) ; + + return { + col: {}, + tr: {td:1, th:1}, + img: {}, + colgroup: {col:1}, + noscript: N, + td: I, + br: {}, + th: I, + kbd: L, + button: X(B, E), + h5: L, + h4: L, + samp: L, + h6: L, + ol: M, + h1: L, + h3: L, + option: K, + h2: L, + form: X(A, C), + select: {optgroup:1, option:1}, + ins: I, + abbr: L, + label: L, + code: L, + table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1}, + script: K, + tfoot: J, + cite: L, + li: I, + input: {}, + strong: L, + textarea: K, + big: L, + small: L, + span: L, + dt: L, + hr: {}, + sub: L, + optgroup: {option:1}, + bdo: L, + param: {}, + 'var': L, + div: I, + object: X({param:1}, H), + sup: L, + dd: I, + area: {}, + map: X({form:1, area:1}, A, C), + dl: {dt:1, dd:1}, + del: I, + fieldset: X({legend:1}, H), + thead: J, + ul: M, + acronym: L, + b: L, + a: X({img:1, object:1}, D, F), + blockquote: N, + caption: L, + i: L, + tbody: J, + address: L, + tt: L, + legend: L, + q: L, + pre: X({a:1}, D, F), + p: L, + em: L, + dfn: L + } ; +})() ; diff --git a/fckeditor/FCKeditor/editor/dtd/fck_xhtml10transitional.js b/fckeditor/FCKeditor/editor/dtd/fck_xhtml10transitional.js new file mode 100644 index 0000000..53617bd --- /dev/null +++ b/fckeditor/FCKeditor/editor/dtd/fck_xhtml10transitional.js @@ -0,0 +1,140 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Contains the DTD mapping for XHTML 1.0 Transitional. + * This file was automatically generated from the file: xhtml10-transitional.dtd + */ +FCK.DTD = (function() +{ + var X = FCKTools.Merge ; + + var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I ; + A = {isindex:1, fieldset:1} ; + B = {input:1, button:1, select:1, textarea:1, label:1} ; + C = X({a:1}, B) ; + D = X({iframe:1}, C) ; + E = {hr:1, ul:1, menu:1, div:1, blockquote:1, noscript:1, table:1, center:1, address:1, dir:1, pre:1, h5:1, dl:1, h4:1, noframes:1, h6:1, ol:1, h1:1, h3:1, h2:1} ; + F = {ins:1, del:1, script:1} ; + G = X({b:1, acronym:1, bdo:1, 'var':1, '#':1, abbr:1, code:1, br:1, i:1, cite:1, kbd:1, u:1, strike:1, s:1, tt:1, strong:1, q:1, samp:1, em:1, dfn:1, span:1}, F) ; + H = X({sub:1, img:1, object:1, sup:1, basefont:1, map:1, applet:1, font:1, big:1, small:1}, G) ; + I = X({p:1}, H) ; + J = X({iframe:1}, H, B) ; + K = {img:1, noscript:1, br:1, kbd:1, center:1, button:1, basefont:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, font:1, '#':1, select:1, menu:1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, iframe:1, strong:1, textarea:1, noframes:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, strike:1, dir:1, map:1, dl:1, applet:1, del:1, isindex:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, u:1, s:1, tt:1, address:1, q:1, pre:1, p:1, em:1, dfn:1} ; + + L = X({a:1}, J) ; + M = {tr:1} ; + N = {'#':1} ; + O = X({param:1}, K) ; + P = X({form:1}, A, D, E, I) ; + Q = {li:1} ; + + return { + col: {}, + tr: {td:1, th:1}, + img: {}, + colgroup: {col:1}, + noscript: P, + td: P, + br: {}, + th: P, + center: P, + kbd: L, + button: X(I, E), + basefont: {}, + h5: L, + h4: L, + samp: L, + h6: L, + ol: Q, + h1: L, + h3: L, + option: N, + h2: L, + form: X(A, D, E, I), + select: {optgroup:1, option:1}, + font: J, // Changed from L to J (see (1)) + ins: P, + menu: Q, + abbr: L, + label: L, + table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1}, + code: L, + script: N, + tfoot: M, + cite: L, + li: P, + input: {}, + iframe: P, + strong: J, // Changed from L to J (see (1)) + textarea: N, + noframes: P, + big: J, // Changed from L to J (see (1)) + small: J, // Changed from L to J (see (1)) + span: J, // Changed from L to J (see (1)) + hr: {}, + dt: L, + sub: J, // Changed from L to J (see (1)) + optgroup: {option:1}, + param: {}, + bdo: L, + 'var': J, // Changed from L to J (see (1)) + div: P, + object: O, + sup: J, // Changed from L to J (see (1)) + dd: P, + strike: J, // Changed from L to J (see (1)) + area: {}, + dir: Q, + map: X({area:1, form:1, p:1}, A, F, E), + applet: O, + dl: {dt:1, dd:1}, + del: P, + isindex: {}, + fieldset: X({legend:1}, K), + thead: M, + ul: Q, + acronym: L, + b: J, // Changed from L to J (see (1)) + a: J, + blockquote: P, + caption: L, + i: J, // Changed from L to J (see (1)) + u: J, // Changed from L to J (see (1)) + tbody: M, + s: L, + address: X(D, I), + tt: J, // Changed from L to J (see (1)) + legend: L, + q: L, + pre: X(G, C), + p: L, + em: J, // Changed from L to J (see (1)) + dfn: L + } ; +})() ; + +/* + Notes: + (1) According to the DTD, many elements, like accept elements + inside of them. But, to produce better output results, we have manually + changed the map to avoid breaking the links on pieces, having + "this is a link test", instead of + "this is a link test". +*/ diff --git a/fckeditor/FCKeditor/editor/fckdebug.html b/fckeditor/FCKeditor/editor/fckdebug.html new file mode 100644 index 0000000..e3b3420 --- /dev/null +++ b/fckeditor/FCKeditor/editor/fckdebug.html @@ -0,0 +1,153 @@ + + + + + FCKeditor Debug Window + + + + + + + + + + + +
    + + + + + +
    + FCKeditor Debug Window +
    +
    + +
    + + diff --git a/fckeditor/FCKeditor/editor/fckdialog.html b/fckeditor/FCKeditor/editor/fckdialog.html new file mode 100644 index 0000000..0770c89 --- /dev/null +++ b/fckeditor/FCKeditor/editor/fckdialog.html @@ -0,0 +1,819 @@ + + + + + + + + + + +
    + +
    +
    + + + + + +
      + +   + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/fckeditor/FCKeditor/editor/fckeditor.html b/fckeditor/FCKeditor/editor/fckeditor.html new file mode 100644 index 0000000..5f90c3d --- /dev/null +++ b/fckeditor/FCKeditor/editor/fckeditor.html @@ -0,0 +1,317 @@ + + + + + FCKeditor + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.css b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.css new file mode 100644 index 0000000..24142c8 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.css @@ -0,0 +1,99 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * CSS styles used by all pages that compose the File Browser. + */ + +body +{ + background-color: #e1e1d3; + margin-top:0; + margin-bottom:0; +} +a { + color: #000; + text-decoration: none; + } +form +{ + margin: 0; + padding: 0; +} + +.Frame +{ +} + +body.FileArea +{ + background-color: #ffffff; + margin: 10px; +} + +body, td, input, select +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; +} + +.ActualFolder +{ + font-weight: bold; + font-size: 14px; + +} + +.PopupButtons +{ + border-top: #d5d59d 1px solid; + background-color: #e3e3c7; + padding: 7px 10px 7px 10px; + +} + +.Button, button +{ + color: #3b3b1f; + border: #737357 1px solid; + background-color: #c7c78f; +} +b {color: #67672f; + } +.FolderListCurrentFolder img +{ + background-image: url(images/folder-open1.png); + background-position: top right; + background-repeat: no-repeat; +} + +.FolderListFolder img +{ + background-image: url(images/folder1.png); + background-position: top right; + background-repeat: no-repeat; +} + +.fullHeight { + height: 100%; + +} +.FileArea a { + text-decoration: none; + } diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.html new file mode 100644 index 0000000..1bdada0 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.html @@ -0,0 +1,202 @@ + + + + + Resource Browser::FCKeditor4CMSimple + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmactualfolder.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmactualfolder.html new file mode 100644 index 0000000..6dce412 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmactualfolder.html @@ -0,0 +1,80 @@ + + + + + Folder path + + + + + +
    + + + diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmcreatefolder.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmcreatefolder.html new file mode 100644 index 0000000..593b0ff --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmcreatefolder.html @@ -0,0 +1,122 @@ + + + + + Create Folder + + + + + + +
    + + + + +
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmfolders.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmfolders.html new file mode 100644 index 0000000..62562dc --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmfolders.html @@ -0,0 +1,221 @@ + + + + + Folders + + + + + + + + + Home + + + + + +
    + + \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourceslist.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourceslist.html new file mode 100644 index 0000000..151f784 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourceslist.html @@ -0,0 +1,247 @@ + + + + + Resources + + + + + + + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourcetype.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourcetype.html new file mode 100644 index 0000000..c2f8cdd --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmresourcetype.html @@ -0,0 +1,73 @@ + + + + + Available types + + + + + + + + + + + diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmupload.html b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmupload.html new file mode 100644 index 0000000..967466d --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/frmupload.html @@ -0,0 +1,108 @@ + + + + + File Upload + + + + + + + +
    + + + +
    + + diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/ButtonArrow.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/ButtonArrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..a355e5a449014d40f6e686aec027356b9e72c626 GIT binary patch literal 138 zcmZ?wbhEHb?doRyP?sz1@R%qk?NW&|^ piF(pSm~|f}r^Y>+^6kXUra(#f*8)^{SatDsngGLeRy(9f-cwFk2+o z;~ODp|1t>jABLc5VCDe`dM^`#27M6pyG95~t8D!2QIcgv zQ8i7~f?6<0vJ^&RI7QG5BM7raUKDT^BZ3HRpoEH`0*o>UMqwmPaXc?63ML@5jxk}3 z4dYB0$3+CEa8}?*10i&TGEmwqMQ|=cU@R&tDkHE&5XORT+>8v$3nIhvB*l}oL^2Xd zizLNSG>g+DqPbwziD_;^hXqljS&?Fc6d#6h9it4I2NVxzAwtkWnB?55&8;|4%|+@6 z%AgD<(Sms);>LnBA7KQ5F+mqixD=a9wjrv^?3w0dMg*(~Oe!d;Gh&350LiN^-tAVL zsOA+o3l`)AYepOM+2t~Vm9h9M^FZW zDsF-!1S!Z#K+*ug8YF9QCM8nAWY{U&V9CkL1}jEL&X9HBCV5grc|hPnw@YwP9L>vN zk~5_X!Ys)F+`&0vg5u=}ErdBK?8Y@rL>V1NIKqXg2rerIP;`J%x|X zDMqAugJL9JR0K((IbD=Biq$FJ9IGx!Dk}sDCP;BQCmAFYq**x>3K@nmFfj1w(WAk^ z!J(m{;o;$tk&)5S(Qr6CHa0dsK0Yxq@%ZuMCr_SCPEJ03`ZN-WOifKqPfyRx%tWKn zSS%Kg#}kQ!Y5ug{Z&#Xole7=tv<32pzArZyqp2V-cWbq3s-PS5m=tmy23 zlD@vx-oEh5zi*6>1VDMK!+xLT&;qoVTe19Z(IThW&avNq_`$B#OA7-($k*Sv z-Bd->wKZSeJbUZf($22Vd8=N?@H?0N+8;V+?aI1aTwZo3QCo8GU{YCE1mu8uTFmP3 zZb%-^>UrLJqqel)n0Yb)r}bo?D?0B?&{%E)f{KD(;pnDvZOc)ubxlOZ>wr8TRpVs$L||+ zc7e|6#s<2fZeaVG)Aer_o3hwbKiz(NcZWx7p~=#|sqW?77j8_5cf*%ns_9I`y8kf? z^wGV9ELj8owa7poVmW2-RnMYD8Ab6xvx4*(R|iG^U0sz z{k(B+;y*9`^8N()eRrp|`K0IagL11aqi*h-?;PKAV2f|8^~Pyy|43W(?Z@fw6xSbI zWRAo2S)w0w6x(yRAKB5NAvwUjo!H*~EJKi`RFfkSv+5?l53u+$Lyc^}SW5%9kP0tA> ziK2a51JfPm9%Me_FE8FP-OyJ${19+y^-uR^UH;2UUw=^bti|GmTnjTZ_3D;Whx>lA zRvuk29JRMK7lX5wbxFy#f~3q{y@`^Wr)#oKoVn(n0kv;maC)ILOIlh!^=y7Vr@m(D h^y}RGB`FRcJ2U6p zJM*3Id^c29`m4mJ7Cwa_NMdkp5$)!{On75mEb0mCZu)7{npc_%x7XD)HN3esP|@&4 z9a7O;7sw41G}i}mva^>5vVXoJJ7)!+6Ihz*_NX^@c1&9C1@CKa zDSq49N*+Px%%2I*^;EAzRx+V@mV$PJUt61YWj;8C1qC!PgHBC1R z-7pQ)WJQkRDVk$=K>%Q;DMLVu6k`&+O)@$`0-O{GilbPblVn-ZGzt*BMF|l~jL<@a zrXfLdv4y%SjwB z(mYETD6ab{17j>4K*)=b6HQKz;Iu_?HZMDz?C>DU@FvbmnC`{2WYR!ciy#G3kQ5%c z7or$t@^VxF4kef<&!CzYRlS6cx-;{VDnLhsj!T7PEdfSF#bIR~l`%~7lLiJAMUXT} zb!62Ml_<_wJkQGluj4To@P zaT>0msFq9%j0g-_i;|p0@fI!$luSa^-G!!@jsRU9ZJM{48MJVT;cSA`Fh*j4VoHjm z7!D)atY}LvC03(U+^>3Z#V@P22&1fItCoYYGHZ~s!_X#%f@DtOWi`S|u5>0YvXVn5 zOMaZ;WHrizh@?a?+MpmQSTrFqD5Vp$s@aZaITUAMEFb}evLZ%X1g$`*04*x1uA~uy zaXkTn7BM0Y&B}^yb5cY#9h^2eLDF4?yg#>zIqiwVrK`73M$?i zYd#pQzES2I-1O39#|zDwcRFG+@0_np4bJkF`JPEBDKBqGdB10Cm9HeVCs7qCw%Q{v_^j*xeV?}to@;jwO!Iq+uN7;~zYkpa zW-GYx;N_!Femrp43dt$#^B-Pb`#aCiO0Jx1X7R$DmS5cN_)ls?_k47_chh8CAD%b7 zp__=W2xnGaj_G{oMsL?2{cp3Kw@{Sq61U}72ayvKH;+n#Wp)w$+9xTM-Sd(?o)=HT ziMly8ZN)VpFxGJRpXPUswUd)WU+^afA0CH6Pr=z8{c{go`DOZvvtyOj%W@KZb?pxa zcBCh*PW#E;y|oWVV!rR}Sl^T@$F)EDu0QG1Ig6HU$x1P9?e4g7A6<}|KE87x=@T@6 z(c;BlahtOiY)SKlt>QPoxi;1M?fmlt8wU2xA8*=l)pNe9N^5yC-F5hHZRaavkdQBJ z?xmJ@f4g(6hS+s%d>mf=wLX>Ant2pC75^OZZeI~7?e6I<{jhg0(>}E>cboSIWXa~N z%(;7pzC5$2_0igj!E0wOvX{H6whUMKJwNmh1j3z~d@q{e4UPUG(S~jR}SQZ^SpW#{PG|5$f9ab=I!F z&LtlNR<8`*^__id{p;&G|B>-*UU9~!3rb)5%XL{>^h{>Y&Bi1Bjm?dX;o*$WTW(Dy z7W_GMdwhxiJ?^isj7ae6!vt(cRr|U}+ntUS>*PYawx@omq&qJuuWq&`bDu3yz z$Hxz?nzuaegWs=g9vhJE-@l*xs?mKU{z*;iliHh+#IpTqdFciH@u5)g%cmE^9`an( zpSZZ^N3ZSPlhCz4(xTJkmd^hJ7@8YV literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Flash.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/Flash.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6c8d17a6b3674368f6bee9b6f2fc8f4c3c39d0 GIT binary patch literal 2044 zcmV^5n_1RD-8=UH_H}d&4NohG7&} z6vY>+sHm#48Y=Rg&=1~_f%>;&$Bq@g5P%b}oaok3f1@bMH?!Hz{-&0e6cSWbkV+*< zBoahK)LoC_+A52SOO@HVISn}NMd5E>{`t!j{}sUTdd-JAJ4LZj zjK;>s{4flL>UDoy%4kOr1Yhgz>(#bw&FMlF2u(vqFf%g~o*Nsh2T}BUr(FBh@#Dwc z&kbwb8v+7g{!+>ko zrpcerzrMV@=&7pyI0|V+Y0QnqY`J?^kMeNu!vL(Wuj6|@8#bg#r#3P%F;O2M&tJ@C zJNG^F%roJ=0NR}&ue^5hr(3sn?%UhH*DO~{L{S7lA`wR@>eISuVd^HD5C~02RTYE~ zN-CXZetw?(`Ei0EL{+FtiQc@aIT#!mjMr+l9aknNPXI^n1rWE46DLk&Ow;_!lTSXC zs5%v*=u=qRwkee=AVCuvx?!LT4P6r?lSwj}Ch{MTBc)`muu2$(`ts6p=&U>WrKP2& zfq?;g^2*h|fy0A;eDlnk)a zWgMr5Wm&XuZlfdD!MpFA#kLbzrb#NjfvIa(mF}H8&Bdj~JqtG$yt%o#pufLAHZ=6% z3&61l0ti)nck9-Ntksnj&c1UND`r#oeEh&iRRs%kH&_yj3_L!FWtn%m(f57ql#QDOXFx z?Z(2oVFH2+6Bq6cBVF6KQLR=`R25y*Y05NHb*gxtho1djUPz9QZD3=?r$*s9ux_p_YjT=cNleDz9FgrU-%!;83!G=VN zYPG`Nuk0n6NT90ftpnSDb02`Bu;99GOD@;J!r~I~cpSg(;rZU}MQgQnT3TBe85(7I zc?BsWDy0fx7~u1dK#xzjQ|ty?*pimij$*bqxALe;qc)@OifLZN~KtL9FmCy?b&uL(_(mdl#Xl; zp$ddhQB{Eu0$ta!?Ko3YQ*7(%#4rp1blt$VD3JPHmly7bzV-sE5x6{?Nop>zH)btc*&b-d_%nX+= zU8Y*C;QK)&rF4*#6orct`6t)(|9o#bR$h4V$g4>^`QsfsyKPlbs8lL=o=;z2A3L`1 zU{iAorfH#RjpzkIK)vp=yt>Tf(=po|Ms|5RRI)5p{=cz-4E~P?{B^_|5+`WcC7$OsHuXHhFeHp3WF+re*f4Z5%^9qiMgDyL4e=QO za&+X}Sh6Mc2TPcg%BAk5>AQlu-m|mSvGhCh&bvt`*kqy8{oB+S=M0JM`qCK|5v~w9MG!st`Fv zAq`TOlB$eYb3J#gTB&}R|M=Wn`TV678kx=k+=B-X?ou@Q4J6-FPqTTva|eTtnS=Y)v`XcZE0Wm%(S+{n>TgunLDTH*uh2T&!5`4%$c3C%y;hIyZ_+f R9g8PVpFMx^^0^>`H30UMeqjIr literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderOpened.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderOpened.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c5dd413efe52ef8df245c62d38abd3fb5531faf GIT binary patch literal 132 zcmZ?wbhEHb6krfwSj5I~?p*T!b93g*Vfg=l&j0`a85n>J5UKc+g^_`QjX?*<2C5Wb zU|{yl*mXxoV3&KA=w%M0D)qo6IdPeS4hsuYt(PRqFy=dMJ1DS(;Y^uj?AqnKDvKH$ h4uqvBmU_;}`s(90J$U9C1Ji>22?c3Bc`6JH)&Op|Ft`8! literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderOpened32.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderOpened32.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e3fcf56cc471cb8f44c5edb5f23407f120b75a9 GIT binary patch literal 264 zcmV+j0r&n#Nk%w1VITk?0HOx~fPet_`1s7sW&i*HnVA6p%$fiHng9R)A^8LW000L7 zEC2ui03ZM$000Bcc)HyFFv{78y_ZT7y6*y^J)B{lXE-t?>Kf|WzJ*zbST3@`>l>e7 zXTYP`jx|Fqxg-!3v!5%8G&mPg=26MzE|piEc$^ay3Qmr2&HfAsp|@13xD0Kw@Z;yk4lxJy}TbYwv1&v{IeS%6~q)(8cfvHH9 z1FWAXijuHrXtPjLUZ*y?s=NoSsJ^hlX9AX3p}@()!dFnYxLu3VoKMAM-ecScv*YCD O=I1Nv>g((j2>?5Tf_QiU literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderUp.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/FolderUp.gif new file mode 100644 index 0000000000000000000000000000000000000000..ad5bc202670bfa12195e767c28050b236089e940 GIT binary patch literal 132 zcmV-~0DJ#ONk%w1VGsZi0HOx~_xJbz|IYu;oSd8h&dy{1|C|5-0RR90A^8LW000L7 zEC2ui01yBW0009?c)Hv>5E}PD2&Iha2KgWnMapoU=v5GtnPtYC3GCs*Ml2M2edj

    gU*8OML`a`!cNNp5a}iG+}Z5W>>P8X}@FKp4P{R!6PN zI9g>oZO3uy8bus*s&%wrJB<6-P7$pY3SkXdKrnz4LRgZp2t<;Qo808yqAr|TFIgnmI3I|W^6(R6iVGND)B^ip5{$no#33a-s7nE3eC>YbndaBktJgm*oW zo?$Ymuj+!h!doz3cjeBqTD;>h*nAi)UL>Q9)KG|I;qtK$5oIfpuUk^lj^jxs-fxnOwuC)6(U_Ju!!UTc871Ba zfNXMM@J*w3(|X3`<)bM{cGv8$U%f?{dnGOLN{vQ~{QF?pFC0dPpNsoeBZwm5GmS%i ztqog~k=`;zw>naT17+dU`?vPC)(?5|79mP9q9hXuceC@o)#T;oV>cVv-Ef$^TyNRN zRql#W14shPd=r)#!)LaG0M_&p2D{rtSxntm@j~dtysC5YiWfpBWHEJL|5t}ZTVN`p z!9*l7NMn5?MJ46&e|~INZ?4^tsCkWR0b*X%A;QqZCh_h}mL7?WsjFn+Z%?>C;@Pm%pcUCHdMa z&jOn#Z&T47?>dxt53!zOD2Xukz;#$Wg~+Bfl;i-3a64xXzQyNTHZf!F&G@s&^VOFh zv$?*7Nz;EuM!-jQz>Xvehz1+pf;%{|@!|ede`iJc>TuIl0RU>B@%>IRn4V8BT_(D( zoo%*d6ayN)?H`kjTmYay)XV2P_b{{KR)XWo=xqLkEqgvEE&EyuOA6^2^77igVnh*g zU41-uOD5U2n0~r??I&}qx^MkS02r=-s#qx+%u97mnID+8(vm&vVRKj0>qNu7G;FEn zy4lMaQ!<~+E&rsUVHce-D{~girS5Dx)hE+=;O-R!yiN|ZhB$QiIBV}MWN^!hp;%-n zc+*RL{Z}~y-`K3Gf!>PM;rGj*>AcNLPoVSg-xF#)j3&6)zik&&XDlIS+ET*j8aUom zM_ZS|^m(%|7!7Q0Nk?|(FsO(eIu}6|WQt2m`0R@){^Es#(IngoS3QJ3w&E(1x~f?f zWd5<^3_|*BGAG~6!1*s|J+hU9tx@JIya9{dMpmYqHH%MT8al<7Z9PO{DoI5rr7CoF zUc{bVYLO(v5*X#j2%x6QTWGTT6Wi;K87$XSFlov(+AkcU@AHiuI2odBegz)Ck6?xa zqftV(2k6nV={<4`Eiu59S+lr&sf)$AXRxG|q6E+;i8x3=9nL zw}u*8TT;xPJ%ivi+4#LS%oZa68O{Wixrewm9W+f~-9aPc-CZo1qGPc6(RD5TzXFIF z1NXM|dE|TUzMW(;$)UrIq%?tovRUL!@Zxb>a5~N3_4oN?9=*i|KrEhOT<|zqnNCb5 z6QU%7E|^CRP+e8*X|*gVtgKvtBuUga)N$hEG19F)6pZ)da+qNqPWFyWDk5jiIS=%WT`mu9}6S3HwIMu6J7y|f%}BEuFUKN!R9wBT`nuex&nqa)}a zwK4noml3=knjd(8@b&q)Ck7Ej18ORUC#}|aV{&s)W9Lydour(^DF@gy@CS4>05tiVTX+7%Aoa^8aCmbI`ET8cU^Ng9 z8S&?pady{JgGbv2ALE-;(0>Rp&t|vh9Bpo9C>}==MP!44cuK<_ZAn_w?leZ?7ZFhL zMtywH{s?A=geVE9DGleK3jj$Jm~#JY`fi&_R(2W&OD6dx1+;$lT=~#NK3H5Uxp|Mm`yUCG!JG^DT3(c)ThtJPq&`laK{_H?*JO00;&X9fjIEX zoUwTptHUX1s)mwE5$^3(Iy){#6;*vW;LvN_y?Yi}y}6Pr=SCqjkWHy~9Oo`{GDgqB z7&Va+QY;)(fx(i2*;R9&_g$*NYCPtu&*wQgUQXGH6CGCW`}AFrdVvn1m?t z{thmmtdE7y929#7lDjwTh`w5VG~O}1&^Qnq_U{0s;R7j+aCthqKopNhIl!Vp#9Xv=(hFS6Sb|~slgGeP7Hf|cniLFBN9jWw_^J6 xerdz+BSEj!|J(WW5l7J z`iPnDMJGmmGd}s`)8Hi;=fNQ+4b z-*}moG;5#Tz1RQ0E_>~BB>ul*1quuX!(Nq2wcGFaCrnRImjM3^FOa??m=4&gR;vpQ z2E*_Cet%9vLV~)Wpg@zBmKJL=nHV1*=kn#tE#u?kzxf`3R^X7qVEA)lVq%xUVEB}g zkuke(-@ed^6DP!r7ca!f$cT9N?wzQps1S;xh>I653Pn+-7aNhkz`FvqT7A-JG`7UW z#eFoHOuc*d?D^ZdbLakW_wL+O>2yED$H)JEc6K%=DJe;n zo}R9=SS;G~^mKOb-p$618=0SFVmDwY4>L=gyt^zP>&*8qHuR6ngyeV3F`Ea}4w6?aQ(P((`FL4a@q{WWDrR23d?^DXz~iZ@sTSZLz`N<`>1cS-2~12(G(3L%cu!GL zkvb3vkdTnTsZ*yobLI@PEOYzzZJbW0ucf6$csw3|OiawbrlzKv1A%}O`1j9w_a(9= zCnx9Q3R`uh)y$>t%Fwlxx?np(qMkt@fJ%L!pq+>-B$eI-NhlPp3d6CMKGnK7Gpe?b}fl zg`uG#0J5^OC@(LkzP_F#M~)!NGWq%WWMpI@NfJXtL)^W47a;`k@$nouZ~&c7hsWcg zuC9)`xjD32E#>9q7>!0kp^%iDn|l=aaS5}mtgP9Qkr7c+QX*1QQ$=cOs@Sk$gRtA} z!fv;V;^JaqGMNM*G#ZVlt*sTWUcC~Xot@(N@#BJpvn}@S-7DU{eJchA21H$5ozQ4B z0ubxhuNS?&y<%=|PGn|gM*2YHF4($ttGBtiIaZcs8XFtw>FEI=Gc%LCygb&dS;P4F zIQ8}Q1OfqKV`DjV=n!#naY&NHy?giQ?OizD`T6-26cixKGF@F=G&MCLgurIAQCV5Z zjvYHhM@NUegg{Ve{A3l7D>I0ag*mbSLGC4Jy$kD=S`j#|mf2`nek(b2Jj zR9Js?3Vw;iY7tqizo-b4lan!-OskUU@9)Rs@k9lTHn%7OY9O$jKuma%5Q5RsQAS5c zS0%7oDx#5D^lSw@z+{+!46KzTDHIF_WrM*G*|7Y#*jPBMi^uR&6ql3v++hWf^cmB? zn1C!v(%~0n}g*3Q*;z(EbYVJArd~?2UX3hlgDcIvX%|~~v*Cq$M=+(C_ zi+9@h=qH{0n>)=hDD{h;b#{-T(I-~!f1&^$yIapF$Y0*o%|dg9O4Z}!sZR~S<98Vk z5QS%kHn8AQRaCjcZ+`V!ZEB?-S0u z@)eVEn{P`X0eUqu+*M z7|=8gN-21rhZkOW5x;%zkI(;eMSS3YN&eU%LeTN5q0x;aTP=N>-GlFa{}4>m1f>*G zN+_kE>pC`X-i)hr|LBXy<8PlkcW$P6#w}MMvjsZQjZ>7M=Yh?-@s9jF_CNR#lu{5v zpjHeR#h7P<+Mp5V=dl2Vz3QncI_NFgX5Ye>nMkwOlU0S##?n*=*Kn_xC){ zwk*pBU^tG0xw$zQhH>qs)BsVbRG{lRQmGV#5bHh?z}Br>znn-Up6&1NkDZx5uZ|o! zqEe~2R8YU$*nRuK(a}+{GDaz7o2Dt0Qpo4?2#3RvQntPY&9&>g2nK@?LWDD!j6OLz zS^qZx9UUFp8Dl4s$z*8LrcEdoi{!$)7o-*1Hj&Lf{h@}kX_V5aX_~T9sep41P17KR z03oC`188X@5{Y=lVsQh2*=A2j0IW}^(^JF4!<|hrX_^Mdam4iWbYG!RX!ddvxc0gS zAb0QHZFhHf&k#bwns)tu+WBucLI`}{2V-pd=+UEhXaK?hYyc-TP3xSUodsj8rCir_ z|5_*%?1oP>u>imUNKMmrrBW&F(4j*sX=#;yB^^QtjE|2GG&K+e@C<?(h?a~@0w4yUyHN=XfWsK8 z`o8brTEjwdy?s{=3P@uwkW41+ef#!3C#6h$ltyl3jIkGw9XmGK{$D^EgSI7YU#qqu z8`aYRu*PU#Yq?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVh_H=O!skoK&=l_3uW{xGxmpeiFjd$*@oEEu14H5t zhPwhavm6-|8a7lh&UVU4QUGb@5n*azSY#o<$kf3(-)X|;LRK9f1{MKfyR$7x>?{mS z9giGXI26Q^L>^9N=TJ}!Xk%EKS@em~L*IeHFlg3XMkXEx%}&2L3(aRP1A2qO)78&q Iol`;+05=O-&j0`b literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/edit-delete1.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/edit-delete1.png new file mode 100644 index 0000000000000000000000000000000000000000..3811b64895bdf722cd76c798c89ed7a6e625913d GIT binary patch literal 1211 zcmV;s1VsCZP)&}2?QB#3K;+Z01tFU zSad^gZEa<4bO32&AZ%}EZ-&Nqxc~qJElET{R5;76lx=8RRT#(r=iGafrfpt&Z~BsK zwzsKmt=lXcRy%3wU@zblb&69I{h(+S^n))MnyHch%T=}nuPw|kBsnx>5z3T}Tm+~@gU&X0%ZJUj$j^wG%=hjcx$5C1~~ zrJuZd?9J|tT-^Fo*Ax3*?0yO9bUN>G&Wj)$9w7t(AW0HVpE>nBfK9M^xc5B(J?kk$ zB9TBW7Apd7M*1AX83(&Y!NWy@f@i%eq`4C*yI=Qd3jS z*4EZoO-(f+6hy68g{rD5Iv<#2vMe);*&^i&%?AR_fT6A9p3aD~(wR}~>UBkNQcB5; z)mEOBD`eefwHt1?Ygtj8gmK2~HoH+)R>l;?iOIKs;atbvsnedf98&{v0t{COcJcta%1Z1l;y}nkJJYjf)%0AVyXz7 z&=X-vlz3nN*=RbOn$fgaw140$t-Q3nZ8@?uO9)AP_rtgJ_8l$QxoZcK$y6%56b{b% zr!hL}!-EeTS&7AB?&7t{k#1^fx|r1U!1UD2{r(xhQRk`sTogq2v4#fE3)frl z|NIuNRgyp9@X}!4+5X=7`M?zdfB-N7PypC-G0ph|07JepAi0&~9SKOY%f0nX^lS0%q#YP1;Cv`C~wifvVWH7q5i>VkBIIeP6 z?s|6)au-91QGBQO`{sE*@B4fS?A7A^!aG@(#_<=$akkoxxl9xQXmcpb()eup8Wcsb zgoa^snGM6hljX9thz?EX=KSV+MNuFK0-`7)n@QnL;d#!A@UhW?AP8tQ8h?ynYKO=6BACOv97OzXrAtf@ z2O)x1X8|H-V>nD%fY=%S{{Wx9i2r094LW{B44uo@Kw#`p>kX`0Uo?09s&V;JTzyn7 zDU*{^%-Y&}CK{d4s?`b^i%n^@T9ulJ#`L$9H{{~N1F9)O#I0o&NqHSeDc6cDqz8 zK1}bwAaOHui(g)OtONMGwY4emZr<;5I_X`d&8)9~I0*nN&z?HdsoA#LQO@rNluJuR z`2EL^Bopb;WFpnaO zc&HaWsnCO4ZQeH7-5C$rjWJqn6%P(PvorhO{mnD~otcIItq6b% z7tdeuw0pTVSgX|l(4Iba>*no&6@$;6KWk2%IJ4wK*Kb@Sm&@(FJ88y-yxkzK6*=8J2JQN?Px7AYo)Swn61qDzpm+OunkFIckNo+TY?M4Au6LP6KYEs1qjr>!`KPw9h1*E%JtPk0= zDgYv3t0|ZGn*p>jXboB$v^IFY+$NRnD$;lp04mshfn(RxR9y`w0E56_gx|qn5cQxi zU<3xknl{DE{JbN*atV+Pa3ax5U-B8!l2jdCX9yYtw1V*KU}_yPNoICYNIUxkP|80* z7#mO0zOIvWzKZQT4tNcCb8Tph9E&KbjwYKgcxvuBKv)4$fVQq4w#6)x(5nKFe!sqiT|Q3N6isEm$|o%wKQ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-new2.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-new2.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd15c018493cecd0498daa8d0f2e1cf3f4126e3 GIT binary patch literal 1399 zcmV--1&I2IP)z-K!S}0j0Bh&te);ZX=I05*+DB zsZhlEzxYo?X2Sn^n9ri9PPsuy+eBJHO(0s#s53Bz^0@%_@85suz5n1U0#Ot_Ow;tc z4<0;_HDR0FCM4U~xQmz+Bw%z3zK7?D*(g3ayCyz)@ZNuL_wHS?EJH*P5kd%v2&%eD zfJcuWeY4;1e+PKD63^H{tM4J{9gMw&CO5ED!8iyba0f)?b)8mfrd58l24JmS?CtHP z`}_Nd2;Tb@$Vr|+G#ZV%i2UFLK#%Dl)psz}_o4D0CjJscZ-8w84&w)C^lu_lCoIr; zZDQ*ArxzWNZnsO8WrPsc@&rIcFvdj2n4jLeckgG$7=H2VWBY~OzPa`0$nI`ucB31a zDBcCrB#9S!TG?-+2OSi!IwvfKsvH=DtN>KC==FNFUav<8VdcPy_*npedcEG*+}xzo zsd01jW41N}Th|v{+i=+UU2Jp*W3LhXtcLy99N0kj-a?Z@2se333mBhspxJEFZnyE? zjUcSu0$;D! zX}8<_ePH?BUh_paaTQHJXF7X~W(loAsfLn@Oi;g%@CQUD%-z$rFH1(#ts9R%-u~iW zp4|G;hd=z~Z_WXz>U=mH((m`_jkeq)`4t19y1sWm=#Ux)r8W^b4Aa_ zDBq@58I#xofHG8RR3;?RgrG4+`39r>8sq#;%J3F@eHomrT>*p;d=y2?TQIB8s3v4H zcO?K-%hBY{(n(3l$_}+;N*sAaEDPUYly#VvZ<81Aqx`jh8Nh5ZnJ^lSDBL!+G@*RD zxDo(>mkI}?cbOHNbZUoGD>EYFP_;~pCi|mZnzbE_cLcPz2H>14qbQ=)YT?F~S{mcR z)mpG}0>h-(Vp42jO#p<2GZfE^+-O-QGY4Mw*8o&?nq?W&Sq9uDi48&Yl>km_!6H~n z2coAnDv@QDmm#2^t^qjbN>wFobZBV8wD2z#Q9TvV0S%?U6wN08)F( z&PNbsJS){IM{58gGRgCtku9+e!||*nFT-n)Jq;IxtZ>F~$$P+iuOhODs?9V+33(Zo zyS}jXt2ptz_7tVCC|p8?;TnLdPMmXQx)7>1A}a#UpH_OIu)b){a?}8m+~Xuv{`9LK zAHz@90E~z@l4d2SA$PL+B7 zp{pIy(bFla{xQ%6M&|&Ij*k8)x4)M-AM^MhPhLU%>S0udhkyI+&(DpWd9DGQ&**AE z`Wm$zAV3Bj0Rx`dcCmTpnQ#qAUNe9La!&rm{vV&0_z$|iO8zfMYH0uf002ovPDHLk FV1m5tllTAt literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open.png new file mode 100644 index 0000000000000000000000000000000000000000..b67403d9fe8cc15d91acf2eaa7dba47e815dd5ae GIT binary patch literal 625 zcmV-%0*?KOP)i{e+ zE)M)Cu@n(kRkpXc$vKZfYPH%-yWKu;cif$-s&IE^XJV$6vP>MgS3^+wBrUAcR1S5rCA^@#aer@s!dSAm_}e zZFfHdP}SolmMJAuRdUWOe~j$)B2YWmI;-y2W}YnfLX2NaRYgR|IkVe~JbiqRB8DT6 zfPcJ`q;~1qi?_E+5it?L%m_FWje@oBzi=Pw38#DqVhr54JV6LpDI%si1Qan)#6S$; zjPOKd`u$A23VWOEut9F1wEs#;2kg8?)r>ul{0=%kmf=A()x*Wv9;dYfW|!g}xZQq{pJuBgGKd*f}JIxK+Bt>L#rI ztaGbb=gsO5vR(W`JMDe4+v_qnuDtuOS=|I@?en(_g(qSIv**77-=a~Y&?|SC00000 LNkvXXu0mjfka`Wo literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open1.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open1.png new file mode 100644 index 0000000000000000000000000000000000000000..f81f70ca4a0852f2a90e9871229431fd108da4de GIT binary patch literal 905 zcmV;419tq0P)HkigTWNZ@uS~m>K^^BmhfGONIIQ`MIl-YPDLs*=*{IfW^#MU0wZIMBW6RDqmGw zX7={_`uf=mfmc>mtkGx?W5mo*&BU1*BEs(OZhwD&|5mM5`+Tza;NSp&t*x!WQ^Cv2 z%i3r(q}6H>LO@kf)iF3p5_WcW`ri9eUYL6`%Guu7*m!>uoB+faO;sg?K#cJc*vv@N zl!b+bnR>lWwOXZADj^~`=TKEPH#gs#R-6EY;4K7CjPVk95*|XJ+wCGE066Ey@H9 zIu|_z4s*pCLcq*;G7#owOLPW-zJETj55{@VQ-7(*AE#Z^^x;@>4*u)HQNJDfb_sdCzH{Pn#?t7vdJ}Mz9QH`jEnh_OL z4f)4a3I$>41HV5$iB7|JIhYug{bNTz7P(oQWv(m?oB?jMt`8^hTkA{>e%$@4@gNbA zWN~rP?mg^ zsYENRGxMkS?|kuK`^!W5_EQm{2)qisGCJtLh5~Kiz|00hHaLY5RIaOh fM%W1M&CLD=(zru7jHj3P00000NkvXXu0mjfc_N*P literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open2.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder-open2.png new file mode 100644 index 0000000000000000000000000000000000000000..901816c8ec38be3f5129f979b5efb839b76c67cc GIT binary patch literal 1184 zcmV;R1Yi4!P)sy%!A0^%h=&}!+4JNR-=98V->G|0Hs(S17kn}K{ncZx% zE9(m{-E?*J@2OwCMO7PBqJ$#dGltrwYBy7<;$0!>=z&e$n!j_*X#Q5 z;X^u|4yrmc0gN%6IB~+Qt*yNed~qNE*4i}7GIQie8xg^KzfE}331bZPdcCo}zW&L% zbLUoz=d(gpt@r+eD_5?3vnv3QWm#70bh>mpoiRXhEkq`TmY0_s&1REUtA#NJV+;U6 z5RC5!g8{d0-C6~92UuEKN_)Ltsoh@0S~~?WYbuI};}~EJF`023BO-GxX`P{7zo_C=r#Ag7NJp=T55rqS} zQ@&e2O6GzcN4--NKu|*(XBOW4@LGSey%d-mKVNDm78e&05&DVZO~|J! zZ|_-nCmvuPK!Hw_@cGxjo+%o~0M5C5Fc=a=5vocrF*NH77!z>&?`Xde094BXjnGgk zna5KAB9c`q<*@^afrc%Um8#F9JNhd88G5U)5Xvk`4suevq` z;Jr^qqY=(IM1%+ZHm@CTFiISm^{*_RSiwJ=LMxtbKTZ|y&jLt|F|^xloOARa&vB|= zVVF8{c{u>@As3Hz+xuBjy8YOz*MFt}L?n*mEv&Vq*3(a#)N2*`alWS_^d6k|h$wEx z`(a?{Z{-X}X}zkIzh*fQ!&3)-yAQ{f=7}>;l5HP_S4F&{3gQ*7iucM35z7G&p7aR< zbLW?@-r1Z5kR(Y$uNQIq$#It7m}heklRJ-z*QwbGkbJTl6AS^+(^lIV&&RL>psG~=Jd_M(Xj4`KApO$-3gEd>C)(q+OM+AYH z{k4}2RV9kjEbVu0{CWLi&zOsIsv3_0fYM+v_~G8@$VXbj45Nf$lpKgSfP&AW2S45U z_Oq)%d9uw+94uO`qbE;>COoES5SYLogt!xtcq^*8bd&-k;IXQXi_lDNv&NVJsPfbq ycMt&2q6(xyuBzLXm3f(c{=bMr|2I5zfPVoH02&%Tf)U&R00002|yPkE-3> z-8b(3_?ov1cYiV%432IDm|3sa>)kUm%nWx2;PmwLe!t&8>~uQMm(4k6LI`Cz9Dc0p zx&Tx;XIE7wlL@7i6(oef_V#uMc)NrGOsCVTl=7;s>w_zRjH+U0Ymj!k-P+vTq}6H> zV^0g%)=c>R8-N-3GD0!|F@>GqJ z%4)bdf_Rm4wwyD#6GYg!0ieZcvQf+lK>!v2)x`$$R0x3iqPe(Z=9oKK7jS;E^w*b55oWe`mg~7=)i^mlj0C%nT8s$wuo= zb!&(s!bMVmQn@?FCx!@o{yMsKc&XWJj=)i68(aN%$9JEC^W*#Yp8+C_MZ$~UM;0NT T9Al?300000NkvXXu0mjfM@0T3 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder1.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/folder1.png new file mode 100644 index 0000000000000000000000000000000000000000..01f45b82aa50aca50b1489c7c12d19131c4c0cc8 GIT binary patch literal 848 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 pI#R>7P%^)q3wROKeC1m2{1R5*>L zlv`*VWfaGM=ete1xCvK~WohD|mbGAy019XhA_RQv2eQ zeJCjUWK;sy8%Xpe0jmhjIAg8g`DbgoG}BVs^O7CC zqkH#5U8QY7;v1Yf`)lpgnIFF%KN3B*R-9VvFdVc)TRU&tf9Liv_-Xn}PEMa-NB7;q zmQAIyEcc>78f`c;!B*K8>jDq{(`k`BrMy~e*%YPTNK6E!Jem!i++xo zzy4@Kog)YwDu4@%zc8PiqxZf?i=r3{%eJ^CI4oNc#pu3!9=~zphEAE9okS~xbCw`* zBvM6Nk9CUQ=DuhBh7P%R=iW|HjD}?^t1A|UZ!hf%@9Mtap050WQ4VVy&N&jP)6i9n zQy3>0r}(*Yf^A*fU1@9gZiL}BRI68%?Gsxz-TKk%L>+Xw+8QRc}RGokTHTy@&{i5|jpI1mgr*GxD-vq1sr;?=+LhiXvABOVf;q z1Sy6nt^wdZ`1E5n>Ipt+#S}y&5RtY{X)+*S)3r(Gc;G#B59wNF~js|YlJ zNJJXh+~gAI9Mk}pUORSZ<7M7>HWQIE55(fV&lKmO*)vO~(jjSJl8y!tXDWd@Q1{*^ r%ldJeMCV2Z)u~I8gU30z_c_?VT>lh;8N^;v00000NkvXXu0mjfa%8Zh literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-up1.png b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/go-up1.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a0cd721f2a06ddc54808de9e6c7e43626c6512 GIT binary patch literal 877 zcmV-z1CsoSP)b zluc+{RTRg6=YG6-nK4FWENw9c#kNAwg^Z<6Qfw))AhxL#BepICrCGR3Y*ImRp({T? zTnLJSb>SjV3*th8NWh2|-MFv{h6ar?CQOCaPCGO2Slu7MmO%Abnk;~-!>l)Pfcm^zkmlP{Y%^L=sSi%YWmx|!0380>y~0* z!X3S>RDStj^=N5m&yix!t>xo;CxRE&i<7mwVsI>|6icO+%I^m*!Zwe4fYlJz4V3of(`Acij|t za8kNcXJ-!Yd!{F~EiPRA5oa9Mcz#{_o<>q_+~<$(9_igu z-fDhX`VMP+#~q09!@?JoZYj#ZgF{=4chi+o@#}(XciZ=>{X@I^cU1gOwXd;a@y=5S z0(@Xl+s1h1+`?JDjm9&mi}M7%StyFV1zn^1<@}STD_2 zPkb2qz|m+g64?gc8w5}VPHP+$-&z05^zF;s0 z5J6S3R*2gge)DD|*VlIy_(o=o(1`y=ZHx;9;{*{wQ$_3zc^d?arI}tr3>YgoZ!k`X z+bOa(cXe0DvN;hcWNXd10ScNznkY%6XaeX;Oi@G%BC<-P%YcCIe7nvZRXET)ib{&H zAR;W^9;E5Y8`BNMKqMk@Hg~xMHV1V;{p8!n%WEH)dL|-g3M8Vcnc_S&8?$7l;~l-E z9gl$|Qwg+zwyLK8c{V#qY|b;N?QBVN@FWLU&B6W!?MVva87!da00000NkvXXu0mjf D@Zg=6 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/ai.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/ai.gif new file mode 100644 index 0000000000000000000000000000000000000000..699e6a3872b53a9b211f6ff36ac7e3225dd22de4 GIT binary patch literal 1140 zcmb`E`%e>h0KmVcuWJD*FM9~M9v0;0gPtyf2D4lb<@_VjwB*Bz)~b>#zfjC@IsD5w|Oidff-V#g8}2kNqXb| z3*=vg3;-`U_%`_V2~bM`Zz#+RT^Sx39b;sQ1LKpSLm`J&E4zlMTrP)fis|!OD8)8jZh1;Bx0l-= z|5olUpD))!On*&71F@oVS4HgTQTv+9Iq!CAXG00xRC*#ce9p0;gBC#?#*V6(fm&gZ6(iJ-?<*$cbd*Pk~-cu8ti%)$w~m zF}hZExT5MvJfM2lQ43BrJ}jtiY)z1z1`ujO>Tf(rd_j!es+s?@v3Z@+H#wzy1)VN~ z@>^29db%?9H2l8(hXn%^4iv!}88EbHo(0)mmo&(%=?eP|btA=e;a;G2Q0DP z{-2wtWFHm{1TQkUDOA}p5{MVR_NXWH$j~Q!`r_`FL9mV*0)_R8X_@LhsNeFX+sNR+ zSfg*(_dLbjNJHJs(*8ZS&&0=-PQx#BQM^m*xk9gs-%qS znBFlNEK&BnY6)r2oZVd1)G6?=(lHPMAXN*g^vz7X7pY-0Z6&Aw2(%UNZ;9`9D~)47 zrrC(Kl^)sZ>YQrb0&SZ5`MJ2}gUe;0&|w@Y2TdTqQnY+2%QP)b0SNt_6c z?vCNb#g{jS zqzS1F7Yi`j+&oF3vk@0`c_AlBY-{D z_{yQ;#4A33CbnP$uv<4j5!vO4<#7+FSQ$k_Zp>IRAV4-*NE~_OF;=T}DqVd0X!Bwp wStD5{bcIq>&_CW_%>cTRhtqE{M<8rT)nil z!>wDl1_cGpIX9=cxY)_bDS6JhrAwC@0;zN7lIJ9Qd3jyCc5Tj_ImyXD;@rJ^_ma;g z8yY5`d;cG#;{UlRQ>F+A2pqe249Ed0F-%To`2XJ!Xvn$mii(QIjvZ@hX<_)!zyK8e z52b({B7x#h7DfgJLk1m?dXS$O*!~}wQ6SMQ*?%Hs(g~SEVHZ}EoNC$|w?XZ5<=d*g ztFz3tLuQ?K`?%vx*6#ZsEPVF1?cDu#wReB{`LnL&mDMf!E$w>6I^8|>%FP4+RFsZbl(HUW2zRj7*mpIc#(i7%CXAa&G$1 zb$HJi?&sBSc@@$XSXf!41ycM4mR3*HJEyr}!-dTZEo^K(lB@3>s9p2_-O+~A4J>>T HEDY8FY?%te literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/cs.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..b62bd026061c32a9c6e5e0b7bb0f63f29e2b3dff GIT binary patch literal 224 zcmZ?wbhEHbRA5kGSj5J_(8AEt(sJzBF^2yPK=2<7fDFZ-EQ|~cYz#UeQIJ{&=A{`~ z7yn&Y>lvzH@j8}i<%6w^G1qDysAQ$w*7Cw zb)JWJSY*qv{Jo}@*85%ep#_^mxz@^Ek!v|my$+pkc#iYHgR|<)Hv*145}Xzy*?#uy zW+72u^}VkibX`f?;iJ!XMxcLs>SwXJYbV{lxV?&3^z_y8;(O=jz293O)tFaX(OQ+m V(AC}3+t;1pIBD{fscM`I)&R&*NlyR( literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/dll.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/dll.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b54964576b86bdff354807f15bf8d7b45c26a87 GIT binary patch literal 258 zcmZ?wbhEHbRA5kGSj5KA(!y};*s+$DmjC}5fZ#tE02zuuSr{1@*cfy`q9C;l%*Qjd z?)>vVsp-1YB3p;!?=`iwp6{W_Q5=rtdap9Js!4P!*0z~@{&9%b7hSQiZSf+3>%l=4 zbC?{xRHYJ^JbD!_YN>wVRmm#fINl3>={^y&r(Zh2+A*{0{Dp5OF3+;}xtHpSu`tBg zGna`sL=;C?F*CGG>|*W7kZQMY%L(e5o+#PMJTG{P!~)G$mL+Rfuc**k!@v;4&?&i6 zd2`3?whaZ+?fYX6_}i99@A5dc@yywS=ck>!bS&ZO&I-occkbT1e<$7H@sp>|OgR~> E0d_=epa1{> literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/doc.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/doc.gif new file mode 100644 index 0000000000000000000000000000000000000000..b557568b3d1ca19f9520b38a4c74de4e4abe0301 GIT binary patch literal 260 zcmZ?wbhEHbRA5kGSj5WE($aG5*f9o%{|rD320#W7DE?$&WME)r&;fBkY8jYMM(kq! zXJF^1sbKNi_rQt=M|)>{Hf)}-F6;CphX;mvXV)1h&Uf|7+UJv?arlkMs(3X`m9CP_ zv)3+@oW^!z&6Ep|?ycG7>(EguSdif;%5!b$-mI&xN9DLr?#s-QF^TF-@eHzvD|N|b zOf4v2R;u;NYnoIoQPMuWEU$95PkPn_w-&EyGa42)SIuA0xw3g_dy3)$ug*<%>t}2f z_1`SBb+_-1>AS@Cs_Z|y`tZVS$C7M#_MAI&;Bx2%Zo@;jPiRElfABCu;mOly&tE8T HGFSruuDNnD literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/exe.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/exe.gif new file mode 100644 index 0000000000000000000000000000000000000000..758499394afc5814b9da3e02d6b2996623ea3ece GIT binary patch literal 170 zcmZ?wbhEHbRA5kGSj5V3?AWoEmKKKp{}~v71PA~bK%n@Og^_`Ql|cu@0jXtR&X3r2 z=bynT&((V^Uh}fgcb2F-r!c4K#l%&et8O!#Y3N#3U@Bnaczx0Bu1&8c>vg>^p7?UH zZNaiF>{E4?pUHaCwNz`jZ!Y_szmxXvGM=^K87~uK*>B$dd{+jey?NVLeM+n`tOzMk R;r49r>h9_76XRsC1^{%DM?C-l literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/fla.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/fla.gif new file mode 100644 index 0000000000000000000000000000000000000000..923079fc6bbc36b0f3cef03c381d42fb9962c753 GIT binary patch literal 946 zcmdUs-ET{A9EZO<+S9YC?Wob8m!v&2wj#5`EE?U~b1XJhOV`LE=R#U_A%>LBTk4|S zDr>A5I=U%J+YM1$%pthhOzORHK?$-Hd%=a%c}WpTjsL=P_1t})AeVLSTYuigUXan3z0}9Eu?9h z4g>-bhr_|LX#{*U>a$wohya=sD6q38WU|M2-pz4VO66u*f^)O9+M!lQeLk<%>M)rS z@wg8m9uWb%T~Db3Za0TeOoiOEDnX+NMMe>+W=#Q_8XFq2BNU$qP77YIcVbf*696Fd zj|ur7p?-?809aV`H~#M@Ajvq{CbpuYvZaL}@K*dVj_I0@`ubTVq)>xVDrh4rms5^3Spr$J-t`?u;zkBE4#^Dz7jki4oSKP`v#fm9opMHCnZ;} zz1GBI{`)<+KP-zs;Tg$M-Djcl;f+t)SC6%Q2YyxP#?LXbXR8Ot7T)hy{Qg~6P_(9= zkQdf^l{=`riw%{(Tm{ue)-_qW)%G&WtZSVquZKD9wz*vvb@{U-2|A~ACfIDf%*e$P z?cUS3lIChBh={$LNy`98ZaqW`&r0BuD z4e~{vlsT1)@1B+?J7{TnC0!%;?@hifwn#f%#%SZ*H~5S4*^M6Md&ZgN-V?5w@~~=t z{vj(Nr0)EH;qJQ9o~mu@T=}_;Ri6HWl}~Q2nBysSj+e}{F=hLUxurkNGZZr8)2@BH zc*QJFQiqE)DV<5`2@a_I-->GXJTEl6a!_e0hA-#`rlP|j&e=bb4-A%VXakYh*qgmk zvHe)KIKK@GwKB_#Mav3D*S`~KYRv;jX8bUE+RCqgjUTO z!>wDl1_cGpIX9=cxY)_bDS6JhrAwC@0;zN7lIJ9Qd3jyCc5Tj_ImyXD;@rJ^_ma;g z8yY5`d;cG#;{UlRQ>F+A2pqe249Ed0F-%To`2XJ!Xvn$mii(QIjvZ@hX<=w#VE7Ld z{?7oU!6cAD3{d>Z!pOj2$e;sK4Du5L+y4VI3M85(`%k1yIw5l??81tYQ%!s0HmH5B zd|S15b(Xny$gJ~jA9viz+I|0nh0or$qwC-1oqj!Uc6Wh(V`Y&}TYG3|b5l!oMQw0E zU2}DBPkvau_T>@iN3<4dSxx*7gJJ}yHGHWubb-ZC< zSlGlWA{rr3aE6m1Db7hm;O9fu#z~Ku=EN*`;OKotHpw{YmFPBEF7n0SPh z-5{fcDcGTDk%p2-0>i<1jU3uMQ*0^|Rtd8?vkEi_C^|6;eq&3yu%Yol*KBr%M_EkF zYZ-VLm6m7(GRQOXifBkk9A$F2w>LUu!BPQ*!<<6eDjpXepmF>6I+p(?v&mbqn H!e9*mGolF; literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/htm.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/htm.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9bdf0030869bb72b8115ce01f776f080576c7b9 GIT binary patch literal 1527 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 F06XGF$;AKw literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/js.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/js.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe0c98e975c3e36eb30275c584f5cfdaf2bb0b52 GIT binary patch literal 274 zcmV+t0qy=rNk%w1VITk?0HOu}goFUb#>Rw%g#Z5l00030|NsC0{{R30A^8LW000I6 zEC2ui03ZM$000BmXe!+PP|3N9y*Oh*C>2_$F`ZY5XdwigX@IE+vgH@c7VW_sE=S8CAk;96zye@OEi4J7%yYsMBs14lfQi{kx>D-2z!ZXXBlpHGLXfU%%aXw0F>cMSa3P;YN@~85 zXs1wZZWz^I$sBYt#31HnOf{Juf_6(VW^93iSL5Ui2-3o>8d&O_<;{7#7K;Vu(OKI1 z;;nFSdR=&TNjQdbgFbA98Gu(;7;}G#8%mLqI%r`kjz?`jI+KK=hk>Yqn`^8sag(rR zlwho{Z*H_0P?(bV5^7Hid_8W(lfGF~=&@ij1P5SHA!N?yuXeKm(zYURrXvvm z02f3pqh`0;IW=%{9SIi~0s#OTdVEQ2Ol&zEl$9KW28V}scnlMdOpzUuf|p+%1)7?P z01XV0D}SVKrgN#Pn~IA~O|XEpgtw{zx&ywUzrd%Nxy1wo$jCSwwH=v>x)%i*2akTq zHq?X(tPK|nG~C`lOry0C7kB42j-ocmf3*q&0}5#WYDWEvmd}fogI6N`T1e}k!-tOq z(ohn}-H8`1Wc?9D>*5=M-@a9>NX;Y2kQ+xsakOZHqDGMu1u7}oQqW64yn5l}LW1JS wh3#O{lo3win^+%9nY4LhR#Tomen<@mRfIy6Sg}_1V5zIuua$U+O%VbBJG0Wu*8l(j literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/pdf.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/pdf.gif new file mode 100644 index 0000000000000000000000000000000000000000..4950ec87c13f9918009b13ae2db6732e07317cd0 GIT binary patch literal 567 zcmZ?wbhEHbRA5kGxT?c&?%cWOmX-nn0?EnA&*#k9yLa!kYuBE81--YlJa+8Z+O=z= zqN28L-TFKz$jQm+d3Ls!m)G;X$DT(;JvTIbuW9(arRBM$;q&V1=Rr|Zrc8OBocum0 z>iOQi_cS%Lv$N*_4RmsP@8tEoXUg-Qp6A)c?~98qEiH?Si~j=w0|?x^cMrw{^GPHW zf3h$#Fz5gw5P@~~Qom*ewqZhw7 zKBurJtN!*1^O!YOYu9|)YB8_t^WW6ca;6rh2(6sF+WgwC%rb5DN$RB?)j2&i$xXpi zXH<91Dwz;8FKv0soTXD@*19hVEcJDrymhOr!sL)mzWyOW976j8_W0~Otj(@`;%MZF z07c$2>YI-rW@Nm4^}HZEi}c~Me&>Z*v_(|+KXSSjEdDG&n311fNae_ty(exka&YjA z3b14-FdgnHb#0U7V94icWRT)}X6&|fc5Aw}g~uJWRtM%biI0UgiAk;v%sgIhj0-kh zc1hP(n4!^dprL6J+ky=&8(u%P2${xg#2}GysD*KoI+sXnLPBFRqx9EWgM|t!Ij4C= zs_n>1(muUHq|?e^qLB9WHL>g!0Swn9Z;EDi%b6A`9lXKl>+6tVt+!-b+&ZS;DoLw1 LBt|rC3S literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/png.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/png.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a79ebfdf5f97176aa1605e4cc4d779d6c49487c GIT binary patch literal 464 zcmV;>0WbbXNk%w1VITk?0J9GO($&>MW1Lc_&Z()eL9#*Z@$WY`I#66uAt52g#>Rw% zgn$450RI60|Nj600RR90A^8LW000jFEC2ui03ZM$000F4@X7g{y*Over%PZcj*8PX zPRD&`>$*wVrjlmgmOR%>@BhG{L$`DMTD?Xxsq_tPmE*FhZ2pFdtoC_4F&9}#IfTeiWdb` z1O?!L8wIfrwDf?$V*+vlLQRz9PeHeXJ8Q)92oFF3NTM20D zmu}o7y+v%V%zmD2V?;>*==MW7XXv~x5)aMfBoK?F zW6zSoF1YE1%;Xl!+`|~*F%!825>LA^kD=kxDLIWMmuhA@4aseU*nlRFhyRAJe17_T zednEgTH2cH8+u%Xi^xwCx~}JPxqLn^%Q8ZU<2Y8uilPXDpsK1M$f77FRLmRXFfhr&_Mo^w%1SiCjqEi$FfC3CdWW#Vx#+XI9hG0Y#wXle3m_taUP(G1Bk%%bi zd5%*7FENslF#v987>gJtA&5B&>WZQ=Fb5Pp9HGJyIv5N>H3vAAW!Z2z40t7sbU{*C zNskB`r|3|WSp{pFM$*GP~H>s_TyfBt%-F5T8;J#~8H?0~s+ zXXB9PW>r(KZ`8W`gfA8$e1fNO%=5#NJh;x~k4ES33@n~zf1OYA*v&hGHzSS4?YPRQ&w4x)AxOBAXi6+*mu{KIuGh-r|Wzv*e+FR&JZ$xH1zUYu>cG z&uzI9Yq2%M2+ZunHb+$N1&swYAuDxyBGP!IrSI*qb3{MTMZ?x0V6mWcE z|9I}gv+Zq5){pLIssew!b1CU`96NN@Lmgc;S&v>{nR6wN1qU|2T6&+L3hhaM(Mw%* z=Cbw&*_@SYooKank`p0e+U}nkcSN&;J5R;>2P@wHG7vNmO}g(4+wR?39xu;~%vQg< zR5uH^PL`HTjZgH3$5R)tj|9pq+DGQe#QhXwJ1IW#TFzKpt=1433zr-oN$pzWPW3N) z3vDY`$G2a5h9EB2ESek@@obZ&?AYo9?}a@b{_0IaO93CVWK6}Ix*b7F+;uhM-Q5?z=G__V3lY5wu~{Q`c_Bd p$!sXy?YxvMau4r&IQrbrt}oV%E%z;d_m?(Y)4DIetHV#c_%B&pUbg@M literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/swf.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/swf.gif new file mode 100644 index 0000000000000000000000000000000000000000..5df7de574966c8f4738c337d97c97b362cfb9f91 GIT binary patch literal 725 zcmZ?wbhEHbRA5kGxN5}U<>i%K-E;5x^Y7o^pSyOC!7ym=-o5X?f6va&j*5y}yLRol zbJrLYoz9&**D__!lqqwfidzf~4XbDFV}EmQU$yT;&^-7{zD+O2zova1E6 zTHe3^Uft3o5mY>7=~@QOpgC*zdL>sU7gulHdoH_rN_NlEDRY)aRZoe^Zn<~w`L%1; zdU|@^e}7+HUH$&~dj&K6yl zojL~V+xsHH@c`o|9UhyC1r82J zxwvJ|?KtsmX#fwSz>CD02Ob=1WztX6Yq-Gqe2S+w&#yg)7Bt*sVo!_W*x)34c}@Y7 zfW?X=#ttTpbtl%GzNUM0S(}W`jNJ=z7`bH9q-4uKzYW*nGST5k*x}Susnz8aaN);% zk-6GdPqd>OoiEPR_xjSi@ycd_dkEKgTed$ sRj~fxwYl+MVLG=`U+uM14J=|F5Athe7Cva=(YhfkFW{!(D!^b300g%yMgRZ+ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/swt.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/swt.gif new file mode 100644 index 0000000000000000000000000000000000000000..7807c075c4082d561fd2f08c9a20ab4844d8cee4 GIT binary patch literal 724 zcmZ?wbhEHbRA5kGxN5}U<>i%K-E;5x^Y7o^pSyOC!7ym=-o5X?f6va&j*5y}yLRol zbJrLYoz9&**D__!lqqwfidzf~4XbDFV}EmQU$yT;&^-7{zD+O2zova1E6 zTHe3^Uft3o5mY>7=~@QOpgC*zdL>sU7gulHdoH_rN_NlEDRY)aRZoe^Zn<~w`L%1; zdU|@^e}7+HUH$&~dj6nnc&>9RAQ*ojz&Z49h@M%{gzUy7xRu}X=tXv8QUvk`Ss)JT|f=Hm=e z*-sPK9%x)~MqKsBv4C5Z9>La?bkD@4;205_cZ-x olY3FW;k4_-V{to`9yGAAE9cT`#-ccAhw4`jpjrZ$Po=+>rS<-e!jPxbB|+;eoCFoy*4?8no+b9O@c7 znu6TZTic2fJ10d?=r%vv9_HjDCz zuLzsz8*EthN5gskqy(RPrt4~5-RICX$;@Huv^eHaHuZ)ITCWCd#;pH0iBv~AT` zy{2TX>>jQNx6%cN_>V4GmXLeO{Gvrq>3P1>XKIxXvqqdd(YocrnJ3qzF1@(?>e;q6 V@7}Mula%u1>$flJKLt4%tN|w0c+CI+ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/xls.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/xls.gif new file mode 100644 index 0000000000000000000000000000000000000000..afe724a3d06a51d2810f8d956f9a2042f4127e39 GIT binary patch literal 271 zcmV+q0r37uNk%w1VITk?0HOr|0E7U9goMV%#sB~S|NsC0|Nj6000000A^8LW000F5 zEC2ui03ZM$000BjSh^MdFg`|UAUNwy!l>ZIjhOQ>0g$e0%aVcMF>cMSLY`-rd^P}* zCI!Rz6e@y?mrRaCgd_3RX;pPt-(bsaDsRo0Mlj9@21Mm|c`cjG1E-q(&D!Bg(+7An)+;^79}G06U9=e5U{a literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/xml.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/xml.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fae35662f0ff048d4004fdc74cda6b63f16d119 GIT binary patch literal 408 zcmZ?wbhEHbRA5kGI3mViIETS7`9A~09EN0urRTmg%=vGa%wTx#zu`GU28RFV-v2*# z?AW>g=g$5AZ}|T|Lkq*XbLR|`=d`r6eEY<3j9Dk`OoZE`nWr*xa<<-Z+HtMSBJn{^u;`V&6mSzrNEt?LH`~3Ax?=4JrY*0GX#-Qk=qQTsLv|qx~^^Qg0 iVuwC~AkkGZCpV>f)n+A~n&Y{-{p@Uu;&~j54AuZc3Y?7q literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/zip.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/32/zip.gif new file mode 100644 index 0000000000000000000000000000000000000000..7157f72ad82ea877fcb6995070a6563f56ef67d8 GIT binary patch literal 368 zcmZ?wbhEHbRA5kGI3mt)ZwdoL@|2!y|Nno#_WxKm!<2grhC%{EB};slLq*~Wvao7t(4YcThC6;%`Yr24Zi4PaOV6eOA}Gnc(I#ahItQPFz&i!!1#jo#hY7? xFH}7HYVuU?=dbU7{-(T977Tb`-^99F#>8mh!o%$X%5o`g8JrTL0dyds<4RV^aVB z|57BDbA&H|IUoo#=W(zoP=va&U;d8QcCBXbFE`S zIUx{AF)?dGF|DPoy|um8l$26hT61GsrId``*3Q<>#_!(N_xJC;lzX*=bN97#y`_w; zoRr4a-o4J&oRpmJ@Ar&zW5%telzVgk@2%FQQj}6cwR2kk-jp#pIT#oib8~zD|Nj60 z00000A^8LW002DzEC2ui01yBW000KCz@CstEEa{x;b0IOxF9c{E~y-RE*p%ErCXs53AutGm1iI;a&9 x77a8B0W|>v8K@@^5iJcNH3tSG6{sd9*aZa#2L%MDNFqA#5;_tRJN5NJ06RZNq>TUo literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/avi.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/avi.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f3bac9bf1593da0934d7ce02064ef74e484c1a9 GIT binary patch literal 249 zcmZ?wbhEHb6krfwI3mMvZjPa$VRCZvIm6^RbLO1;{{8!$ImuhMZvFrNTynDExpT=; zQBh7#PUq$Tr48R-J9cgk!?|-n9>bhupf;f9IseZw{GY?n($aG5*f9nMhW}syWI%x8 zPZmZ71{nq&5Eo=818bRrdQwVemqvT;n`v8Ts6~~;GQZY}p1#>*LidNJlNo(daVY@{ zWwUaL(+k*J$tlM*YK{1NYI`ZnW)mW{>#=ysy0hLX0`cg&BbkJ4}^gUQzaPeB<)#Q2S7Oc~`%`->q#0Q%_#rF={k17wA&Fi)#cna}i9!sV4Aub8Vl3$Z literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/cs.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d927230b980dbbdca5b06f12a98449647ca0fe7 GIT binary patch literal 128 zcmZ?wbhEHb6krfwSj5V}(8AEt(sJzBF$M;P|6l-Q0DA+ z&boq$o(!ph*Rni6Ts&TSB!TY&dxW+s#|ou&Pgs`UaTDBbb9LQ}wC%4m<4%bCYbdc5 Z?pbo_Mu}eVr8OUpyyY@Z@L*!F1^}CaF8}}l literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/default.icon.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/default.icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ce26a4dc516f5962623445396862c753a875900 GIT binary patch literal 113 zcmZ?wbhEHb6krfwSj56`?AWoEmKFvEhW}syWI%x8PZmZ71{MY#5ErDDf!WMMz)wYHuMVva8^OvzO GSOWls#w7~? literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/dll.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/dll.gif new file mode 100644 index 0000000000000000000000000000000000000000..48d445acd2feab875c2d42c246e9010814314bb6 GIT binary patch literal 132 zcmZ?wbhEHb6krfwSj5KA(!%inKf|$O$6A0a1|S;*fDFZ-EQ|~cYz#U;Hc+Ji0|T>X z#^yWU3Z{52m-ukf%k`k3yP%3-*W8u93=RcNt9)D@gcWkI9QhQriC6L4&!=I+p7|fF f&bcuq9o#ATcbQ|zt0ha__CHv$#zk+n5Q8-UbUQQ< literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/doc.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/doc.gif new file mode 100644 index 0000000000000000000000000000000000000000..6535b4c0e72aa2cded728e28ee6440c1fe0a954c GIT binary patch literal 140 zcmZ?wbhEHb6krfwSj5WE($aG5*f9o%{|rD320#W7DE?$&WME)r&;fBkY8jXVBe?FY z+rZ$Y&Fb8_(OO=7Vq=(Ufb*})xCcUxyE@a|Sq$%KqPl7^Ro&=#&h4hzE(^L jR*hU`(7bxhmuZnxV$QBxlGW+R@Sr5BCvfLoP6lfLw_`LY literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/exe.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/exe.gif new file mode 100644 index 0000000000000000000000000000000000000000..315817f5d93a2a6fa5db3ca5e1c9d9e72297c1b0 GIT binary patch literal 109 zcmZ?wbhEHb6krfwSj5V3?AWoEmKKKpAi%%?qJbn3DE?$&WME)r&;fBkY8jY~B6i*R zXJF>^RLSWASNXZw&O8U&G9N8irFy(4+h@r~EB~#sJ|Y3ajSDg!Grv<&><*gAz+epk D58Wo= literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/fla.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/fla.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f91a98ecb196dbcf5424e266ca58d216cd4a9eb GIT binary patch literal 382 zcmZ?wbhEHb6krfwxT?XhR8hdo%PTuO`&>{EgJIPFI}I;|Dp zc%Pgc6&3aV`}^-fUeCQOdwP0~X-ZUASHFM${{R2~3=9kq63CzsDE?$&WMI%>&;gkP z@)HBwYzL7p7om#2#si)wL?(F!2%98Cm<2ZVZ~3Ch>UA|+?3QVy&oYC{!ISECotivn zi=MmpqCcH_Dg71<%DDkb)jrCNqP!hVYOOUI?7WH`68uu^LH$n3d{a32xdr%?``R=Z z6crRi1i6?MXU<-+T7iX|hf_g(S&gzHs}Re21x4km3ChAO(z2|q%0r28usf7#SE?8FWBAkXi<2r--O4 z|FS1KXsZVL9;`07c&+ei^1O2k*6G|{AtTej{=zM0yDLAt%B`L9e?;#s+CMY!M%Jo; V3vL<)Qnkyb>9`50G6*qP0|1+DE=>Rc literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/htm.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/htm.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b5d6ba1fc35ab7dccc0f27ef14f2bdbefe75859 GIT binary patch literal 621 zcmd6k&ui0A0Dxb+VB4{+?YgxUTV^K{qg5LnvM_(lIJz`RQF6>pa?C||-g?<)1gmc# znuA~%2n(Jb2oms;!(;>zd@zI@a}ZpP&%@y1>FN9{{7&ETgKuNdUy&bHKm{BPf$bAQ zctp74_-+tm!XZvY7?`FD-7q4V=#n7LI(|kO*D!S=`qxAh%U-Hr9ul5XK60@Xu`r=B zBBGZmgli+L*e=OYPhmpijCBxUoJ%MbLzXcv!BBQQ+xAQo#TmCOWTHs45W)$B zkpBbxmvnv$IRJ*Bds27u1Qfn*4!1S;sax6}KQYjbQ3B6j7}Xo@=~BM;N(1VyYBVSI z8e>(xbhXt4Mx}Z?-_VC5xY?bZoxa#MW@hqN!goSp%D6mNTdCj8Pw4U5t#bL!;#_;O zeyAHlYkKhW=-%Y@`E^~83TFlv`p5l+YYX!m-)p~?m8p91_~pKu6ZFTu!$)iDJFV5T zZ$4EQ5B8T%6}v|Mhfpk^(}do$596)Zxh8s0**y3H8nw1;?w$YkcG+37K7V|Fe|HOj F)j#Az*75)V literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/html.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/html.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b5d6ba1fc35ab7dccc0f27ef14f2bdbefe75859 GIT binary patch literal 621 zcmd6k&ui0A0Dxb+VB4{+?YgxUTV^K{qg5LnvM_(lIJz`RQF6>pa?C||-g?<)1gmc# znuA~%2n(Jb2oms;!(;>zd@zI@a}ZpP&%@y1>FN9{{7&ETgKuNdUy&bHKm{BPf$bAQ zctp74_-+tm!XZvY7?`FD-7q4V=#n7LI(|kO*D!S=`qxAh%U-Hr9ul5XK60@Xu`r=B zBBGZmgli+L*e=OYPhmpijCBxUoJ%MbLzXcv!BBQQ+xAQo#TmCOWTHs45W)$B zkpBbxmvnv$IRJ*Bds27u1Qfn*4!1S;sax6}KQYjbQ3B6j7}Xo@=~BM;N(1VyYBVSI z8e>(xbhXt4Mx}Z?-_VC5xY?bZoxa#MW@hqN!goSp%D6mNTdCj8Pw4U5t#bL!;#_;O zeyAHlYkKhW=-%Y@`E^~83TFlv`p5l+YYX!m-)p~?m8p91_~pKu6ZFTu!$)iDJFV5T zZ$4EQ5B8T%6}v|Mhfpk^(}do$596)Zxh8s0**y3H8nw1;?w$YkcG+37K7V|Fe|HOj F)j#Az*75)V literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/jpg.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/jpg.gif new file mode 100644 index 0000000000000000000000000000000000000000..634b386139ac697806757c8d34bed36b5a2e5b45 GIT binary patch literal 125 zcmZ?wbhEHb6krfwSj5WE($aG5*s=fr|F^U-00EEzq8Jzyf3h$#Ft9S{fH)wv49rdu zQCI$DPjt{$4fH)&U2ySQ;nn1M=N7Efxy>W1vu4h(L$B8CcA0nH;sGzmk%w`nkI!Gr Xww$>lL&HF-cG)x?H=$exAqHyz+f*-Z literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/js.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/js.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ea17d452edaf63a5f599042879cc05a3b05905d GIT binary patch literal 139 zcmZ?wbhEHb6krfwSj524(!y};*s=frfs7Ug28RDY78of0WC7DUAQGgOfjPip*Bukp zV`_&dr*>@0-Etv>LB&I4!HI?a)6OrXSt1KqtHVsZE6pPt-9GvFF^A}XUv*^C r;ak22hG!S;yY$xUOU2HaM|C{I+Ek;sd6_hJPfqX2@(WjGV6X-NZuBx8 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/mp3.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/mp3.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f3bac9bf1593da0934d7ce02064ef74e484c1a9 GIT binary patch literal 249 zcmZ?wbhEHb6krfwI3mMvZjPa$VRCZvIm6^RbLO1;{{8!$ImuhMZvFrNTynDExpT=; zQBh7#PUq$Tr48R-J9cgk!?|-n9>bhupf;f9IseZw{GY?n($aG5*f9nMhW}syWI%x8 zPZmZ71{nq&5Eo=818bRrdQwVemqvT;n`v8Ts6~~;GQZY}p1#>*LidNJlNo(daVY@{ zWwUaL(+k*J$tlM*YK{1NYI`ZnW)mW{>#=ysy0hLX0`cgv>ev^SyhYS64r8X?YK12So`82>fRNfqVDv z{r?YPGARCJVPs&CWzYdhfb3*oO-@kHONmUIxgsy-^|qPQW|^Ek`f1r)oAdK_#q~cu zbtPl{l^0V5_T;S=Z~hQc)}ed!aA|{HGz;^B2|Yz@;*5(PawLd_EmCDzp}@k>p>l2} b%e-`vLRL<;1{wB3!FE?Ijs6J}6d9}meKBOp literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/png.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/png.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6d1b32011afe305d35026c66cf3a0564e6cfbe8 GIT binary patch literal 125 zcmZ?wbhEHb6krfwSj5WE($aG5*s=fr|2Hsz0FVKu85DoAFfuT(GU$M~Ahit4P7zU8 z{$)>e&{hrfJy>0E@mk^4!zWU*s{&Jd<`>yWH_^+2I#AA{J%s7G|&p0BKw|IsgCw literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/rdp.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/rdp.gif new file mode 100644 index 0000000000000000000000000000000000000000..916cd7e639de75276e3fac7d4a4466479285fbc0 GIT binary patch literal 606 zcmchU&ubGw6vrpo{HP7Ji>awd!Ny-jsS1MH`U@LtlcrQ_s3zIwU|DauxyQX|x?q%1 zq|BkhKtPz|fCvMEEP~*e(;VkGD5!f}3&P@Qocc%jk8i|G!%@<`A|b55u$#WP!&Un9G3XLps}Wj7D9Eqf$#fJ8H5p*G7e=-si0JO zNL85WQFn?71c9mX?Aw@`|sb+UAvcE-BaB&M=_}Q+_`f-OSf)4 zb}qYTDT7yb%al3Su3fu#?|E`@wO3T}oV9xy6rIkUyY~J2djY3pLqo%$?CQP8u1N$H zzyJQ;%gbx&)?@dcKL={->FM!Gt_Fhl&)@(5|DS<@0YU;9lmo?|EQ|~c>I^y{qdwUe4Gl+*;-lwkB+sYUz^1v;|)#6j^vpu37T# zmUD%0Y=v2e3tNhqVwDfO5R;r7Q-i8ZOSQU^94jjq2ZyAL>I5eRE_r!5X$}Qpc9pr4 zSQql}D#)`c&1sz^&mzyuz#u2Ed6fdUDiZ^b6pNe!-zs$lh21Qw^6W*$K1?FwqAc7B ROoA@15eoGR5k8I#)&SOyb=v>{ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/swt.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/swt.gif new file mode 100644 index 0000000000000000000000000000000000000000..314469da14a51a3079a95b10deff5e4af2f14dd3 GIT binary patch literal 388 zcmZ?wbhEHb6krfwxT?;;U>Fn?71c9mX?Aw@`|sb+UAvcE-BaB&M=_}Q+_`f-OSf)4 zb}qYTDT7yb%al3Su3fu#?|E`@wO3T}oV9xy6rIkUyY~J2djY3pLqo%$?CQP8u1N$H zzyJQ;%gbx&)?@dcKL={->FM!Gt_Fhl&)@(5|DS<@0YU;9lmo?|EQ|~c>I^y{qdwUe4Gl+*;-lwkB+sYUz^1v;|)#6j^vpu37T# zmUD%0Y=v2e3tNhqVwDfO5R;r7Q-i8ZOSQU^94jjq2ZyAL>I5eRE_r!5X$}Qpc9pr4 zSQql}D#)`c&1sz^&mzyuz#u2Ed6fdUDiZ^b6pNe!-zs$lh21Qw^6W*$K1?FwqAc7B ROoA@15eoGR5k8I#)&SOyb=v>{ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/txt.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/txt.gif new file mode 100644 index 0000000000000000000000000000000000000000..1511ba3e9fa53d21b23d74e5430199f52107b8c6 GIT binary patch literal 122 zcmZ?wbhEHb6krfwSj586($aG5*f9nMhW}syWI%x8PZmZ71{MY#5ErDDf!W?edQV`N^25{1 dUq#HdJfRXbF>~kLGf7@*-Ks0MSTQnK0|4?|F*N`H literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/xls.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/xls.gif new file mode 100644 index 0000000000000000000000000000000000000000..f57715d6a0cf03d3d392fb78d1477fcb1756edc1 GIT binary patch literal 138 zcmZ?wbhEHb6krfwSj5V}(86%+*f9nm-O}BIae?UME_83{kohvOm*4@L8Aw=661Zc_WCg}SOWmuf-oWg literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/xml.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/xml.gif new file mode 100644 index 0000000000000000000000000000000000000000..455992877e103d01bd247e45d96e33412ae706d1 GIT binary patch literal 231 zcmZ?wbhEHb6krfwI3mEn(9&}3*fGQ8|AuoI4Cnke{QuwZ+HPD{sTJjBd9|(eHjSNmO^r^D{SzDo6d9}m>N8Dk literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/zip.gif b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/images/icons/zip.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e24921e56f8b71282f953c690d152dd986f6ff GIT binary patch literal 235 zcmZ?wbhEHb6krfwI3mLE|M^yid-wjYW%$3>>;GEC|Np;dAN!x(^Z)<t!W0T_GtSs!Y%(56BRxs)*M0Zi zE+oB?ER7AR!CmygMem(^-Z|er=iK}Bq}^`wDn-50=>H1ER*DnnqNs_%vrSjw3w{QD#9OIk=z*-AX+|RE4J9qAUyuZKy$9wngoxT)+ zEX&erwd$Tcc|y0_#W}Zj0Eh^?ySw@E@$q}W$1epyYn`NND%;yz7-O*3E(Ko9goseB zR%<6GC%@X?-~VW?UnkBvZLNL(=;-Lr&jkR|G)=v3w@0_zEdb`f^B{|X_V)H_^?IE~ zqk)JZA^<3*it8{8xqJ8SN5Jy|c6N4>^Ye3WYpaFUdIexzDdrMI5kLX4IHD-R7_)I% z@B-lA;2^tx{krP+`$YzTwIK6sEXsVvi@}vrbAZYV0RW6Kw$a#BNs{u}iRCZ%mxEkZ z=VxUOGkvCobJuS0=DT{)#`EO&&98s=izNW(obL5{ey`W#VYki)KmRE=zPq*HZ1(%S z=xZQnnj+5Q?wH^F;j?$<_lp_O^?I$UwI+L@XjIGGe>x_N^6ARfuJ$q#S-BLTUh&CN zjR@WOba50LWAyp?fL^ahlv--l64p!&)Xc%N19#bQ7sF16wT?J7Bxw##iUVx11Zkxb z&}y|vjj$1vur9+>FMeHory1~rH=6wQ-#wz#thE^@Ikkq*XqaQId%OaW=Xn-}BhJqU zXmf>X;NzUbQp8|JGTm8t&PXyG2MYrrBx=3HR)`14lvg8;4C62dAz<;ErMSr z0vtXV@~|6`WCjPsnPE7NJyG7;5+ovm3hInUN9 zZlpqGslxS8xYNhqBoukKt6!k}D z=N#v8j99zmzz67bI&$mQEfYo=gNftO*$~xxPK$p_IXxZPI39j^(CKWn+wG_T0K6~^ zKl%HKe3&)yzq mytest.example.com => example.com ... + d = d.replace( /.*?(?:\.|$)/, '' ) ; + + if ( d.length == 0 ) + break ; // It was not able to detect the domain. + + try + { + document.domain = d ; + } + catch (e) + { + break ; + } + } +})() ; + +function AddSelectOption( selectElement, optionText, optionValue ) +{ + var oOption = document.createElement("OPTION") ; + + oOption.text = optionText ; + oOption.value = optionValue ; + + selectElement.options.add(oOption) ; + + return oOption ; +} + +var oConnector = window.parent.oConnector ; +var oIcons = window.parent.oIcons ; + + +function StringBuilder( value ) +{ + this._Strings = new Array( value || '' ) ; +} + +StringBuilder.prototype.Append = function( value ) +{ + if ( value ) + this._Strings.push( value ) ; +} + +StringBuilder.prototype.ToString = function() +{ + return this._Strings.join( '' ) ; +} \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/js/fckxml.js b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/js/fckxml.js new file mode 100644 index 0000000..82d1cbb --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/js/fckxml.js @@ -0,0 +1,147 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Defines the FCKXml object that is used for XML data calls + * and XML processing. + * + * This script is shared by almost all pages that compose the + * File Browser frameset. + */ + +var FCKXml = function() +{} + +FCKXml.prototype.GetHttpRequest = function() +{ + // Gecko / IE7 + try { return new XMLHttpRequest(); } + catch(e) {} + + // IE6 + try { return new ActiveXObject( 'Msxml2.XMLHTTP' ) ; } + catch(e) {} + + // IE5 + try { return new ActiveXObject( 'Microsoft.XMLHTTP' ) ; } + catch(e) {} + + return null ; +} + +FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer ) +{ + var oFCKXml = this ; + + var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ; + + var oXmlHttp = this.GetHttpRequest() ; + + oXmlHttp.open( "GET", urlToCall, bAsync ) ; + + if ( bAsync ) + { + oXmlHttp.onreadystatechange = function() + { + if ( oXmlHttp.readyState == 4 ) + { + var oXml ; + try + { + // this is the same test for an FF2 bug as in fckxml_gecko.js + // but we've moved the responseXML assignment into the try{} + // so we don't even have to check the return status codes. + var test = oXmlHttp.responseXML.firstChild ; + oXml = oXmlHttp.responseXML ; + } + catch ( e ) + { + try + { + oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ; + } + catch ( e ) {} + } + + if ( !oXml || !oXml.firstChild || oXml.firstChild.nodeName == 'parsererror' ) + { + alert( 'The server didn\'t send back a proper XML response. Please contact your system administrator.\n\n' + + 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')\n\n' + + 'Requested URL:\n' + urlToCall + '\n\n' + + 'Response text:\n' + oXmlHttp.responseText ) ; + return ; + } + + oFCKXml.DOMDocument = oXml ; + asyncFunctionPointer( oFCKXml ) ; + } + } + } + + oXmlHttp.send( null ) ; + + if ( ! bAsync ) + { + if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ) + this.DOMDocument = oXmlHttp.responseXML ; + else + { + alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ; + } + } +} + +FCKXml.prototype.SelectNodes = function( xpath ) +{ + if ( navigator.userAgent.indexOf('MSIE') >= 0 ) // IE + return this.DOMDocument.selectNodes( xpath ) ; + else // Gecko + { + var aNodeArray = new Array(); + + var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, + this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ; + if ( xPathResult ) + { + var oNode = xPathResult.iterateNext() ; + while( oNode ) + { + aNodeArray[aNodeArray.length] = oNode ; + oNode = xPathResult.iterateNext(); + } + } + return aNodeArray ; + } +} + +FCKXml.prototype.SelectSingleNode = function( xpath ) +{ + if ( navigator.userAgent.indexOf('MSIE') >= 0 ) // IE + return this.DOMDocument.selectSingleNode( xpath ) ; + else // Gecko + { + var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, + this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null); + + if ( xPathResult && xPathResult.singleNodeValue ) + return xPathResult.singleNodeValue ; + else + return null ; + } +} diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/basexml.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/basexml.php new file mode 100644 index 0000000..e8ae37b --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/basexml.php @@ -0,0 +1,99 @@ +' ; + + // Create the main "Connector" node. + echo '' ; + + // Add the current folder node. + echo '' ; + + $GLOBALS['HeaderSent'] = true ; +} + +function CreateXmlFooter() +{ + echo '' ; +} + +function SendError( $number, $text ) +{ + if ( $_GET['Command'] == 'FileUpload' ) + SendUploadResults( $number, "", "", $text ) ; + + if ( isset( $GLOBALS['HeaderSent'] ) && $GLOBALS['HeaderSent'] ) + { + SendErrorNode( $number, $text ) ; + CreateXmlFooter() ; + } + else + { + SetXmlHeaders() ; + + // Create the XML document header + echo '' ; + + echo '' ; + + SendErrorNode( $number, $text ) ; + + echo '' ; + } + exit ; +} + +function SendErrorNode( $number, $text ) +{ + if ($text) + echo '' ; + else + echo '' ; +} +?> diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/commands.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/commands.php new file mode 100644 index 0000000..ddfc3a7 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/commands.php @@ -0,0 +1,306 @@ +' ; + } + closedir( $oCurrentFolder ) ; + } + + // Open the "Folders" node. + echo "" ; + + natcasesort( $aFolders ) ; + foreach ( $aFolders as $sFolder ) + echo $sFolder ; + + // Close the "Folders" node. + echo "" ; +} + +function GetFoldersAndFiles( $resourceType, $currentFolder ) +{ + // Map the virtual path to the local server path. + $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFoldersAndFiles' ) ; + + // Arrays that will hold the folders and files names. + $aFolders = array() ; + $aFiles = array() ; + + $oCurrentFolder = @opendir( $sServerDir ) ; + + if ($oCurrentFolder !== false) + { + while ( $sFile = readdir( $oCurrentFolder ) ) + { + if ( $sFile != '.' && $sFile != '..' ) + { + if ( is_dir( $sServerDir . $sFile ) ) + $aFolders[] = '' ; + else + { + $iFileSize = @filesize( $sServerDir . $sFile ) ; + if ( !$iFileSize ) { + $iFileSize = 0 ; + } + if ( $iFileSize > 0 ) + { + $iFileSize = round( $iFileSize / 1024 ) ; + if ( $iFileSize < 1 ) + $iFileSize = 1 ; + } + + $aFiles[] = '' ; + } + } + } + closedir( $oCurrentFolder ) ; + } + + // Send the folders + natcasesort( $aFolders ) ; + echo '' ; + + foreach ( $aFolders as $sFolder ) + echo $sFolder ; + + echo '' ; + + // Send the files + natcasesort( $aFiles ) ; + echo '' ; + + foreach ( $aFiles as $sFiles ) + echo $sFiles ; + + echo '' ; +} + +function CreateFolder( $resourceType, $currentFolder ) +{ + if (!isset($_GET)) { + global $_GET; + } + $sErrorNumber = '0' ; + $sErrorMsg = '' ; + + if ( isset( $_GET['NewFolderName'] ) ) + { + $sNewFolderName = $_GET['NewFolderName'] ; + $sNewFolderName = SanitizeFolderName( $sNewFolderName ) ; + + if ( strpos( $sNewFolderName, '..' ) !== FALSE ) + $sErrorNumber = '102' ; // Invalid folder name. + else + { + // Map the virtual path to the local server path of the current folder. + $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'CreateFolder' ) ; + + if ( is_writable( $sServerDir ) ) + { + $sServerDir .= $sNewFolderName ; + + $sErrorMsg = CreateServerFolder( $sServerDir ) ; + + switch ( $sErrorMsg ) + { + case '' : + $sErrorNumber = '0' ; + break ; + case 'Invalid argument' : + case 'No such file or directory' : + $sErrorNumber = '102' ; // Path too long. + break ; + default : + $sErrorNumber = '110' ; + break ; + } + } + else + $sErrorNumber = '103' ; + } + } + else + $sErrorNumber = '102' ; + + // Create the "Error" node. + echo '' ; +} + +function FileUpload( $resourceType, $currentFolder, $sCommand ) +{ + if (!isset($_FILES)) { + global $_FILES; + } + $sErrorNumber = '0' ; + $sFileName = '' ; + + if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) ) + { + global $Config ; + + $oFile = $_FILES['NewFile'] ; + + // Map the virtual path to the local server path. + $sServerDir = ServerMapFolder( $resourceType, $currentFolder, $sCommand ) ; + + // Get the uploaded file name. + $sFileName = $oFile['name'] ; + $sFileName = SanitizeFileName( $sFileName ) ; + + $sOriginalFileName = $sFileName ; + + // Get the extension. + $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ; + $sExtension = strtolower( $sExtension ) ; + + if ( isset( $Config['SecureImageUploads'] ) ) + { + if ( ( $isImageValid = IsImageValid( $oFile['tmp_name'], $sExtension ) ) === false ) + { + $sErrorNumber = '202' ; + } + } + + if ( isset( $Config['HtmlExtensions'] ) ) + { + if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) && + ( $detectHtml = DetectHtml( $oFile['tmp_name'] ) ) === true ) + { + $sErrorNumber = '202' ; + } + } + + // Check if it is an allowed extension. + if ( !$sErrorNumber && IsAllowedExt( $sExtension, $resourceType ) ) + { + $iCounter = 0 ; + + while ( true ) + { + $sFilePath = $sServerDir . $sFileName ; + + if ( is_file( $sFilePath ) ) + { + $iCounter++ ; + $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ; + $sErrorNumber = '201' ; + } + else + { + move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ; + + if ( is_file( $sFilePath ) ) + { + if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] ) + { + break ; + } + + $permissions = 0777; + + if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] ) + { + $permissions = $Config['ChmodOnUpload'] ; + } + + $oldumask = umask(0) ; + chmod( $sFilePath, $permissions ) ; + umask( $oldumask ) ; + } + + break ; + } + } + + if ( file_exists( $sFilePath ) ) + { + //previous checks failed, try once again + if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid( $sFilePath, $sExtension ) === false ) + { + @unlink( $sFilePath ) ; + $sErrorNumber = '202' ; + } + else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml( $sFilePath ) === true ) + { + @unlink( $sFilePath ) ; + $sErrorNumber = '202' ; + } + } + } + else + $sErrorNumber = '202' ; + } + else + $sErrorNumber = '202' ; + + + $sFileUrl = CombinePaths( GetResourceTypePath( $resourceType, $sCommand ) , $currentFolder ) ; + $sFileUrl = CombinePaths( $sFileUrl, $sFileName ) ; + + SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ) ; + + exit ; +} +// code by bram.us +function DeleteFile($resourceType, $currentFolder) { + $sErrorNumber = '0' ; + $sErrorMsg = '' ; + if ( isset( $_GET['FileName'] ) ) { + // Map the virtual path to the local server path. + $sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ; + $sFileName = $_GET['FileName'] ; + if ( strpos( $sFileName, '..' ) !== FALSE ) { + $sErrorNumber = '102' ; // Invalid file name. + $sErrorMsg = 'Invalid file name'; + } else { + if ( @unlink($sServerDir.$sFileName) ) { + $sErrorNumber = '0' ; // deleted + } else { + $sErrorNumber = '103' ; // not deleted + $sErrorMsg = 'Could not delete file '.$sServerDir.$sFileName; + } + } + } else { + $sErrorNumber = '102' ; // no file set + $sErrorMsg = 'No file specified'; + } + // Create the "Error" node. + echo '' ; +} +?> diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/config.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/config.php new file mode 100644 index 0000000..cd5633e --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/config.php @@ -0,0 +1,226 @@ + diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/connector.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/connector.php new file mode 100644 index 0000000..e0e95ee --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/connector.php @@ -0,0 +1,90 @@ + diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/io.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/io.php new file mode 100644 index 0000000..666a8a8 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/io.php @@ -0,0 +1,303 @@ + 0 ) + return $Config['QuickUploadAbsolutePath'][$resourceType] ; + + // Map the "UserFiles" path to a local directory. + return Server_MapPath( $Config['QuickUploadPath'][$resourceType] ) ; + } + else + { + if ( strlen( $Config['FileTypesAbsolutePath'][$resourceType] ) > 0 ) + return $Config['FileTypesAbsolutePath'][$resourceType] ; + + // Map the "UserFiles" path to a local directory. + return Server_MapPath( $Config['FileTypesPath'][$resourceType] ) ; + } +} + +function GetUrlFromPath( $resourceType, $folderPath, $sCommand ) +{ + return CombinePaths( GetResourceTypePath( $resourceType, $sCommand ), $folderPath ) ; +} + +function RemoveExtension( $fileName ) +{ + return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ; +} + +function ServerMapFolder( $resourceType, $folderPath, $sCommand ) +{ + // Get the resource type directory. + $sResourceTypePath = GetResourceTypeDirectory( $resourceType, $sCommand ) ; + + // Ensure that the directory exists. + $sErrorMsg = CreateServerFolder( $sResourceTypePath ) ; + if ( $sErrorMsg != '' ) + SendError( 1, "Error creating folder \"{$sResourceTypePath}\" ({$sErrorMsg})" ) ; + + // Return the resource type directory combined with the required path. + return CombinePaths( $sResourceTypePath , $folderPath ) ; +} + +function GetParentFolder( $folderPath ) +{ + $sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ; + return preg_replace( $sPattern, '', $folderPath ) ; +} + +function CreateServerFolder( $folderPath, $lastFolder = null ) +{ + global $Config ; + $sParent = GetParentFolder( $folderPath ) ; + + // Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms + while ( strpos($folderPath, '//') !== false ) + { + $folderPath = str_replace( '//', '/', $folderPath ) ; + } + + // Check if the parent exists, or create it. + if ( !file_exists( $sParent ) ) + { + //prevents agains infinite loop when we can't create root folder + if ( !is_null( $lastFolder ) && $lastFolder === $sParent) { + return "Can't create $folderPath directory" ; + } + + $sErrorMsg = CreateServerFolder( $sParent, $folderPath ) ; + if ( $sErrorMsg != '' ) + return $sErrorMsg ; + } + + if ( !file_exists( $folderPath ) ) + { + // Turn off all error reporting. + error_reporting( 0 ) ; + + $php_errormsg = '' ; + // Enable error tracking to catch the error. + ini_set( 'track_errors', '1' ) ; + + if ( isset( $Config['ChmodOnFolderCreate'] ) && !$Config['ChmodOnFolderCreate'] ) + { + mkdir( $folderPath ) ; + } + else + { + $permissions = 0777 ; + if ( isset( $Config['ChmodOnFolderCreate'] ) ) + { + $permissions = $Config['ChmodOnFolderCreate'] ; + } + // To create the folder with 0777 permissions, we need to set umask to zero. + $oldumask = umask(0) ; + mkdir( $folderPath, $permissions ) ; + umask( $oldumask ) ; + } + + $sErrorMsg = $php_errormsg ; + + // Restore the configurations. + ini_restore( 'track_errors' ) ; + ini_restore( 'error_reporting' ) ; + + return $sErrorMsg ; + } + else + return '' ; +} + +function GetRootPath() +{ + if (!isset($_SERVER)) { + global $_SERVER; + } + $sRealPath = realpath( './' ) ; + // #2124 ensure that no slash is at the end + $sRealPath = rtrim($sRealPath,"\\/"); + + $sSelfPath = $_SERVER['PHP_SELF'] ; + $sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ; + + $sSelfPath = str_replace( '/', DIRECTORY_SEPARATOR, $sSelfPath ) ; + + $position = strpos( $sRealPath, $sSelfPath ) ; + + // This can check only that this script isn't run from a virtual dir + // But it avoids the problems that arise if it isn't checked + if ( $position === false || $position <> strlen( $sRealPath ) - strlen( $sSelfPath ) ) + SendError( 1, 'Sorry, can\'t map "UserFilesPath" to a physical path. You must set the "UserFilesAbsolutePath" value in "editor/filemanager/connectors/php/config.php".' ) ; + + return substr( $sRealPath, 0, $position ) ; +} + +// Emulate the asp Server.mapPath function. +// given an url path return the physical directory that it corresponds to +function Server_MapPath( $path ) +{ + // This function is available only for Apache + if ( function_exists( 'apache_lookup_uri' ) ) + { + $info = apache_lookup_uri( $path ) ; + return $info->filename . $info->path_info ; + } + + // This isn't correct but for the moment there's no other solution + // If this script is under a virtual directory or symlink it will detect the problem and stop + return GetRootPath() . $path ; +} + +function IsAllowedExt( $sExtension, $resourceType ) +{ + global $Config ; + // Get the allowed and denied extensions arrays. + $arAllowed = $Config['AllowedExtensions'][$resourceType] ; + $arDenied = $Config['DeniedExtensions'][$resourceType] ; + + if ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) + return false ; + + if ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) + return false ; + + return true ; +} + +function IsAllowedType( $resourceType ) +{ + global $Config ; + if ( !in_array( $resourceType, $Config['ConfigAllowedTypes'] ) ) + return false ; + + return true ; +} + +function IsAllowedCommand( $sCommand ) +{ + global $Config ; + + if ( !in_array( $sCommand, $Config['ConfigAllowedCommands'] ) ) + return false ; + + return true ; +} + +function GetCurrentFolder() +{ + if (!isset($_GET)) { + global $_GET; + } + $sCurrentFolder = isset( $_GET['CurrentFolder'] ) ? $_GET['CurrentFolder'] : '/' ; + + // Check the current folder syntax (must begin and start with a slash). + if ( !preg_match( '|/$|', $sCurrentFolder ) ) + $sCurrentFolder .= '/' ; + if ( strpos( $sCurrentFolder, '/' ) !== 0 ) + $sCurrentFolder = '/' . $sCurrentFolder ; + + // Ensure the folder path has no double-slashes + while ( strpos ($sCurrentFolder, '//') !== false ) { + $sCurrentFolder = str_replace ('//', '/', $sCurrentFolder) ; + } + + // Check for invalid folder paths (..) + if ( strpos( $sCurrentFolder, '..' ) || strpos( $sCurrentFolder, "\\" )) + SendError( 102, '' ) ; + + if ( preg_match(",(/\.)|[[:cntrl:]]|(//)|(\\\\)|([\:\*\?\"\<\>\|]),", $sCurrentFolder)) + SendError( 102, '' ) ; + + return $sCurrentFolder ; +} + +// Do a cleanup of the folder name to avoid possible problems +function SanitizeFolderName( $sNewFolderName ) +{ + $sNewFolderName = stripslashes( $sNewFolderName ) ; + + // Remove . \ / | : ? * " < > + $sNewFolderName = preg_replace( '/\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFolderName ) ; + + return $sNewFolderName ; +} + +// Do a cleanup of the file name to avoid possible problems +function SanitizeFileName( $sNewFileName ) +{ + global $Config ; + + $sNewFileName = stripslashes( $sNewFileName ) ; + + // Replace dots in the name with underscores (only one dot can be there... security issue). + if ( $Config['ForceSingleExtension'] ) + $sNewFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sNewFileName ) ; + + // Remove \ / | : ? * " < > + $sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName ) ; + + return $sNewFileName ; +} + +// This is the function that sends the results of the uploading process. +function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' ) +{ + // Minified version of the document.domain automatic fix script (#1919). + // The original script can be found at _dev/domain_fix_template.js + echo << +(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})(); +EOF; + + if ($errorNumber && $errorNumber != 201) { + $fileUrl = ""; + $fileName = ""; + } + + $rpl = array( '\\' => '\\\\', '"' => '\\"' ) ; + echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr( $fileUrl, $rpl ) . '","' . strtr( $fileName, $rpl ) . '", "' . strtr( $customMsg, $rpl ) . '") ;' ; + echo '' ; + exit ; +} + +?> diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/phpcompat.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/phpcompat.php new file mode 100644 index 0000000..6fc89e5 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/phpcompat.php @@ -0,0 +1,17 @@ + diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/php/util.php b/fckeditor/FCKeditor/editor/filemanager/connectors/php/util.php new file mode 100644 index 0000000..c41c765 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/php/util.php @@ -0,0 +1,220 @@ + $val ) + { + $lcaseHtmlExtensions[$key] = strtolower( $val ) ; + } + return in_array( $ext, $lcaseHtmlExtensions ) ; +} + +/** + * Detect HTML in the first KB to prevent against potential security issue with + * IE/Safari/Opera file type auto detection bug. + * Returns true if file contain insecure HTML code at the beginning. + * + * @param string $filePath absolute path to file + * @return boolean + */ +function DetectHtml( $filePath ) +{ + $fp = @fopen( $filePath, 'rb' ) ; + + //open_basedir restriction, see #1906 + if ( $fp === false || !flock( $fp, LOCK_SH ) ) + { + return -1 ; + } + + $chunk = fread( $fp, 1024 ) ; + flock( $fp, LOCK_UN ) ; + fclose( $fp ) ; + + $chunk = strtolower( $chunk ) ; + + if (!$chunk) + { + return false ; + } + + $chunk = trim( $chunk ) ; + + if ( preg_match( "/= 4.0.7 + if ( function_exists( 'version_compare' ) ) { + $sCurrentVersion = phpversion(); + if ( version_compare( $sCurrentVersion, "4.2.0" ) >= 0 ) { + $imageCheckExtensions[] = "tiff"; + $imageCheckExtensions[] = "tif"; + } + if ( version_compare( $sCurrentVersion, "4.3.0" ) >= 0 ) { + $imageCheckExtensions[] = "swc"; + } + if ( version_compare( $sCurrentVersion, "4.3.2" ) >= 0 ) { + $imageCheckExtensions[] = "jpc"; + $imageCheckExtensions[] = "jp2"; + $imageCheckExtensions[] = "jpx"; + $imageCheckExtensions[] = "jb2"; + $imageCheckExtensions[] = "xbm"; + $imageCheckExtensions[] = "wbmp"; + } + } + + if ( !in_array( $extension, $imageCheckExtensions ) ) { + return true; + } + + if ( @getimagesize( $filePath ) === false ) { + return false ; + } + + return true; +} + +?> diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/test.html.txt b/fckeditor/FCKeditor/editor/filemanager/connectors/test.html.txt new file mode 100644 index 0000000..fc16031 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/test.html.txt @@ -0,0 +1,210 @@ + + + + + FCKeditor - Connectors Tests + + + + + + + + + + + +
    + + + + + + + + +
    + Connector:
    + +
    +     + Current Folder
    +
    +     + Resource Type
    + +
    +
    + + + + + + + + + + +
    + Get Folders +     + Get Folders and Files +     + Create Folder +     +
    + File Upload
    + + +
    +
    +
    + URL: +
    + +
    + + diff --git a/fckeditor/FCKeditor/editor/filemanager/connectors/uploadtest.html.txt b/fckeditor/FCKeditor/editor/filemanager/connectors/uploadtest.html.txt new file mode 100644 index 0000000..c5bc8e2 --- /dev/null +++ b/fckeditor/FCKeditor/editor/filemanager/connectors/uploadtest.html.txt @@ -0,0 +1,192 @@ + + + + FCKeditor - Uploaders Tests + + + + + + + + + + + +
    + + + + + + + + +
    + Select the "File Uploader" to use:
    + +
    + Resource Type
    + +
    + Current Folder:
    + +
           + Custom Uploader URL:
    + +
    +
    + + + + + + +
    +
    + Upload a new file:
    +
    + + +
    +
           + Uploaded File URL:
    + +
    +
    + Post URL:   +
    + +
    + + diff --git a/fckeditor/FCKeditor/editor/images/anchor.gif b/fckeditor/FCKeditor/editor/images/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aa797b2240a432d9f3f1d166ed5542eaf684937 GIT binary patch literal 184 zcmZ?wbhEHb6kygJ|Uu&?oD;%Ae!z@09(NL_hv#6Slx0y!YR{?r|LJZgAju=f-$sQVWNL{+Tsz18#+~Ke%+zTWns()WcPwy8dQcr!JH# U&i)o#0r5dH3``s@d}5hzR)=UXSOWn0FbS~$ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/arrow_rtl.gif b/fckeditor/FCKeditor/editor/images/arrow_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..22e864984dc8be2445bc66780300651610c029b3 GIT binary patch literal 49 ucmZ?wbhEHbWMN=uXkcW30L7myKqe!D4u}hqVPN9uDdaf4E0als!5RRbfd=jX literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/angel_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/angel_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..a95e053715347debd916ed191a9411a81b97c471 GIT binary patch literal 445 zcmZ?wbhEHb6lM@+xXQrr9|(Sb_<#TZmHYqCocVv?&VeiY|Nox>6kYZI{;DhYSN-3= z>dO9A|L3o|GJn;A1xx<_5B+~X^veCv|NBF)><|4vKlIA{&{gw+f(-xnGhErv@P9tT zmH7<+>qA!oQGDns`_TXO46A_1o}s=zG!%&9LqqLD>*X1!0u+C;aB?uPGw6U!1Nn)8 z?bdpKkHzGr_?|tkP*zrwQ_#3s<;%KVQtI0mlP5;%EsX7TQU#R>4h0^J Y+;U1?I|3RGOjWBEnPcc+z`_b-pkvvd@;YvKie|v^2_6+~!8Lr4P ztg>fVCC^YV9~vqjs%0OlB_CQZ&k!olKy{$_lZBImfrUW_WHQK43~Y}anhH85q*w@Z zCY?~pQtH=mahB4ZsXWO=sn)}7L5GWSrrWAXZBf#-E*hzc7rnDCt4=uXI$6MOYZkA7 zfHH%Mpn#yD91BN!TMQe&3S(QIgrF>Eh4NH+zCdLzW@Y|PK~Kr_#idOOiahP&f)e6l zGW^QiN=x~9g)-tcCyT}+GB%Uce!hTiF?^;x8yJG>gSwKrZG0 z6C=Cw454kTES%E(B9T)Veznhd;v^)Jw)f;D)r6LG-(v@w*>vZyl=!x&dU75dX)&5lr z7A#pce^o<6!~gnKSL#=-s$ccLKJ-d`=>Pc8EAgSL>O)t>hyJ$@y<#8wUp{n|edsEA zpcKQEc!vM>3|H(K{>w95k!M&X&p;!f_>+Z`gMo!X2V_3TPYi5F9GVI|bfo%EJZwBP zMW(}hV%sN?Af<`tSb}Y19K`$CjTLMJ*iN=MCkkjtUr;Yu*rM>hS&T$tHgPEt`JS%OQ5vpPyxUWh@crCCHyjLVyizh^ENYqG*rDc)3mp=#k? zVIIaL2{~y|9ww)496~a}qFjO!5(*N$^)5U@JtExRGIH{lQeC&zaPi6Pzvm$)bhCEZ mWzYI7SuyVWo-7RPPX)NXxr&Ls`^766;Qv5?!M%xr!5RS2k9cPQ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/cake.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/cake.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6489d7d59dc8dba08fb248e9b0a6182695f5e01 GIT binary patch literal 453 zcmZ?wbhEHb6lM@+xXQrr9|(Sb_<#TZmHYqCocVv?&Vgm8KK!2n6kYZI{;DhYSN-3= z>dO9A|L3n-wSU!u1xr@VU)9jiu&REQR{Sb0`&C-p5cl;Lw$W{eSD~vJ&68_N$gbeS zDhzroJfdsAFGyRV`i=9}4E~kM(rnrlo;*^G!jf71T_V!b{BAlt96Wqt^`f_P;a`ABWE2>Fv+}!NAO*1LA<}WMJL@K%tNMpb3xTy2pofx;E|L)fVEFIb0LGhDBCiZMJEM zF6+Th3MWL`k0+aDo|R*0Nd3-{k*VZ%X3__r<8zOcJXByw?RQD%{;r^-cQVoJ+d5IP zNPYnxL4HdERv%vLu68{hzM9F_#?u5_eW&@)HWt(q| z%*7`&Nm6ozm-R1u?j2Sd7c&_b*U>lynMHL7Yg&A PG*b->VrSA(WUvMRUk7-C literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/cry_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/cry_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..0758f429e95b1fa75f3e54b731fab507ab9318bd GIT binary patch literal 473 zcmZ?wbhEHb6lM@+xXQrr9|(SbxN`shnKSnzaM(#e(3-Gp;v%te(0+Gp{wQt1sVSD zXSf1H^BGpvhpvhbU1cA-s-9t0Ji{t`hWh%@`uNaLdmzbBZ_hv>Q2fcl$-%(RpaU`o zp$RRi*^+&@(=1KgLMhldk9yB&+Cz$0#Ola^FV6X-N Dk$IbY literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/devil_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/devil_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..15518d7f05408c0c00be035fbbeb20001878807b GIT binary patch literal 444 zcmZ?wbhEHb6lM@+xXQrr9|(Sb_<#TZmHYn>+&S=n#{Vn(S6!LEYSsQ#tLCq2XlS@n zziL(eDy{nep&$|{75cwE^h$l`|M<`=@u92gLs!Lz{+Z`gMpPn2V^+NPYi4~4>Vm^Bq-G@-}NwJL4y#>vI`qF zx-6f?_xO}ajSc5wRpw1HOIW#=RsGGdoB5=r`DK8K+@91(gD1M;%F0SYLL$w|QeqrQ z@~r}bf=YtQf+7;~0dDNVLV~ReCJHJq|Pj?=;e9q-^_#2|zdIKUYk(Fhu#F*HOF1Rxj!p#lZephOfzAQ~c(1PMrn zL=-^*ilGn`5TJon5v^)56{-_;P-p6>jc5aHOdDzt4bWg3s4A*ZHC1X9jnHTssYx_J zlWC$B(E=@|g-WSIDNRWeF@cGh(43fqIWtFV#2Q#**3g1jfCaNqHFYeQS`}Lqi?C=G zX-O=>l3Ah^u>vb*g+?*LXhvp{EXZP6n4M&Y>?}LxMskDPSZTUD_vb*4gENHbg+BVsnt8;-p&V4KfLVx>nDcC z?z^Mww?A&{pZsFuucY> ztow=MFWxoP-u2J+zjwWK{LsnSJ?p0K{%pFpr}Mzb?SA9j+u!dzHUIdk-Q&01w6$++ x$nQS$<_Jd59(ixz-PXe952gkkx~}V(@%^?x&i-=4>46{K8TW_Vms}&8{s+7l5EK9a literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/envelope.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/envelope.gif new file mode 100644 index 0000000000000000000000000000000000000000..66d3656147a0f70d36c65ea44a0ee1577fc5832b GIT binary patch literal 1030 zcmW+#U5FM$6g|dTZhx$PAq3H^i})~wp;2T#3{jc}!4lof${kBv77<#ghsuY$pT!ck zJ=GUm56uRPu-AvohoEQ~_a$@tN~B2$jCt@uiUOlBBIq=`2Znow;czeKo_TD~t_OC! z&_M@(V+B*IXKJ-fwcFGR&RjZkV)?2M<^z3%kK&{GNU!iJUd=0gf=}X;`9z=Lv-oU2 z(^vQ^zM8M}gr|6#Cj}6QzyuTraU#ydQ35201d~9CkSG#OB1Iu8q9#g7kR*~!5+y^j zNH)oo3aKL1q*4f>2u(-@w5eeVs)IUFXX>Z{8bpI>phjpEji!;RP!&~Er6y<+O{R&O zp;o$JN*Z7ggBfTJ=ER(tqXk$H3ub{9VNooa#inUviK#WQC0G(m zW{H+zSuC4nT7^}yYF254QH*9}0SctR3RoP9lj5v6mVgqZ1S^3hqC_dtN@P(Km7-RZ zC7~oK$x33$C|OFjl36NBl~S!#7NSrJt&l5rw$2W8Le~fxz#t69Kt?bMqcO7CO%c_#tEJV(8aDkiFt`rqaCdub zKcWMyyNve+@7R56Zt2bGn+G3!ZK!+K#1AJHzC1fQeBH!Q`r?i0nUO~Z`X4`Wbo!53 zd+E-bMn>0u_v2?zot<6SzVnq$OTBCV{W5d$$=>7 z=WoC7##_3N4t)C6@Y`D^XBPLBtxx}ae0b^PzJo`$bpHCax43uk)UKoN^cFtpj*Txa zUpxNMbBhN$n}_B<`2DBTFQ5N>|N95}`@3Tsx848k-qVMcp1tAl`Xd*&Um19D!^C<& zI&|gS?Aq5aj9lJ!=$?ZcF8w+3&DY(x9^TX0{M*j!kIkL*x6Y66?oD>rtieP717~&l A`~Uy| literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/heart.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..305714f889555d11032bb7a07bff522f5f854acb GIT binary patch literal 1012 zcmW+#U5JoH6g`r{F8w^T{ScHNVN_0O%Wi}gG@@ZYSO{^55E%toF!CX?p3=LTML#cv z3N5kC(vQh~>d7D<#xTK_g%AdVPzE6qgTSDuE$B4sf#IHEINZy*XP$g|^Sbpr$1sM! zu!QMrXZl*1?zibBoVsx8*!-~%BV>l`AuAMw!caUEg@(`= znun$!1Tn~iM1UaSggAf$IXDL~f{~2QC?+tG$(ck0jWnl;8O&sMX0d>UEY2b}u#wH# zM1dmZlnk)0h8tu9Y@iKpgDk=#ExJWnf+bpVOEQBQ&D>0uVVRcQvaG-gt+*9ggEd-n zYcin^Wpa}oaM0ln`2Zj2gZm(l@JNsDQJ&z5p4?N{^s(sXUF;d2>DfKY3%t;adyzMI zqc`^^7hH6?OBJYKg;%H!r~~WZbx@6{ku`dastGl*Ca+1=P>t2RnrcSPtl4W;EvSXH zcrB_8wXrs@O;xC3l~-xW&fa-|25RU;icqAYD@qAURB|PCyJeJl_eB}XRCZ;lK!qx< zA~mQ{&DA9J75Tz~w4h08N}5@s-P67{!n~V{3}hlZvQU6R6h{#n(1_+}>N)C`2Oxj} zohS?l1H<59P>2YT`uFPG+~+;g>N)Rq>CcysZg_8D;=iBHj2&LH{iFSh2cMsK@xH0EZ;$@AeD9BIwtT&L>gIdKZ+YhE z?EV#dUV4A`%1w{lKC$Z9k;CV=Kfdq$`mGPo9N)UyMlYV({lb=Y`)=T>zi+$ac$yu5 z>%xl5({m^8-L(48TPMcuiU(g_`Nqeue75%VJ2(Ea`s4#YTsm~!?`OYw^`Xg)oEg73 Zx%`_QpFEehjXkm9*%NyXEL(=h{s()1^AZ36 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/kiss.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/kiss.gif new file mode 100644 index 0000000000000000000000000000000000000000..f840ea602cc02693e97a5cc3b3453f7c39dc2abf GIT binary patch literal 978 zcmW+#O=uoO6dXz`iDG;BE~yBMAXFDcLM|~{mNZr)h#u1Mx&|Z%5xf{_6@011ix>ZT zP%vx?wdgDUL9en=+e6!U+k=R>7o`@8^j4&Yag%}N&9V&dF>m&{=bxQ_a&>|U?qC-i zduL;>Y>eB+F1G*JzHse!OdgYBM$C-aV^%aoV>FMZSP%iCNYDV%+4$tXrwt!EMOsvvxpU}WOY`tgPrWoE(#PW zr(}Q)HQXQzus{oLL6%^NmfVso!!j+qWtqW@W^N`cutFl?SCJ}Isp_gyhdR|= zUD8;Q@9aoBnv>R~&v)tYbgYdqALgO}g(!|9RG<>oQH2h4qC2`qj)vtCh+xDZiUBb& z29H58AtvhX?X9izBhnfR;n{TeaedVLWbGgp1|9t7<$|GlHmS*oBpPekfaQ{mOU!VHq z%O_r)pS$@xXFuG2`qaXy%fH;}>7C_s2Yy|;dH(u~_2su7SUa?MY4z;MwQKFj;eCsz z-+T9q*WQ@9`oZSGsW@}*g>N?>UO({Tk$+YfR~F_zzI^t^_R*#3<5#Ynxbf#v-pBX9 bnSAx{vD59u;bX7d`Qh*DpB=hqKc4y@%md%w literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/lightbulb.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/lightbulb.gif new file mode 100644 index 0000000000000000000000000000000000000000..863be6e51ca72e7855147df62c8506d60eb0e9c8 GIT binary patch literal 303 zcmV+~0nq+ONk%w1VG{ro0K@TH# zs?@)#)Ss%Vzp9|1q^h5)fPjF1pQ``=RsY{r)W22KpH-@#Re*p1s()3gUsbAq0DoUq zRbN#qUsY8$YpNh5b^ri)7!6Y-7!y`)016uqFe(KY6j=cl8xE0E1rUA+7>@-~Q!IT#nJE_w zB{-u84;&B>91mOz7%&7W4h{wm9)?JpBn}Yz9GcS0a>OJd06W)^ BeUJbE literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/omg_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/omg_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..aabc7fd17e0f09bcb73ac9e200a626f3068d778e GIT binary patch literal 342 zcmZ?wbhEHb6lM@+IKsg29|(SbxN`shfjbA5o%-;9#{d8KS6u<3{i{~ZU)9ji@c)14 z|NEg=?uY*0A9@9d=7+AD4-{eezn|d>5Y1<3Xkb`XAG)fZVO2aseSK)XJPQK z;!hS%4hB{R9S|2}Cj;x{1jWAAhc=sud8brn*#y@mnaV6C}`I17`wg@}N%$RQqaCWbT-Ve$P+Y-U0{8zn9>2=E0PaO_?wEX7>7 eIK)7SUzA^1KvGIVfcc#rhu~ihrgu&Z4AuY%yn4<6 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..33f297e818c0fc7cc4841272301963c3344ad373 GIT binary patch literal 1036 zcmW+#O=uoO6da1sM2c1t@KW5Spwg{)Xhmv0Y*TEt@nHHjPejBuAxR+zp*Mxfi;9g( z1fil;k^O9&5TAlrr3XE14nZ^x7Qz<%DQxvp6vSLg4Iai#29`I=GQ7vU*~gC_+5gCB zANp_$8<^fa)0<_w-KICNcx`chdCdp&fj+`V@zH#wS9le#=9NCdC-KRAqR;SId^Vry zD|{7S%~yKDQ#{R+0tiH40*Zq;5oh8k0TM)lNuWeX6p1F0q7W5P6Qv|b5=kbBk|9|n zn`BCbRFP^@DTGjjCZqz|)G!6rL7k{Gb<_Y2qQNv!BQ%Oe(@0gQimItn6Euk?(?reC zESgO-wL+_CHLX;l4W%?C4KRqo3^WIGV$RIb0xXCHvp|cmC>G6P)3mX~)SB25EQuwv zM9Z)&md!G)!m3y`t2DwWMl-Si1yW!IEDpsq{5 z=mUEG#F^e5XSefY0{KOFmg zabmS|v-iEBaXa`*XZN0~+sC@fEr+*_UwOVevC!#V`g!Y#^v+@4JbCGh{)gVZ@^5$e z+hbEdOBt5b@1b<`QtNpj1BL- z_s;SA&Yavm{AIlH_xY($KkxM1|JRE{-;IrS=B{tKaeVpwKd;#f?|0sq9zBRh{|CYs B0q6h# literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/sad_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/sad_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfb78efea7fe651c7ba84aaf2fb3ee19aa8f8efc GIT binary patch literal 1039 zcmW+#O=uoO6nwQRZIK#H1fzu|Dwr(MOGWDMT7PQPprK?ygSd!RrQSS9!NNz@umN&~XyvMxRC!gB2 zrCa`%HH@#H@%1v^ZsTj1|8@Sv!m1DE1AP=9;iLITui_P6%`1HppWu`EM4!cH_-sDY zSMe3Tny>T}Pk5RqAp!x!AcPY*z!@A71OW(!Ktw?Vq9GD0P(TezBtZg_ArV=Sfo#Y` z6;z-aDnS7O8b}qK^VYb3}h5WFd8G9-BeJm`NAYj zU@|5$3p1FFnXJMJR%0dER%A;{rX!EqK4Wib}l_ZiN$s|#-NQPvSOsOIj zQcWsbj+*6O#0$JMLhr;ocxT?x2k`;CvfAlPw@9<)yeZa8tBp1E{d@K1O>$NS+hh9? z-6ES-Rlqd^@^-?C#r_yKZwm!~cAF_^;2d-_o;x>+a#-FTc>)*MHR$4^B*dzkSb4 zr}x77KWdoiy7Kef#NJ+yfxc^JFOIJK`0!%qLvLR^*ZJVajb~RT-o7yO)z-PGEw6T6 z8alYJd*Gv!zSj<&8kw9reRTAv`RV`qAAkPx&A&Y|GqimCNblaxf$42;Jv+DbX8-*s z9vZu2^65)EKV2C4dT{vMO#`35^vXMTT{Cg->Ct1)d^dRJlb&}cHXc8D_|_rZ^WKIH G^1%P79RflC literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/shades_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/shades_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..157df770acd36cbd49f1fd80da2cd9251ef52626 GIT binary patch literal 1059 zcmW+#U1$(g7(K4lexM&2lQyE;9zwhr%_Om+ZYHP`VOD+#v$`fMEqcj%TE@4cKpKIh z7DaSd*wSx7AQU|WSExp7+o5>2LwnxR=V zn`UZ-R?%u&sYDw}X-XPk5Q7!E=Subuy9^*i@( z+0Yaxc8=Y0pTD>?^y#jFbuV?{tI4j>TPN4t_Rv3_yFVGd16_wZHXr@-@u>-1S^wPJ z+V^JP$L^6Yd#88Kj(@lR)XS@;54xkna{0*2t^pf=@d3Fw*nMEy-@Etjk4Nl!dwp=k z@4LLI-yNFY@y7Fy93Niy@HJ`a!p8lFe>wBY>YIQ6d1>h6-m>Pw7w*I#`^G=qadPnV z#JO4Jl@k+Fmu~dq@AiD)UtK%(%#WWvJA2@_r#D>~pF8x{rHx-4IJ?J2w%mTTKeqkX Uj>pdQe*Mv?@9e*7RR`|*A1UAdR{#J2 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..26b5a555f834884bf75e8c64021893d85eb1fc7a GIT binary patch literal 1064 zcmW+#Uue)(7(LV&v!aqUL5VH~n{@kw)+$%vudp?o3ljYXMsO?8{plfm5TufCnhz04 zQ5gDAccIw!2_+fjOWeJLm4im!6^`Hv=F1*p{r|J_bhiVS?_4g2@8f*u_HB85W6!hg zXvd#e!r1Z|TP|buHnxPRAEr)zz2F=34Sj$Q;)D4>ukb2f%`1I`kK&{GNT1-7_+&oO z7x*H+m@o8%r+Att1rUh91QZ8xBF@B78b~A3m^73C2_nHHP!ysfYNC_~i6YS?QW7MI zB$GrbkRnn{3WX4g(1cV#s~V=DI;azMrjFV`8_~wJp$2FW4W@yrP!&~ErABBJji!;B zph+~DCTf8e(PCPtL>)?LN*Z7ggBfTJ=ER(tqcyNbtTAh70T#r9S*V&imY7-5s zsYA|&S?mV|wWop@O(-@uDjE-hFkZHZgf@btJiKQ2!SKCdczhr4dvoaU!F~Im9>+Lt zU;}fTXKu61_1oMA&R;$M@%QT?dWZ@MAu%KmNx=||!918kM#v1=LslpVg`s#T3Jsw# zG!IQd2x5>2i2y;u32^`ia&Qh}1S1)pQA}VWlQW418fi`wGnmQj%whoxS)4^|U?ZEe zi2_B+DH&j04L8UJ*gzZH23dqfT6BxD1WUB!mShGqnz@-Q!!j+qWm$n0T5&6~25YqD z)?`8-%H$?F;Gn}D@&P{32lqi9;gKHQqddVAJ-Mf@>0{B&yVx^4)3bY)7kHr;_ablb zMsMy-F1YA&mnu-f3a?NdPzTn*>!2D@BWv^;RTFArO)844$k-@Wu)9C@A2AM$evNm>cI^9! zOHYiZ+n;=I_1cA*)rHgH-0L6iI<_?Rf83t?z;TR{K(-W|7@Gz`NbnQ*MI-z&~1;Mym9TT>*Ig#xp>^C{<{CA zH{SZO-16PR_Oa*heP(`i>h0|>|M}aqpU+%;>dgM5r`CR0x%%JM4|d;mVGa-e5AP%G AhX4Qo literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/thumbs_up.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/thumbs_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e8c74627f641e404eee62083dfbb87e8664e119 GIT binary patch literal 989 zcmW+#KWN`Y9DPI4)Fpv9=pf%V&?48UgB1Kzdu)Nf0B*!gAW%bRyY^bi#iLSjfBl7b-^gLyE8jF1_!hpbQ#3PbTw6dFQf zXdaq^5X2x45&?pQ6XF04E18g7scuz@zX4YCM}wCEOP36^NdEy)aKG;=dqhGklI%d!G1wBlA|4c2JQ zt;vKwl*vtUz(I#Q)m{6<(n_pbo5q*FiO+M%L&xswULLn!F}eLp4_OYN{DEvu3YZwV)Q( z;n?! z(22r;Ffa@r28Dp1++frDeXf$9F(f5ap(_6_AUbuJF=PtkX z^ts2Myc#~6`uy~dvtQ3|&5w_^UbsK~`}K_z$Jb{LeYJZ1N65z>EI_TNaT&eTaf@e+=`Q!P1ARvuh6-4a=c@P)BfCWUJ^Q=%q0E{DPF) zOJ#%>)Lr2g`_#kOV-H=+QF9w)deaKwg49F4w1TK8JKgQT<#R5V!{@{KocqwjJA1bb zwa~(!SVVj2w3kY|-r9>eb?Maj?1J;=JY9eb;)1zAr*JAx%_&`ki{hfWNSEM}xMVKT z6}TdRP5Y&rv_*c4W@yrP!&~ErABBJji!;B zph+~DCTf8e(PCPtL>)?LN*Z7ggBfTItPyL>8k&cBF>mH+0T#r9S*V&imY7-SO&8EuiaPyxo24iR*uydTeg=rpJ31ewZ3QcXIm+Cq_Qp@$|%PJ9BT(JD(gm+uMKX z?%xi$BiHQxqr2mg%bR7xrbpL)H~Eb}boh?`l~4W}MqgjO;@*{OXVy&*A0GLyWAM7c znPs~=etvak-IYDVa|09aec!pFb^p2X?Q@sc+<5lj?DDZ=%iKK<66 zuUvU>+vcCXO?SmDhsK|~dA*z&_~rfmtJXw!;P|pVe?7k=9$a;N<1KG~-1^|liT<&^ z-uCW^zL&RdY+YFY#?(O9wNFeBj_iJR==9O6AD!>)d0^jI*Tu2DUtjDQ`uz9(yN*sy cPW8RG_3G^T;g{~)XUm`QH_Wd7qK$3;1Il~_)&Kwi literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif b/fckeditor/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0741223de8ddc366826bad1ef5db6e19e938896 GIT binary patch literal 1034 zcmW+#UuYLp82ui!bObFoBPF;7NpVpKjaWro6Q(GV{n>db;W}llm!9hV+dwkbL*z{S z1K!_C#eEdS`a?u<2aU2hE7pCng8NboLSjZ>Gur8H2QJ^aTn^vI`Oe+DZ%^OjgFVtC zw`2t)t7l}jjI`Ux3Z{RZzBIe&gZV%o#YgyPKGLgrg;(=RpTsBlWIoYn@fkjw&-7J% zg|Fr-J;f8A=1GV^05J&R1P*WpM+89tf*}x55P@ijgbEZ;gAz%QfMiHS7GxkBGEoH; zsD?^VK!65PMYO5KRH#nWL7l0i2GIZwrhytoBQ%;us){O9O_iEN6EvA7Y8K7VY?`T6 zv_h+CrBd2ZN>kEAOkiRrG$-a@&dkw*SbznyK#O7#7R_SQw6S1nO>9Xl!ID{`Ww8v) zW|>ySDy*7S8pQ~s8CgV%pokS=aZ((Lv*K8Slzk z)-A~R`uk7c_4Cxg)y_SK`WCNG4bNYA>b28j6T5KW+0MgTpL@~wZo>9s-#qy4-rnwu zul{{yX5-W2^PT>ak8S^bX87Xf{V&~n`QVoE?iZGBe0-xbJv4v&^V@fRcyMNT^wbw! zzioTy(KknzC;nOJJ(Bdm^4cdZ|1tRdMCB!-HH09+ zTH73C6PjvyHV4yM#LEW6LrrQCR>2}HCiLq1NYs2$CKUY z#-CWj==vF5FQe@?x`xH?7eDxN#Rv0&KEg-w(R`#=conbal|I2I@yUFm&+u7%HlOJ$ zd=+2KS9-!zJk65=2t;54ii0>2XW}RU5=4SYphQR%i6)Vv5EW4qr6foaNhXPsAz37w zWJ-lpk!n&YgiwSgqypO1Fa^~?ov1T))Bp{l!8A}KG>S&kNL8qcs;N>FG>InDM9t7F znoTpcLaS&styH27r8FfCFo?knGzW8H&dkvQEQkfOK#Q;_7R_SQw6Vn0n%EL7i6yf{ z%djk#%`&aRs#rCvG{PuGGqL~$QeXuv4#i1vRvb$}2~vWUz!FiSlxQWgD2hr^E6S2k zl9Xg6v1F7iC0ofX6{Sk4Rw@foD1}zYH9K2p2Rfl^gbZL124f&27=_Uo+3cnY)tWC% zU=k){A~TqU*_g=+R$(<(l5It{yi6|hW^xZXy+)g-ZEXUzW-bzt1j&$y3}itzWTFC9 zPz{wWN6m5%c!)-W2Pl)y5h&|J~8miIcdYJ+>dw z4RoHvzOE||UV3I>aB1ed?TgoJy!-Xn`e*K6J^Djm@7Ul~Bc1a@HrRdro!bshJazB0 zr{@k2^_<_8COZzyzPtDQ?l128bKD2bK=fI8I4<9|pSPp%%AN4WNzQYZ^s6QAD-R%?S{wt-q`!#*In1%_Iuycb1!YY=gq&S7Y0VoPWjd8 z=iQ?h&(3}}`RS&#b$I5XpAMa!wSkZJZ+_yH!O|edsbh*WoF>W*oTi?c3uA# L=^WkAfo=Z-Q#A*W literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/images/spacer.gif b/fckeditor/FCKeditor/editor/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9 GIT binary patch literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/js/fckadobeair.js b/fckeditor/FCKeditor/editor/js/fckadobeair.js new file mode 100644 index 0000000..aea8fdc --- /dev/null +++ b/fckeditor/FCKeditor/editor/js/fckadobeair.js @@ -0,0 +1,176 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Compatibility code for Adobe AIR. + */ + +if ( FCKBrowserInfo.IsAIR ) +{ + var FCKAdobeAIR = (function() + { + /* + * ### Private functions. + */ + + var getDocumentHead = function( doc ) + { + var head ; + var heads = doc.getElementsByTagName( 'head' ) ; + + if( heads && heads[0] ) + head = heads[0] ; + else + { + head = doc.createElement( 'head' ) ; + doc.documentElement.insertBefore( head, doc.documentElement.firstChild ) ; + } + + return head ; + } ; + + /* + * ### Public interface. + */ + return { + FCKeditorAPI_Evaluate : function( parentWindow, script ) + { + // TODO : This one doesn't work always. The parent window will + // point to an anonymous function in this window. If this + // window is destroyied the parent window will be pointing to + // an invalid reference. + + // Evaluate the script in this window. + eval( script ) ; + + // Point the FCKeditorAPI property of the parent window to the + // local reference. + parentWindow.FCKeditorAPI = window.FCKeditorAPI ; + }, + + EditingArea_Start : function( doc, html ) + { + // Get the HTML for the . + var headInnerHtml = html.match( /([\s\S]*)<\/head>/i )[1] ; + + if ( headInnerHtml && headInnerHtml.length > 0 ) + { + // Inject the HTML inside a

    . + // Do that before getDocumentHead because WebKit moves + // elements to the at this point. + var div = doc.createElement( 'div' ) ; + div.innerHTML = headInnerHtml ; + + // Move the
    nodes to . + FCKDomTools.MoveChildren( div, getDocumentHead( doc ) ) ; + } + + doc.body.innerHTML = html.match( /([\s\S]*)<\/body>/i )[1] ; + + //prevent clicking on hyperlinks and navigating away + doc.addEventListener('click', function( ev ) + { + ev.preventDefault() ; + ev.stopPropagation() ; + }, true ) ; + }, + + Panel_Contructor : function( doc, baseLocation ) + { + var head = getDocumentHead( doc ) ; + + // Set the href. + head.appendChild( doc.createElement('base') ).href = baseLocation ; + + doc.body.style.margin = '0px' ; + doc.body.style.padding = '0px' ; + }, + + ToolbarSet_GetOutElement : function( win, outMatch ) + { + var toolbarTarget = win.parent ; + + var targetWindowParts = outMatch[1].split( '.' ) ; + while ( targetWindowParts.length > 0 ) + { + var part = targetWindowParts.shift() ; + if ( part.length > 0 ) + toolbarTarget = toolbarTarget[ part ] ; + } + + toolbarTarget = toolbarTarget.document.getElementById( outMatch[2] ) ; + }, + + ToolbarSet_InitOutFrame : function( doc ) + { + var head = getDocumentHead( doc ) ; + + head.appendChild( doc.createElement('base') ).href = window.document.location ; + + var targetWindow = doc.defaultView; + + targetWindow.adjust = function() + { + targetWindow.frameElement.height = doc.body.scrollHeight; + } ; + + targetWindow.onresize = targetWindow.adjust ; + targetWindow.setTimeout( targetWindow.adjust, 0 ) ; + + doc.body.style.overflow = 'hidden'; + doc.body.innerHTML = document.getElementById( 'xToolbarSpace' ).innerHTML ; + } + } ; + })(); + + /* + * ### Overrides + */ + ( function() + { + // Save references for override reuse. + var _Original_FCKPanel_Window_OnFocus = FCKPanel_Window_OnFocus ; + var _Original_FCKPanel_Window_OnBlur = FCKPanel_Window_OnBlur ; + var _Original_FCK_StartEditor = FCK.StartEditor ; + + FCKPanel_Window_OnFocus = function( e, panel ) + { + // Call the original implementation. + _Original_FCKPanel_Window_OnFocus.call( this, e, panel ) ; + + if ( panel._focusTimer ) + clearTimeout( panel._focusTimer ) ; + } + + FCKPanel_Window_OnBlur = function( e, panel ) + { + // Delay the execution of the original function. + panel._focusTimer = FCKTools.SetTimeout( _Original_FCKPanel_Window_OnBlur, 100, this, [ e, panel ] ) ; + } + + FCK.StartEditor = function() + { + // Force pointing to the CSS files instead of using the inline CSS cached styles. + window.FCK_InternalCSS = FCKConfig.BasePath + 'css/fck_internal.css' ; + window.FCK_ShowTableBordersCSS = FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ; + + _Original_FCK_StartEditor.apply( this, arguments ) ; + } + })(); +} diff --git a/fckeditor/FCKeditor/editor/js/fckeditorcode_gecko.js b/fckeditor/FCKeditor/editor/js/fckeditorcode_gecko.js new file mode 100644 index 0000000..e407b69 --- /dev/null +++ b/fckeditor/FCKeditor/editor/js/fckeditorcode_gecko.js @@ -0,0 +1,109 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This file has been compressed for better performance. The original source + * can be found at "editor/_source". + */ + +var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2; +String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;iC) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}};if (A.IsSafari) A.IsSafari3=(parseFloat(s.match(/ applewebkit\/(\d+)/)[1])<526);})(FCKBrowserInfo); +var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i';if (!FCKRegexLib.HtmlOpener.test(A)) A=''+A+'';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&');return A;}else{var B=FCKConfig.DocType+'0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='>'+A+'';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}}; +var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){FCK.Events.FireEvent("OnBeforeGetData");if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};D=FCKConfig.ProtectedSource.Revert(D);setTimeout(function() { FCK.Events.FireEvent("OnAfterGetData");},0);return D;},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();FCK.Selection.Release();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (window.onresize) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+''+FCK.TempBaseTag+''+FCKLang.Preview+''+_FCK_GetEditorAreaStyleTags()+''+FCK.GetXHTML()+'';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){FCKTools.AddEventListener(FCK.EditorDocument,'paste',function(evt){var A=new FCKDomRange(FCK.EditorWindow);var B=FCK.EditorDocument.createTextNode('\ufeff');var C=FCK.EditorDocument.createElement('a');C.id='fck_paste_padding';C.innerHTML='';A.MoveToSelection();A.DeleteContents();A.InsertNode(B);A.Collapse();A.InsertNode(C);A.MoveToPosition(C,3);A.Select();setTimeout(function(){B.parentNode.removeChild(B);C=FCK.EditorDocument.getElementById('fck_paste_padding');C.parentNode.removeChild(C);},0);});};if (FCKBrowserInfo.IsSafari){var D=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',D);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i '+this.Elements[i].outerHTML+'
    ';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCKSelection.GetSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||(!FCKBrowserInfo.IsOpera&&String(H.parentNode.contentEditable)=='false')||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){this.EditorDocument.addEventListener('dragover',function (evt){ if (!FCK.MouseDownFlag&&FCK.Config.ForcePasteAsPlainText) evt.returnValue=false;},true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var N=ev.srcElement;if (N.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(N);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e) {if (FCKConfig.ForcePasteAsPlainText) FCK.PasteAsPlainText();else FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){var B=FCK.EditorDocument,range;A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGecko){A=A.replace(/ $/,'$&');var C=new FCKDocumentFragment(this.EditorDocument);C.AppendHtml(A);var D=C.RootNode.lastChild;range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();var E=C.RootNode.firstChild;while (E&&E.nodeType!=1) E=E.nextSibling;if (E&&FCKListsLib.BlockElements[E.nodeName.toLowerCase()]) range.SplitBlock();range.DeleteContents();range.InsertNode(C.RootNode);range.MoveToPosition(D,4);}else B.execCommand('inserthtml',false,A);this.Focus();if (!range){range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();};var F=range.CreateBookmark();FCKDocumentProcessor.Process(B);try{range.MoveToBookmark(F);range.Select();}catch (e) {};this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];if (FCKSelection.GetSelection().isCollapsed) return C;FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i0&&!isNaN(E)) this.PageConfig[D]=parseFloat(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) { }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.push([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[//g,//gi,//gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.push(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '';};for (var i=0;i|>)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;}; +var FCKDebug={Output:function(){},OutputObject:function(){}}; +var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i0) return true;continue;}};if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&¤tWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E'+styleDef+'';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i/g,'>');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/>/g,'>');A=A.replace(/</g,'<');A=A.replace(/&/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="

    ";var H="

    ";var I="
    ";if (C){G="
  1. ";H="
  2. ";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';}; +FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;}; +var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.6",VersionBuild : "25427",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup); +var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/]/i,HtmlOpener:/]*>/i,HeadOpener:/]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*| | )(<\/\1>)?$/,TagBody:/>]+))/gi,ProtectUrlsA:/]+))/gi,ProtectUrlsArea:/]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/}; +var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }}; +var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i':'gt','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={'>':'gt'};A='>';A+=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');}; +var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);if (FCKBrowserInfo.IsIE) FCKXHtml._RemoveXHtmlJobProperties(A);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^/,'');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)} while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol; +FCKXHtml._GetMainXmlString=function(){return (new XMLSerializer()).serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+(FCKCodeFormatter.ProtectedData.push(C)-1)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;iB[i]) return 1;};if (A.lengthB.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;}; +var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A=''+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+' '+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='
    ';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(//i,''+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(//i,''+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document){this.Document.selection.empty();this.Document.body.innerHTML="";};this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}; +var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;}; +FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})(); +var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return ' ';else if (offset==0) return new Array(match.length).join(' ')+' ';else return ' '+new Array(match.length).join(' ');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'
    ');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join(' ')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(]*>)[ \t\r\n]*/gi,'
    ');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+| )/g,' ');else if (isTag&&value=='
    ') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='
    \n'+F.join('')+'
    ';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='
    '+C+'
    ';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i0) return true;};B=B.nextSibling;};return false;}}; +var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML=' ';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML=' ';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&C.nodeType==3&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}}; +FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A&&A.rangeCount>0){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}else if (this.Window.document) this.MoveToElementStart(this.Window.document.body);};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=A.startContainer;if (A.collapsed&&B.nodeType==1&&B.childNodes.length==0) B.appendChild(A._Document.createTextNode(''));var C=this.Window.document.createRange();C.setStart(B,A.startOffset);try{C.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);C.setEnd(A.endContainer,A.endOffset);}else throw(e);};var D=this.Window.getSelection();D.removeAllRanges();D.addRange(C);}};FCKDomRange.prototype.SelectBookmark=function(A){var B=this.Window.document.createRange();var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);B.setStart(C.parentNode,FCKDomTools.GetIndexOf(C));FCKDomTools.RemoveNode(C);if (D){B.setEnd(D.parentNode,FCKDomTools.GetIndexOf(D));FCKDomTools.RemoveNode(D);};var E=this.Window.getSelection();E.removeAllRanges();E.addRange(B);}; +var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I)||H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}}; +var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},AppendHtml:function(A){var B=this.RootNode.ownerDocument.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}}; +var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}}; +var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}}; +var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}}; +FCKSelection.GetType=function(){var A='Text';var B;try { B=this.GetSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=!!FCK.EditorWindow&&this.GetSelection();if (!A||A.rangeCount<1) return null;var B=A.getRangeAt(0);if (B.startContainer!=B.endContainer||B.startContainer.nodeType!=1||B.startOffset!=B.endOffset-1) return null;var C=B.startContainer.childNodes[B.startOffset];if (C.nodeType!=1) return null;return C;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=this.GetSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode){var B=A.getRangeAt(0);if (B.collapsed||B.startContainer.nodeType==3) return A.anchorNode.parentNode;else return A.anchorNode;};var C=new FCKElementPath(A.anchorNode);var D=new FCKElementPath(A.focusNode);var E=null;var F=null;if (C.Elements.length>D.Elements.length){E=C.Elements;F=D.Elements;}else{E=D.Elements;F=C.Elements;};var G=E.length-F.length;for(var i=0;i0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=this.GetSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=this.GetSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try { B=this.GetSelection().getRangeAt(0).startContainer;}catch(e){}}while (B){if (B.nodeType==1&&B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=this.GetSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName.IEquals(A)) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=this.GetSelection();for (var i=0;i=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(A.parentNode);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i=E.height){for (D=F;D0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCK.EditorDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCK.EditorDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCK.EditorDocument.createElement(B.nodeName);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r1){B.rowSpan=Math.ceil(G/2);var H=D+Math.ceil(G/2);var I=C[H];var J=null;for (var i=E+1;i1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);B.parentNode.parentNode.parentNode.rows[H].insertBefore(K,J);}else{var L=B.parentNode.sectionRowIndex+1;var M=FCK.EditorDocument.createElement('tr');var N=B.parentNode.parentNode;if (N.rows.length>L) N.insertBefore(M,N.rows[L]);else N.appendChild(M);for (var i=0;i1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);M.appendChild(K);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.lengthE) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j 
    ';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i\n \n
    \n '+FCKLang.ColorAutomatic+'\n \n ';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H
    ';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='
    '+FCKLang.ColorMoreColors+'
    ';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';}}; +var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}; +var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');}; +var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;}; +var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H,oEditorScrollPos;if (FCK.EditMode==0){H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();oEditorScrollPos=FCKTools.GetScrollPosition(FCK.EditorWindow);}else{var I=FCK.EditingArea.Textarea;H=!FCKBrowserInfo.IsIE&&[I.selectionStart,I.selectionEnd];oEditorScrollPos=[I.scrollLeft,I.scrollTop];};if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();if (FCK.EditMode==0){H.Select();FCK.EditorWindow.scrollTo(oEditorScrollPos.X,oEditorScrollPos.Y);}else{if (!FCKBrowserInfo.IsIE){I.selectionStart=H[0];I.selectionEnd=H[1];};I.scrollLeft=oEditorScrollPos[0];I.scrollTop=oEditorScrollPos[1];}};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';}; +var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;iC[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}}; +var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}}; +var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;iN;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}}; +var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];var P={};while ((H=G.GetNextParagraph())){var Q=null;var R=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){Q=H.parentNode;R=H;break;};H=H.parentNode;};if (Q&&R&&!R._fckblockquotemoveout){O.push(R);FCKDomTools.SetElementMarker(P,R,'_fckblockquotemoveout',true);}};FCKDomTools.ClearAllMarkers(P);var S=[];var T=[],P={};var U=function(N){for (var i=0;i0){var W=O.shift();var N=W.parentNode;if (W==W.parentNode.firstChild) N.parentNode.insertBefore(N.removeChild(W),N);else if (W==W.parentNode.lastChild) N.parentNode.insertBefore(N.removeChild(W),N.nextSibling);else FCKDomTools.BreakParent(W,W.parentNode,B);if (!N._fckbqprocessed){T.push(N);FCKDomTools.SetElementMarker(P,N,'_fckbqprocessed',true);};S.push(W);};for (var i=T.length-1;i>=0;i--){var N=T[i];if (U(N)) FCKDomTools.RemoveNode(N);};FCKDomTools.ClearAllMarkers(P);if (FCKConfig.EnterMode.IEquals('br')){while (S.length){var W=S.shift();var a=true;if (W.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(W).createDocumentFragment();var c=a&&W.previousSibling&&!FCKListsLib.BlockBoundaries[W.previousSibling.nodeName.toLowerCase()];if (a&&c) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));var d=W.nextSibling&&!FCKListsLib.BlockBoundaries[W.nextSibling.nodeName.toLowerCase()];while (W.firstChild) M.appendChild(W.removeChild(W.firstChild));if (d) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));W.parentNode.replaceChild(M,W);a=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i';B.open();B.write(''+F+'<\/head><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.ResizeForSubpanel=function(A,B,C){if (!FCKBrowserInfo.IsIE7) return false;if (!this._Popup.isOpen){this.Subpanel=null;return false;};if (B==0&&C==0){if (this.Subpanel!==A) return false;this.Subpanel=null;this.IncreasedX=0;}else{this.Subpanel=A;if ((this.IncreasedX>=B)&&(this.IncreasedY>=C)) return false;this.IncreasedX=Math.max(this.IncreasedX,B);this.IncreasedY=Math.max(this.IncreasedY,C);};var x=this.ShowRect.x;var w=this.IncreasedX;if (this.IsRTL) x=x-w;var D=this.ShowRect.w+w;var E=Math.max(this.ShowRect.h,this.IncreasedY);if (this.ParentPanel) this.ParentPanel.ResizeForSubpanel(this,D,E);this._Popup.show(x,this.ShowRect.y,D,E,this.RelativeElement);return this.IsRTL;};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (FCKBrowserInfo.IsIE7){if (this.ParentPanel&&this.ParentPanel.ResizeForSubpanel(this,D,E.offsetHeight)){FCKTools.RunFunction(this.Show,this,[x,y,A]);return;}};if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};if (FCKBrowserInfo.IsIE7){this.ShowRect={x:x,y:y,w:D,h:E.offsetHeight};this.IncreasedX=0;this.IncreasedY=0;this.RelativeElement=A;};this._PopupArgs=[x,y,D,E.offsetHeight,A];this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;if (this._Popup&&this.ParentPanel&&!A) this.ParentPanel.ResizeForSubpanel(this,0,0);FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;this.RelativeElement=null;}; +var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;}; +var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;}; +var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.sourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);}; +var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label=' ';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='
    ';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?' ':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='
     
    ';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='
    '+this.Caption+'
    ';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}}; +var FCKToolbarSpecialCombo=function(){this.sourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}; +var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'');if (C==0) D.push('');return D.join('');}; +var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;iEnable SCAYT
    ';return C?'Disable SCAYT':'Enable SCAYT';};var Z=function(tooltip,style){this.Command=FCKCommands.GetCommand('Scayt');this.CommandName='Scayt';this.Label=this.GetLabel();this.Tooltip=FCKLang.ScaytTitle;this.Style=1;};Z.prototype=new FCKToolbarSpecialCombo;Z.prototype.CreateItems=function(){this._Combo.AddItem('Trigger','Enable SCAYT');this._Combo.AddItem('Options',FCKLang.ScaytTitleOptions||"Options");this._Combo.AddItem('Langs',FCKLang.ScaytTitleLangs||"Languages");this._Combo.AddItem('About',FCKLang.ScaytTitleAbout||"About");};Z.prototype.GetLabel=function(){var a=FCKConfig.SkinPath+'fck_strip.gif';return FCKBrowserInfo.IsIE?'
    ':'';};function ScaytMessage(m){m&&alert(m);};var b=function(){name='ScaytContext';};b.prototype.Execute=function(contextInfo){var c=contextInfo&&contextInfo.action,g=c&&contextInfo.node,Q=window.scayt_control;if (g){switch (c){case 'Suggestion':Q.replace(g,contextInfo.suggestion);break;case 'Ignore':Q.ignore(g);break;case 'Ignore All':Q.ignoreAll(g);break;case 'Add Word':var E=FCK.EditorWindow.parent.parent;E.scayt.addWordToUserDictionary(g);break;}}};function InitSetup(){FCK.ContextMenu.RegisterListener({AddItems:function(menu){var E=FCK.EditorWindow.parent.parent;var Q=window.scayt_control,P=E.scayt;if (!Q) return;var g=Q.getScaytNode();if (!g) return;var h=P.getSuggestion(Q.getWord(g),Q.getLang());if (!h||!h.length) return;menu.AddSeparator();var j=FCK.Config.ScaytMaxSuggestions||5;var k=(j==-1)?h.length:j;for (var i=0;i';G.open();G.write(''+H+''+document.getElementById('xToolbarSpace').innerHTML+'');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (window.onresize){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save(true);var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})(); +var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}; +var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}}; +var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}; +var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;iC) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();}; +var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}};if (A.IsSafari) A.IsSafari3=(parseFloat(s.match(/ applewebkit\/(\d+)/)[1])<526);})(FCKBrowserInfo); +var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i';if (!FCKRegexLib.HtmlOpener.test(A)) A=''+A+'';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&');return A;}else{var B=FCKConfig.DocType+'0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='>'+A+'';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}}; +var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){FCK.Events.FireEvent("OnBeforeGetData");if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};D=FCKConfig.ProtectedSource.Revert(D);setTimeout(function() { FCK.Events.FireEvent("OnAfterGetData");},0);return D;},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();FCK.Selection.Release();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (window.onresize) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+''+FCK.TempBaseTag+''+FCKLang.Preview+''+_FCK_GetEditorAreaStyleTags()+''+FCK.GetXHTML()+'';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){FCKTools.AddEventListener(FCK.EditorDocument,'paste',function(evt){var A=new FCKDomRange(FCK.EditorWindow);var B=FCK.EditorDocument.createTextNode('\ufeff');var C=FCK.EditorDocument.createElement('a');C.id='fck_paste_padding';C.innerHTML='';A.MoveToSelection();A.DeleteContents();A.InsertNode(B);A.Collapse();A.InsertNode(C);A.MoveToPosition(C,3);A.Select();setTimeout(function(){B.parentNode.removeChild(B);C=FCK.EditorDocument.getElementById('fck_paste_padding');C.parentNode.removeChild(C);},0);});};if (FCKBrowserInfo.IsSafari){var D=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',D);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i '+this.Elements[i].outerHTML+'';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i0) C+='TABLE { behavior: '+B+' ; }';C+='';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (!FCK.IsSelectionChangeLocked&&FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){var A=FCK.EditorWindow.event;if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));A.returnValue=false;A.cancelBubble=true;}};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onbeforedeactivate",function(){ FCKSelection.Save();});this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',Doc_OnMouseDown);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKSelection.Restore();FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCKSelection.GetSelection();if (B.type.toLowerCase()=='control') B.clear();A=''+A;B.createRange().pasteHTML(A);var C=FCK.EditorDocument.getElementById('__fakeFCKRemove__');if (C.parentNode.childNodes.length==1) C=C.parentNode;C.removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='
     
    '+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('

    ');var D=B.search('

    ');if ((C!=-1&&D!=-1&&C0){if (D){var F=this.EditorDocument.createElement('A');F.href=A;var G=E;G.parentNode.insertBefore(F,G);G.parentNode.removeChild(G);F.appendChild(G);return [F];};var H='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',H,false,!!B);var I=this.EditorDocument.links;for (i=0;i0&&!isNaN(E)) this.PageConfig[D]=parseFloat(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) { }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.push([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[//g,//gi,//gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.push(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '';};for (var i=0;i|>)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;}; +var FCKDebug={Output:function(){},OutputObject:function(){}}; +var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i0) return true;continue;}};if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&¤tWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E'+styleDef+'';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i/g,'>');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/>/g,'>');A=A.replace(/</g,'<');A=A.replace(/&/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="

    ";var H="

    ";var I="
    ";if (C){G="
  3. ";H="
  4. ";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';}; +FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':if (document.location.protocol!='file:') try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();}; +var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.6",VersionBuild : "25427",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup); +var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/]/i,HtmlOpener:/]*>/i,HeadOpener:/]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*| | )(<\/\1>)?$/,TagBody:/>]+))/gi,ProtectUrlsA:/]+))/gi,ProtectUrlsArea:/]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/}; +var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }}; +var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i':'gt','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={'>':'gt'};A='>';A+=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');}; +var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);if (FCKBrowserInfo.IsIE) FCKXHtml._RemoveXHtmlJobProperties(A);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^/,'');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)} while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol; +FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes,bHasStyle;for (var n=0;n0){var I=FCKTools.ProtectFormStyles(B);var J=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);this._AppendAttribute(C,'style',J);}};FCKXHtml._RemoveXHtmlJobProperties=function (A){if (!A||!A.nodeType||A.nodeType!=1) return;if (typeof A._fckxhtmljob=='undefined'&&A.tagName!=='BODY') return;A.removeAttribute('_fckxhtmljob');if (A.hasChildNodes()){var B=A.childNodes;for (var i=B.length-1;i>=0;i--){var C=B[i];if (C.parentNode==A) FCKXHtml._RemoveXHtmlJobProperties(C);}}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;}; +var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+(FCKCodeFormatter.ProtectedData.push(C)-1)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;iB[i]) return 1;};if (A.lengthB.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;}; +var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A=''+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+' '+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='
    ';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(//i,''+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(//i,''+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document){this.Document.selection.empty();this.Document.body.innerHTML="";};this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}; +var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;}; +FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})(); +var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return ' ';else if (offset==0) return new Array(match.length).join(' ')+' ';else return ' '+new Array(match.length).join(' ');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'
    ');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join(' ')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(]*>)[ \t\r\n]*/gi,'
    ');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+| )/g,' ');else if (isTag&&value=='
    ') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='
    \n'+F.join('')+'
    ';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='
    '+C+'
    ';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i0) return true;};B=B.nextSibling;};return false;}}; +var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML=' ';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML=' ';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&C.nodeType==3&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}}; +FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var A=this.Window.document.selection;if (A.type!='Control'){var B=this._GetSelectionMarkerTag(true);var C=this._GetSelectionMarkerTag(false);if (!B&&!C){this._Range.setStart(this.Window.document.body,0);this._UpdateElementInfo();return;};this._Range.setStart(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);this._Range.setEnd(C.parentNode,FCKDomTools.GetIndexOf(C));C.parentNode.removeChild(C);this._UpdateElementInfo();}else{var D=A.createRange().item(0);if (D){this._Range.setStartBefore(D);this._Range.setEndAfter(D);this._UpdateElementInfo();}}};FCKDomRange.prototype.Select=function(A){if (this._Range) this.SelectBookmark(this.CreateBookmark(true),A);};FCKDomRange.prototype.SelectBookmark=function(A,B){var C=this.CheckIsCollapsed();var D;var E;var F=this.GetBookmarkNode(A,true);if (!F) return;var G;if (!C) G=this.GetBookmarkNode(A,false);var H=this.Window.document.body.createTextRange();H.moveToElementText(F);H.moveStart('character',1);if (G){var I=this.Window.document.body.createTextRange();I.moveToElementText(G);H.setEndPoint('EndToEnd',I);H.moveEnd('character',-1);}else{D=B||!F.previousSibling||F.previousSibling.nodeName.toLowerCase()=='br';E=this.Window.document.createElement('span');E.innerHTML='';F.parentNode.insertBefore(E,F);if (D){F.parentNode.insertBefore(this.Window.document.createTextNode('\ufeff'),F);}};if (!this._Range) this._Range=this.CreateRange();this._Range.setStartBefore(F);F.parentNode.removeChild(F);if (C){if (D){H.moveStart('character',-1);H.select();this.Window.document.selection.clear();}else H.select();FCKDomTools.RemoveNode(E);}else{this._Range.setEndBefore(G);G.parentNode.removeChild(G);H.select();}};FCKDomRange.prototype._GetSelectionMarkerTag=function(A){var B=this.Window.document;var C=B.selection;var D;try{D=C.createRange();}catch (e){return null;};if (D.parentElement().document!=B) return null;D.collapse(A===true);var E='fck_dom_range_temp_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000);D.pasteHTML('');return B.getElementById(E);}; +var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I)||H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}}; +var FCKDocumentFragment=function(A){this._Document=A;this.RootNode=A.createElement('div');};FCKDocumentFragment.prototype={AppendTo:function(A){FCKDomTools.MoveChildren(this.RootNode,A);},AppendHtml:function(A){var B=this._Document.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){var B=this.RootNode;var C;while((C=B.lastChild)) FCKDomTools.InsertAfterNode(A,B.removeChild(C));}}; +var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}}; +var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}}; +var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}}; +FCKSelection.GetType=function(){try{var A=FCKSelection.GetSelection().type;if (A=='Control'||A=='Text') return A;if (this.GetSelection().createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=this.GetSelection().createRange();if (A&&A.item) return this.GetSelection().createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return this.GetSelection().createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();this.GetSelection().empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);B.select();}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);B.select();}};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=this.GetSelection().createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (this.GetSelection().type=="Control"){B=this.GetSelectedElement();}else{var C=this.GetSelection().createRange();B=C.parentElement();}while (B){if (B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (this.GetSelection().type=="Control"){oRange=this.GetSelection().createRange();for (i=0;i=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(A.parentNode);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i=E.height){for (D=F;D0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCK.EditorDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCK.EditorDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCK.EditorDocument.createElement(B.nodeName);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r1){B.rowSpan=Math.ceil(G/2);var H=D+Math.ceil(G/2);var I=C[H];var J=null;for (var i=E+1;i1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);B.parentNode.parentNode.parentNode.rows[H].insertBefore(K,J);}else{var L=B.parentNode.sectionRowIndex+1;var M=FCK.EditorDocument.createElement('tr');var N=B.parentNode.parentNode;if (N.rows.length>L) N.insertBefore(M,N.rows[L]);else N.appendChild(M);for (var i=0;i1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);M.appendChild(K);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.lengthE) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j=0&&C.compareEndPoints('StartToEnd',E)<=0)||(C.compareEndPoints('EndToStart',E)>=0&&C.compareEndPoints('EndToEnd',E)<=0)){B[B.length]=D.cells[i];}}}};return B;}; +var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i ';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i\n \n
    \n '+FCKLang.ColorAutomatic+'\n \n ';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H
    ';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='
    '+FCKLang.ColorMoreColors+'
    ';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';}}; +var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}; +var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');}; +var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;}; +var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H,oEditorScrollPos;if (FCK.EditMode==0){H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();oEditorScrollPos=FCKTools.GetScrollPosition(FCK.EditorWindow);}else{var I=FCK.EditingArea.Textarea;H=!FCKBrowserInfo.IsIE&&[I.selectionStart,I.selectionEnd];oEditorScrollPos=[I.scrollLeft,I.scrollTop];};if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();if (FCK.EditMode==0){H.Select();FCK.EditorWindow.scrollTo(oEditorScrollPos.X,oEditorScrollPos.Y);}else{if (!FCKBrowserInfo.IsIE){I.selectionStart=H[0];I.selectionEnd=H[1];};I.scrollLeft=oEditorScrollPos[0];I.scrollTop=oEditorScrollPos[1];}};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';}; +var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;iC[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}}; +var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}}; +var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;iN;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}}; +var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];var P={};while ((H=G.GetNextParagraph())){var Q=null;var R=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){Q=H.parentNode;R=H;break;};H=H.parentNode;};if (Q&&R&&!R._fckblockquotemoveout){O.push(R);FCKDomTools.SetElementMarker(P,R,'_fckblockquotemoveout',true);}};FCKDomTools.ClearAllMarkers(P);var S=[];var T=[],P={};var U=function(N){for (var i=0;i0){var W=O.shift();var N=W.parentNode;if (W==W.parentNode.firstChild) N.parentNode.insertBefore(N.removeChild(W),N);else if (W==W.parentNode.lastChild) N.parentNode.insertBefore(N.removeChild(W),N.nextSibling);else FCKDomTools.BreakParent(W,W.parentNode,B);if (!N._fckbqprocessed){T.push(N);FCKDomTools.SetElementMarker(P,N,'_fckbqprocessed',true);};S.push(W);};for (var i=T.length-1;i>=0;i--){var N=T[i];if (U(N)) FCKDomTools.RemoveNode(N);};FCKDomTools.ClearAllMarkers(P);if (FCKConfig.EnterMode.IEquals('br')){while (S.length){var W=S.shift();var a=true;if (W.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(W).createDocumentFragment();var c=a&&W.previousSibling&&!FCKListsLib.BlockBoundaries[W.previousSibling.nodeName.toLowerCase()];if (a&&c) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));var d=W.nextSibling&&!FCKListsLib.BlockBoundaries[W.nextSibling.nodeName.toLowerCase()];while (W.firstChild) M.appendChild(W.removeChild(W.firstChild));if (d) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));W.parentNode.replaceChild(M,W);a=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i';B.open();B.write(''+F+'<\/head><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.ResizeForSubpanel=function(A,B,C){if (!FCKBrowserInfo.IsIE7) return false;if (!this._Popup.isOpen){this.Subpanel=null;return false;};if (B==0&&C==0){if (this.Subpanel!==A) return false;this.Subpanel=null;this.IncreasedX=0;}else{this.Subpanel=A;if ((this.IncreasedX>=B)&&(this.IncreasedY>=C)) return false;this.IncreasedX=Math.max(this.IncreasedX,B);this.IncreasedY=Math.max(this.IncreasedY,C);};var x=this.ShowRect.x;var w=this.IncreasedX;if (this.IsRTL) x=x-w;var D=this.ShowRect.w+w;var E=Math.max(this.ShowRect.h,this.IncreasedY);if (this.ParentPanel) this.ParentPanel.ResizeForSubpanel(this,D,E);this._Popup.show(x,this.ShowRect.y,D,E,this.RelativeElement);return this.IsRTL;};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (FCKBrowserInfo.IsIE7){if (this.ParentPanel&&this.ParentPanel.ResizeForSubpanel(this,D,E.offsetHeight)){FCKTools.RunFunction(this.Show,this,[x,y,A]);return;}};if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};if (FCKBrowserInfo.IsIE7){this.ShowRect={x:x,y:y,w:D,h:E.offsetHeight};this.IncreasedX=0;this.IncreasedY=0;this.RelativeElement=A;};this._PopupArgs=[x,y,D,E.offsetHeight,A];this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;if (this._Popup&&this.ParentPanel&&!A) this.ParentPanel.ResizeForSubpanel(this,0,0);FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;this.RelativeElement=null;}; +var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;}; +var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;}; +var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.sourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);}; +var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label=' ';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='
    ';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?' ':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='
     
    ';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='
    '+this.Caption+'
    ';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}}; +var FCKToolbarSpecialCombo=function(){this.sourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}; +var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'');if (C==0) D.push('');return D.join('');}; +var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;iEnable SCAYT

    B8OP-3{)e5k11@tlYK5y{wX*a&a1=B*|%F|S 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 literal 0 HcmV?d00001 diff --git a/backgroundimages/yellow_lozange.gif b/backgroundimages/yellow_lozange.gif new file mode 100644 index 0000000000000000000000000000000000000000..35fec2d0bc9ccd867286b677ff3ec37cb6202428 GIT binary patch literal 144 zcmZ?wbhEHblw^=(n8?8J|JAJj|Nk?9f#OdVP6h@>1|1L&B=5kH$iU1Y;}M|H(8R&b z6meq1!o#hc%romlzM8WUA`0#SCCR*yF>FNmz$TB{T6%7=hK;KsK8(i0Fu!$p#T5? literal 0 HcmV?d00001 diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..48b8b86 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,334 @@ +******************************************************************************************************* +** ** +** ** +** V E R S I O N H I S T O R Y ** +** ** +** of ** +** ** +** CMSimple Calendar Plugin ** +** ** +** ** +******************************************************************************************************* + +CMSimple Calendar Plugin started 2005 by Michael Svarrer, modified by Tory, Bob, +and rewritten by Svasti, Holger, and again Svasti + +todo: +Auf einer Seite soll die Eventliste dargestellt werden (vollständig mit allen Terminen) +Wäre es möglich z.B. auf der Startseite eine "verkürzte" Eventliste darzustellen, die z.B. die nächsten 5 Termine anzeigt? +Damit soll nicht die nextevent Funktion gemeint sein, sondern die Liste. + +-- 1.4.6 (Dec 2013) bugfix (2 digit hours got corrupted on saving the event, fix by cmb) + +-- 1.4.5 (Nov 2013) + - bugfix (by cmb) to make editevents.php work under php4 + - bugfix sorting events by time on the same day (reported by Stephanie Vetter) + - navigation is now limited to previous or next years/months, so that google stops following 20 years back etc + - when wrong name for event template is given, default table view will be shown + - eventlist templates without ".tpl" are also accepted now + - changing an event and clicking "add" will not delete the changes any more + - added metaconfig for use in XH 1.6 (including function to get eventlist templates) + + +-- 1.4.4 (August 2013) + - bugfix in presets.php which caused blanc screen under php 4 (fix by cmb) + - bugfix: remove slashes had been forgotten + - annoying alert from ckeditor (on save) eliminated (code from cmb) and save button of ckeditor removed + +-- 1.4.3 (July 2013) + - bugfix to prevent data loss. On save not the complete eventfile is send to the server, but only + the events which was changed, added, deleted or copied. In the backup section a new button to save + the eventfile under a new name was added, as the general save button has gone. + - version.nfo file added, "native" check version deleted + +-- 1.4.2 (September 2012) by svasti + - Links to external pdfs and pdfs in subfolders of downloads folder now possible (user demand) + - Help file updated + - Added a suggestion (eventlist.php) by cmb, to prevent failiure of js routines in calendar-backend, + when tinymce is for some reason not working. + - Changed the routine to link to pdfs in downloadfolder, so that it will work also in CMSimple 3.4 which + has no special setting in config for "downloads" (idea by cmb) + +-- 1.4.1 (August 2012) by svasti + - Bugfix "not in marquee" wouldn't save + +-- 1.4 (July 2012) by svasti + - Two lines, which had $key=>&$value, which is not implementend in PHP 4, changed with workaround (by cmb) + - Fixed bug which prevented correct internal links from secondary languages + - Fixed bug which prevented a second internal link with & in heading + - Calendar file merging improved + - some small fixes in stylesheet.css and editor.css, and bugfix in editorconfig by cmb + - Added holiday-config menu + - Czech translation updated by oldnema + +-- 1.4 rc (May 2012) by svasti + - shifting of displayed period in event list to clicked event can be set + (This was the default behavior up to v 1.3. Now default behavior is enlargement of period to clicked event) + - internal link and event-list page can be selected by options list. + - multiple links and multiple link texts are possible + - error messages on missing writing permissions + - interface simplification + some bug corrections + - added simplified function calls for calendars/lists/marquees based on a combination of two event files + - added configuration possibility for pop-up location (right, left, down) in big calendar + - checking availability of function easter_date and providing an alternative (by cmb) + +-- 1.4 beta (March 2012) by svasti + + Configuration + - New direct configuration possibility in Edit Events and Calendar; changes can be seen right after saving. + - Grown complexity hidden from first time user. Presets are offered. + - User can save his own settings as a preset, could be used in upgrades, presets can be deleted too + - Presets and plugin content have configurable filepath + - huge set of direct configuration possibilites for big and small calendars + - Support for TinyMCE of CMSimple 1.5 added (with some help by cmb) and CKeditor + + Second Calendar + - An independent second calendar can be enabled by entering an event file name in config + - Automatic enlargement of the backend plugin menu by 3 items (edit2, view list2, view calendar2) + - The second calendar has its own event list page. All styling same as standard calendar. + - 6 new commands for the 2nd calendar + + Edit Events + - Delete Button function changed: now deletes without right away without again clicking save + (saving the user 1 page reloading) + - Checkbox to premark delete, on checking this, entries are crossed out visually, can be unchecked also. + - Master color picker to control the other color pickers. Code specially send by Jan Odvárko + - Main event field and additional dates field can be configured as textareas + - Possibility to mark booked out added + + Event List + - additional entry field added (user request), could be used for location + - 2 types of yearly events: with or without age calculation (user request) + - Editors configured to be able to use standard styles of the site + - Soft hyphens can be entered as \- + - Weekly events can be entered together with exceptions and additional dates + - Exceptions also work with long events + - Multiple dates can be assigned to a single event entry (only for 1 day events) . + - Combinations of 2 event files can be shown + - Template driven event list possible. + - Event list templates can be edited in Backup menu + - Added checkboxes for "show no past event" and "show past events in grey" and the + possibility of such choices through varibles in the function call events() + - Booked out (new item) when checked hovers on top of an event entry, which gets striped background color + - Dynamic enlargement of displayed event-list period: if you click in a calendar on an event which is outside the shown period of the event-list, + the event-list period will be enlarged to the future or past to display the requested event. So even if you show only 1 month + in youe event list, still every event can be accessed through clicking on an event day in calendar. + - Linking to Pages of CMSimpleRealBog and to Pages of Subsites enabled, Entry must start with ? or / + + New calendar features + - Holidaylist can be entered in language file; holiday names are shown in title and pup-up frames + complex holiday dates like "easter + 50 days" or "11 days 1 sunday 26.11" can be entered + - New function bigcalendar() with extensive config possibilities + - bigcalendar with different background images, image file path is configurable + - Multiple months can be shown (user request), one under another or in columns, made a little easier through + year() and multicalendar(). Headline will annonce the year(s) shown. + If months from more than one year are shown, the months display the years also. + - Calendar can be shown from other than default file, i.e. archived file + - Different events on the same day will be sorted and displayed in the order of the starting time + - Combinations of 2 event files can be shown in Calendar, Year, Event-List + - 8 levels of visual stacking of events possible and explained in help file + + Marquee + - Anniversaries and weekly events now also in marquee function + - New direct configuration and marquee in action plus actionless overview + - New config possibility to choose which fields shall be displayed in which order, including age field + - New plugin main menu item Marquee + - Added function stop on mouse over + (code by oldnema for standart marquee, code for jQuery adaped by svasti from code by Remy Sharp) + - reduced the java script call for marquee (originally by cmb) because it wouldn't work with new function + - if javascript is disabled in the browser the first marquee event is shown in marquee window + + Popup in Calendar + - Reorganisation of popup display of events: time and holiday name are outdented, the rest indented, + horizontal rule separates different events on the same day + Popups validate and work even in IE 6 + - Plugin works without eventlist page, popups show events, without eventlist + eventdays aren't clickable any more, simply mouse-over (like tool tip) shows the event information. + + Bug correction + - source view table width now adjusted by javascript to fit nicely into screen size + - Bug correction by cmb (notice "no event scheduled" didn't show as expected) + - Multiday events starting before the period display in the event list, but lasting into the shown period + are now shown (internally marked $oldlonglastingevents) + - Several other bugs were detected by oldnema and could be corrected + - stripslashed now used only when magic_quotes_gpc is on + + Translation + - Czech translation by oldnema + + Security + - Securitycheck introduced by Holger hat to be modified, since it wasn't compatible with subsite feature of CMSimple 1.5 + - Security check now on nearly all files as suggested by cmb + - Filebrowser of FCKeditor disabled when calling editevents from frontend (done by cmb, thanx) + + +---------------------------------------------------------------------------------------------------------------- + +-- 1.3 beta 9 by svasti + Backend + - only one type of input table now, no more narrow, medium, wide input tables. Lots of simplification in the code. + - Event list lookalike backend, editing table can be made visible for every event separately + - Editor field has to be activated for every field separately. This was done because too many instances of the editor made + loading the page very slow. + + +-- 1.3 beta 7 by svasti + - some bugs corrected + + Calendar + - popup text from mouse over colored calender days + - visual differentiation between fist, mid and last days of multi day events, single day events and birthdays + + Marquee + - jQuery function used (with help of cmb) + - improved internal sorting (with help of cmb) + + +-- 1.3 beta 6 (September 2011) by svasti http://svasti.de + + Event List + - Past events and icons in the standard event list are automatically displayed in light grey + - Choice of different sets of icons for internal or external links and tooltip style info text + - Short info text can be entered in the link field and can be shown in tool tip style + - Text and images (description field) can be added under every event, with fckeditor support + + Editing Events + - Date can again be entered directly, -,--,?,?? are allowed as days (of planned events), + simple date-check included, 1.1.11 will automatically become 01.01.2011, (but 31.02.11 still possible) + - Automatic link recognition (external, internal, doc(x) or pdf) and detailed error reporting, + - Hint pop-up buttons for how to formate and for how to enter links + - Copy button for (recurring) events, + - Top new-event-button creates new events at the top of the editing table, + while bottom the new-event-button creates them at the bottom of the table + - Title hints added to new event, copy, delete buttons in editevents table + - Some algorithms to catch user input errors (forgotten link text, unnecessary http://) + - Chronological sorting of events on save, function written by manu + - Saving the event file will produce a user-defined number of backup files, which can be inspected in backup admin + - Pop-up of available icon sets + + Formatting + - Standard FCKeditor can be used in description field + - Custom version of FCKeditor added (necessary if FCKeditor isn't there) + - FCKeditor image dialog (of custom FCKeditor) changed, so that class can be selected easily + - Custom templates dialog added, adapted to calendar plugin + - Simple formatting possibility added using chars: *,_,~,#,+ + with examples shown via popup button in editevents input table + + Admin + - Detailed Backup menu added, where all event files can be inspected in source code or via standard + editing events input table, and files can be copied under new names, deleted and merged + - Archived event lists (e.g. of events of former years) can be put on normal pages + - Credits page with version check + + Next Event Announcement + - Marquee-function rewritten, now with possibility to announce more than 1 event + + Code + - Event files now start with version nr. so that in future versions the item order can be changed + - Lots of code rewritten or reformatted + - Width definitions of input fields moved to css, so that display in IE is similar to FF + - changed all config input to "1" or "", wich was "true" or "" (preparing for future check box config) + - Some bugs from v.1.0 corrected, e.g. switching off fields meant + corresponding data got lost. Now data is saved via hidden fields, + and fixed colspan setting (from v.1.0) disfigured the event list in IE (Holger found this bug) + +---------------------------------------------------------------------------------------------------------------- + +-- Version 1.2 modified by Holger http://cmsimple.holgerirmler.de + - Fixed some PHP 5.3.0 deprecated code (split() ...) + - Added xh_debugmode() and a bit security + - Removed direct edit of the eventfiles in admin-area + - Bugfix: layout crashed on eventspage when a birthday (###) was the first event in a month + - Added the DatePicker v5.4 by frequency-decoder.com and made the date inputs readonly + - Replaced ";" by " " in users input to prevent a script-crash and to keep the field-structure in the event-files + - nextevent() will return now nothing when there is no future event + - $plugin_cf['calendar']['date_delimiter']: is ready to use full-stop ".", forward slash "/" and minus/dash "-", + a changed delimitter at runtime will be converted by the DatePicker, so no crashed eventfiles anymore + - Slightly changed the "narrow" style in the backend + +---------------------------------------------------------------------------------------------------------------- + +-- Version 1.1 (April 2011) modified by svasti http://svasti.de + - xh-unicode-compatible + - lots of obsolete attributes moved from config to css (otherwise no validation in html5) + - elimination of unnecessary attributes + - changed obsolete php code ("eregi" is obsolete in php 5.3) + - improvement in backend, 3 input styles available (wide, medium narrow) + - tooltips in config + - extra line in event display giving the period for which the events are listed, + - possibility to show past events, new way to show end of events + - bug corrections: begin and end display of events lasting several days were mixed up + - events from different years would mess up the event-display, + - new way to show end of events (date and/or time), + - correction of other minor bugs (like birthday in calendar view) plus beautifying the code display a bit... but not too much + +---------------------------------------------------------------------------------------------------------------- + + -- Version 1.0 By Tory + - The function of showing/not showing time, location and link in event view will now work again + +---------------------------------------------------------------------------------------------------------------- + + Modified by Bob (cmsimple.fr), 02/2008. (this is from CMSimple Flex package) + +---------------------------------------------------------------------------------------------------------------- + + -- Version 0.9 By Tory + - Minor bugs corrected regarding Date-delimiter problem in events in Calendar view. + - Event Page is now configured in the language file. You therefore don't need to add Eventpage-name in Calender call in Template or Calendar-page + - Singular-Plural text regarding age in birtdays in EventPage are now added to language files. + - Parameters added to language files are: + $plugin_tx['calendar']['admin_event_page']="Events"; - The Eventpage, in wich Events in Calendar are related to. + $plugin_tx['calendar']['age_singular_text']="year"; age text for ages <2 Years + $plugin_tx['calendar']['age_plural1_text']="years"; + age text for ages >1 and <5 years + $plugin_tx['calendar']['age_plural2_text']="years"; age text for ages >4 years, used in many east european contries + + -- Version 0.8 By Tory + Events can now be added / edited / deleted from a CMSimple page, without the Administrator Rights. + Just create a page and add the following line: + #CMSimple $output.=editevents();# + The page can be behind Memberspage or Register plugin to allow just a single group of members to be Editor of the Event File. + Eg.: #CMSimple $output.=access('admin');$output.=editevents();# (Used in combination with register plugin.) + Only index.php file in Calender plugin has been changed since Version 0.7 + + -- Version 0.7 By Tory based on Svarrers version 0.5 : 20. Sep. 2007 + Several dates events are now handled so that they can last over several days, weeks, month or years. + Begin and End date/time are entered in the eventfile separately. They are only shown in Eventpage with + the Begin date and End date. In the Calender it is possible to select whether the between dates should be + higlighted or not. + In Nextevent and Event-page are automatically written Begin date-time or End date-time to a several dates event. + + -- Version 0.6 Mod by Tory : 16. Sep 2007 + New Function added: nextevent() will display next coming event compared to current date-time. + New way of sorting events that makes it possible to have more events the same day, and have them sorted + by date and time. + Events are entered in the eventfile this way: + Date;Event;Location (### = birthday);Link (int:?InternalPage / ext:www.ExternalPage.com),LinkTxT;Time (eg: 09:45) + Date can be: begin-date,end-date,end-time for events over several days e.g: 19-6-2007,27-6-2007,16:30 + +---------------------------------------------------------------------------------------------------------------- + + -- Version 0.5 : 17. mar 2006 + New feature added external linkage and miltiple dates for same event syntax + date delimiter can be /.- for input. For output the event table parameter + $plugin_cf['calendar']['date_delimiter'] controls the output + New CSS clases added for the event_monthyear, event_heading,event_data + Improved way of generating event table implemented + + -- Version 0.4 : 11. sept 2005 + Title added to link in calendar mode showing event + $end_month added in the events function, here you specify the amount + of months the events function should show. + Prev/Next month button avaliable, set 'prev_next_button' to true to enable + Bug when using week_starts_mon = false + + -- Version 0.3 : Third release - 16. jun 2005 + Parameters added to config + $plugin_cf['calendar']['calendar_width'] + $plugin_cf['calendar']['event_width_date']="20%"; + $plugin_cf['calendar']['event_width_event']="60%"; + $plugin_cf['calendar']['event_width_location']="20%"; + + -- Version 0.2 : Second release - 15. jun 2005 + Some Notice: Undefined variable: for different variables diff --git a/config/config.php b/config/config.php new file mode 100644 index 0000000..aee33d8 --- /dev/null +++ b/config/config.php @@ -0,0 +1,34 @@ +%s"; +$plugin_cf['calendar']['style_headline_year']=""; +$plugin_cf['calendar']['z-index']=""; + +?> diff --git a/config/config2.php b/config/config2.php new file mode 100644 index 0000000..615c7e1 --- /dev/null +++ b/config/config2.php @@ -0,0 +1,88 @@ + diff --git a/config/metaconfig.php b/config/metaconfig.php new file mode 100644 index 0000000..ce46232 --- /dev/null +++ b/config/metaconfig.php @@ -0,0 +1,34 @@ + diff --git a/content/.gitignore b/content/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/css/crossout.gif b/css/crossout.gif new file mode 100644 index 0000000000000000000000000000000000000000..584837b256c1c3a573446725b8c5ca0fed87b6e2 GIT binary patch literal 1149 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 B)&>9o literal 0 HcmV?d00001 diff --git a/dp/bullet1.gif b/dp/bullet1.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae352c2b697b3309d21f667749a7fd4a2d695655 GIT binary patch literal 55 zcmZ?wbhEHb zn7DSR*ytGc7%6$hIB9taREfFC38UEw8fx+>T53van%aq~+G@$_8tVuvTU$tLo9lFKS96bdsUA;tYoh^i|-QC0O9bO|&URQqJ1dhHQ$nKu? M9{(**KT`kzJ6L&uY5)KL literal 0 HcmV?d00001 diff --git a/dp/cal-grey.gif b/dp/cal-grey.gif new file mode 100644 index 0000000000000000000000000000000000000000..484e977efa626e55778f4fe7c9e307e8b15f3050 GIT binary patch literal 170 zcmZ?wbhEHb6krfw*v!F@ot+&U8+-2Dx%u+|z`((v z1Cj)p!N3wOaMDv-DTU`u`8ig>o|FffQ4y17vhy8JJn~ubLLuX6i}&qpjfoN_41EoW z8fBjulg=N$6yEJt>ZBw%)8s|f*{Iwo?(YqUz8K8@8+35z+@HF-H{SoKQDkDU1^@sf BKAZpm literal 0 HcmV?d00001 diff --git a/dp/cal.gif b/dp/cal.gif new file mode 100644 index 0000000000000000000000000000000000000000..8526cf5d19a915aa8073cf344873c4505491970d GIT binary patch literal 127 zcmZ?wbhEHb6krfwSj51v)Yr?)cd3`J*V1K6uU)?O9}E~67!-f9FfuT(G3WrDe9t*l 20 && +value <= 100)) { + finalOpacity = parseInt(value, 10); + }; + break; + case "bespoketitles": + bespokeTitles = {}; + for(var dt in value) { + bespokeTitles[dt] = value[dt]; + }; + }; + }; + }; + + function parseCellFormat(value) { + if(isOpera) { + // Don't use hidden text for opera due to focus outline problems + formatParts = ["placeholder"]; + cellFormat = "j-sp-F-sp-Y"; + return; + }; + + // I'm sure this could be done with a regExp and a split in one line... seriously... + var parts = value.split("-"), + fullParts = [], + tmpParts = [], + part; + + for(var pt = 0; pt < parts.length; pt++) { + part = parts[pt]; + if(part == "j" || part == "d") { + if(tmpParts.length) { + fullParts.push(tmpParts.join("-")); + tmpParts = []; + }; + fullParts.push("placeholder"); + } else { + tmpParts.push(part); + }; + }; + + if(tmpParts.length) { + fullParts.push(tmpParts.join("-")); + }; + + if(!fullParts.length || fullParts.length > 3) { + formatParts = ["placeholder", "sp-F-sp-Y"]; + cellFormat = "j-sp-F-sp-Y"; + return; + }; + + formatParts = fullParts; + cellFormat = value; + }; + + function pad(value, length) { + length = length || 2; + return "0000".substr(0,length - Math.min(String(value).length, length)) + value; + }; + + function addEvent(obj, type, fn) { + try { + if( obj.attachEvent ) { + obj["e"+type+fn] = fn; + obj[type+fn] = function(){obj["e"+type+fn]( window.event );}; + obj.attachEvent( "on"+type, obj[type+fn] ); + } else { + obj.addEventListener( type, fn, true ); + }; + } catch(err) {} + }; + + function removeEvent(obj, type, fn) { + try { + if( obj.detachEvent ) { + obj.detachEvent( "on"+type, obj[type+fn] ); + obj[type+fn] = null; + } else { + obj.removeEventListener( type, fn, true ); + }; + } catch(err) {}; + }; + + function stopEvent(e) { + e = e || document.parentWindow.event; + if(e.stopPropagation) { + e.stopPropagation(); + e.preventDefault(); + }; + /*@cc_on + @if(@_win32) + e.cancelBubble = true; + e.returnValue = false; + @end + @*/ + return false; + }; + + function parseJSON(str) { + // Check we have a String + if(typeof str !== 'string' || str == "") { return {}; }; + try { + // Does a JSON (native or not) Object exist + if(typeof JSON === "object" && JSON.parse) { + return window.JSON.parse(str); + // Genious code taken from: http://kentbrewster.com/badges/ + } else if(/lang|buttontabindex|mousewheel|cellformat|titleformat|nodrag|describedby/.test(str.toLowerCase())) { + var f = Function(['var document,top,self,window,parent,Number,Date,Object,Function,', + 'Array,String,Math,RegExp,Image,ActiveXObject;', + 'return (' , str.replace(/<\!--.+-->/gim,'').replace(/\bfunction\b/g,'function') , ');'].join('')); + return f(); + }; + } catch (e) { }; + + if(debug) { + throw "Could not parse the JSON object"; + }; + + return {"err":"Could not parse the JSON object"}; + }; + + function setARIARole(element, role) { + if(element && element.tagName) { + element.setAttribute("role", role); + }; + }; + + function setARIAProperty(element, property, value) { + if(element && element.tagName) { + element.setAttribute("aria-" + property, value); + }; + }; + + // The datePicker object itself + function datePicker(options) { + this.dateSet = null; + this.timerSet = false; + this.visible = false; + this.fadeTimer = null; + this.timer = null; + this.yearInc = 0; + this.monthInc = 0; + this.dayInc = 0; + this.mx = 0; + this.my = 0; + this.x = 0; + this.y = 0; + this.created = false; + this.disabled = false; + this.opacity = 0; + this.opacityTo = 99; + this.inUpdate = false; + this.kbEventsAdded = false; + this.fullCreate = false; + this.selectedTD = null; + this.cursorTD = null; + this.cursorDate = options.cursorDate ? options.cursorDate : "", + this.date = options.cursorDate ? new Date(+options.cursorDate.substr(0,4), +options.cursorDate.substr(4,2) - 1, +options.cursorDate.substr(6,2)) : new Date(); + this.defaults = {}; + this.dynDisabledDates = {}; + this.firstDayOfWeek = localeImport.firstDayOfWeek; + this.interval = new Date(); + this.clickActivated = false; + this.noFocus = true; + this.kbEvent = false; + this.disabledDates = false; + this.enabledDates = false; + this.delayedUpdate = false; + this.bespokeTitles = {}; + + for(var thing in options) { + if(thing.search(/callbacks|formElements|formatMasks/) != -1) continue; + this[thing] = options[thing]; + }; + + /*@cc_on + @if(@_win32) + this.iePopUp = null; + this.isIE7 = false; + @end + @*/ + + /*@cc_on + @if(@_jscript_version <= 5.7) + this.isIE7 = document.documentElement && typeof document.documentElement.style.maxHeight != "undefined"; + @end + @*/ + + for(var i = 0, prop; prop = ["callbacks", "formElements", "formatMasks"][i]; i++) { + this[prop] = {}; + for(var thing in options[prop]) { + this[prop][thing] = options[prop][thing]; + }; + }; + + // Adjust time to stop daylight savings madness on windows + this.date.setHours(5); + + this.changeHandler = function() { + o.setDateFromInput(); + o.callback("dateset", o.createCbArgObj()); + }; + this.createCbArgObj = function() { + return this.dateSet ? {"id":this.id,"date":this.dateSet,"dd":pad(this.date.getDate()),"mm":pad(this.date.getMonth() + 1),"yyyy":this.date.getFullYear()} : {"id":this.id,"date":null,"dd":null,"mm":null,"yyyy":null}; + }; + this.getScrollOffsets = function() { + if(typeof(window.pageYOffset) == 'number') { + //Netscape compliant + return [window.pageXOffset, window.pageYOffset]; + } else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) { + //DOM compliant + return [document.body.scrollLeft, document.body.scrollTop]; + } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { + //IE6 standards compliant mode + return [document.documentElement.scrollLeft, document.documentElement.scrollTop]; + }; + return [0,0]; + }; + this.reposition = function() { + if(!o.created || o.staticPos) { return; }; + + o.div.style.visibility = "hidden"; + o.div.style.left = o.div.style.top = "0px"; + o.div.style.display = "block"; + + var osh = o.div.offsetHeight, + osw = o.div.offsetWidth, + elem = document.getElementById('fd-but-' + o.id), + pos = o.truePosition(elem), + trueBody = (document.compatMode && document.compatMode!="BackCompat") ? document.documentElement : document.body, + sOffsets = o.getScrollOffsets(), + scrollTop = sOffsets[1], + scrollLeft = sOffsets[0], + fitsBottom = parseInt(trueBody.clientHeight+scrollTop) > parseInt(osh+pos[1]+elem.offsetHeight+2), + fitsTop = parseInt(pos[1]-(osh+elem.offsetHeight+2)) > parseInt(scrollTop); + + o.div.style.visibility = "visible"; + + o.div.style.left = Number(parseInt(trueBody.clientWidth+scrollLeft) < parseInt(osw+pos[0]) ? Math.abs(parseInt((trueBody.clientWidth+scrollLeft) - osw)) : pos[0]) + "px"; + o.div.style.top = (fitsBottom || !fitsTop) ? Math.abs(parseInt(pos[1] + elem.offsetHeight + 2)) + "px" : Math.abs(parseInt(pos[1] - (osh + 2))) + "px"; + /*@cc_on + @if(@_jscript_version <= 5.7) + if(o.isIE7) return; + o.iePopUp.style.top = o.div.style.top; + o.iePopUp.style.left = o.div.style.left; + o.iePopUp.style.width = osw + "px"; + o.iePopUp.style.height = (osh - 2) + "px"; + @end + @*/ + }; + this.removeOldFocus = function() { + var td = document.getElementById(o.id + "-date-picker-hover"); + if(td) { + try { + td.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", "-1"); + td.tabIndex = -1; + td.className = td.className.replace(/date-picker-hover/, ""); + td.id = ""; + td.onblur = null; + td.onfocus = null; + } catch(err) {}; + }; + }; + this.addAccessibleDate = function() { + var td = document.getElementById(o.id + "-date-picker-hover"); + + if(td && !(td.getElementsByTagName("span").length)) { + var ymd = td.className.match(/cd-([\d]{4})([\d]{2})([\d]{2})/), + noS = (td.className.search(/date-picker-unused|out-of-range|day-disabled|no-selection|not-selectable/) != -1), + spn = document.createElement('span'), + spnC; + + spn.className = "fd-screen-reader";; + + while(td.firstChild) td.removeChild(td.firstChild); + + if(noS) { + spnC = spn.cloneNode(false); + spnC.appendChild(document.createTextNode(getTitleTranslation(13))); + td.appendChild(spnC); + }; + + for(var pt = 0, part; part = formatParts[pt]; pt++) { + if(part == "placeholder") { + td.appendChild(document.createTextNode(+ymd[3])); + } else { + spnC = spn.cloneNode(false); + spnC.appendChild(document.createTextNode(printFormattedDate(new Date(ymd[1], +ymd[2]-1, ymd[3]), part, true))); + td.appendChild(spnC); + }; + }; + }; + }; + this.setNewFocus = function() { + var td = document.getElementById(o.id + "-date-picker-hover"); + if(td) { + try { + td.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", "0"); + td.tabIndex = 0; + + td.className = td.className.replace(/date-picker-hover/, "") + " date-picker-hover"; + if(!this.clickActivated) { + td.onblur = o.onblur; + td.onfocus = o.onfocus; + }; + + if(!isOpera && !this.clickActivated) o.addAccessibleDate(); + + if(!this.noFocus && !this.clickActivated) { + setTimeout(function() { try { td.focus(); } catch(err) {}; }, 0); + }; + } catch(err) { }; + }; + }; + this.setCursorDate = function(yyyymmdd) { + if(String(yyyymmdd).search(/^([0-9]{8})$/) != -1) { + this.date = new Date(+yyyymmdd.substr(0,4), +yyyymmdd.substr(4,2) - 1, +yyyymmdd.substr(6,2)); + this.cursorDate = yyyymmdd; + + if(this.staticPos) { + this.updateTable(); + }; + }; + }; + this.updateTable = function(noCallback) { + if(!o || o.inUpdate || !o.created) return; + + o.inUpdate = true; + o.removeOldFocus(); + + if(o.timerSet && !o.delayedUpdate) { + if(o.monthInc) { + var n = o.date.getDate(), + d = new Date(o.date); + + d.setDate(2); + d.setMonth(d.getMonth() + o.monthInc * 1); + d.setDate(Math.min(n, daysInMonth(d.getMonth(),d.getFullYear()))); + + o.date = new Date(d); + } else { + o.date.setDate(Math.min(o.date.getDate()+o.dayInc, daysInMonth(o.date.getMonth()+o.monthInc,o.date.getFullYear()+o.yearInc))); + o.date.setMonth(o.date.getMonth() + o.monthInc); + o.date.setFullYear(o.date.getFullYear() + o.yearInc); + }; + }; + + o.outOfRange(); + if(!o.noToday) { o.disableTodayButton(); }; + o.showHideButtons(o.date); + + var cd = o.date.getDate(), + cm = o.date.getMonth(), + cy = o.date.getFullYear(), + cursorDate = (String(cy) + pad(cm+1) + pad(cd)), + tmpDate = new Date(cy, cm, 1); + + tmpDate.setHours(5); + + var dt, cName, td, i, currentDate, cellAdded, col, currentStub, abbr, bespokeRenderClass, spnC, dateSetD, + weekDayC = ( tmpDate.getDay() + 6 ) % 7, + firstColIndex = (((weekDayC - o.firstDayOfWeek) + 7 ) % 7) - 1, + dpm = daysInMonth(cm, cy), + today = new Date(), + stub = String(tmpDate.getFullYear()) + pad(tmpDate.getMonth()+1), + cellAdded = [4,4,4,4,4,4], + lm = new Date(cy, cm-1, 1), + nm = new Date(cy, cm+1, 1), + daySub = daysInMonth(lm.getMonth(), lm.getFullYear()), + stubN = String(nm.getFullYear()) + pad(nm.getMonth()+1), + stubP = String(lm.getFullYear()) + pad(lm.getMonth()+1), + weekDayN = (nm.getDay() + 6) % 7, + weekDayP = (lm.getDay() + 6) % 7, + today = today.getFullYear() + pad(today.getMonth()+1) + pad(today.getDate()), + spn = document.createElement('span'); + + o.firstDateShown = !o.constrainSelection && o.fillGrid && (0 - firstColIndex < 1) ? String(stubP) + (daySub + (0 - firstColIndex)) : stub + "01"; + o.lastDateShown = !o.constrainSelection && o.fillGrid ? stubN + pad(41 - firstColIndex - dpm) : stub + String(dpm); + o.currentYYYYMM = stub; + + bespokeRenderClass = o.callback("redraw", {id:o.id, dd:pad(cd), mm:pad(cm+1), yyyy:cy, firstDateDisplayed:o.firstDateShown, lastDateDisplayed:o.lastDateShown}) || {}; + dts = o.getDates(cy, cm+1); + + o.checkSelectedDate(); + + dateSetD = (o.dateSet != null) ? o.dateSet.getFullYear() + pad(o.dateSet.getMonth()+1) + pad(o.dateSet.getDate()) : false; + spn.className = "fd-screen-reader"; + + if(this.selectedTD != null) { + setARIAProperty(this.selectedTD, "selected", false); + this.selectedTD = null; + }; + + for(var curr = 0; curr < 42; curr++) { + row = Math.floor(curr / 7); + td = o.tds[curr]; + spnC = spn.cloneNode(false); + + while(td.firstChild) td.removeChild(td.firstChild); + + if((curr > firstColIndex && curr <= (firstColIndex + dpm)) || o.fillGrid) { + currentStub = stub; + weekDay = weekDayC; + dt = curr - firstColIndex; + cName = []; + selectable = true; + + if(dt < 1) { + dt = daySub + dt; + currentStub = stubP; + weekDay = weekDayP; + selectable = !o.constrainSelection; + cName.push("month-out"); + } else if(dt > dpm) { + dt -= dpm; + currentStub = stubN; + weekDay = weekDayN; + selectable = !o.constrainSelection; + cName.push("month-out"); + }; + + weekDay = ( weekDay + dt + 6 ) % 7; + + cName.push("day-" + localeDefaults.dayAbbrs[weekDay].toLowerCase()); + + currentDate = currentStub + String(dt < 10 ? "0" : "") + dt; + + if(o.rangeLow && +currentDate < +o.rangeLow || o.rangeHigh && +currentDate > +o.rangeHigh) { + td.className = "out-of-range"; + td.title = ""; + td.appendChild(document.createTextNode(dt)); + if(o.showWeeks) { cellAdded[row] = Math.min(cellAdded[row], 2); }; + } else { + if(selectable) { + td.title = titleFormat ? printFormattedDate(new Date(+String(currentStub).substr(0,4), +String(currentStub).substr(4, 2) - 1, +dt), titleFormat, true) : ""; + cName.push("cd-" + currentDate + " yyyymm-" + currentStub + " mmdd-" + currentStub.substr(4,2) + pad(dt)); + } else { + td.title = titleFormat ? getTitleTranslation(13) + " " + printFormattedDate(new Date(+String(currentStub).substr(0,4), +String(currentStub).substr(4, 2) - 1, +dt), titleFormat, true) : ""; + cName.push("yyyymm-" + currentStub + " mmdd-" + currentStub.substr(4,2) + pad(dt) + " not-selectable"); + }; + + if(currentDate == today) { cName.push("date-picker-today"); }; + + if(dateSetD == currentDate) { + cName.push("date-picker-selected-date"); + setARIAProperty(td, "selected", "true"); + this.selectedTD = td; + }; + + if(o.disabledDays[weekDay] || dts[currentDate] == 0) { cName.push("day-disabled"); if(titleFormat && selectable) { td.title = getTitleTranslation(13) + " " + td.title; }; } + + if(currentDate in bespokeRenderClass) { cName.push(bespokeRenderClass[currentDate]); } + + if(o.highlightDays[weekDay]) { cName.push("date-picker-highlight"); }; + + if(cursorDate == currentDate) { + td.id = o.id + "-date-picker-hover"; + }; + + td.appendChild(document.createTextNode(dt)); + td.className = cName.join(" "); + + if(o.showWeeks) { + cellAdded[row] = Math.min(cName[0] == "month-out" ? 3 : 1, cellAdded[row]); + }; + }; + } else { + td.className = "date-picker-unused"; + td.appendChild(document.createTextNode(nbsp)); + td.title = ""; + }; + + if(o.showWeeks && curr - (row * 7) == 6) { + while(o.wkThs[row].firstChild) o.wkThs[row].removeChild(o.wkThs[row].firstChild); + o.wkThs[row].appendChild(document.createTextNode(cellAdded[row] == 4 && !o.fillGrid ? nbsp : getWeekNumber(cy, cm, curr - firstColIndex - 6))); + o.wkThs[row].className = "date-picker-week-header" + (["",""," out-of-range"," month-out",""][cellAdded[row]]); + }; + }; + + var span = o.titleBar.getElementsByTagName("span"); + while(span[0].firstChild) span[0].removeChild(span[0].firstChild); + while(span[1].firstChild) span[1].removeChild(span[1].firstChild); + span[0].appendChild(document.createTextNode(getMonthTranslation(cm, false) + nbsp)); + span[1].appendChild(document.createTextNode(cy)); + + if(o.timerSet) { + o.timerInc = 50 + Math.round(((o.timerInc - 50) / 1.8)); + o.timer = window.setTimeout(o.updateTable, o.timerInc); + }; + + o.inUpdate = o.delayedUpdate = false; + o.setNewFocus(); + }; + + this.destroy = function() { + + if(document.getElementById("fd-but-" + this.id)) { + document.getElementById("fd-but-" + this.id).parentNode.removeChild(document.getElementById("fd-but-" + this.id)); + }; + + if(!this.created) { return; }; + + // Cleanup for Internet Explorer + removeEvent(this.table, "mousedown", o.onmousedown); + removeEvent(this.table, "mouseover", o.onmouseover); + removeEvent(this.table, "mouseout", o.onmouseout); + removeEvent(document, "mousedown", o.onmousedown); + removeEvent(document, "mouseup", o.clearTimer); + + if (window.addEventListener && !window.devicePixelRatio) { + try { + window.removeEventListener('DOMMouseScroll', this.onmousewheel, false); + } catch(err) {}; + } else { + removeEvent(document, "mousewheel", this.onmousewheel); + removeEvent(window, "mousewheel", this.onmousewheel); + }; + o.removeOnFocusEvents(); + clearTimeout(o.fadeTimer); + clearTimeout(o.timer); + + /*@cc_on + @if(@_jscript_version <= 5.7) + if(!o.staticPos && !o.isIE7) { + try { + o.iePopUp.parentNode.removeChild(o.iePopUp); + o.iePopUp = null; + } catch(err) {}; + }; + @end + @*/ + + if(this.div && this.div.parentNode) { + this.div.parentNode.removeChild(this.div); + }; + + o = null; + }; + this.resizeInlineDiv = function() { + o.div.style.width = o.table.offsetWidth + "px"; + o.div.style.height = o.table.offsetHeight + "px"; + }; + this.create = function() { + + if(document.getElementById("fd-" + this.id)) return; + + this.noFocus = true; + + function createTH(details) { + var th = document.createElement('th'); + if(details.thClassName) th.className = details.thClassName; + if(details.colspan) { + /*@cc_on + /*@if (@_win32) + th.setAttribute('colSpan',details.colspan); + @else @*/ + th.setAttribute('colspan',details.colspan); + /*@end + @*/ + }; + /*@cc_on + /*@if (@_win32) + th.unselectable = "on"; + /*@end@*/ + return th; + }; + function createThAndButton(tr, obj) { + for(var i = 0, details; details = obj[i]; i++) { + var th = createTH(details); + tr.appendChild(th); + var but = document.createElement('span'); + but.className = details.className; + but.id = o.id + details.id; + but.appendChild(document.createTextNode(details.text || o.nbsp)); + but.title = details.title || ""; + /*@cc_on + /*@if(@_win32) + th.unselectable = but.unselectable = "on"; + /*@end@*/ + th.appendChild(but); + }; + }; + + this.div = document.createElement('div'); + this.div.id = "fd-" + this.id; + this.div.className = "datePicker"; + + // Attempt to hide the div from screen readers during content creation + this.div.style.visibility = "hidden"; + this.div.style.display = "none"; + + // Set the ARIA describedby property if the required block available + if(this.describedBy && document.getElementById(this.describedBy)) { + setARIAProperty(this.div, "describedby", this.describedBy); + }; + + // Set the ARIA labelled property if the required label available + if(this.labelledBy) { + setARIAProperty(this.div, "labelledby", this.labelledBy.id); + }; + + var tr, row, col, tableHead, tableBody, tableFoot; + + this.table = document.createElement('table'); + this.table.className = "datePickerTable"; + this.table.onmouseover = this.onmouseover; + this.table.onmouseout = this.onmouseout; + this.table.onclick = this.onclick; + + if(this.staticPos) { + this.table.onmousedown = this.onmousedown; + }; + + this.div.appendChild(this.table); + + var dragEnabledCN = !this.dragDisabled ? " drag-enabled" : ""; + + if(!this.staticPos) { + this.div.style.visibility = "hidden"; + this.div.className += dragEnabledCN; + document.getElementsByTagName('body')[0].appendChild(this.div); + + /*@cc_on + @if(@_jscript_version <= 5.7) + + if(!this.isIE7) { + this.iePopUp = document.createElement('iframe'); + this.iePopUp.src = "javascript:'';"; + this.iePopUp.setAttribute('className','iehack'); + // Remove iFrame from tabIndex + this.iePopUp.setAttribute("tabIndex", -1); + // Hide it from ARIA aware technologies + setARIARole(this.iePopUp, "presentation"); + setARIAProperty(this.iePopUp, "hidden", "true"); + this.iePopUp.scrolling = "no"; + this.iePopUp.frameBorder = "0"; + this.iePopUp.name = this.iePopUp.id = this.id + "-iePopUpHack"; + document.body.appendChild(this.iePopUp); + }; + + @end + @*/ + + // Aria "hidden" property for non active popup datepickers + setARIAProperty(this.div, "hidden", "true"); + } else { + elem = document.getElementById(this.positioned ? this.positioned : this.id); + if(!elem) { + this.div = null; + if(debug) throw this.positioned ? "Could not locate a datePickers associated parent element with an id:" + this.positioned : "Could not locate a datePickers associated input with an id:" + this.id; + return; + }; + + this.div.className += " static-datepicker"; + + if(this.positioned) { + elem.appendChild(this.div); + } else { + elem.parentNode.insertBefore(this.div, elem.nextSibling); + }; + + if(this.hideInput) { + for(var elemID in this.formElements) { + elem = document.getElementById(elemID); + if(elem) { + elem.className += " fd-hidden-input"; + }; + }; + }; + + setTimeout(this.resizeInlineDiv, 300); + }; + + // ARIA Grid role + setARIARole(this.div, "grid"); + + if(this.statusFormat) { + tableFoot = document.createElement('tfoot'); + this.table.appendChild(tableFoot); + tr = document.createElement('tr'); + tr.className = "date-picker-tfoot"; + tableFoot.appendChild(tr); + this.statusBar = createTH({thClassName:"date-picker-statusbar" + dragEnabledCN, colspan:this.showWeeks ? 8 : 7}); + tr.appendChild(this.statusBar); + this.updateStatus(); + }; + + tableHead = document.createElement('thead'); + this.table.appendChild(tableHead); + + tr = document.createElement('tr'); + setARIARole(tr, "presentation"); + + tableHead.appendChild(tr); + + // Title Bar + this.titleBar = createTH({thClassName:"date-picker-title" + dragEnabledCN, colspan:this.showWeeks ? 8 : 7}); + + tr.appendChild(this.titleBar); + tr = null; + + var span = document.createElement('span'); + span.appendChild(document.createTextNode(nbsp)); + span.className = "month-display" + dragEnabledCN; + this.titleBar.appendChild(span); + + span = document.createElement('span'); + span.appendChild(document.createTextNode(nbsp)); + span.className = "year-display" + dragEnabledCN; + this.titleBar.appendChild(span); + + span = null; + + tr = document.createElement('tr'); + setARIARole(tr, "presentation"); + tableHead.appendChild(tr); + + createThAndButton(tr, [ + {className:"prev-but prev-year", id:"-prev-year-but", text:"\u00AB", title:getTitleTranslation(2) }, + {className:"prev-but prev-month", id:"-prev-month-but", text:"\u2039", title:getTitleTranslation(0) }, + {colspan:this.showWeeks ? 4 : 3, className:"today-but", id:"-today-but", text:getTitleTranslation(4)}, + {className:"next-but next-month", id:"-next-month-but", text:"\u203A", title:getTitleTranslation(1)}, + {className:"next-but next-year", id:"-next-year-but", text:"\u00BB", title:getTitleTranslation(3) } + ]); + + tableBody = document.createElement('tbody'); + this.table.appendChild(tableBody); + + var colspanTotal = this.showWeeks ? 8 : 7, + colOffset = this.showWeeks ? 0 : -1, + but, abbr; + + for(var rows = 0; rows < 7; rows++) { + row = document.createElement('tr'); + + if(rows != 0) { + // ARIA Grid role + setARIARole(row, "row"); + tableBody.appendChild(row); + } else { + tableHead.appendChild(row); + }; + + for(var cols = 0; cols < colspanTotal; cols++) { + if(rows === 0 || (this.showWeeks && cols === 0)) { + col = document.createElement('th'); + } else { + col = document.createElement('td'); + setARIAProperty(col, "describedby", this.id + "-col-" + cols + (this.showWeeks ? " " + this.id + "-row-" + rows : "")); + setARIAProperty(col, "selected", "false"); + }; + + /*@cc_on@*/ + /*@if(@_win32) + col.unselectable = "on"; + /*@end@*/ + + row.appendChild(col); + if((this.showWeeks && cols > 0 && rows > 0) || (!this.showWeeks && rows > 0)) { + setARIARole(col, "gridcell"); + } else { + if(rows === 0 && cols > colOffset) { + col.className = "date-picker-day-header"; + col.scope = "col"; + setARIARole(col, "columnheader"); + col.id = this.id + "-col-" + cols; + } else { + col.className = "date-picker-week-header"; + col.scope = "row"; + setARIARole(col, "rowheader"); + col.id = this.id + "-row-" + rows; + }; + }; + }; + }; + + col = row = null; + + this.ths = this.table.getElementsByTagName('thead')[0].getElementsByTagName('tr')[2].getElementsByTagName('th'); + for (var y = 0; y < colspanTotal; y++) { + if(y == 0 && this.showWeeks) { + this.ths[y].appendChild(document.createTextNode(getTitleTranslation(6))); + this.ths[y].title = getTitleTranslation(8); + continue; + }; + + if(y > (this.showWeeks ? 0 : -1)) { + but = document.createElement("span"); + but.className = "fd-day-header"; + /*@cc_on@*/ + /*@if(@_win32) + but.unselectable = "on"; + /*@end@*/ + this.ths[y].appendChild(but); + }; + }; + + but = null; + + this.trs = this.table.getElementsByTagName('tbody')[0].getElementsByTagName('tr'); + this.tds = this.table.getElementsByTagName('tbody')[0].getElementsByTagName('td'); + this.butPrevYear = document.getElementById(this.id + "-prev-year-but"); + this.butPrevMonth = document.getElementById(this.id + "-prev-month-but"); + this.butToday = document.getElementById(this.id + "-today-but"); + this.butNextYear = document.getElementById(this.id + "-next-year-but"); + this.butNextMonth = document.getElementById(this.id + "-next-month-but"); + + if(this.noToday) { + this.butToday.style.display = "none"; + }; + + if(this.showWeeks) { + this.wkThs = this.table.getElementsByTagName('tbody')[0].getElementsByTagName('th'); + this.div.className += " weeks-displayed"; + }; + + tableBody = tableHead = tr = createThAndButton = createTH = null; + + if(this.rangeLow && this.rangeHigh && (this.rangeHigh - this.rangeLow < 7)) { this.equaliseDates(); }; + + this.updateTableHeaders(); + this.created = true; + this.updateTable(); + + if(this.staticPos) { + this.visible = true; + this.opacity = this.opacityTo = this.finalOpacity; + this.div.style.visibility = "visible"; + this.div.style.display = "block"; + this.noFocus = true; + this.fade(); + } else { + this.reposition(); + this.div.style.visibility = "visible"; + this.fade(); + this.noFocus = true; + }; + + this.callback("domcreate", { "id":this.id }); + }; + this.fade = function() { + window.clearTimeout(o.fadeTimer); + o.fadeTimer = null; + var diff = Math.round(o.opacity + ((o.opacityTo - o.opacity) / 4)); + o.setOpacity(diff); + if(Math.abs(o.opacityTo - diff) > 3 && !o.noFadeEffect) { + o.fadeTimer = window.setTimeout(o.fade, 50); + } else { + o.setOpacity(o.opacityTo); + if(o.opacityTo == 0) { + o.div.style.display = "none"; + o.div.style.visibility = "hidden"; + setARIAProperty(o.div, "hidden", "true"); + o.visible = false; + } else { + setARIAProperty(o.div, "hidden", "false"); + o.visible = true; + }; + }; + }; + this.trackDrag = function(e) { + e = e || window.event; + var diffx = (e.pageX?e.pageX:e.clientX?e.clientX:e.x) - o.mx; + var diffy = (e.pageY?e.pageY:e.clientY?e.clientY:e.Y) - o.my; + o.div.style.left = Math.round(o.x + diffx) > 0 ? Math.round(o.x + diffx) + 'px' : "0px"; + o.div.style.top = Math.round(o.y + diffy) > 0 ? Math.round(o.y + diffy) + 'px' : "0px"; + /*@cc_on + @if(@_jscript_version <= 5.7) + if(o.staticPos || o.isIE7) return; + o.iePopUp.style.top = o.div.style.top; + o.iePopUp.style.left = o.div.style.left; + @end + @*/ + }; + this.stopDrag = function(e) { + var b = document.getElementsByTagName("body")[0]; + b.className = b.className.replace(/fd-drag-active/g, ""); + removeEvent(document,'mousemove',o.trackDrag, false); + removeEvent(document,'mouseup',o.stopDrag, false); + o.div.style.zIndex = 9999; + }; + this.onmousedown = function(e) { + e = e || document.parentWindow.event; + var el = e.target != null ? e.target : e.srcElement, + origEl = el, + hideDP = true, + reg = new RegExp("^fd-(but-)?" + o.id + "$"); + + o.mouseDownElem = null; + + // Are we within the wrapper div or the button + while(el) { + if(el.id && el.id.length && el.id.search(reg) != -1) { + hideDP = false; + break; + }; + try { el = el.parentNode; } catch(err) { break; }; + }; + + // If not, then ... + if(hideDP) { + hideAll(); + return true; + }; + + if((o.div.className + origEl.className).search('fd-disabled') != -1) { return true; }; + + // We check the mousedown events on the buttons + if(origEl.id.search(new RegExp("^" + o.id + "(-prev-year-but|-prev-month-but|-next-month-but|-next-year-but)$")) != -1) { + + o.mouseDownElem = origEl; + + addEvent(document, "mouseup", o.clearTimer); + addEvent(origEl, "mouseout", o.clearTimer); + + var incs = { + "-prev-year-but":[0,-1,0], + "-prev-month-but":[0,0,-1], + "-next-year-but":[0,1,0], + "-next-month-but":[0,0,1] + }, + check = origEl.id.replace(o.id, ""), + dateYYYYMM = Number(o.date.getFullYear() + pad(o.date.getMonth()+1)); + + o.timerInc = 800; + o.timerSet = true; + o.dayInc = incs[check][0]; + o.yearInc = incs[check][1]; + o.monthInc = incs[check][2]; + o.accellerator = 1; + + if(!(o.currentYYYYMM == dateYYYYMM)) { + if((o.currentYYYYMM < dateYYYYMM && (o.yearInc == -1 || o.monthInc == -1)) || (o.currentYYYYMM > dateYYYYMM && (o.yearInc == 1 || o.monthInc == 1))) { + o.delayedUpdate = false; + o.timerInc = 1200; + } else { + o.delayedUpdate = true; + o.timerInc = 800; + }; + }; + + o.updateTable(); + + return stopEvent(e); + + } else if(el.className.search("drag-enabled") != -1) { + o.mx = e.pageX ? e.pageX : e.clientX ? e.clientX : e.x; + o.my = e.pageY ? e.pageY : e.clientY ? e.clientY : e.Y; + o.x = parseInt(o.div.style.left); + o.y = parseInt(o.div.style.top); + addEvent(document,'mousemove',o.trackDrag, false); + addEvent(document,'mouseup',o.stopDrag, false); + var b = document.getElementsByTagName("body")[0]; + b.className = b.className.replace(/fd-drag-active/g, "") + " fd-drag-active"; + o.div.style.zIndex = 10000; + + return stopEvent(e); + }; + return true; + }; + this.onclick = function(e) { + if(o.opacity != o.opacityTo || o.disabled) return stopEvent(e); + + e = e || document.parentWindow.event; + var el = e.target != null ? e.target : e.srcElement; + + while(el.parentNode) { + // Are we within a valid i.e. clickable TD node + if(el.tagName && el.tagName.toLowerCase() == "td") { + + if(el.className.search(/cd-([0-9]{8})/) == -1 || el.className.search(/date-picker-unused|out-of-range|day-disabled|no-selection|not-selectable/) != -1) return stopEvent(e); + + var cellDate = el.className.match(/cd-([0-9]{8})/)[1]; + o.date = new Date(cellDate.substr(0,4),cellDate.substr(4,2)-1,cellDate.substr(6,2)); + o.dateSet = new Date(o.date); + o.noFocus = true; + o.callback("dateset", { "id":o.id, "date":o.dateSet, "dd":o.dateSet.getDate(), "mm":o.dateSet.getMonth() + 1, "yyyy":o.dateSet.getFullYear() }); + o.returnFormattedDate(); + o.hide(); + + o.stopTimer(); + + break; + // Today button pressed + } else if(el.id && el.id == o.id + "-today-but") { + o.date = new Date(); + o.updateTable(); + o.stopTimer(); + break; + // Day headers clicked, change the first day of the week + } else if(el.className.search(/date-picker-day-header/) != -1) { + var cnt = o.showWeeks ? -1 : 0, + elem = el; + + while(elem.previousSibling) { + elem = elem.previousSibling; + if(elem.tagName && elem.tagName.toLowerCase() == "th") cnt++; + }; + + o.firstDayOfWeek = (o.firstDayOfWeek + cnt) % 7; + o.updateTableHeaders(); + break; + }; + try { el = el.parentNode; } catch(err) { break; }; + }; + + return stopEvent(e); + }; + + this.show = function(autoFocus) { + if(this.staticPos) { return; }; + + var elem, elemID; + for(elemID in this.formElements) { + elem = document.getElementById(this.id); + if(!elem || (elem && elem.disabled)) { return; }; + }; + + this.noFocus = true; + + // If the datepicker doesn't exist in the dom + if(!this.created || !document.getElementById('fd-' + this.id)) { + this.created = false; + this.fullCreate = false; + this.create(); + this.fullCreate = true; + } else { + this.setDateFromInput(); + this.reposition(); + }; + + this.noFocus = !!!autoFocus; + + if(this.noFocus) { + this.clickActivated = true; + addEvent(document, "mousedown", this.onmousedown); + if(mouseWheel) { + if (window.addEventListener && !window.devicePixelRatio) window.addEventListener('DOMMouseScroll', this.onmousewheel, false); + else { + addEvent(document, "mousewheel", this.onmousewheel); + addEvent(window, "mousewheel", this.onmousewheel); + }; + }; + } else { + this.clickActivated = false; + }; + + this.opacityTo = this.finalOpacity; + this.div.style.display = "block"; + + /*@cc_on + @if(@_jscript_version <= 5.7) + if(!o.isIE7) { + this.iePopUp.style.width = this.div.offsetWidth + "px"; + this.iePopUp.style.height = this.div.offsetHeight + "px"; + this.iePopUp.style.display = "block"; + }; + @end + @*/ + + this.setNewFocus(); + this.fade(); + var butt = document.getElementById('fd-but-' + this.id); + if(butt) { butt.className = butt.className.replace("dp-button-active", "") + " dp-button-active"; }; + }; + this.hide = function() { + if(!this.visible || !this.created || !document.getElementById('fd-' + this.id)) return; + + this.kbEvent = false; + + o.div.className = o.div.className.replace("datepicker-focus", ""); + + this.stopTimer(); + this.removeOnFocusEvents(); + this.clickActivated = false; + + // Update status bar + if(this.statusBar) { this.updateStatus(getTitleTranslation(9)); }; + + this.noFocus = true; + this.setNewFocus(); + + if(this.staticPos) { + return; + }; + + var butt = document.getElementById('fd-but-' + this.id); + if(butt) butt.className = butt.className.replace("dp-button-active", ""); + + removeEvent(document, "mousedown", this.onmousedown); + + if(mouseWheel) { + if (window.addEventListener && !window.devicePixelRatio) { + try { window.removeEventListener('DOMMouseScroll', this.onmousewheel, false);} catch(err) {}; + } else { + removeEvent(document, "mousewheel", this.onmousewheel); + removeEvent(window, "mousewheel", this.onmousewheel); + }; + }; + + /*@cc_on + @if(@_jscript_version <= 5.7) + if(!this.isIE7) { this.iePopUp.style.display = "none"; }; + @end + @*/ + + this.opacityTo = 0; + this.fade(); + }; + this.onblur = function(e) { + o.hide(); + }; + this.onfocus = function(e) { + o.noFocus = false; + o.div.className = o.div.className.replace("datepicker-focus", "") + " datepicker-focus"; + o.addOnFocusEvents(); + }; + this.onmousewheel = function(e) { + e = e || document.parentWindow.event; + var delta = 0; + + if (e.wheelDelta) { + delta = e.wheelDelta/120; + if (isOpera && window.opera.version() < 9.2) delta = -delta; + } else if(e.detail) { + delta = -e.detail/3; + }; + + var n = o.date.getDate(), + d = new Date(o.date), + inc = delta > 0 ? 1 : -1; + + d.setDate(2); + d.setMonth(d.getMonth() + inc * 1); + d.setDate(Math.min(n, daysInMonth(d.getMonth(),d.getFullYear()))); + + if(o.outOfRange(d)) { return stopEvent(e); }; + + o.date = new Date(d); + + o.updateTable(); + + if(o.statusBar) { o.updateStatus(printFormattedDate(o.date, o.statusFormat, true)); }; + + return stopEvent(e); + }; + this.onkeydown = function (e) { + o.stopTimer(); + if(!o.visible) return false; + + e = e || document.parentWindow.event; + var kc = e.keyCode ? e.keyCode : e.charCode; + + if( kc == 13 ) { + // RETURN/ENTER: close & select the date + var td = document.getElementById(o.id + "-date-picker-hover"); + if(!td || td.className.search(/cd-([0-9]{8})/) == -1 || td.className.search(/no-selection|out-of-range|day-disabled/) != -1) { + return stopEvent(e); + }; + o.dateSet = new Date(o.date); + o.callback("dateset", o.createCbArgObj()); + o.returnFormattedDate(); + o.hide(); + return stopEvent(e); + } else if(kc == 27) { + // ESC: close, no date selection + if(!o.staticPos) { + o.hide(); + return stopEvent(e); + }; + return true; + } else if(kc == 32 || kc == 0) { + // SPACE: goto today's date + o.date = new Date(); + o.updateTable(); + return stopEvent(e); + } else if(kc == 9) { + // TAB: close, no date selection & focus on btton - popup only + if(!o.staticPos) { + return stopEvent(e); + }; + return true; + }; + + // Internet Explorer fires the keydown event faster than the JavaScript engine can + // update the interface. The following attempts to fix this. + + /*@cc_on + @if(@_win32) + if(new Date().getTime() - o.interval.getTime() < 50) { return stopEvent(e); }; + o.interval = new Date(); + @end + @*/ + + if(isMoz) { + if(new Date().getTime() - o.interval.getTime() < 50) { return stopEvent(e); }; + o.interval = new Date(); + }; + + if ((kc > 49 && kc < 56) || (kc > 97 && kc < 104)) { + if(kc > 96) kc -= (96-48); + kc -= 49; + o.firstDayOfWeek = (o.firstDayOfWeek + kc) % 7; + o.updateTableHeaders(); + return stopEvent(e); + }; + + if ( kc < 33 || kc > 40 ) return true; + + var d = new Date(o.date), tmp, cursorYYYYMM = o.date.getFullYear() + pad(o.date.getMonth()+1); + + // HOME: Set date to first day of current month + if(kc == 36) { + d.setDate(1); + // END: Set date to last day of current month + } else if(kc == 35) { + d.setDate(daysInMonth(d.getMonth(),d.getFullYear())); + // PAGE UP & DOWN + } else if ( kc == 33 || kc == 34) { + var inc = (kc == 34) ? 1 : -1; + + // CTRL + PAGE UP/DOWN: Moves to the same date in the previous/next year + if(e.ctrlKey) { + d.setFullYear(d.getFullYear() + inc * 1); + // PAGE UP/DOWN: Moves to the same date in the previous/next month + } else { + var n = o.date.getDate(); + + d.setDate(2); + d.setMonth(d.getMonth() + inc * 1); + d.setDate(Math.min(n, daysInMonth(d.getMonth(),d.getFullYear()))); + }; + // LEFT ARROW + } else if ( kc == 37 ) { + d = new Date(o.date.getFullYear(), o.date.getMonth(), o.date.getDate() - 1); + // RIGHT ARROW + } else if ( kc == 39 || kc == 34) { + d = new Date(o.date.getFullYear(), o.date.getMonth(), o.date.getDate() + 1 ); + // UP ARROW + } else if ( kc == 38 ) { + d = new Date(o.date.getFullYear(), o.date.getMonth(), o.date.getDate() - 7); + // DOWN ARROW + } else if ( kc == 40 ) { + d = new Date(o.date.getFullYear(), o.date.getMonth(), o.date.getDate() + 7); + }; + + if(o.outOfRange(d)) { return stopEvent(e); }; + o.date = d; + + if(o.statusBar) { + o.updateStatus(o.getBespokeTitle(o.date.getFullYear(),o.date.getMonth() + 1,o.date.getDate()) || printFormattedDate(o.date, o.statusFormat, true)); + }; + + var t = String(o.date.getFullYear()) + pad(o.date.getMonth()+1) + pad(o.date.getDate()); + + if(e.ctrlKey || (kc == 33 || kc == 34) || t < o.firstDateShown || t > o.lastDateShown) { + o.updateTable(); + /*@cc_on + @if(@_win32) + o.interval = new Date(); + @end + @*/ + } else { + if(!o.noToday) { o.disableTodayButton(); }; + o.removeOldFocus(); + + for(var i = 0, td; td = o.tds[i]; i++) { + if(td.className.search("cd-" + t) == -1) { + continue; + }; + o.showHideButtons(o.date); + td.id = o.id + "-date-picker-hover"; + o.setNewFocus(); + break; + }; + }; + + return stopEvent(e); + }; + this.onmouseout = function(e) { + e = e || document.parentWindow.event; + var p = e.toElement || e.relatedTarget; + while (p && p != this) try { p = p.parentNode } catch(e) { p = this; }; + if (p == this) return false; + if(o.currentTR) { + o.currentTR.className = ""; + o.currentTR = null; + }; + + if(o.statusBar) { + o.updateStatus(o.getBespokeTitle(o.date.getFullYear(),o.date.getMonth() + 1,o.date.getDate()) || printFormattedDate(o.date, o.statusFormat, true)); + }; + }; + this.onmouseover = function(e) { + e = e || document.parentWindow.event; + var el = e.target != null ? e.target : e.srcElement; + while(el.nodeType != 1) { el = el.parentNode; }; + + if(!el || ! el.tagName) { return; }; + + var statusText = getTitleTranslation(9); + switch (el.tagName.toLowerCase()) { + case "td": + if(el.className.search(/date-picker-unused|out-of-range/) != -1) { + statusText = getTitleTranslation(9); + } if(el.className.search(/cd-([0-9]{8})/) != -1) { + o.stopTimer(); + var cellDate = el.className.match(/cd-([0-9]{8})/)[1]; + + o.removeOldFocus(); + el.id = o.id+"-date-picker-hover"; + o.setNewFocus(); + + o.date = new Date(+cellDate.substr(0,4),+cellDate.substr(4,2)-1,+cellDate.substr(6,2)); + if(!o.noToday) { o.disableTodayButton(); }; + + statusText = o.getBespokeTitle(+cellDate.substr(0,4),+cellDate.substr(4,2),+cellDate.substr(6,2)) || printFormattedDate(o.date, o.statusFormat, true); + }; + break; + case "th": + if(!o.statusBar) { break; }; + if(el.className.search(/drag-enabled/) != -1) { + statusText = getTitleTranslation(10); + } else if(el.className.search(/date-picker-week-header/) != -1) { + var txt = el.firstChild ? el.firstChild.nodeValue : ""; + statusText = txt.search(/^(\d+)$/) != -1 ? getTitleTranslation(7, [txt, txt < 3 && o.date.getMonth() == 11 ? getWeeksInYear(o.date.getFullYear()) + 1 : getWeeksInYear(o.date.getFullYear())]) : getTitleTranslation(9); + }; + break; + case "span": + if(!o.statusBar) { break; }; + if(el.className.search(/drag-enabled/) != -1) { + statusText = getTitleTranslation(10); + } else if(el.className.search(/day-([0-6])/) != -1) { + var day = el.className.match(/day-([0-6])/)[1]; + statusText = getTitleTranslation(11, [getDayTranslation(day, false)]); + } else if(el.className.search(/prev-year/) != -1) { + statusText = getTitleTranslation(2); + } else if(el.className.search(/prev-month/) != -1) { + statusText = getTitleTranslation(0); + } else if(el.className.search(/next-year/) != -1) { + statusText = getTitleTranslation(3); + } else if(el.className.search(/next-month/) != -1) { + statusText = getTitleTranslation(1); + } else if(el.className.search(/today-but/) != -1 && el.className.search(/disabled/) == -1) { + statusText = getTitleTranslation(12); + }; + break; + default: + statusText = ""; + }; + while(el.parentNode) { + el = el.parentNode; + if(el.nodeType == 1 && el.tagName.toLowerCase() == "tr") { + if(o.currentTR) { + if(el == o.currentTR) break; + o.currentTR.className = ""; + }; + el.className = "dp-row-highlight"; + o.currentTR = el; + break; + }; + }; + if(o.statusBar && statusText) { o.updateStatus(statusText); }; + }; + this.clearTimer = function() { + o.stopTimer(); + o.timerInc = 800; + o.yearInc = 0; + o.monthInc = 0; + o.dayInc = 0; + + removeEvent(document, "mouseup", o.clearTimer); + if(o.mouseDownElem != null) { + removeEvent(o.mouseDownElem, "mouseout", o.clearTimer); + }; + o.mouseDownElem = null; + }; + + var o = this; + + this.setDateFromInput(); + + if(this.staticPos) { + this.create(); + } else { + this.createButton(); + }; + + (function() { + var elemID, elem; + + for(elemID in o.formElements) { + elem = document.getElementById(elemID); + if(elem && elem.tagName && elem.tagName.search(/select|input/i) != -1) { + addEvent(elem, "change", o.changeHandler); + }; + + if(!elem || elem.disabled == true) { + o.disableDatePicker(); + }; + }; + })(); + + + // We have fully created the datepicker... + this.fullCreate = true; + + + }; + datePicker.prototype.addButtonEvents = function(but) { + function buttonEvent (e) { + e = e || window.event; + + var inpId = this.id.replace('fd-but-',''), + dpVisible = isVisible(inpId), + autoFocus = false, + kbEvent = datePickers[inpId].kbEvent; + + if(kbEvent) { + datePickers[inpId].kbEvent = false; + return; + }; + + if(e.type == "keydown") { + datePickers[inpId].kbEvent = true; + var kc = e.keyCode != null ? e.keyCode : e.charCode; + if(kc != 13) return true; + if(dpVisible) { + this.className = this.className.replace("dp-button-active", ""); + hideAll(); + return stopEvent(e); + }; + autoFocus = true; + } else { + datePickers[inpId].kbEvent = false; + }; + + this.className = this.className.replace("dp-button-active", ""); + + if(!dpVisible) { + this.className += " dp-button-active"; + hideAll(inpId); + showDatePicker(inpId, autoFocus); + } else { + hideAll(); + }; + + return stopEvent(e); + }; + + but.onkeydown = buttonEvent; + but.onclick = buttonEvent; + + if(!buttonTabIndex || this.bespokeTabIndex === false) { + but.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", "-1"); + but.tabIndex = -1; + but.onkeydown = null; + removeEvent(but, "keydown", buttonEvent); + } else { + but.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", this.bespokeTabIndex); + but.tabIndex = this.bespokeTabIndex; + }; + }; + + datePicker.prototype.createButton = function() { + + if(this.staticPos || document.getElementById("fd-but-" + this.id)) { return; }; + + var inp = document.getElementById(this.id), + span = document.createElement('span'), + but = document.createElement('a'); + + but.href = "#" + this.id; + but.className = "date-picker-control"; + but.title = getTitleTranslation(5); + but.id = "fd-but-" + this.id; + + span.appendChild(document.createTextNode(nbsp)); + but.appendChild(span); + + span = document.createElement('span'); + span.className = "fd-screen-reader"; + span.appendChild(document.createTextNode(but.title)); + but.appendChild(span); + + // Set the ARIA role to be "button" + setARIARole(but, "button"); + + // Set a "haspopup" ARIA property - should this not be a list if ID's???? + setARIAProperty(but, "haspopup", true); + + if(this.positioned && document.getElementById(this.positioned)) { + document.getElementById(this.positioned).appendChild(but); + } else { + inp.parentNode.insertBefore(but, inp.nextSibling); + }; + + this.addButtonEvents(but); + + but = null; + + this.callback("dombuttoncreate", {id:this.id}); + }; + datePicker.prototype.setBespokeTitles = function(titles) { + this.bespokeTitles = titles; + }; + datePicker.prototype.addBespokeTitles = function(titles) { + for(var dt in titles) { + this.bespokeTitles[dt] = titles[dt]; + }; + }; + datePicker.prototype.getBespokeTitle = function(y,m,d) { + var dt, dtFull, yyyymmdd = y + String(pad(m)) + pad(d); + + // Try this datepickers bespoke titles + for(dt in this.bespokeTitles) { + dtFull = dt.replace(/^(\*\*\*\*)/, y).replace(/^(\d\d\d\d)(\*\*)/, "$1"+ pad(m)); + if(dtFull == yyyymmdd) return this.bespokeTitles[dt]; + }; + + // Try the generic bespoke titles + for(dt in bespokeTitles) { + dtFull = dt.replace(/^(\*\*\*\*)/, y).replace(/^(\d\d\d\d)(\*\*)/, "$1"+ pad(m)); + if(dtFull == yyyymmdd) return bespokeTitles[dt]; + }; + + return false; + }; + datePicker.prototype.returnSelectedDate = function() { + return this.dateSet; + }; + datePicker.prototype.setRangeLow = function(range) { + this.rangeLow = (String(range).search(/^(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$/) == -1) ? false : range; + if(!this.inUpdate) this.setDateFromInput(); + }; + datePicker.prototype.setRangeHigh = function(range) { + this.rangeHigh = (String(range).search(/^(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$/) == -1) ? false : range; + if(!this.inUpdate) this.setDateFromInput(); + }; + datePicker.prototype.setDisabledDays = function(dayArray) { + if(!dayArray.length || dayArray.length != 7 || dayArray.join("").search(/^([0|1]{7})$/) == -1) { + if(debug) { + throw "Invalid values located when attempting to call setDisabledDays"; + }; + return false; + }; + this.disabledDays = dayArray; + if(!this.inUpdate) this.setDateFromInput(); + }; + datePicker.prototype.setDisabledDates = function(dateObj) { + this.disabledDates = {}; + this.addDisabledDates(dateObj); + }; + datePicker.prototype.setEnabledDates = function(dateObj) { + this.enabledDates = {}; + this.addEnabledDates(dateObj); + }; + datePicker.prototype.addDisabledDates = function(dateObj) { + this.enabledDates = false; + this.disabledDates = this.disabledDates || {}; + + var startD; + for(startD in dateObj) { + if((String(startD).search(wcDateRegExp) != -1 && dateObj[startD] == 1) || (String(startD).search(rangeRegExp) != -1 && String(dateObj[startD]).search(rangeRegExp) != -1)) { + this.disabledDates[startD] = dateObj[startD]; + }; + }; + + if(!this.inUpdate) this.setDateFromInput(); + }; + datePicker.prototype.addEnabledDates = function(dateObj) { + this.disabledDates = false; + this.enabledDates = this.enabledDates || {}; + + var startD; + for(startD in dateObj) { + if((String(startD).search(wcDateRegExp) != -1 && dateObj[startD] == 1) || (String(startD).search(rangeRegExp) != -1 && String(dateObj[startD]).search(rangeRegExp) != -1)) { + this.enabledDates[startD] = dateObj[startD]; + }; + }; + + if(!this.inUpdate) this.setDateFromInput(); + }; + datePicker.prototype.setSelectedDate = function(yyyymmdd) { + if(String(yyyymmdd).search(wcDateRegExp) == -1) { + return false; + }; + + var match = yyyymmdd.match(rangeRegExp), + dt = new Date(+match[2],+match[3]-1,+match[4]); + + if(!dt || isNaN(dt) || !this.canDateBeSelected(dt)) { + return false; + }; + + this.dateSet = new Date(dt); + + if(!this.inUpdate) this.updateTable(); + + this.callback("dateset", this.createCbArgObj()); + this.returnFormattedDate(); + }; + datePicker.prototype.checkSelectedDate = function() { + if(this.dateSet && !this.canDateBeSelected(this.dateSet)) { + this.dateSet = null; + }; + if(!this.inUpdate) this.updateTable(); + }; + datePicker.prototype.addOnFocusEvents = function() { + if(this.kbEventsAdded || this.noFocus) { + return; + }; + + addEvent(document, "keypress", this.onkeydown); + addEvent(document, "mousedown", this.onmousedown); + + /*@cc_on + @if(@_win32) + removeEvent(document, "keypress", this.onkeydown); + addEvent(document, "keydown", this.onkeydown); + @end + @*/ + if(window.devicePixelRatio) { + removeEvent(document, "keypress", this.onkeydown); + addEvent(document, "keydown", this.onkeydown); + }; + this.noFocus = false; + this.kbEventsAdded = true; + }; + datePicker.prototype.removeOnFocusEvents = function() { + + if(!this.kbEventsAdded) { return; }; + + removeEvent(document, "keypress", this.onkeydown); + removeEvent(document, "keydown", this.onkeydown); + removeEvent(document, "mousedown", this.onmousedown); + + this.kbEventsAdded = false; + }; + datePicker.prototype.stopTimer = function() { + this.timerSet = false; + window.clearTimeout(this.timer); + }; + datePicker.prototype.setOpacity = function(op) { + this.div.style.opacity = op/100; + this.div.style.filter = 'alpha(opacity=' + op + ')'; + this.opacity = op; + }; + datePicker.prototype.getDates = function(y, m) { + var dpm = daysInMonth(m - 1, y), + obj = {}, + dds = this.getGenericDates(y, m, false), + eds = this.getGenericDates(y, m, true), + dts = y + pad(m); + + for(var i = 1; i <= dpm; i++) { + dt = dts + "" + pad(i); + + if(dds) { + obj[dt] = (dt in dds) ? 0 : 1; + } else if(eds) { + obj[dt] = (dt in eds) ? 1 : 0; + } else { + obj[dt] = 1; + }; + }; + + return obj; + }; + datePicker.prototype.getGenericDates = function(y, m, enabled) { + var deDates = enabled ? this.enabledDates : this.disabledDates; + + if(!deDates) { + return false; + }; + + m = pad(m); + + var obj = {}, + lower = this.firstDateShown, + upper = this.lastDateShown, + dt1, dt2, rngLower, rngUpper; + + if(!upper || !lower) { + lower = this.firstDateShown = y + pad(m) + "01"; + upper = this.lastDateShown = y + pad(m) + pad(daysInMonth(m, y)); + }; + + for(dt in deDates) { + dt1 = dt.replace(/^(\*\*\*\*)/, y).replace(/^(\d\d\d\d)(\*\*)/, "$1"+m); + dt2 = deDates[dt]; + + if(dt2 == 1) { + if(Number(dt1.substr(0,6)) >= +String(this.firstDateShown).substr(0,6) + && + Number(dt1.substr(0,6)) <= +String(this.lastDateShown).substr(0,6)) { + obj[dt1] = 1; + }; + continue; + }; + + // Range + if(+String(this.firstDateShown).substr(0,6) >= Number(dt1.substr(0,6)) + && + +String(this.lastDateShown).substr(0,6) <= Number(dt2.substr(0,6))) { + // Same month + if(Number(dt1.substr(0,6)) == Number(dt2.substr(0,6))) { + for(var i = dt1; i <= dt2; i++) { + obj[i] = 1; + }; + continue; + }; + + // Different months but we only want this month + rngLower = Number(dt1.substr(0,6)) == +String(this.firstDateShown).substr(0,6) ? dt1 : lower; + rngUpper = Number(dt2.substr(0,6)) == +String(this.lastDateShown).substr(0,6) ? dt2 : upper; + for(var i = +rngLower; i <= +rngUpper; i++) { + obj[i] = 1; + }; + }; + }; + return obj; + }; + datePicker.prototype.truePosition = function(element) { + var pos = this.cumulativeOffset(element); + if(isOpera) { return pos; }; + var iebody = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body, + dsocleft = document.all ? iebody.scrollLeft : window.pageXOffset, + dsoctop = document.all ? iebody.scrollTop : window.pageYOffset, + posReal = this.realOffset(element); + return [pos[0] - posReal[0] + dsocleft, pos[1] - posReal[1] + dsoctop]; + }; + datePicker.prototype.realOffset = function(element) { + var t = 0, l = 0; + do { + t += element.scrollTop || 0; + l += element.scrollLeft || 0; + element = element.parentNode; + } while(element); + return [l, t]; + }; + datePicker.prototype.cumulativeOffset = function(element) { + var t = 0, l = 0; + do { + t += element.offsetTop || 0; + l += element.offsetLeft || 0; + element = element.offsetParent; + } while(element); + return [l, t]; + }; + datePicker.prototype.equaliseDates = function() { + var clearDayFound = false, tmpDate; + for(var i = this.rangeLow; i <= this.rangeHigh; i++) { + tmpDate = String(i); + if(!this.disabledDays[new Date(tmpDate.substr(0,4), tmpDate.substr(6,2), tmpDate.substr(4,2)).getDay() - 1]) { + clearDayFound = true; + break; + }; + }; + if(!clearDayFound) { this.disabledDays = [0,0,0,0,0,0,0] }; + }; + datePicker.prototype.outOfRange = function(tmpDate) { + + if(!this.rangeLow && !this.rangeHigh) { return false; }; + var level = false; + if(!tmpDate) { + level = true; + tmpDate = this.date; + }; + + var d = pad(tmpDate.getDate()), + m = pad(tmpDate.getMonth() + 1), + y = tmpDate.getFullYear(), + dt = String(y)+String(m)+String(d); + + if(this.rangeLow && +dt < +this.rangeLow) { + if(!level) { return true; }; + this.date = new Date(this.rangeLow.substr(0,4), this.rangeLow.substr(4,2)-1, this.rangeLow.substr(6,2), 5, 0, 0); + return false; + }; + if(this.rangeHigh && +dt > +this.rangeHigh) { + if(!level) { return true; }; + this.date = new Date(this.rangeHigh.substr(0,4), this.rangeHigh.substr(4,2)-1, this.rangeHigh.substr(6,2), 5, 0, 0); + }; + return false; + }; + datePicker.prototype.canDateBeSelected = function(tmpDate) { + if(!tmpDate) return false; + + var d = pad(tmpDate.getDate()), + m = pad(tmpDate.getMonth() + 1), + y = tmpDate.getFullYear(), + dt = String(y)+String(m)+String(d), + dd = this.getDates(y, m), + wd = tmpDate.getDay() == 0 ? 7 : tmpDate.getDay(); + + if((this.rangeLow && +dt < +this.rangeLow) || (this.rangeHigh && +dt > +this.rangeHigh) || (dd[dt] == 0) || this.disabledDays[wd-1]) { + return false; + }; + + return true; + }; + datePicker.prototype.updateStatus = function(msg) { + while(this.statusBar.firstChild) { this.statusBar.removeChild(this.statusBar.firstChild); }; + + if(msg && this.statusFormat.search(/-S|S-/) != -1 && msg.search(/([0-9]{1,2})(st|nd|rd|th)/) != -1) { + msg = msg.replace(/([0-9]{1,2})(st|nd|rd|th)/, "$1$2").split(/|<\/sup>/); + var dc = document.createDocumentFragment(); + for(var i = 0, nd; nd = msg[i]; i++) { + if(/^(st|nd|rd|th)$/.test(nd)) { + var sup = document.createElement("sup"); + sup.appendChild(document.createTextNode(nd)); + dc.appendChild(sup); + } else { + dc.appendChild(document.createTextNode(nd)); + }; + }; + this.statusBar.appendChild(dc); + } else { + this.statusBar.appendChild(document.createTextNode(msg ? msg : getTitleTranslation(9))); + }; + }; + datePicker.prototype.setDateFromInput = function() { + var origDateSet = this.dateSet, + m = false, + dt, elemID, elem, elemFmt, d, y, elemVal; + + this.dateSet = null; + + for(elemID in this.formElements) { + elem = document.getElementById(elemID); + + if(!elem) { + return; + }; + + elemVal = String(elem.value); + elemFmt = this.formElements[elemID]; + dt = false; + + if(!(elemVal == "")) { + for(var i = 0, fmt; fmt = this.formatMasks[elemID][i]; i++) { + dt = parseDateString(elemVal, fmt); + if(dt) { + break; + }; + }; + }; + + if(dt) { + if(elemFmt.search(new RegExp('[' + dParts + ']')) != -1) { + //console.log("located d part " + elemFmt + " : " + dt.getDate()); + d = dt.getDate(); + }; + if(elemFmt.search(new RegExp('[' + mParts + ']')) != -1) { + //console.log("located m part " + elemFmt + " : " + dt.getMonth()); + m = dt.getMonth(); + }; + if(elemFmt.search(new RegExp('[' + yParts + ']')) != -1) { + //console.log("located y part " + elemFmt + " : " + dt.getFullYear()); + y = dt.getFullYear() + }; + }; + }; + + dt = false; + + if(d && !(m === false) && y) { + if(+d > daysInMonth(+m, +y)) { + d = daysInMonth(+m, +y); + dt = false; + } else { + dt = new Date(+y, +m, +d); + }; + }; + + if(!dt || isNaN(dt)) { + var newDate = new Date(y || new Date().getFullYear(), !(m === false) ? m : new Date().getMonth(), 1); + this.date = this.cursorDate ? new Date(+this.cursorDate.substr(0,4), +this.cursorDate.substr(4,2) - 1, +this.cursorDate.substr(6,2)) : new Date(newDate.getFullYear(), newDate.getMonth(), Math.min(+d || new Date().getDate(), daysInMonth(newDate.getMonth(), newDate.getFullYear()))); + + this.date.setHours(5); + this.outOfRange(); + //this.callback("dateset", this.createCbArgObj()); + this.updateTable(); + return; + }; + + + dt.setHours(5); + this.date = new Date(dt); + this.outOfRange(); + + if(dt.getTime() == this.date.getTime() && this.canDateBeSelected(this.date)) { + this.dateSet = new Date(this.date); + }; + + //this.callback("dateset", this.createCbArgObj()); + if(this.fullCreate) this.updateTable(); + this.returnFormattedDate(true); + }; + datePicker.prototype.setSelectIndex = function(elem, indx) { + for(var opt = elem.options.length-1; opt >= 0; opt--) { + if(elem.options[opt].value == indx) { + elem.selectedIndex = opt; + return; + }; + }; + }; + datePicker.prototype.returnFormattedDate = function(noFocus) { + if(!this.dateSet) { + return; + }; + + var d = pad(this.dateSet.getDate()), + m = pad(this.dateSet.getMonth() + 1), + y = this.dateSet.getFullYear(), + el = false, + elemID, elem, elemFmt, fmtDate; + + noFocus = !!noFocus; + + for(elemID in this.formElements) { + elem = document.getElementById(elemID); + + if(!elem) return; + + if(!el) el = elem; + + elemFmt = this.formElements[elemID]; + + fmtDate = printFormattedDate(this.dateSet, elemFmt, returnLocaleDate); + if(elem.tagName.toLowerCase() == "input") { + elem.value = fmtDate; + } else { + this.setSelectIndex(elem, fmtDate); + }; + }; + + if(this.staticPos) { + this.noFocus = true; + this.updateTable(); + this.noFocus = false; + }; + + if(this.fullCreate) { + if(el.type && el.type != "hidden" && !noFocus) { el.focus(); }; + }; + }; + datePicker.prototype.disableDatePicker = function() { + if(this.disabled) return; + + if(this.staticPos) { + this.removeOnFocusEvents(); + this.removeOldFocus(); + this.noFocus = true; + this.div.className = this.div.className.replace(/dp-disabled/, "") + " dp-disabled"; + this.table.onmouseover = this.table.onclick = this.table.onmouseout = this.table.onmousedown = null; + removeEvent(document, "mousedown", this.onmousedown); + removeEvent(document, "mouseup", this.clearTimer); + } else { + if(this.visible) this.hide(); + var but = document.getElementById("fd-but-" + this.id); + if(but) { + but.className = but.className.replace(/dp-disabled/, "") + " dp-disabled"; + // Set a "disabled" ARIA state + setARIAProperty(but, "disabled", true); + but.onkeydown = but.onclick = function() { return false; }; + but.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", "-1"); + but.tabIndex = -1; + }; + }; + + clearTimeout(this.timer); + this.disabled = true; + }; + datePicker.prototype.enableDatePicker = function() { + if(!this.disabled) return; + + if(this.staticPos) { + this.removeOldFocus(); + this.noFocus = true; + this.updateTable(); + this.div.className = this.div.className.replace(/dp-disabled/, ""); + this.disabled = false; + this.table.onmouseover = this.onmouseover; + this.table.onmouseout = this.onmouseout; + this.table.onclick = this.onclick; + this.table.onmousedown = this.onmousedown; + } else { + var but = document.getElementById("fd-but-" + this.id); + if(but) { + but.className = but.className.replace(/dp-disabled/, ""); + // Reset the "disabled" ARIA state + setARIAProperty(but, "disabled", false); + this.addButtonEvents(but); + }; + }; + + this.disabled = false; + }; + datePicker.prototype.disableTodayButton = function() { + var today = new Date(); + this.butToday.className = this.butToday.className.replace("fd-disabled", ""); + if(this.outOfRange(today) || (this.date.getDate() == today.getDate() && this.date.getMonth() == today.getMonth() && this.date.getFullYear() == today.getFullYear())) { + this.butToday.className += " fd-disabled"; + }; + }; + datePicker.prototype.updateTableHeaders = function() { + var colspanTotal = this.showWeeks ? 8 : 7, + colOffset = this.showWeeks ? 1 : 0, + d, but; + + for(var col = colOffset; col < colspanTotal; col++ ) { + d = (this.firstDayOfWeek + (col - colOffset)) % 7; + this.ths[col].title = getDayTranslation(d, false); + + if(col > colOffset) { + but = this.ths[col].getElementsByTagName("span")[0]; + while(but.firstChild) { but.removeChild(but.firstChild); }; + but.appendChild(document.createTextNode(getDayTranslation(d, true))); + but.title = this.ths[col].title; + but.className = but.className.replace(/day-([0-6])/, "") + " day-" + d; + but = null; + } else { + while(this.ths[col].firstChild) { this.ths[col].removeChild(this.ths[col].firstChild); }; + this.ths[col].appendChild(document.createTextNode(getDayTranslation(d, true))); + }; + + this.ths[col].className = this.ths[col].className.replace(/date-picker-highlight/g, ""); + if(this.highlightDays[d]) { + this.ths[col].className += " date-picker-highlight"; + }; + }; + + if(this.created) { this.updateTable(); } + }; + datePicker.prototype.callback = function(type, args) { + if(!type || !(type in this.callbacks)) { + return false; + }; + + var ret = false; + for(var func = 0; func < this.callbacks[type].length; func++) { + ret = this.callbacks[type][func](args || this.id); + }; + return ret; + }; + datePicker.prototype.showHideButtons = function(tmpDate) { + if(!this.butPrevYear) { return; }; + + var tdm = tmpDate.getMonth(), + tdy = tmpDate.getFullYear(); + + if(this.outOfRange(new Date((tdy - 1), tdm, daysInMonth(+tdm, tdy-1)))) { + if(this.butPrevYear.className.search(/fd-disabled/) == -1) { + this.butPrevYear.className += " fd-disabled"; + }; + if(this.yearInc == -1) this.stopTimer(); + } else { + this.butPrevYear.className = this.butPrevYear.className.replace(/fd-disabled/g, ""); + }; + + if(this.outOfRange(new Date(tdy, (+tdm - 1), daysInMonth(+tdm-1, tdy)))) { + if(this.butPrevMonth.className.search(/fd-disabled/) == -1) { + this.butPrevMonth.className += " fd-disabled"; + }; + if(this.monthInc == -1) this.stopTimer(); + } else { + this.butPrevMonth.className = this.butPrevMonth.className.replace(/fd-disabled/g, ""); + }; + + if(this.outOfRange(new Date((tdy + 1), +tdm, 1))) { + if(this.butNextYear.className.search(/fd-disabled/) == -1) { + this.butNextYear.className += " fd-disabled"; + }; + if(this.yearInc == 1) this.stopTimer(); + } else { + this.butNextYear.className = this.butNextYear.className.replace(/fd-disabled/g, ""); + }; + + if(this.outOfRange(new Date(tdy, +tdm + 1, 1))) { + if(this.butNextMonth.className.search(/fd-disabled/) == -1) { + this.butNextMonth.className += " fd-disabled"; + }; + if(this.monthInc == 1) this.stopTimer(); + } else { + this.butNextMonth.className = this.butNextMonth.className.replace(/fd-disabled/g, ""); + }; + }; + var localeDefaults = { + fullMonths:["January","February","March","April","May","June","July","August","September","October","November","December"], + monthAbbrs:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], + fullDays: ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], + dayAbbrs: ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"], + titles: ["Previous month","Next month","Previous year","Next year", "Today", "Show Calendar", "wk", "Week [[%0%]] of [[%1%]]", "Week", "Select a date", "Click \u0026 Drag to move", "Display \u201C[[%0%]]\u201D first", "Go to Today\u2019s date", "Disabled date :"], + firstDayOfWeek:0, + imported: false + }; + var joinNodeLists = function() { + if(!arguments.length) { return []; } + var nodeList = []; + for (var i = 0; i < arguments.length; i++) { + for (var j = 0, item; item = arguments[i][j]; j++) { + nodeList[nodeList.length] = item; + }; + }; + return nodeList; + }; + var cleanUp = function() { + var dp, fe; + for(dp in datePickers) { + for(fe in datePickers[dp].formElements) { + if(!document.getElementById(fe)) { + datePickers[dp].destroy(); + datePickers[dp] = null; + delete datePickers[dp]; + break; + } + }; + }; + }; + var hideAll = function(exception) { + var dp; + for(dp in datePickers) { + if(!datePickers[dp].created || (exception && exception == datePickers[dp].id)) continue; + datePickers[dp].hide(); + }; + }; + var hideDatePicker = function(inpID) { + if(inpID in datePickers) { + if(!datePickers[inpID].created || datePickers[inpID].staticPos) return; + datePickers[inpID].hide(); + }; + }; + var showDatePicker = function(inpID, autoFocus) { + if(!(inpID in datePickers)) return false; + + datePickers[inpID].clickActivated = !!!autoFocus; + datePickers[inpID].show(autoFocus); + return true; + }; + var destroy = function(e) { + e = e || window.event; + + // Don't remove datepickers if it's a pagehide/pagecache event (webkit et al) + if(e.persisted) { + return; + }; + + for(dp in datePickers) { + datePickers[dp].destroy(); + datePickers[dp] = null; + delete datePickers[dp]; + }; + datePickers = null; + + removeEvent(window, 'unload', datePickerController.destroy); + }; + var destroySingleDatePicker = function(id) { + if(id && (id in datePickers)) { + datePickers[id].destroy(); + datePickers[id] = null; + delete datePickers[id]; + }; + }; + var getTitleTranslation = function(num, replacements) { + replacements = replacements || []; + if(localeImport.titles.length > num) { + var txt = localeImport.titles[num]; + if(replacements && replacements.length) { + for(var i = 0; i < replacements.length; i++) { + txt = txt.replace("[[%" + i + "%]]", replacements[i]); + }; + }; + return txt.replace(/[[%(\d)%]]/g,""); + }; + return ""; + }; + var getDayTranslation = function(day, abbreviation) { + var titles = localeImport[abbreviation ? "dayAbbrs" : "fullDays"]; + return titles.length && titles.length > day ? titles[day] : ""; + }; + var getMonthTranslation = function(month, abbreviation) { + var titles = localeImport[abbreviation ? "monthAbbrs" : "fullMonths"]; + return titles.length && titles.length > month ? titles[month] : ""; + }; + var daysInMonth = function(nMonth, nYear) { + nMonth = (nMonth + 12) % 12; + return (((0 == (nYear%4)) && ((0 != (nYear%100)) || (0 == (nYear%400)))) && nMonth == 1) ? 29: [31,28,31,30,31,30,31,31,30,31,30,31][nMonth]; + }; + + var getWeeksInYear = function(Y) { + if(Y in weeksInYearCache) { + return weeksInYearCache[Y]; + }; + var X1, X2, NW; + with (X1 = new Date(Y, 0, 4)) { + setDate(getDate() - (6 + getDay()) % 7); + }; + with (X2 = new Date(Y, 11, 28)) { + setDate(getDate() + (7 - getDay()) % 7); + }; + weeksInYearCache[Y] = Math.round((X2 - X1) / 604800000); + return weeksInYearCache[Y]; + }; + + var getWeekNumber = function(y,m,d) { + var d = new Date(y, m, d, 0, 0, 0); + var DoW = d.getDay(); + d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu + var ms = d.valueOf(); // GMT + d.setMonth(0); + d.setDate(4); // Thu in Week 1 + return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; + }; + + var printFormattedDate = function(date, fmt, useImportedLocale) { + if(!date || isNaN(date)) { return ""; }; + + var parts = fmt.split("-"), + str = [], + d = date.getDate(), + D = date.getDay(), + m = date.getMonth(), + y = date.getFullYear(), + flags = { + "sp":" ", + "dt":".", + "sl":"/", + "ds":"-", + "cc":",", + "d":pad(d), + "D":useImportedLocale ? localeImport.dayAbbrs[D == 0 ? 6 : D - 1] : localeDefaults.dayAbbrs[D == 0 ? 6 : D - 1], + "l":useImportedLocale ? localeImport.fullDays[D == 0 ? 6 : D - 1] : localeDefaults.fullDays[D == 0 ? 6 : D - 1], + "j":d, + "N":D == 0 ? 7 : D, + "w":D, + "W":getWeekNumber(y,m,d), + "M":useImportedLocale ? localeImport.monthAbbrs[m] : localeDefaults.monthAbbrs[m], + "F":useImportedLocale ? localeImport.fullMonths[m] : localeDefaults.fullMonths[m], + "m":pad(m + 1), + "n":m + 1, + "t":daysInMonth(m, y), + "y":String(y).substr(2,2), + "Y":y, + "S":["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] + }; + + for(var pt = 0, part; part = parts[pt]; pt++) { + str.push(!(part in flags) ? "" : flags[part]); + }; + + return str.join(""); + }; + var parseDateString = function(str, fmt) { + var d = false, + m = false, + y = false, + now = new Date(), + parts = fmt.replace(/-sp(-sp)+/g, "-sp").split("-"), + divds = { "dt":".","sl":"/","ds":"-","cc":"," }, + str = "" + str; + + loopLabel: + for(var pt = 0, part; part = parts[pt]; pt++) { + if(str.length == 0) { return false; }; + + switch(part) { + // Dividers - be easy on them all i.e. accept them all when parsing... + case "sp": + case "dt": + case "sl": + case "ds": + case "cc": + str = str.replace(/^(\s|\.|\/|,|-){1,}/, ""); + break; + // DAY + case "d": // Day of the month, 2 digits with leading zeros (01 - 31) + case "j": // Day of the month without leading zeros (1 - 31) + // Accept both when parsing + if(str.search(/^(3[01]|[12][0-9]|0?[1-9])/) != -1) { + d = +str.match(/^(3[01]|[12][0-9]|0?[1-9])/)[0]; + str = str.substr(str.match(/^(3[01]|[12][0-9]|0?[1-9])/)[0].length); + break; + } else { + return ""; + }; + case "D": // A textual representation of a day, three letters (Mon - Sun) + case "l": // A full textual representation of the day of the week (Monday - Sunday) + // Accept English & imported locales and both modifiers + l = localeDefaults.fullDays.concat(localeDefaults.dayAbbrs); + if(localeImport.imported) { + l = l.concat(localeImport.fullDays).concat(localeImport.dayAbbrs); + }; + + for(var i = 0; i < l.length; i++) { + if(new RegExp("^" + l[i], "i").test(str)) { + str = str.substr(l[i].length); + continue loopLabel; + }; + }; + + break; + case "N": // ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0) 1 (for Monday) through 7 (for Sunday) + case "w": // Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday) + if(str.search(part == "N" ? /^([1-7])/ : /^([0-6])/) != -1) { + str = str.substr(1); + + }; + break; + case "S": // English ordinal suffix for the day of the month, 2 characters: st, nd, rd or th + if(str.search(/^(st|nd|rd|th)/i) != -1) { + str = str.substr(2); + }; + break; + // WEEK + case "W": // ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0): 1 - 53 + if(str.search(/^([1-9]|[1234[0-9]|5[0-3])/) != -1) { + str = str.substr(str.match(/^([1-9]|[1234[0-9]|5[0-3])/)[0].length); + }; + break; + // MONTH + case "M": // A short textual representation of a month, three letters + case "F": // A full textual representation of a month, such as January or March + // Accept English & imported locales and both modifiers + l = localeDefaults.fullMonths.concat(localeDefaults.monthAbbrs); + if(localeImport.imported) { + l = l.concat(localeImport.fullMonths).concat(localeImport.monthAbbrs); + }; + for(var i = 0; i < l.length; i++) { + if(str.search(new RegExp("^" + l[i],"i")) != -1) { + str = str.substr(l[i].length); + m = ((i + 12) % 12); + continue loopLabel; + }; + }; + return ""; + case "m": // Numeric representation of a month, with leading zeros + case "n": // Numeric representation of a month, without leading zeros + // Accept either when parsing + l = /^(1[012]|0?[1-9])/; + if(str.search(l) != -1) { + m = +str.match(l)[0] - 1; + str = str.substr(str.match(l)[0].length); + break; + } else { + return ""; + }; + case "t": // Number of days in the given month: 28 through 31 + if(str.search(/2[89]|3[01]/) != -1) { + str = str.substr(2); + break; + }; + break; + // YEAR + case "Y": // A full numeric representation of a year, 4 digits + if(str.search(/^(\d{4})/) != -1) { + y = str.substr(0,4); + str = str.substr(4); + break; + } else { + return ""; + }; + case "y": // A two digit representation of a year - be easy on four figure dates though + if(str.search(/^(\d{4})/) != -1) { + y = str.substr(0,4); + str = str.substr(4); + break; + } else if(str.search(/^(0[0-9]|[1-9][0-9])/) != -1) { + y = str.substr(0,2); + y = +y < 50 ? '20' + "" + String(y) : '19' + "" + String(y); + str = str.substr(2); + break; + } else return ""; + + default: + return ""; + }; + }; + + if(!(str == "") || (d === false && m === false && y === false)) { + return false; + }; + + m = m === false ? 11 : m; + y = y === false ? now.getFullYear() : y; + d = d === false ? daysInMonth(+m, +y) : d; + + if(d > daysInMonth(+m, +y)) { + return false; + }; + + var tmpDate = new Date(y,m,d); + + return !tmpDate || isNaN(tmpDate) ? false : tmpDate; + }; + var findLabelForElement = function(element) { + var label; + if(element.parentNode && element.parentNode.tagName.toLowerCase() == "label") lebel = element.parentNode; + else { + var labelList = document.getElementsByTagName('label'); + // loop through label array attempting to match each 'for' attribute to the id of the current element + for(var lbl = 0; lbl < labelList.length; lbl++) { + // Internet Explorer requires the htmlFor test + if((labelList[lbl]['htmlFor'] && labelList[lbl]['htmlFor'] == element.id) || (labelList[lbl].getAttribute('for') == element.id)) { + label = labelList[lbl]; + break; + }; + }; + }; + + if(label && !label.id) { label.id = element.id + "_label"; }; + return label; + }; + var updateLanguage = function() { + if(typeof(window.fdLocale) == "object" ) { + localeImport = { + titles : fdLocale.titles, + fullMonths : fdLocale.fullMonths, + monthAbbrs : fdLocale.monthAbbrs, + fullDays : fdLocale.fullDays, + dayAbbrs : fdLocale.dayAbbrs, + firstDayOfWeek : ("firstDayOfWeek" in fdLocale) ? fdLocale.firstDayOfWeek : 0, + imported : true + }; + } else if(!localeImport) { + localeImport = localeDefaults; + }; + }; + var loadLanguage = function() { + updateLanguage(); + for(dp in datePickers) { + if(!datePickers[dp].created) continue; + datePickers[dp].updateTable(); + }; + }; + var checkElem = function(elem) { + return !(!elem || !elem.tagName || !((elem.tagName.toLowerCase() == "input" && (elem.type == "text" || elem.type == "hidden")) || elem.tagName.toLowerCase() == "select")); + }; + var addDatePicker = function(options) { + + updateLanguage(); + + if(!options.formElements) { + if(debug) throw "No form elements stipulated within initialisation parameters"; + return; + }; + + options.id = (options.id && (options.id in options.formElements)) ? options.id : ""; + options.formatMasks = {}; + + var testParts = [dParts,mParts,yParts], + partsFound = [0,0,0], + tmpPartsFound, + matchedPart, + newParts, + indParts, + fmt, + fmtBag, + fmtParts, + newFormats, + myMin, + myMax; + + for(var elemID in options.formElements) { + elem = document.getElementById(elemID); + + if(!checkElem(elem)) { + if(debug) throw "The element with and id of '" + elemID + "' is of the wrong type or does not exist within the DOM"; + return false; + }; + + if(!options.id) options.id = elemID; + + fmt = options.formElements[elemID]; + + if(!(fmt.match(validFmtRegExp))) { + if(debug) throw "The element with and id of '" + elemID + "' has the following incorrect date format assigned to it: " + fmt; + return false; + }; + + fmtBag = [fmt]; + + if(options.dateFormats && (elemID in options.dateFormats) && options.dateFormats[elemID].length) { + newFormats = []; + + for(var f = 0, bDft; bDft = options.dateFormats[elemID][f]; f++) { + if(!(bDft.match(validFmtRegExp))) { + if(debug) throw "The element with and id of '" + elemID + "' has the following incorrect date format assigned to it within the dateFormats parameter: " + bDft; + return false; + }; + + newFormats.push(bDft); + }; + + fmtBag = fmtBag.concat(newFormats); + }; + + tmpPartsFound = [0,0,0]; + + for(var i = 0, testPart; testPart = testParts[i]; i++) { + if(fmt.search(new RegExp('('+testPart+')')) != -1) { + partsFound[i] = tmpPartsFound[i] = 1; + + // Create the date format strings to check against later for text input elements + if(elem.tagName.toLowerCase() == "input") { + matchedPart = fmt.match(new RegExp('('+testPart+')'))[0]; + newParts = String(matchedPart + "|" + testPart.replace(new RegExp("(" + matchedPart + ")"), "")).replace("||", "|"); + indParts = newParts.split("|"); + newFormats = []; + + for(var z = 0, bFmt; bFmt = fmtBag[z]; z++) { + for(var x = 0, indPart; indPart = indParts[x]; x++) { + if(indPart == matchedPart) continue; + newFormats.push(bFmt.replace(new RegExp('(' + testPart + ')(-|$)', 'g'), indPart + "-").replace(/-$/, "")); + }; + }; + + fmtBag = fmtBag.concat(newFormats); + }; + }; + }; + + options.formatMasks[elemID] = fmtBag.concat(); + + if(elem.tagName.toLowerCase() == "select") { + myMin = myMax = 0; + + // If we have a selectList, then try to parse the higher and lower limits + var selOptions = elem.options; + + // Check the yyyymmdd + if(tmpPartsFound[0] && tmpPartsFound[1] && tmpPartsFound[2]) { + var yyyymmdd, + cursorDate = false; + + // Remove the disabledDates parameter + if("disabledDates" in options) { + delete(options.disabledDates); + }; + + // Dynamically calculate the available "enabled" dates + options.enabledDates = {}; + + for(i = 0; i < selOptions.length; i++) { + for(var f = 0, fmt; fmt = fmtBag[f]; f++) { + dt = parseDateString(selOptions[i].value, fmt /*options.formElements[elemID]*/); + if(dt) { + yyyymmdd = dt.getFullYear() + "" + pad(dt.getMonth()+1) + "" + pad(dt.getDate()); + + if(!cursorDate) cursorDate = yyyymmdd; + + options.enabledDates[yyyymmdd] = 1; + + if(!myMin || Number(yyyymmdd) < myMin) { + myMin = yyyymmdd; + }; + + if(!myMax || Number(yyyymmdd) > myMax) { + myMax = yyyymmdd; + }; + + break; + }; + }; + }; + + // Automatically set cursor to first available date (if no bespoke cursorDate was set); + if(!options.cursorDate && cursorDate) options.cursorDate = cursorDate; + + } else if(tmpPartsFound[1] && tmpPartsFound[2]) { + var yyyymm; + + for(i = 0; i < selOptions.length; i++) { + for(var f = 0, fmt; fmt = fmtBag[f]; f++) { + dt = parseDateString(selOptions[i].value, fmt /*options.formElements[elemID]*/); + if(dt) { + yyyymm = dt.getFullYear() + "" + pad(dt.getMonth()+1); + + if(!myMin || Number(yyyymm) < myMin) { + myMin = yyyymm; + }; + + if(!myMax || Number(yyyymm) > myMax) { + myMax = yyyymm; + }; + + break; + }; + }; + }; + + // Round the min & max values to be used as rangeLow & rangeHigh + myMin += "" + "01"; + myMax += "" + daysInMonth(+myMax.substr(4,2) - 1, +myMax.substr(0,4)); + + } else if(tmpPartsFound[2]) { + var yyyy; + + for(i = 0; i < selOptions.length; i++) { + for(var f = 0, fmt; fmt = fmtBag[f]; f++) { + dt = parseDateString(selOptions[i].value, fmt /*options.formElements[elemID]*/); + if(dt) { + yyyy = dt.getFullYear(); + if(!myMin || Number(yyyy) < myMin) { + myMin = yyyy; + }; + + if(!myMax || Number(yyyy) > myMax) { + myMax = yyyy; + }; + + break; + }; + }; + }; + + // Round the min & max values to be used as rangeLow & rangeHigh + myMin += "0101"; + myMax += "1231"; + }; + + if(myMin && (!options.rangeLow || (+options.rangeLow < +myMin))) options.rangeLow = myMin; + if(myMax && (!options.rangeHigh || (+options.rangeHigh > +myMin))) options.rangeHigh = myMax; + }; + }; + + if(!(partsFound[0] && partsFound[1] && partsFound[2])) { + if(debug) throw "Could not find all of the required date parts for element: " + elem.id; + return false; + }; + + var opts = { + formElements:options.formElements, + // Form element id + id:options.id, + // Format masks + formatMasks:options.formatMasks, + // Non popup datepicker required + staticPos:!!(options.staticPos), + // Position static datepicker or popup datepicker's button + positioned:options.positioned && document.getElementById(options.positioned) ? options.positioned : "", + // Ranges stipulated in YYYYMMDD format + rangeLow:options.rangeLow && String(options.rangeLow).search(rangeRegExp) != -1 ? options.rangeLow : "", + rangeHigh:options.rangeHigh && String(options.rangeHigh).search(rangeRegExp) != -1 ? options.rangeHigh : "", + // Status bar format + statusFormat:options.statusFormat && String(options.statusFormat).search(validFmtRegExp) != -1 ? options.statusFormat : "", + // No fade in/out effect + noFadeEffect:!!(options.staticPos) ? true : !!(options.noFadeEffect), + // No drag functionality + dragDisabled:nodrag || !!(options.staticPos) ? true : !!(options.dragDisabled), + // Bespoke tabindex for this datePicker (or it's activation button) + bespokeTabIndex:options.bespokeTabindex && typeof options.bespokeTabindex == 'number' ? parseInt(options.bespokeTabindex, 10) : 0, + // Bespoke titles + bespokeTitles:options.bespokeTitles || {}, + // Final opacity + finalOpacity:options.finalOpacity && typeof options.finalOpacity == 'number' && (options.finalOpacity > 20 && options.finalOpacity <= 100) ? parseInt(+options.finalOpacity, 10) : (!!(options.staticPos) ? 100 : finalOpacity), + // Do we hide the form elements on datepicker creation + hideInput:!!(options.hideInput), + // Do we hide the "today" button + noToday:!!(options.noTodayButton), + // Do we show week numbers + showWeeks:!!(options.showWeeks), + // Do we fill the entire grid with dates + fillGrid:!!(options.fillGrid), + // Do we constrain selection of dates outside the current month + constrainSelection:"constrainSelection" in options ? !!(options.constrainSelection) : true, + // The date to set the initial cursor to + cursorDate:options.cursorDate && String(options.cursorDate).search(rangeRegExp) != -1 ? options.cursorDate : "", + // Locate label to set the ARIA labelled-by property + labelledBy:findLabelForElement(elem), + // Have we been passed a describedBy to set the ARIA decribed-by property... + describedBy:(options.describedBy && document.getElementById(options.describedBy)) ? options.describedBy : describedBy && document.getElementById(describedBy) ? describedBy : "", + // Callback functions + callbacks:options.callbackFunctions ? options.callbackFunctions : {}, + // Days of the week to highlight (normally the weekend) + highlightDays:options.highlightDays && options.highlightDays.length && options.highlightDays.length == 7 ? options.highlightDays : [0,0,0,0,0,1,1], + // Days of the week to disable + disabledDays:options.disabledDays && options.disabledDays.length && options.disabledDays.length == 7 ? options.disabledDays : [0,0,0,0,0,0,0] + }; + + if(options.disabledDates) { + if(options.enabledDates) delete(options.enabledDates); + opts.disabledDates = {}; + var startD; + for(startD in options.disabledDates) { + if((String(startD).search(wcDateRegExp) != -1 && options.disabledDates[startD] == 1) || (String(startD).search(rangeRegExp) != -1 && String(options.disabledDates[startD]).search(rangeRegExp) != -1)) { + opts.disabledDates[startD] = options.disabledDates[startD]; + }; + }; + } else if(options.enabledDates) { + var startD; + opts.enabledDates = {}; + for(startD in options.enabledDates) { + if((String(startD).search(wcDateRegExp) != -1 && options.enabledDates[startD] == 1) || (String(startD).search(rangeRegExp) != -1 && String(options.enabledDates[startD]).search(rangeRegExp) != -1)) { + opts.enabledDates[startD] = options.enabledDates[startD]; + }; + }; + }; + + datePickers[options.id] = new datePicker(opts); + datePickers[options.id].callback("create", datePickers[options.id].createCbArgObj()); + }; + + // Used by the button to dictate whether to open or close the datePicker + var isVisible = function(id) { + return (!id || !(id in datePickers)) ? false : datePickers[id].visible; + }; + + addEvent(window, 'unload', destroy); + + return { + // General event functions... + addEvent: function(obj, type, fn) { return addEvent(obj, type, fn); }, + removeEvent: function(obj, type, fn) { return removeEvent(obj, type, fn); }, + stopEvent: function(e) { return stopEvent(e); }, + // Show a single popup datepicker + show: function(inpID) { return showDatePicker(inpID, false); }, + // Hide a popup datepicker + hide: function(inpID) { return hideDatePicker(inpID); }, + // Create a new datepicker + createDatePicker: function(options) { addDatePicker(options); }, + // Destroy a datepicker (remove events and DOM nodes) + destroyDatePicker: function(inpID) { destroySingleDatePicker(inpID); }, + // Check datePicker form elements exist, if not, destroy the datepicker + cleanUp: function() { cleanUp(); }, + // Pretty print a date object according to the format passed in + printFormattedDate: function(dt, fmt, useImportedLocale) { return printFormattedDate(dt, fmt, useImportedLocale); }, + // Update the internal date using the form element value + setDateFromInput: function(inpID) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].setDateFromInput(); }, + // Set low and high date ranges + setRangeLow: function(inpID, yyyymmdd) { if(!inpID || !(inpID in datePickers)) { return false; }; datePickers[inpID].setRangeLow(yyyymmdd); }, + setRangeHigh: function(inpID, yyyymmdd) { if(!inpID || !(inpID in datePickers)) { return false; }; datePickers[inpID].setRangeHigh(yyyymmdd); }, + // Set bespoke titles for a datepicker instance + setBespokeTitles: function(inpID, titles) {if(!inpID || !(inpID in datePickers)) { return false; }; datePickers[inpID].setBespokeTitles(titles); }, + // Add bespoke titles for a datepicker instance + addBespokeTitles: function(inpID, titles) {if(!inpID || !(inpID in datePickers)) { return false; }; datePickers[inpID].addBespokeTitles(titles); }, + // Attempt to parse a valid date from a date string using the passed in format + parseDateString: function(str, format) { return parseDateString(str, format); }, + // Change global configuration parameters + setGlobalVars: function(json) { affectJSON(json); }, + setSelectedDate: function(inpID, yyyymmdd) { if(!inpID || !(inpID in datePickers)) { return false; }; datePickers[inpID].setSelectedDate(yyyymmdd); }, + // Is the date valid for selection i.e. not outside ranges etc + dateValidForSelection: function(inpID, dt) { if(!inpID || !(inpID in datePickers)) return false; return datePickers[inpID].canDateBeSelected(dt); }, + // Add disabled and enabled dates + addDisabledDates: function(inpID, dts) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].addDisabledDates(dts); }, + setDisabledDates: function(inpID, dts) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].setDisabledDates(dts); }, + addEnabledDates: function(inpID, dts) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].addEnabledDates(dts); }, + setEnabledDates: function(inpID, dts) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].setEnabledDates(dts); }, + // Disable and enable the datepicker + disable: function(inpID) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].disableDatePicker(); }, + enable: function(inpID) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].enableDatePicker(); }, + // Set the cursor date + setCursorDate: function(inpID, yyyymmdd) { if(!inpID || !(inpID in datePickers)) return false; datePickers[inpID].setCursorDate(yyyymmdd); }, + // Whats the currently selected date + getSelectedDate: function(inpID) { return (!inpID || !(inpID in datePickers)) ? false : datePickers[inpID].returnSelectedDate(); }, + // Attempt to update the language (causes a redraw of all datepickers on the page) + loadLanguage: function() { loadLanguage(); }, + // Set the debug level i.e. throw errors or fail silently + setDebug: function(dbg) { debug = !!(dbg); } + }; +})(); \ No newline at end of file diff --git a/dp/datepicker.packed.js b/dp/datepicker.packed.js new file mode 100644 index 0000000..9deac6c --- /dev/null +++ b/dp/datepicker.packed.js @@ -0,0 +1 @@ +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('k 7I=(v 7I(){k 3r=A,5d=9l.1j.aU.9m(1q.9n)==="[3Y aV]",9o=/aW/.5I(9p.9q.2b())&&!/(aX|aY)/.5I(9p.9q.2b()),6B=9r(),K={},aZ=0,5J={},21=A,3Z=15.b0(b1),2H="",5K=A,7J=O,6C=A,6D=O,6E="d-1S-F-1S-Y",4C="F-1S-d-cc-1S-Y",5L=5d?["5e"]:["5e","1S-F-1S-Y"],b2=["dt","4D","ds","cc","1S"],b3="dt|4D|ds|cc|1S",7K="d|j",7L="m|n|M|F",7M="Y|y",3I=A,2I={},2T=4E,5f=/^((1S|dt|4D|ds|cc)|([d|D|l|j|N|w|S|W|M|F|m|n|t|Y|y]))(-((1S|dt|4D|ds|cc)|([d|D|l|j|N|w|S|W|M|F|m|n|t|Y|y])))*$/,2B=/^((\\d\\d\\d\\d)(0[1-9]|1[5M])(0[1-9]|[12][0-9]|3[2U]))$/,5g=/^(((\\d\\d\\d\\d)|(\\*\\*\\*\\*))((0[1-9]|1[5M])|(\\*\\*))(0[1-9]|[12][0-9]|3[2U]))$/;(v(){k 4F=u.1M(\'2V\'),9s=15(4F[4F.17-1].b4).1b(/[\\n\\r\\s\\t]+/g," ").1b(/^\\s+/,"").1b(/\\s+$/,""),3s=9t(9s);h(2s 3s==="3Y"&&!("2J"16 3s)){7N(3s)};h(2s(3J)!="3Y"){k 6F=u.1M("6F")[0]||u.3t,9u=4F[4F.17-1].6G.Q(0,4F[4F.17-1].6G.b5("/"))+"/5N/",2V;T(k i=0;i<6B.17;i++){2V=u.1J(\'2V\');2V.1w="43/9v";2V.6G=9u+6B[i]+".b6";2V.b7="b8-8";/*@1L/*@h(@2W)k 5O=u.1M(\'b9\');h(5O.17&&5O[0].ba.17){5O[0].18(2V)}I{u.1M(\'6F\')[0].18(2V)};5O=1a;@I@*/6F.18(2V);/*@24@*/};2V=1a}I{6C=O}})();v 9r(){k 3K=u.1M(\'6H\')[0].7O(\'5N\')||u.1M(\'6H\')[0].7O(\'bb:5N\');h(!3K){3K="bc"}I{3K=3K.2b()};q 3K.L(/^([a-z]{2,3})-([a-z]{2})$/)!=-1?[3K.1X(/^([a-z]{2,3})-([a-z]{2})$/)[1],3K]:[3K]};v 7N(3s){h(2s 3s!=="3Y"){q};T(7P 16 3s){1p=3s[7P];7Q(7P.2b()){1r"5N":h(1p.L(/^[a-z]{2,3}(-([a-z]{2}))?$/i)!=-1){6B=[1p.2b()];6C=O};1f;1r"5K":5K=!!1p;1f;1r"9w":7J=!!1p;1f;1r"44":6D=!!1p;1f;1r"9x":h(2s 1p=="6I"&&1p.1X(5f)){9y(1p)};1f;1r"9z":h(2s 1p=="6I"&&1p.1X(5f)){4C=1p};1f;1r"6J":h(2s 1p=="6I"){2H=1p};1f;1r"bd":h(2s 1p==\'6K\'&&(+1p>20&&+1p<=4E)){2T=2t(1p,10)};1f;1r"be":2I={};T(k dt 16 1p){2I[dt]=1p[dt]}}}};v 9y(1p){h(5d){5L=["5e"];6E="j-1S-F-1S-Y";q};k 45=1p.5P("-"),4G=[],4H=[],2c;T(k 2C=0;2C<45.17;2C++){2c=45[2C];h(2c=="j"||2c=="d"){h(4H.17){4G.2d(4H.5h("-"));4H=[]};4G.2d("5e")}I{4H.2d(2c)}};h(4H.17){4G.2d(4H.5h("-"))};h(!4G.17||4G.17>3){5L=["5e","1S-F-1S-Y"];6E="j-1S-F-1S-Y";q};5L=4G;6E=1p};v 1c(1p,17){17=17||2;q"bf".Q(0,17-1N.46(15(1p).17,17))+1p};v 2l(1t,1w,2p){2K{h(1t.9A){1t["e"+1w+2p]=2p;1t[1w+2p]=v(){1t["e"+1w+2p](1q.2X)};1t.9A("5i"+1w,1t[1w+2p])}I{1t.5Q(1w,2p,O)}}2L(2J){}};v 1C(1t,1w,2p){2K{h(1t.9B){1t.9B("5i"+1w,1t[1w+2p]);1t[1w+2p]=1a}I{1t.7R(1w,2p,O)}}2L(2J){}};v 1O(e){e=e||u.4I.2X;h(e.9C){e.9C();e.bg()};/*@1L@h(@2W)e.bh=O;e.bi=A;@24@*/q A};v 9t(Z){h(2s Z!==\'6I\'||Z==""){q{}};2K{h(2s 5R==="3Y"&&5R.6L){q 1q.5R.6L(Z)}I h(/5N|9w|44|9x|9z|5K|6J/.5I(Z.2b())){k f=9D([\'k u,3L,bj,1q,9E,2e,14,9l,9D,\',\'bk,15,1N,2M,bl,bm;\',\'q (\',Z.1b(/<\\!--.+-->/bn,\'\').1b(/\\bo\\b/g,\'v­\'),\');\'].5h(\'\'));q f()}}2L(e){};h(3r){47"5S 3M 6L 4a 5R 3Y";};q{"2J":"5S 3M 6L 4a 5R 3Y"}};v 3u(1o,7S){h(1o&&1o.25){1o.2Y("7S",7S)}};v 2u(1o,9F,1p){h(1o&&1o.25){1o.2Y("bp-"+9F,1p)}};v 1h(C){c.1D=1a;c.5T=A;c.2Z=A;c.5U=1a;c.5V=1a;c.3N=0;c.3a=0;c.6M=0;c.7T=0;c.7U=0;c.x=0;c.y=0;c.2N=A;c.1k=A;c.4b=0;c.3O=99;c.3b=A;c.5W=A;c.5j=A;c.5X=1a;c.bq=1a;c.1F=C.1F?C.1F:"",c.B=C.1F?P 14(+C.1F.Q(0,4),+C.1F.Q(4,2)-1,+C.1F.Q(6,2)):P 14();c.br={};c.bs={};c.2O=21.2O;c.5k=P 14();c.4c=A;c.1T=O;c.3I=A;c.2m=A;c.26=A;c.5Y=A;c.2I={};T(k 4J 16 C){h(4J.L(/5l|2n|4K/)!=-1)3v;c[4J]=C[4J]};/*@1L@h(@2W)c.1G=1a;c.4d=A;@24@*//*@1L@h(@4L<=5.7)c.4d=u.3t&&2s u.3t.1d.bt!="bu";@24@*/T(k i=0,5m;5m=["5l","2n","4K"][i];i++){c[5m]={};T(k 4J 16 C[5m]){c[5m][4J]=C[5m][4J]}};c.B.6N(5);c.9G=v(){o.3c();o.3P("6O",o.5Z())};c.5Z=v(){q c.1D?{"E":c.E,"B":c.1D,"dd":1c(c.B.1x()),"6P":1c(c.B.1g()+1),"3w":c.B.1e()}:{"E":c.E,"B":1a,"dd":1a,"6P":1a,"3w":1a}};c.9H=v(){h(2s(1q.7V)==\'6K\'){q[1q.9I,1q.7V]}I h(u.3d&&(u.3d.3Q||u.3d.3R)){q[u.3d.3Q,u.3d.3R]}I h(u.3t&&(u.3t.3Q||u.3t.3R)){q[u.3t.3Q,u.3t.3R]};q[0,0]};c.7W=v(){h(!o.2N||o.1P){q};o.R.1d.4M="3e";o.R.1d.4e=o.R.1d.3L="7X";o.R.1d.3x="6Q";k 60=o.R.5n,6R=o.R.7Y,U=u.1m(\'1i-H-\'+o.E),3f=o.9J(U),6S=(u.6T&&u.6T!="9K")?u.3t:u.3d,7Z=o.9H(),3R=7Z[1],3Q=7Z[0],9L=2t(6S.bv+3R)>2t(60+3f[1]+U.5n+2),9M=2t(3f[1]-(60+U.5n+2))>2t(3R);o.R.1d.4M="2Z";o.R.1d.4e=2e(2t(6S.9N+3Q)<2t(6R+3f[0])?1N.6U(2t((6S.9N+3Q)-6R)):3f[0])+"3g";o.R.1d.3L=(9L||!9M)?1N.6U(2t(3f[1]+U.5n+2))+"3g":1N.6U(2t(3f[1]-(60+2)))+"3g";/*@1L@h(@4L<=5.7)h(o.4d)q;o.1G.1d.3L=o.R.1d.3L;o.1G.1d.4e=o.R.1d.4e;o.1G.1d.80=6R+"3g";o.1G.1d.81=(60-2)+"3g";@24@*/};c.5o=v(){k V=u.1m(o.E+"-B-1y-3y");h(V){2K{V.2Y(!/*@1L!@*/A?"3h":"61","-1");V.3h=-1;V.G=V.G.1b(/B-1y-3y/,"");V.E="";V.6V=1a;V.6W=1a}2L(2J){}}};c.9O=v(){k V=u.1m(o.E+"-B-1y-3y");h(V&&!(V.1M("1l").17)){k 62=V.G.1X(/cd-([\\d]{4})([\\d]{2})([\\d]{2})/),9P=(V.G.L(/B-1y-6X|3z-2P-2Q|2f-1k|6Y-82|3M-4f/)!=-1),4N=u.1J(\'1l\'),3S;4N.G="1i-83-84";2o(V.2a)V.3i(V.2a);h(9P){3S=4N.85(A);3S.18(u.1Y(1E(13)));V.18(3S)};T(k 2C=0,2c;2c=5L[2C];2C++){h(2c=="5e"){V.18(u.1Y(+62[3]))}I{3S=4N.85(A);3S.18(u.1Y(3j(P 14(62[1],+62[2]-1,62[3]),2c,O)));V.18(3S)}}}};c.5p=v(){k V=u.1m(o.E+"-B-1y-3y");h(V){2K{V.2Y(!/*@1L!@*/A?"3h":"61","0");V.3h=0;V.G=V.G.1b(/B-1y-3y/,"")+" B-1y-3y";h(!c.4c){V.6V=o.6V;V.6W=o.6W};h(!5d&&!c.4c)o.9O();h(!c.1T&&!c.4c){6Z(v(){2K{V.63()}2L(2J){}},0)}}2L(2J){}}};c.86=v(1z){h(15(1z).L(/^([0-9]{8})$/)!=-1){c.B=P 14(+1z.Q(0,4),+1z.Q(4,2)-1,+1z.Q(6,2));c.1F=1z;h(c.1P){c.2g()}}};c.2g=v(bw){h(!o||o.3b||!o.2N)q;o.3b=O;o.5o();h(o.5T&&!o.5Y){h(o.3a){k n=o.B.1x(),d=P 14(o.B);d.2D(2);d.64(d.1g()+o.3a*1);d.2D(1N.46(n,22(d.1g(),d.1e())));o.B=P 14(d)}I{o.B.2D(1N.46(o.B.1x()+o.6M,22(o.B.1g()+o.3a,o.B.1e()+o.3N)));o.B.64(o.B.1g()+o.3a);o.B.9Q(o.B.1e()+o.3N)}};o.3k();h(!o.65){o.70()};o.87(o.B);k cd=o.B.1x(),cm=o.B.1g(),cy=o.B.1e(),1F=(15(cy)+1c(cm+1)+1c(cd)),1u=P 14(cy,cm,1);1u.6N(5);k dt,2v,V,i,3l,4g,1n,2E,9R,71,3S,88,8a=(1u.3A()+6)%7,4h=(((8a-o.2O)+7)%7)-1,4i=22(cm,cy),2h=P 14(),66=15(1u.1e())+1c(1u.1g()+1),4g=[4,4,4,4,4,4],5q=P 14(cy,cm-1,1),72=P 14(cy,cm+1,1),8b=22(5q.1g(),5q.1e()),8c=15(72.1e())+1c(72.1g()+1),8d=15(5q.1e())+1c(5q.1g()+1),9S=(72.3A()+6)%7,9T=(5q.3A()+6)%7,2h=2h.1e()+1c(2h.1g()+1)+1c(2h.1x()),4N=u.1J(\'1l\');o.4j=!o.4O&&o.5r&&(0-4h<1)?15(8d)+(8b+(0-4h)):66+"2U";o.4k=!o.4O&&o.5r?8c+1c(41-4h-4i):66+15(4i);o.73=66;71=o.3P("bx",{E:o.E,dd:1c(cd),6P:1c(cm+1),3w:cy,by:o.4j,bz:o.4k})||{};2R=o.8e(cy,cm+1);o.9U();88=(o.1D!=1a)?o.1D.1e()+1c(o.1D.1g()+1)+1c(o.1D.1x()):A;4N.G="1i-83-84";h(c.5X!=1a){2u(c.5X,"74",A);c.5X=1a};T(k 3B=0;3B<42;3B++){1H=1N.bA(3B/7);V=o.8f[3B];3S=4N.85(A);2o(V.2a)V.3i(V.2a);h((3B>4h&&3B<=(4h+4i))||o.5r){2E=66;4l=8a;dt=3B-4h;2v=[];4f=O;h(dt<1){dt=8b+dt;2E=8d;4l=9T;4f=!o.4O;2v.2d("1Q-3z")}I h(dt>4i){dt-=4i;2E=8c;4l=9S;4f=!o.4O;2v.2d("1Q-3z")};4l=(4l+dt+6)%7;2v.2d("2f-"+3m.3T[4l].2b());3l=2E+15(dt<10?"0":"")+dt;h(o.1U&&+3l<+o.1U||o.1V&&+3l>+o.1V){V.G="3z-2P-2Q";V.23="";V.18(u.1Y(dt));h(o.1Z){4g[1H]=1N.46(4g[1H],2)}}I{h(4f){V.23=4C?3j(P 14(+15(2E).Q(0,4),+15(2E).Q(4,2)-1,+dt),4C,O):"";2v.2d("cd-"+3l+" 4m-"+2E+" 9V-"+2E.Q(4,2)+1c(dt))}I{V.23=4C?1E(13)+" "+3j(P 14(+15(2E).Q(0,4),+15(2E).Q(4,2)-1,+dt),4C,O):"";2v.2d("4m-"+2E+" 9V-"+2E.Q(4,2)+1c(dt)+" 3M-4f")};h(3l==2h){2v.2d("B-1y-2h")};h(88==3l){2v.2d("B-1y-74-B");2u(V,"74","O");c.5X=V};h(o.3C[4l]||2R[3l]==0){2v.2d("2f-1k");h(4C&&4f){V.23=1E(13)+" "+V.23}}h(3l 16 71){2v.2d(71[3l])}h(o.4P[4l]){2v.2d("B-1y-75")};h(1F==3l){V.E=o.E+"-B-1y-3y"};V.18(u.1Y(dt));V.G=2v.5h(" ");h(o.1Z){4g[1H]=1N.46(2v[0]=="1Q-3z"?3:1,4g[1H])}}}I{V.G="B-1y-6X";V.18(u.1Y(3Z));V.23=""};h(o.1Z&&3B-(1H*7)==6){2o(o.5s[1H].2a)o.5s[1H].3i(o.5s[1H].2a);o.5s[1H].18(u.1Y(4g[1H]==4&&!o.5r?3Z:8g(cy,cm,3B-4h-6)));o.5s[1H].G="B-1y-8h-5t"+(["",""," 3z-2P-2Q"," 1Q-3z",""][4g[1H]])}};k 1l=o.67.1M("1l");2o(1l[0].2a)1l[0].3i(1l[0].2a);2o(1l[1].2a)1l[1].3i(1l[1].2a);1l[0].18(u.1Y(9W(cm,A)+3Z));1l[1].18(u.1Y(cy));h(o.5T){o.4Q=50+1N.4n(((o.4Q-50)/1.8));o.5V=1q.6Z(o.2g,o.4Q)};o.3b=o.5Y=A;o.5p()};c.4R=v(){h(u.1m("1i-H-"+c.E)){u.1m("1i-H-"+c.E).2i.3i(u.1m("1i-H-"+c.E))};h(!c.2N){q};1C(c.1A,"4S",o.2F);1C(c.1A,"bB",o.4T);1C(c.1A,"8i",o.4U);1C(u,"4S",o.2F);1C(u,"5u",o.4V);h(1q.5Q&&!1q.76){2K{1q.7R(\'8j\',c.3D,A)}2L(2J){}}I{1C(u,"44",c.3D);1C(1q,"44",c.3D)};o.77();68(o.5U);68(o.5V);/*@1L@h(@4L<=5.7)h(!o.1P&&!o.4d){2K{o.1G.2i.3i(o.1G);o.1G=1a}2L(2J){}};@24@*/h(c.R&&c.R.2i){c.R.2i.3i(c.R)};o=1a};c.9X=v(){o.R.1d.80=o.1A.7Y+"3g";o.R.1d.81=o.1A.5n+"3g"};c.78=v(){h(u.1m("1i-"+c.E))q;c.1T=O;v 69(2G){k 1W=u.1J(\'1W\');h(2G.79)1W.G=2G.79;h(2G.4W){/*@1L/*@h(@2W)1W.2Y(\'bC\',2G.4W);@I@*/1W.2Y(\'4W\',2G.4W);/*@24@*/};/*@1L/*@h(@2W)1W.6a="5i";/*@24@*/q 1W};v 8k(1K,1t){T(k i=0,2G;2G=1t[i];i++){k 1W=69(2G);1K.18(1W);k H=u.1J(\'1l\');H.G=2G.G;H.E=o.E+2G.E;H.18(u.1Y(2G.43||o.3Z));H.23=2G.23||"";/*@1L/*@h(@2W)1W.6a=H.6a="5i";/*@24@*/1W.18(H)}};c.R=u.1J(\'R\');c.R.E="1i-"+c.E;c.R.G="1h";c.R.1d.4M="3e";c.R.1d.3x="7a";h(c.2H&&u.1m(c.2H)){2u(c.R,"6J",c.2H)};h(c.8l){2u(c.R,"bD",c.8l.E)};k 1K,1H,1n,4X,6b,7b;c.1A=u.1J(\'1A\');c.1A.G="bE";c.1A.4T=c.4T;c.1A.4U=c.4U;c.1A.4o=c.4o;h(c.1P){c.1A.2F=c.2F};c.R.18(c.1A);k 5v=!c.8m?" 4Y-5w":"";h(!c.1P){c.R.1d.4M="3e";c.R.G+=5v;u.1M(\'3d\')[0].18(c.R);/*@1L@h(@4L<=5.7)h(!c.4d){c.1G=u.1J(\'bF\');c.1G.6G="9v:\'<6H>\';";c.1G.2Y(\'G\',\'bG\');c.1G.2Y("3h",-1);3u(c.1G,"8n");2u(c.1G,"3e","O");c.1G.bH="6Y";c.1G.bI="0";c.1G.bJ=c.1G.E=c.E+"-bK";u.3d.18(c.1G)};@24@*/2u(c.R,"3e","O")}I{U=u.1m(c.2S?c.2S:c.E);h(!U){c.R=1a;h(3r)47 c.2S?"5S 3M 9Y a K 9Z 9E 1o 4Z an E:"+c.2S:"5S 3M 9Y a K 9Z 5x 4Z an E:"+c.E;q};c.R.G+=" bL-7c";h(c.2S){U.18(c.R)}I{U.2i.a0(c.R,U.a1)};h(c.8o){T(k 1B 16 c.2n){U=u.1m(1B);h(U){U.G+=" 1i-3e-5x"}}};6Z(c.9X,bM)};3u(c.R,"bN");h(c.3E){7b=u.1J(\'a2\');c.1A.18(7b);1K=u.1J(\'1K\');1K.G="B-1y-a2";7b.18(1K);c.2w=69({79:"B-1y-bO"+5v,4W:c.1Z?8:7});1K.18(c.2w);c.51()};4X=u.1J(\'a3\');c.1A.18(4X);1K=u.1J(\'1K\');3u(1K,"8n");4X.18(1K);c.67=69({79:"B-1y-23"+5v,4W:c.1Z?8:7});1K.18(c.67);1K=1a;k 1l=u.1J(\'1l\');1l.18(u.1Y(3Z));1l.G="1Q-3x"+5v;c.67.18(1l);1l=u.1J(\'1l\');1l.18(u.1Y(3Z));1l.G="2q-3x"+5v;c.67.18(1l);1l=1a;1K=u.1J(\'1K\');3u(1K,"8n");4X.18(1K);8k(1K,[{G:"2x-H 2x-2q",E:"-2x-2q-H",43:"\\bP",23:1E(2)},{G:"2x-H 2x-1Q",E:"-2x-1Q-H",43:"\\bQ",23:1E(0)},{4W:c.1Z?4:3,G:"2h-H",E:"-2h-H",43:1E(4)},{G:"2y-H 2y-1Q",E:"-2y-1Q-H",43:"\\bR",23:1E(1)},{G:"2y-H 2y-2q",E:"-2y-2q-H",43:"\\bS",23:1E(3)}]);6b=u.1J(\'7d\');c.1A.18(6b);k 6c=c.1Z?8:7,5y=c.1Z?0:-1,H,9R;T(k 3F=0;3F<7;3F++){1H=u.1J(\'1K\');h(3F!=0){3u(1H,"1H");6b.18(1H)}I{4X.18(1H)};T(k 4p=0;4p<6c;4p++){h(3F===0||(c.1Z&&4p===0)){1n=u.1J(\'1W\')}I{1n=u.1J(\'V\');2u(1n,"6J",c.E+"-1n-"+4p+(c.1Z?" "+c.E+"-1H-"+3F:""));2u(1n,"74","A")};/*@1L@*//*@h(@2W)1n.6a="5i";/*@24@*/1H.18(1n);h((c.1Z&&4p>0&&3F>0)||(!c.1Z&&3F>0)){3u(1n,"bT")}I{h(3F===0&&4p>5y){1n.G="B-1y-2f-5t";1n.a4="1n";3u(1n,"bU");1n.E=c.E+"-1n-"+4p}I{1n.G="B-1y-8h-5t";1n.a4="1H";3u(1n,"bV");1n.E=c.E+"-1H-"+3F}}}};1n=1H=1a;c.2z=c.1A.1M(\'a3\')[0].1M(\'1K\')[2].1M(\'1W\');T(k y=0;y<6c;y++){h(y==0&&c.1Z){c.2z[y].18(u.1Y(1E(6)));c.2z[y].23=1E(8);3v};h(y>(c.1Z?0:-1)){H=u.1J("1l");H.G="1i-2f-5t";/*@1L@*//*@h(@2W)H.6a="5i";/*@24@*/c.2z[y].18(H)}};H=1a;c.bW=c.1A.1M(\'7d\')[0].1M(\'1K\');c.8f=c.1A.1M(\'7d\')[0].1M(\'V\');c.5z=u.1m(c.E+"-2x-2q-H");c.6d=u.1m(c.E+"-2x-1Q-H");c.6e=u.1m(c.E+"-2h-H");c.6f=u.1m(c.E+"-2y-2q-H");c.6g=u.1m(c.E+"-2y-1Q-H");h(c.65){c.6e.1d.3x="7a"};h(c.1Z){c.5s=c.1A.1M(\'7d\')[0].1M(\'1W\');c.R.G+=" bX-bY"};6b=4X=1K=8k=69=1a;h(c.1U&&c.1V&&(c.1V-c.1U<7)){c.a5()};c.7e();c.2N=O;c.2g();h(c.1P){c.2Z=O;c.4b=c.3O=c.2T;c.R.1d.4M="2Z";c.R.1d.3x="6Q";c.1T=O;c.5A()}I{c.7W();c.R.1d.4M="2Z";c.5A();c.1T=O};c.3P("bZ",{"E":c.E})};c.5A=v(){1q.68(o.5U);o.5U=1a;k 8p=1N.4n(o.4b+((o.3O-o.4b)/4));o.8q(8p);h(1N.6U(o.3O-8p)>3&&!o.8r){o.5U=1q.6Z(o.5A,50)}I{o.8q(o.3O);h(o.3O==0){o.R.1d.3x="7a";o.R.1d.4M="3e";2u(o.R,"3e","O");o.2Z=A}I{2u(o.R,"3e","A");o.2Z=O}}};c.8s=v(e){e=e||1q.2X;k 8t=(e.7f?e.7f:e.7g?e.7g:e.x)-o.7T;k 8u=(e.7h?e.7h:e.7i?e.7i:e.Y)-o.7U;o.R.1d.4e=1N.4n(o.x+8t)>0?1N.4n(o.x+8t)+\'3g\':"7X";o.R.1d.3L=1N.4n(o.y+8u)>0?1N.4n(o.y+8u)+\'3g\':"7X";/*@1L@h(@4L<=5.7)h(o.1P||o.4d)q;o.1G.1d.3L=o.R.1d.3L;o.1G.1d.4e=o.R.1d.4e;@24@*/};c.8v=v(e){k b=u.1M("3d")[0];b.G=b.G.1b(/1i-4Y-3U/g,"");1C(u,\'a6\',o.8s,A);1C(u,\'5u\',o.8v,A);o.R.1d.a7=c0};c.2F=v(e){e=e||u.4I.2X;k X=e.5B!=1a?e.5B:e.8w,5C=X,8x=O,a8=P 2M("^1i-(H-)?"+o.E+"$");o.6h=1a;2o(X){h(X.E&&X.E.17&&X.E.L(a8)!=-1){8x=A;1f};2K{X=X.2i}2L(2J){1f}};h(8x){6i();q O};h((o.R.G+5C.G).L(\'1i-1k\')!=-1){q O};h(5C.E.L(P 2M("^"+o.E+"(-2x-2q-H|-2x-1Q-H|-2y-1Q-H|-2y-2q-H)$"))!=-1){o.6h=5C;2l(u,"5u",o.4V);2l(5C,"8i",o.4V);k 7j={"-2x-2q-H":[0,-1,0],"-2x-1Q-H":[0,0,-1],"-2y-2q-H":[0,1,0],"-2y-1Q-H":[0,0,1]},7k=5C.E.1b(o.E,""),7l=2e(o.B.1e()+1c(o.B.1g()+1));o.4Q=8y;o.5T=O;o.6M=7j[7k][0];o.3N=7j[7k][1];o.3a=7j[7k][2];o.c1=1;h(!(o.73==7l)){h((o.73<7l&&(o.3N==-1||o.3a==-1))||(o.73>7l&&(o.3N==1||o.3a==1))){o.5Y=A;o.4Q=c2}I{o.5Y=O;o.4Q=8y}};o.2g();q 1O(e)}I h(X.G.L("4Y-5w")!=-1){o.7T=e.7f?e.7f:e.7g?e.7g:e.x;o.7U=e.7h?e.7h:e.7i?e.7i:e.Y;o.x=2t(o.R.1d.4e);o.y=2t(o.R.1d.3L);2l(u,\'a6\',o.8s,A);2l(u,\'5u\',o.8v,A);k b=u.1M("3d")[0];b.G=b.G.1b(/1i-4Y-3U/g,"")+" 1i-4Y-3U";o.R.1d.a7=c3;q 1O(e)};q O};c.4o=v(e){h(o.4b!=o.3O||o.1k)q 1O(e);e=e||u.4I.2X;k X=e.5B!=1a?e.5B:e.8w;2o(X.2i){h(X.25&&X.25.2b()=="V"){h(X.G.L(/cd-([0-9]{8})/)==-1||X.G.L(/B-1y-6X|3z-2P-2Q|2f-1k|6Y-82|3M-4f/)!=-1)q 1O(e);k 3n=X.G.1X(/cd-([0-9]{8})/)[1];o.B=P 14(3n.Q(0,4),3n.Q(4,2)-1,3n.Q(6,2));o.1D=P 14(o.B);o.1T=O;o.3P("6O",{"E":o.E,"B":o.1D,"dd":o.1D.1x(),"6P":o.1D.1g()+1,"3w":o.1D.1e()});o.6j();o.3V();o.3o();1f}I h(X.E&&X.E==o.E+"-2h-H"){o.B=P 14();o.2g();o.3o();1f}I h(X.G.L(/B-1y-2f-5t/)!=-1){k 8z=o.1Z?-1:0,U=X;2o(U.a9){U=U.a9;h(U.25&&U.25.2b()=="1W")8z++};o.2O=(o.2O+8z)%7;o.7e();1f};2K{X=X.2i}2L(2J){1f}};q 1O(e)};c.8A=v(4q){h(c.1P){q};k U,1B;T(1B 16 c.2n){U=u.1m(c.E);h(!U||(U&&U.1k)){q}};c.1T=O;h(!c.2N||!u.1m(\'1i-\'+c.E)){c.2N=A;c.5j=A;c.78();c.5j=O}I{c.3c();c.7W()};c.1T=!!!4q;h(c.1T){c.4c=O;2l(u,"4S",c.2F);h(6D){h(1q.5Q&&!1q.76)1q.5Q(\'8j\',c.3D,A);I{2l(u,"44",c.3D);2l(1q,"44",c.3D)}}}I{c.4c=A};c.3O=c.2T;c.R.1d.3x="6Q";/*@1L@h(@4L<=5.7)h(!o.4d){c.1G.1d.80=c.R.7Y+"3g";c.1G.1d.81=c.R.5n+"3g";c.1G.1d.3x="6Q"};@24@*/c.5p();c.5A();k 4r=u.1m(\'1i-H-\'+c.E);h(4r){4r.G=4r.G.1b("dp-52-3U","")+" dp-52-3U"}};c.3V=v(){h(!c.2Z||!c.2N||!u.1m(\'1i-\'+c.E))q;c.3I=A;o.R.G=o.R.G.1b("7c-63","");c.3o();c.77();c.4c=A;h(c.2w){c.51(1E(9))};c.1T=O;c.5p();h(c.1P){q};k 4r=u.1m(\'1i-H-\'+c.E);h(4r)4r.G=4r.G.1b("dp-52-3U","");1C(u,"4S",c.2F);h(6D){h(1q.5Q&&!1q.76){2K{1q.7R(\'8j\',c.3D,A)}2L(2J){}}I{1C(u,"44",c.3D);1C(1q,"44",c.3D)}};/*@1L@h(@4L<=5.7)h(!c.4d){c.1G.1d.3x="7a"};@24@*/c.3O=0;c.5A()};c.6V=v(e){o.3V()};c.6W=v(e){o.1T=A;o.R.G=o.R.G.1b("7c-63","")+" 7c-63";o.aa()};c.3D=v(e){e=e||u.4I.2X;k 5D=0;h(e.ab){5D=e.ab/c4;h(5d&&1q.9n.c5()<9.2)5D=-5D}I h(e.ac){5D=-e.ac/3};k n=o.B.1x(),d=P 14(o.B),6k=5D>0?1:-1;d.2D(2);d.64(d.1g()+6k*1);d.2D(1N.46(n,22(d.1g(),d.1e())));h(o.3k(d)){q 1O(e)};o.B=P 14(d);o.2g();h(o.2w){o.51(3j(o.B,o.3E,O))};q 1O(e)};c.3p=v(e){o.3o();h(!o.2Z)q A;e=e||u.4I.2X;k 1v=e.7m?e.7m:e.ad;h(1v==13){k V=u.1m(o.E+"-B-1y-3y");h(!V||V.G.L(/cd-([0-9]{8})/)==-1||V.G.L(/6Y-82|3z-2P-2Q|2f-1k/)!=-1){q 1O(e)};o.1D=P 14(o.B);o.3P("6O",o.5Z());o.6j();o.3V();q 1O(e)}I h(1v==27){h(!o.1P){o.3V();q 1O(e)};q O}I h(1v==32||1v==0){o.B=P 14();o.2g();q 1O(e)}I h(1v==9){h(!o.1P){q 1O(e)};q O};/*@1L@h(@2W)h(P 14().5E()-o.5k.5E()<50){q 1O(e)};o.5k=P 14();@24@*/h(9o){h(P 14().5E()-o.5k.5E()<50){q 1O(e)};o.5k=P 14()};h((1v>49&&1v<56)||(1v>97&&1v96)1v-=(96-48);1v-=49;o.2O=(o.2O+1v)%7;o.7e();q 1O(e)};h(1v<33||1v>40)q O;k d=P 14(o.B),c7,c8=o.B.1e()+1c(o.B.1g()+1);h(1v==36){d.2D(1)}I h(1v==35){d.2D(22(d.1g(),d.1e()))}I h(1v==33||1v==34){k 6k=(1v==34)?1:-1;h(e.ae){d.9Q(d.1e()+6k*1)}I{k n=o.B.1x();d.2D(2);d.64(d.1g()+6k*1);d.2D(1N.46(n,22(d.1g(),d.1e())))}}I h(1v==37){d=P 14(o.B.1e(),o.B.1g(),o.B.1x()-1)}I h(1v==39||1v==34){d=P 14(o.B.1e(),o.B.1g(),o.B.1x()+1)}I h(1v==38){d=P 14(o.B.1e(),o.B.1g(),o.B.1x()-7)}I h(1v==40){d=P 14(o.B.1e(),o.B.1g(),o.B.1x()+7)};h(o.3k(d)){q 1O(e)};o.B=d;h(o.2w){o.51(o.7n(o.B.1e(),o.B.1g()+1,o.B.1x())||3j(o.B,o.3E,O))};k t=15(o.B.1e())+1c(o.B.1g()+1)+1c(o.B.1x());h(e.ae||(1v==33||1v==34)||to.4k){o.2g();/*@1L@h(@2W)o.5k=P 14();@24@*/}I{h(!o.65){o.70()};o.5o();T(k i=0,V;V=o.8f[i];i++){h(V.G.L("cd-"+t)==-1){3v};o.87(o.B);V.E=o.E+"-B-1y-3y";o.5p();1f}};q 1O(e)};c.4U=v(e){e=e||u.4I.2X;k p=e.c9||e.ca;2o(p&&p!=c)2K{p=p.2i}2L(e){p=c};h(p==c)q A;h(o.53){o.53.G="";o.53=1a};h(o.2w){o.51(o.7n(o.B.1e(),o.B.1g()+1,o.B.1x())||3j(o.B,o.3E,O))}};c.4T=v(e){e=e||u.4I.2X;k X=e.5B!=1a?e.5B:e.8w;2o(X.af!=1){X=X.2i};h(!X||!X.25){q};k 2r=1E(9);7Q(X.25.2b()){1r"V":h(X.G.L(/B-1y-6X|3z-2P-2Q/)!=-1){2r=1E(9)}h(X.G.L(/cd-([0-9]{8})/)!=-1){o.3o();k 3n=X.G.1X(/cd-([0-9]{8})/)[1];o.5o();X.E=o.E+"-B-1y-3y";o.5p();o.B=P 14(+3n.Q(0,4),+3n.Q(4,2)-1,+3n.Q(6,2));h(!o.65){o.70()};2r=o.7n(+3n.Q(0,4),+3n.Q(4,2),+3n.Q(6,2))||3j(o.B,o.3E,O)};1f;1r"1W":h(!o.2w){1f};h(X.G.L(/4Y-5w/)!=-1){2r=1E(10)}I h(X.G.L(/B-1y-8h-5t/)!=-1){k 4s=X.2a?X.2a.cb:"";2r=4s.L(/^(\\d+)$/)!=-1?1E(7,[4s,4s<3&&o.B.1g()==11?8B(o.B.1e())+1:8B(o.B.1e())]):1E(9)};1f;1r"1l":h(!o.2w){1f};h(X.G.L(/4Y-5w/)!=-1){2r=1E(10)}I h(X.G.L(/2f-([0-6])/)!=-1){k 2f=X.G.1X(/2f-([0-6])/)[1];2r=1E(11,[6l(2f,A)])}I h(X.G.L(/2x-2q/)!=-1){2r=1E(2)}I h(X.G.L(/2x-1Q/)!=-1){2r=1E(0)}I h(X.G.L(/2y-2q/)!=-1){2r=1E(3)}I h(X.G.L(/2y-1Q/)!=-1){2r=1E(1)}I h(X.G.L(/2h-H/)!=-1&&X.G.L(/1k/)==-1){2r=1E(12)};1f;ag:2r=""};2o(X.2i){X=X.2i;h(X.af==1&&X.25.2b()=="1K"){h(o.53){h(X==o.53)1f;o.53.G=""};X.G="dp-1H-75";o.53=X;1f}};h(o.2w&&2r){o.51(2r)}};c.4V=v(){o.3o();o.4Q=8y;o.3N=0;o.3a=0;o.6M=0;1C(u,"5u",o.4V);h(o.6h!=1a){1C(o.6h,"8i",o.4V)};o.6h=1a};k o=c;c.3c();h(c.1P){c.78()}I{c.ah()};(v(){k 1B,U;T(1B 16 o.2n){U=u.1m(1B);h(U&&U.25&&U.25.L(/8C|5x/i)!=-1){2l(U,"ce",o.9G)};h(!U||U.1k==O){o.8D()}}})();c.5j=O};1h.1j.8E=v(H){v 7o(e){e=e||1q.2X;k 4t=c.E.1b(\'1i-H-\',\'\'),8F=ai(4t),4q=A,3I=K[4t].3I;h(3I){K[4t].3I=A;q};h(e.1w=="6m"){K[4t].3I=O;k 1v=e.7m!=1a?e.7m:e.ad;h(1v!=13)q O;h(8F){c.G=c.G.1b("dp-52-3U","");6i();q 1O(e)};4q=O}I{K[4t].3I=A};c.G=c.G.1b("dp-52-3U","");h(!8F){c.G+=" dp-52-3U";6i(4t);8G(4t,4q)}I{6i()};q 1O(e)};H.3p=7o;H.4o=7o;h(!7J||c.7p===A){H.2Y(!/*@1L!@*/A?"3h":"61","-1");H.3h=-1;H.3p=1a;1C(H,"6m",7o)}I{H.2Y(!/*@1L!@*/A?"3h":"61",c.7p);H.3h=c.7p}};1h.1j.ah=v(){h(c.1P||u.1m("1i-H-"+c.E)){q};k 8H=u.1m(c.E),1l=u.1J(\'1l\'),H=u.1J(\'a\');H.cf="#"+c.E;H.G="B-1y-cg";H.23=1E(5);H.E="1i-H-"+c.E;1l.18(u.1Y(3Z));H.18(1l);1l=u.1J(\'1l\');1l.G="1i-83-84";1l.18(u.1Y(H.23));H.18(1l);3u(H,"52");2u(H,"ch",O);h(c.2S&&u.1m(c.2S)){u.1m(c.2S).18(H)}I{8H.2i.a0(H,8H.a1)};c.8E(H);H=1a;c.3P("ci",{E:c.E})};1h.1j.8I=v(1R){c.2I=1R};1h.1j.8J=v(1R){T(k dt 16 1R){c.2I[dt]=1R[dt]}};1h.1j.7n=v(y,m,d){k dt,6n,1z=y+15(1c(m))+1c(d);T(dt 16 c.2I){6n=dt.1b(/^(\\*\\*\\*\\*)/,y).1b(/^(\\d\\d\\d\\d)(\\*\\*)/,"$1"+1c(m));h(6n==1z)q c.2I[dt]};T(dt 16 2I){6n=dt.1b(/^(\\*\\*\\*\\*)/,y).1b(/^(\\d\\d\\d\\d)(\\*\\*)/,"$1"+1c(m));h(6n==1z)q 2I[dt]};q A};1h.1j.aj=v(){q c.1D};1h.1j.8K=v(2Q){c.1U=(15(2Q).L(/^(\\d\\d\\d\\d)(0[1-9]|1[5M])(0[1-9]|[12][0-9]|3[2U])$/)==-1)?A:2Q;h(!c.3b)c.3c()};1h.1j.8L=v(2Q){c.1V=(15(2Q).L(/^(\\d\\d\\d\\d)(0[1-9]|1[5M])(0[1-9]|[12][0-9]|3[2U])$/)==-1)?A:2Q;h(!c.3b)c.3c()};1h.1j.ak=v(6o){h(!6o.17||6o.17!=7||6o.5h("").L(/^([0|1]{7})$/)==-1){h(3r){47"cj ck cl cn co 6p 9m ak";};q A};c.3C=6o;h(!c.3b)c.3c()};1h.1j.8M=v(2A){c.2m={};c.7q(2A)};1h.1j.8N=v(2A){c.26={};c.7r(2A)};1h.1j.7q=v(2A){c.26=A;c.2m=c.2m||{};k 1s;T(1s 16 2A){h((15(1s).L(5g)!=-1&&2A[1s]==1)||(15(1s).L(2B)!=-1&&15(2A[1s]).L(2B)!=-1)){c.2m[1s]=2A[1s]}};h(!c.3b)c.3c()};1h.1j.7r=v(2A){c.2m=A;c.26=c.26||{};k 1s;T(1s 16 2A){h((15(1s).L(5g)!=-1&&2A[1s]==1)||(15(1s).L(2B)!=-1&&15(2A[1s]).L(2B)!=-1)){c.26[1s]=2A[1s]}};h(!c.3b)c.3c()};1h.1j.8O=v(1z){h(15(1z).L(5g)==-1){q A};k 1X=1z.1X(2B),dt=P 14(+1X[2],+1X[3]-1,+1X[4]);h(!dt||7s(dt)||!c.6q(dt)){q A};c.1D=P 14(dt);h(!c.3b)c.2g();c.3P("6O",c.5Z());c.6j()};1h.1j.9U=v(){h(c.1D&&!c.6q(c.1D)){c.1D=1a};h(!c.3b)c.2g()};1h.1j.aa=v(){h(c.5W||c.1T){q};2l(u,"7t",c.3p);2l(u,"4S",c.2F);/*@1L@h(@2W)1C(u,"7t",c.3p);2l(u,"6m",c.3p);@24@*/h(1q.76){1C(u,"7t",c.3p);2l(u,"6m",c.3p)};c.1T=A;c.5W=O};1h.1j.77=v(){h(!c.5W){q};1C(u,"7t",c.3p);1C(u,"6m",c.3p);1C(u,"4S",c.2F);c.5W=A};1h.1j.3o=v(){c.5T=A;1q.68(c.5V)};1h.1j.8q=v(7u){c.R.1d.4b=7u/4E;c.R.1d.cp=\'cq(4b=\'+7u+\')\';c.4b=7u};1h.1j.8e=v(y,m){k 4i=22(m-1,y),1t={},8P=c.8Q(y,m,A),8R=c.8Q(y,m,O),2R=y+1c(m);T(k i=1;i<=4i;i++){dt=2R+""+1c(i);h(8P){1t[dt]=(dt 16 8P)?0:1}I h(8R){1t[dt]=(dt 16 8R)?1:0}I{1t[dt]=1}};q 1t};1h.1j.8Q=v(y,m,5w){k 7v=5w?c.26:c.2m;h(!7v){q A};m=1c(m);k 1t={},7w=c.4j,7x=c.4k,3G,4u,8S,8T;h(!7x||!7w){7w=c.4j=y+1c(m)+"2U";7x=c.4k=y+1c(m)+1c(22(m,y))};T(dt 16 7v){3G=dt.1b(/^(\\*\\*\\*\\*)/,y).1b(/^(\\d\\d\\d\\d)(\\*\\*)/,"$1"+m);4u=7v[dt];h(4u==1){h(2e(3G.Q(0,6))>=+15(c.4j).Q(0,6)&&2e(3G.Q(0,6))<=+15(c.4k).Q(0,6)){1t[3G]=1};3v};h(+15(c.4j).Q(0,6)>=2e(3G.Q(0,6))&&+15(c.4k).Q(0,6)<=2e(4u.Q(0,6))){h(2e(3G.Q(0,6))==2e(4u.Q(0,6))){T(k i=3G;i<=4u;i++){1t[i]=1};3v};8S=2e(3G.Q(0,6))==+15(c.4j).Q(0,6)?3G:7w;8T=2e(4u.Q(0,6))==+15(c.4k).Q(0,6)?4u:7x;T(k i=+8S;i<=+8T;i++){1t[i]=1}}};q 1t};1h.1j.9J=v(1o){k 3f=c.al(1o);h(5d){q 3f};k 8U=(u.6T&&u.6T!="9K")?u.3t:u.3d,am=u.8V?8U.3Q:1q.9I,ao=u.8V?8U.3R:1q.7V,8W=c.ap(1o);q[3f[0]-8W[0]+am,3f[1]-8W[1]+ao]};1h.1j.ap=v(1o){k t=0,l=0;do{t+=1o.3R||0;l+=1o.3Q||0;1o=1o.2i}2o(1o);q[l,t]};1h.1j.al=v(1o){k t=0,l=0;do{t+=1o.cr||0;l+=1o.cs||0;1o=1o.ct}2o(1o);q[l,t]};1h.1j.a5=v(){k 8X=A,1u;T(k i=c.1U;i<=c.1V;i++){1u=15(i);h(!c.3C[P 14(1u.Q(0,4),1u.Q(6,2),1u.Q(4,2)).3A()-1]){8X=O;1f}};h(!8X){c.3C=[0,0,0,0,0,0,0]}};1h.1j.3k=v(1u){h(!c.1U&&!c.1V){q A};k 7y=A;h(!1u){7y=O;1u=c.B};k d=1c(1u.1x()),m=1c(1u.1g()+1),y=1u.1e(),dt=15(y)+15(m)+15(d);h(c.1U&&+dt<+c.1U){h(!7y){q O};c.B=P 14(c.1U.Q(0,4),c.1U.Q(4,2)-1,c.1U.Q(6,2),5,0,0);q A};h(c.1V&&+dt>+c.1V){h(!7y){q O};c.B=P 14(c.1V.Q(0,4),c.1V.Q(4,2)-1,c.1V.Q(6,2),5,0,0)};q A};1h.1j.6q=v(1u){h(!1u)q A;k d=1c(1u.1x()),m=1c(1u.1g()+1),y=1u.1e(),dt=15(y)+15(m)+15(d),dd=c.8e(y,m),aq=1u.3A()==0?7:1u.3A();h((c.1U&&+dt<+c.1U)||(c.1V&&+dt>+c.1V)||(dd[dt]==0)||c.3C[aq-1]){q A};q O};1h.1j.51=v(4v){2o(c.2w.2a){c.2w.3i(c.2w.2a)};h(4v&&c.3E.L(/-S|S-/)!=-1&&4v.L(/([0-9]{1,2})(6r|3H|6s|1W)/)!=-1){4v=4v.1b(/([0-9]{1,2})(6r|3H|6s|1W)/,"$1<4w>$2").5P(/<4w>|<\\/4w>/);k dc=u.cu();T(k i=0,3H;3H=4v[i];i++){h(/^(6r|3H|6s|1W)$/.5I(3H)){k 4w=u.1J("4w");4w.18(u.1Y(3H));dc.18(4w)}I{dc.18(u.1Y(3H))}};c.2w.18(dc)}I{c.2w.18(u.1Y(4v?4v:1E(9)))}};1h.1j.3c=v(){k cv=c.1D,m=A,dt,1B,U,4x,d,y,7z;c.1D=1a;T(1B 16 c.2n){U=u.1m(1B);h(!U){q};7z=15(U.1p);4x=c.2n[1B];dt=A;h(!(7z=="")){T(k i=0,1I;1I=c.4K[1B][i];i++){dt=54(7z,1I);h(dt){1f}}};h(dt){h(4x.L(P 2M(\'[\'+7K+\']\'))!=-1){d=dt.1x()};h(4x.L(P 2M(\'[\'+7L+\']\'))!=-1){m=dt.1g()};h(4x.L(P 2M(\'[\'+7M+\']\'))!=-1){y=dt.1e()}}};dt=A;h(d&&!(m===A)&&y){h(+d>22(+m,+y)){d=22(+m,+y);dt=A}I{dt=P 14(+y,+m,+d)}};h(!dt||7s(dt)){k 6t=P 14(y||P 14().1e(),!(m===A)?m:P 14().1g(),1);c.B=c.1F?P 14(+c.1F.Q(0,4),+c.1F.Q(4,2)-1,+c.1F.Q(6,2)):P 14(6t.1e(),6t.1g(),1N.46(+d||P 14().1x(),22(6t.1g(),6t.1e())));c.B.6N(5);c.3k();c.2g();q};dt.6N(5);c.B=P 14(dt);c.3k();h(dt.5E()==c.B.5E()&&c.6q(c.B)){c.1D=P 14(c.B)};h(c.5j)c.2g();c.6j(O)};1h.1j.ar=v(U,as){T(k 6u=U.C.17-1;6u>=0;6u--){h(U.C[6u].1p==as){U.cw=6u;q}}};1h.1j.6j=v(1T){h(!c.1D){q};k d=1c(c.1D.1x()),m=1c(c.1D.1g()+1),y=c.1D.1e(),X=A,1B,U,4x,7A;1T=!!1T;T(1B 16 c.2n){U=u.1m(1B);h(!U)q;h(!X)X=U;4x=c.2n[1B];7A=3j(c.1D,4x,6C);h(U.25.2b()=="5x"){U.1p=7A}I{c.ar(U,7A)}};h(c.1P){c.1T=O;c.2g();c.1T=A};h(c.5j){h(X.1w&&X.1w!="3e"&&!1T){X.63()}}};1h.1j.8D=v(){h(c.1k)q;h(c.1P){c.77();c.5o();c.1T=O;c.R.G=c.R.G.1b(/dp-1k/,"")+" dp-1k";c.1A.4T=c.1A.4o=c.1A.4U=c.1A.2F=1a;1C(u,"4S",c.2F);1C(u,"5u",c.4V)}I{h(c.2Z)c.3V();k H=u.1m("1i-H-"+c.E);h(H){H.G=H.G.1b(/dp-1k/,"")+" dp-1k";2u(H,"1k",O);H.3p=H.4o=v(){q A};H.2Y(!/*@1L!@*/A?"3h":"61","-1");H.3h=-1}};68(c.5V);c.1k=O};1h.1j.at=v(){h(!c.1k)q;h(c.1P){c.5o();c.1T=O;c.2g();c.R.G=c.R.G.1b(/dp-1k/,"");c.1k=A;c.1A.4T=c.4T;c.1A.4U=c.4U;c.1A.4o=c.4o;c.1A.2F=c.2F}I{k H=u.1m("1i-H-"+c.E);h(H){H.G=H.G.1b(/dp-1k/,"");2u(H,"1k",A);c.8E(H)}};c.1k=A};1h.1j.70=v(){k 2h=P 14();c.6e.G=c.6e.G.1b("1i-1k","");h(c.3k(2h)||(c.B.1x()==2h.1x()&&c.B.1g()==2h.1g()&&c.B.1e()==2h.1e())){c.6e.G+=" 1i-1k"}};1h.1j.7e=v(){k 6c=c.1Z?8:7,5y=c.1Z?1:0,d,H;T(k 1n=5y;1n<6c;1n++){d=(c.2O+(1n-5y))%7;c.2z[1n].23=6l(d,A);h(1n>5y){H=c.2z[1n].1M("1l")[0];2o(H.2a){H.3i(H.2a)};H.18(u.1Y(6l(d,O)));H.23=c.2z[1n].23;H.G=H.G.1b(/2f-([0-6])/,"")+" 2f-"+d;H=1a}I{2o(c.2z[1n].2a){c.2z[1n].3i(c.2z[1n].2a)};c.2z[1n].18(u.1Y(6l(d,O)))};c.2z[1n].G=c.2z[1n].G.1b(/B-1y-75/g,"");h(c.4P[d]){c.2z[1n].G+=" B-1y-75"}};h(c.2N){c.2g()}};1h.1j.3P=v(1w,au){h(!1w||!(1w 16 c.5l)){q A};k 8Y=A;T(k 7B=0;7B94){k 4s=21.1R[94];h(58&&58.17){T(k i=0;i<58.17;i++){4s=4s.1b("[[%"+i+"%]]",58[i])}};q 4s.1b(/[[%(\\d)%]]/g,"")};q""};k 6l=v(2f,7E){k 1R=21[7E?"3T":"4A"];q 1R.17&&1R.17>2f?1R[2f]:""};k 9W=v(1Q,7E){k 1R=21[7E?"4z":"4y"];q 1R.17&&1R.17>1Q?1R[1Q]:""};k 22=v(6w,7F){6w=(6w+12)%12;q(((0==(7F%4))&&((0!=(7F%4E))||(0==(7F%dv))))&&6w==1)?29:[31,28,31,30,31,30,31,31,30,31,30,31][6w]};k 8B=v(Y){h(Y 16 5J){q 5J[Y]};k 95,98,dw;4Z(95=P 14(Y,0,4)){2D(1x()-(6+3A())%7)};4Z(98=P 14(Y,11,28)){2D(1x()+(7-3A())%7)};5J[Y]=1N.4n((98-95)/dx);q 5J[Y]};k 8g=v(y,m,d){k d=P 14(y,m,d,0,0,0);k aD=d.3A();d.2D(d.1x()-(aD+6)%7+3);k aE=d.aF();d.64(0);d.2D(4);q 1N.4n((aE-d.aF())/(7*dy))+1};k 3j=v(B,1I,59){h(!B||7s(B)){q""};k 45=1I.5P("-"),Z=[],d=B.1x(),D=B.3A(),m=B.1g(),y=B.1e(),9a={"1S":" ","dt":".","4D":"/","ds":"-","cc":",","d":1c(d),"D":59?21.3T[D==0?6:D-1]:3m.3T[D==0?6:D-1],"l":59?21.4A[D==0?6:D-1]:3m.4A[D==0?6:D-1],"j":d,"N":D==0?7:D,"w":D,"W":8g(y,m,d),"M":59?21.4z[m]:3m.4z[m],"F":59?21.4y[m]:3m.4y[m],"m":1c(m+1),"n":m+1,"t":22(m,y),"y":15(y).Q(2,2),"Y":y,"S":["1W","6r","3H","6s"][d%10>3?0:(d%4E-d%10!=10)*d%10]};T(k 2C=0,2c;2c=45[2C];2C++){Z.2d(!(2c 16 9a)?"":9a[2c])};q Z.5h("")};k 54=v(Z,1I){k d=A,m=A,y=A,aG=P 14(),45=1I.1b(/-1S(-1S)+/g,"-1S").5P("-"),dz={"dt":".","4D":"/","ds":"-","cc":","},Z=""+Z;9b:T(k 2C=0,2c;2c=45[2C];2C++){h(Z.17==0){q A};7Q(2c){1r"1S":1r"dt":1r"4D":1r"ds":1r"cc":Z=Z.1b(/^(\\s|\\.|\\/|,|-){1,}/,"");1f;1r"d":1r"j":h(Z.L(/^(3[2U]|[12][0-9]|0?[1-9])/)!=-1){d=+Z.1X(/^(3[2U]|[12][0-9]|0?[1-9])/)[0];Z=Z.Q(Z.1X(/^(3[2U]|[12][0-9]|0?[1-9])/)[0].17);1f}I{q""};1r"D":1r"l":l=3m.4A.3W(3m.3T);h(21.7C){l=l.3W(21.4A).3W(21.3T)};T(k i=0;i22(+m,+y)){q A};k 1u=P 14(y,m,d);q!1u||7s(1u)?A:1u};k aI=v(1o){k 4B;h(1o.2i&&1o.2i.25.2b()=="4B")dA=1o.2i;I{k 5F=u.1M(\'4B\');T(k 5a=0;5a<5F.17;5a++){h((5F[5a][\'aJ\']&&5F[5a][\'aJ\']==1o.E)||(5F[5a].7O(\'T\')==1o.E)){4B=5F[5a];1f}}};h(4B&&!4B.E){4B.E=1o.E+"dB"};q 4B};k 9c=v(){h(2s(1q.3J)=="3Y"){21={1R:3J.1R,4y:3J.4y,4z:3J.4z,4A:3J.4A,3T:3J.3T,2O:("2O"16 3J)?3J.2O:0,7C:O}}I h(!21){21=3m}};k 9d=v(){9c();T(dp 16 K){h(!K[dp].2N)3v;K[dp].2g()}};k aK=v(U){q!(!U||!U.25||!((U.25.2b()=="5x"&&(U.1w=="43"||U.1w=="3e"))||U.25.2b()=="8C"))};k aL=v(C){9c();h(!C.2n){h(3r)47"dC dD dE dF 9e dG dH";q};C.E=(C.E&&(C.E 16 C.2n))?C.E:"";C.4K={};k aM=[7K,7L,7M],6x=[0,0,0],3X,6y,9f,9g,1I,3q,dI,5b,2j,2k;T(k 1B 16 C.2n){U=u.1m(1B);h(!aK(U)){h(3r)47"9h 1o 4Z 9i E 2P \'"+1B+"\' dJ 2P 4a dK 1w dL dM 3M dN 9e 4a dO";q A};h(!C.E)C.E=1B;1I=C.2n[1B];h(!(1I.1X(5f))){h(3r)47"9h 1o 4Z 9i E 2P \'"+1B+"\' aN 4a aO aP B 7G aQ 6p aR: "+1I;q A};3q=[1I];h(C.6z&&(1B 16 C.6z)&&C.6z[1B].17){5b=[];T(k f=0,6A;6A=C.6z[1B][f];f++){h(!(6A.1X(5f))){h(3r)47"9h 1o 4Z 9i E 2P \'"+1B+"\' aN 4a aO aP B 7G aQ 6p aR 9e 4a 6z dP: "+6A;q A};5b.2d(6A)};3q=3q.3W(5b)};3X=[0,0,0];T(k i=0,5G;5G=aM[i];i++){h(1I.L(P 2M(\'(\'+5G+\')\'))!=-1){6x[i]=3X[i]=1;h(U.25.2b()=="5x"){6y=1I.1X(P 2M(\'(\'+5G+\')\'))[0];9f=15(6y+"|"+5G.1b(P 2M("("+6y+")"),"")).1b("||","|");9g=9f.5P("|");5b=[];T(k z=0,9j;9j=3q[z];z++){T(k x=0,7H;7H=9g[x];x++){h(7H==6y)3v;5b.2d(9j.1b(P 2M(\'(\'+5G+\')(-|$)\',\'g\'),7H+"-").1b(/-$/,""))}};3q=3q.3W(5b)}}};C.4K[1B]=3q.3W();h(U.25.2b()=="8C"){2j=2k=0;k 5c=U.C;h(3X[0]&&3X[1]&&3X[2]){k 1z,1F=A;h("2m"16 C){6v(C.2m)};C.26={};T(i=0;i<5c.17;i++){T(k f=0,1I;1I=3q[f];f++){dt=54(5c[i].1p,1I);h(dt){1z=dt.1e()+""+1c(dt.1g()+1)+""+1c(dt.1x());h(!1F)1F=1z;C.26[1z]=1;h(!2j||2e(1z)<2j){2j=1z};h(!2k||2e(1z)>2k){2k=1z};1f}}};h(!C.1F&&1F)C.1F=1F}I h(3X[1]&&3X[2]){k 4m;T(i=0;i<5c.17;i++){T(k f=0,1I;1I=3q[f];f++){dt=54(5c[i].1p,1I);h(dt){4m=dt.1e()+""+1c(dt.1g()+1);h(!2j||2e(4m)<2j){2j=4m};h(!2k||2e(4m)>2k){2k=4m};1f}}};2j+=""+"2U";2k+=""+22(+2k.Q(4,2)-1,+2k.Q(0,4))}I h(3X[2]){k 3w;T(i=0;i<5c.17;i++){T(k f=0,1I;1I=3q[f];f++){dt=54(5c[i].1p,1I);h(dt){3w=dt.1e();h(!2j||2e(3w)<2j){2j=3w};h(!2k||2e(3w)>2k){2k=3w};1f}}};2j+="dQ";2k+="dR"};h(2j&&(!C.1U||(+C.1U<+2j)))C.1U=2j;h(2k&&(!C.1V||(+C.1V>+2j)))C.1V=2k}};h(!(6x[0]&&6x[1]&&6x[2])){h(3r)47"5S 3M dS 8V 2P 4a dT B 45 T 1o: "+U.E;q A};k 5H={2n:C.2n,E:C.E,4K:C.4K,1P:!!(C.1P),2S:C.2S&&u.1m(C.2S)?C.2S:"",1U:C.1U&&15(C.1U).L(2B)!=-1?C.1U:"",1V:C.1V&&15(C.1V).L(2B)!=-1?C.1V:"",3E:C.3E&&15(C.3E).L(5f)!=-1?C.3E:"",8r:!!(C.1P)?O:!!(C.8r),8m:5K||!!(C.1P)?O:!!(C.8m),7p:C.9k&&2s C.9k==\'6K\'?2t(C.9k,10):0,2I:C.2I||{},2T:C.2T&&2s C.2T==\'6K\'&&(C.2T>20&&C.2T<=4E)?2t(+C.2T,10):(!!(C.1P)?4E:2T),8o:!!(C.8o),65:!!(C.dU),1Z:!!(C.1Z),5r:!!(C.5r),4O:"4O"16 C?!!(C.4O):O,1F:C.1F&&15(C.1F).L(2B)!=-1?C.1F:"",8l:aI(U),2H:(C.2H&&u.1m(C.2H))?C.2H:2H&&u.1m(2H)?2H:"",5l:C.aS?C.aS:{},4P:C.4P&&C.4P.17&&C.4P.17==7?C.4P:[0,0,0,0,0,1,1],3C:C.3C&&C.3C.17&&C.3C.17==7?C.3C:[0,0,0,0,0,0,0]};h(C.2m){h(C.26)6v(C.26);5H.2m={};k 1s;T(1s 16 C.2m){h((15(1s).L(5g)!=-1&&C.2m[1s]==1)||(15(1s).L(2B)!=-1&&15(C.2m[1s]).L(2B)!=-1)){5H.2m[1s]=C.2m[1s]}}}I h(C.26){k 1s;5H.26={};T(1s 16 C.26){h((15(1s).L(5g)!=-1&&C.26[1s]==1)||(15(1s).L(2B)!=-1&&15(C.26[1s]).L(2B)!=-1)){5H.26[1s]=C.26[1s]}}};K[C.E]=P 1h(5H);K[C.E].3P("78",K[C.E].5Z())};k ai=v(E){q(!E||!(E 16 K))?A:K[E].2Z};2l(1q,\'aB\',4R);q{2l:v(1t,1w,2p){q 2l(1t,1w,2p)},1C:v(1t,1w,2p){q 1C(1t,1w,2p)},1O:v(e){q 1O(e)},8A:v(J){q 8G(J,A)},3V:v(J){q aA(J)},dV:v(C){aL(C)},dW:v(J){aC(J)},91:v(){91()},3j:v(dt,1I,59){q 3j(dt,1I,59)},3c:v(J){h(!J||!(J 16 K))q A;K[J].3c()},8K:v(J,1z){h(!J||!(J 16 K)){q A};K[J].8K(1z)},8L:v(J,1z){h(!J||!(J 16 K)){q A};K[J].8L(1z)},8I:v(J,1R){h(!J||!(J 16 K)){q A};K[J].8I(1R)},8J:v(J,1R){h(!J||!(J 16 K)){q A};K[J].8J(1R)},54:v(Z,7G){q 54(Z,7G)},dX:v(3s){7N(3s)},8O:v(J,1z){h(!J||!(J 16 K)){q A};K[J].8O(1z)},dY:v(J,dt){h(!J||!(J 16 K))q A;q K[J].6q(dt)},7q:v(J,2R){h(!J||!(J 16 K))q A;K[J].7q(2R)},8M:v(J,2R){h(!J||!(J 16 K))q A;K[J].8M(2R)},7r:v(J,2R){h(!J||!(J 16 K))q A;K[J].7r(2R)},8N:v(J,2R){h(!J||!(J 16 K))q A;K[J].8N(2R)},dZ:v(J){h(!J||!(J 16 K))q A;K[J].8D()},e0:v(J){h(!J||!(J 16 K))q A;K[J].at()},86:v(J,1z){h(!J||!(J 16 K))q A;K[J].86(1z)},e1:v(J){q(!J||!(J 16 K))?A:K[J].aj()},9d:v(){9d()},e2:v(aT){3r=!!(aT)}}})();',62,871,'||||||||||||this|||||if|||var||||||return||||document|function|||||false|date|options||id||className|but|else|inpID|datePickers|search|||true|new|substr|div||for|elem|td||el||str|||||Date|String|in|length|appendChild||null|replace|pad|style|getFullYear|break|getMonth|datePicker|fd|prototype|disabled|span|getElementById|col|element|value|window|case|startD|obj|tmpDate|kc|type|getDate|picker|yyyymmdd|table|elemID|removeEvent|dateSet|getTitleTranslation|cursorDate|iePopUp|row|fmt|createElement|tr|cc_on|getElementsByTagName|Math|stopEvent|staticPos|month|titles|sp|noFocus|rangeLow|rangeHigh|th|match|createTextNode|showWeeks||localeImport|daysInMonth|title|end|tagName|enabledDates||||firstChild|toLowerCase|part|push|Number|day|updateTable|today|parentNode|myMin|myMax|addEvent|disabledDates|formElements|while|fn|year|statusText|typeof|parseInt|setARIAProperty|cName|statusBar|prev|next|ths|dateObj|rangeRegExp|pt|setDate|currentStub|onmousedown|details|describedBy|bespokeTitles|err|try|catch|RegExp|created|firstDayOfWeek|of|range|dts|positioned|finalOpacity|01|script|_win32|event|setAttribute|visible|||||||||||monthInc|inUpdate|setDateFromInput|body|hidden|pos|px|tabIndex|removeChild|printFormattedDate|outOfRange|currentDate|localeDefaults|cellDate|stopTimer|onkeydown|fmtBag|debug|json|documentElement|setARIARole|continue|yyyy|display|hover|out|getDay|curr|disabledDays|onmousewheel|statusFormat|rows|dt1|nd|kbEvent|fdLocale|languageTag|top|not|yearInc|opacityTo|callback|scrollLeft|scrollTop|spnC|dayAbbrs|active|hide|concat|tmpPartsFound|object|nbsp||||text|mousewheel|parts|min|throw|||the|opacity|clickActivated|isIE7|left|selectable|cellAdded|firstColIndex|dpm|firstDateShown|lastDateShown|weekDay|yyyymm|round|onclick|cols|autoFocus|butt|txt|inpId|dt2|msg|sup|elemFmt|fullMonths|monthAbbrs|fullDays|label|titleFormat|sl|100|scriptFiles|fullParts|tmpParts|parentWindow|thing|formatMasks|_jscript_version|visibility|spn|constrainSelection|highlightDays|timerInc|destroy|mousedown|onmouseover|onmouseout|clearTimer|colspan|tableHead|drag|with||updateStatus|button|currentTR|parseDateString|tdm||tdy|replacements|useImportedLocale|lbl|newFormats|selOptions|isOpera|placeholder|validFmtRegExp|wcDateRegExp|join|on|fullCreate|interval|callbacks|prop|offsetHeight|removeOldFocus|setNewFocus|lm|fillGrid|wkThs|header|mouseup|dragEnabledCN|enabled|input|colOffset|butPrevYear|fade|target|origEl|delta|getTime|labelList|testPart|opts|test|weeksInYearCache|nodrag|formatParts|012|lang|bases|split|addEventListener|JSON|Could|timerSet|fadeTimer|timer|kbEventsAdded|selectedTD|delayedUpdate|createCbArgObj|osh|tabindex|ymd|focus|setMonth|noToday|stub|titleBar|clearTimeout|createTH|unselectable|tableBody|colspanTotal|butPrevMonth|butToday|butNextYear|butNextMonth|mouseDownElem|hideAll|returnFormattedDate|inc|getDayTranslation|keydown|dtFull|dayArray|to|canDateBeSelected|st|rd|newDate|opt|delete|nMonth|partsFound|matchedPart|dateFormats|bDft|languageInfo|returnLocaleDate|mouseWheel|cellFormat|head|src|html|string|describedby|number|parse|dayInc|setHours|dateset|mm|block|osw|trueBody|compatMode|abs|onblur|onfocus|unused|no|setTimeout|disableTodayButton|bespokeRenderClass|nm|currentYYYYMM|selected|highlight|devicePixelRatio|removeOnFocusEvents|create|thClassName|none|tableFoot|datepicker|tbody|updateTableHeaders|pageX|clientX|pageY|clientY|incs|check|dateYYYYMM|keyCode|getBespokeTitle|buttonEvent|bespokeTabIndex|addDisabledDates|addEnabledDates|isNaN|keypress|op|deDates|lower|upper|level|elemVal|fmtDate|func|imported|nodeList|abbreviation|nYear|format|indPart|datePickerController|buttonTabIndex|dParts|mParts|yParts|affectJSON|getAttribute|key|switch|removeEventListener|role|mx|my|pageYOffset|reposition|0px|offsetWidth|sOffsets|width|height|selection|screen|reader|cloneNode|setCursorDate|showHideButtons|dateSetD||weekDayC|daySub|stubN|stubP|getDates|tds|getWeekNumber|week|mouseout|DOMMouseScroll|createThAndButton|labelledBy|dragDisabled|presentation|hideInput|diff|setOpacity|noFadeEffect|trackDrag|diffx|diffy|stopDrag|srcElement|hideDP|800|cnt|show|getWeeksInYear|select|disableDatePicker|addButtonEvents|dpVisible|showDatePicker|inp|setBespokeTitles|addBespokeTitles|setRangeLow|setRangeHigh|setDisabledDates|setEnabledDates|setSelectedDate|dds|getGenericDates|eds|rngLower|rngUpper|iebody|all|posReal|clearDayFound|ret|arguments|item|cleanUp|fe|exception|num|X1|||X2||flags|loopLabel|updateLanguage|loadLanguage|within|newParts|indParts|The|and|bFmt|bespokeTabindex|Object|call|opera|isMoz|navigator|userAgent|parseUILanguage|scriptInner|parseJSON|loc|javascript|buttontabindex|cellformat|parseCellFormat|titleformat|attachEvent|detachEvent|stopPropagation|Function|parent|property|changeHandler|getScrollOffsets|pageXOffset|truePosition|BackCompat|fitsBottom|fitsTop|clientWidth|addAccessibleDate|noS|setFullYear|abbr|weekDayN|weekDayP|checkSelectedDate|mmdd|getMonthTranslation|resizeInlineDiv|locate|associated|insertBefore|nextSibling|tfoot|thead|scope|equaliseDates|mousemove|zIndex|reg|previousSibling|addOnFocusEvents|wheelDelta|detail|charCode|ctrlKey|nodeType|default|createButton|isVisible|returnSelectedDate|setDisabledDays|cumulativeOffset|dsocleft||dsoctop|realOffset|wd|setSelectIndex|indx|enableDatePicker|args|May|Previous|Next|Today|Week|hideDatePicker|unload|destroySingleDatePicker|DoW|ms|valueOf|now|1234|findLabelForElement|htmlFor|checkElem|addDatePicker|testParts|has|following|incorrect|assigned|it|callbackFunctions|dbg|toString|Opera|mozilla|compatible|webkit|uniqueId|fromCharCode|160|dividors|dvParts|innerHTML|lastIndexOf|js|charSet|utf|base|childNodes|xml|en|finalopacity|bespoketitles|0000|preventDefault|cancelBubble|returnValue|self|Array|Image|ActiveXObject|gim|bfunction|aria|cursorTD|defaults|dynDisabledDates|maxHeight|undefined|clientHeight|noCallback|redraw|firstDateDisplayed|lastDateDisplayed|floor|mouseover|colSpan|labelledby|datePickerTable|iframe|iehack|scrolling|frameBorder|name|iePopUpHack|static|300|grid|statusbar|u00AB|u2039|u203A|u00BB|gridcell|columnheader|rowheader|trs|weeks|displayed|domcreate|9999|accellerator|1200|10000|120|version|104|tmp|cursorYYYYMM|toElement|relatedTarget|nodeValue|||change|href|control|haspopup|dombuttoncreate|Invalid|values|located||when|attempting|filter|alpha|offsetTop|offsetLeft|offsetParent|createDocumentFragment|origDateSet|selectedIndex|January||February|March|April|June|July|August|September|October|November|December|Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Oct|Nov|Dec|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Mon|Tue|Wed|Thu|Fri|Sat|Sun|Show|Calendar|wk|Select|||Click|u0026|Drag|move|Display|u201C|u201D|first|Go|u2019s|||Disabled|joinNodeLists|||persisted|400|NW|604800000|864e5|divds|lebel|_label|No|form|elements|stipulated|initialisation|parameters|fmtParts|is|wrong|or|does|exist|DOM|parameter|0101|1231|find|required|noTodayButton|createDatePicker|destroyDatePicker|setGlobalVars|dateValidForSelection|disable|enable|getSelectedDate|setDebug'.split('|'),0,{})) \ No newline at end of file diff --git a/dp/gradient-e5e5e5-ffffff.gif b/dp/gradient-e5e5e5-ffffff.gif new file mode 100644 index 0000000000000000000000000000000000000000..72a0d3ee6aa3df255245125b5fdca9287640951c GIT binary patch literal 526 zcmV+p0`dJvNk%w1VI}}u0K@+9<3>gnm}=;-L@=jZ0;=H=z( z|Ns900000000000A^8LW000~SEC2ui044xi000I5;3ke_X`X1Ru59bRa4gSSZQppV z?|kq7z#uO}EEin3mE$jQpf%+1ct4$;!n)YaD4(GA+$+}+;a z;Njxq;tb~J=;`X~?CtLF?hEqs^!4`l`1$(#`U?L400RmfNU)&6g9Z~QT*$DY!-o(f zN}MPWfyIj$Giuz(v7^V29uJ5dNwTELlPFV*s$9vkrOT8CV#=IJv!>0PICJXES)ixS zpFo2O9ZIyQ(V_&BDqYI7sne%Wqe`7hwJOvBShH%~%C)Q4uVBN99ZUABfU{`Rs$I*r zt=qS7(BTJr4xw7TUm@{kM Q%(=7Y&!9t#P8 diff --git a/editorconfigs/tinymceconfig_for_calendar.php b/editorconfigs/tinymceconfig_for_calendar.php new file mode 100644 index 0000000..0639153 --- /dev/null +++ b/editorconfigs/tinymceconfig_for_calendar.php @@ -0,0 +1,110 @@ + diff --git a/fckeditor/FCKeditor/FCKeditor_for_Calendar.txt b/fckeditor/FCKeditor/FCKeditor_for_Calendar.txt new file mode 100644 index 0000000..22ce10f --- /dev/null +++ b/fckeditor/FCKeditor/FCKeditor_for_Calendar.txt @@ -0,0 +1,11 @@ +Simplyfied FCKeditor for Calendar-Plugin based on +normal FCKeditor from CMSimple_XH v 1.4. + +The standard FCKeditor from CMSimple v1.4 works also, +except \plugins\calendar\fckeditor\FCKeditor\editor\plugins\sitelink\sitelink.php, +where some slight adjustments are required (for details see in the file). + +Copyright: +FCKeditor-Integration for CMSimple, FCKeditor4CMSimple +2007-2009 Connie Mller-Gdecke, Holger Irmler +This work is licensed under GNU General Public License Version 2 or later (GPL) diff --git a/fckeditor/FCKeditor/editor/css/behaviors/disablehandles.htc b/fckeditor/FCKeditor/editor/css/behaviors/disablehandles.htc new file mode 100644 index 0000000..8dfb661 --- /dev/null +++ b/fckeditor/FCKeditor/editor/css/behaviors/disablehandles.htc @@ -0,0 +1,15 @@ + + + + + diff --git a/fckeditor/FCKeditor/editor/css/behaviors/showtableborders.htc b/fckeditor/FCKeditor/editor/css/behaviors/showtableborders.htc new file mode 100644 index 0000000..77418b9 --- /dev/null +++ b/fckeditor/FCKeditor/editor/css/behaviors/showtableborders.htc @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/fckeditor/FCKeditor/editor/css/fck_editorarea.css b/fckeditor/FCKeditor/editor/css/fck_editorarea.css new file mode 100644 index 0000000..50cfe0e --- /dev/null +++ b/fckeditor/FCKeditor/editor/css/fck_editorarea.css @@ -0,0 +1,110 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This is the default CSS file used by the editor area. It defines the + * initial font of the editor and background color. + * + * A user can configure the editor to use another CSS file. Just change + * the value of the FCKConfig.EditorAreaCSS key in the configuration + * file. + */ + +/** + * The "body" styles should match your editor web site, mainly regarding + * background color and font family and size. + */ + +body +{ + background-color: #ffffff; + padding: 5px 5px 5px 5px; + margin: 0px; +} + +body, td +{ + font-family: Arial, Verdana, sans-serif; + font-size: 12px; +} + +a[href] +{ + color: -moz-hyperlinktext !important; /* For Firefox... mark as important, otherwise it becomes black */ + text-decoration: -moz-anchor-decoration; /* For Firefox 3, otherwise no underline will be used */ +} + +/** + * Just uncomment the following block if you want to avoid spaces between + * paragraphs. Remember to apply the same style in your output front end page. + */ + +/* +p, ul, li +{ + margin-top: 0px; + margin-bottom: 0px; +} +*/ + +/** + * Uncomment the following block, or only selected lines if appropriate, + * if you have some style items that would break the styles combo box. + * You can also write other CSS overrides inside the style block below + * as needed and they will be applied to inside the style combo only. + */ + +/* +.SC_Item *, .SC_ItemSelected * +{ + margin: 0px !important; + padding: 0px !important; + text-indent: 0px !important; + clip: auto !important; + position: static !important; +} +*/ + +/** + * The following are some sample styles used in the "Styles" toolbar command. + * You should instead remove them, and include the styles used by the site + * you are using the editor in. + */ + +.Bold +{ + font-weight: bold; +} + +.Title +{ + font-weight: bold; + font-size: 18px; + color: #cc3300; +} + +.Code +{ + border: #8b4513 1px solid; + padding-right: 5px; + padding-left: 5px; + color: #000066; + font-family: 'Courier New' , Monospace; + background-color: #ff9933; +} diff --git a/fckeditor/FCKeditor/editor/css/fck_internal.css b/fckeditor/FCKeditor/editor/css/fck_internal.css new file mode 100644 index 0000000..d92c75e --- /dev/null +++ b/fckeditor/FCKeditor/editor/css/fck_internal.css @@ -0,0 +1,199 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This CSS Style Sheet defines rules used by the editor for its internal use. + */ + +/* ######### + * WARNING + * ######### + * When changing this file, the minified version of it must be updated in the + * fckeditor.html file (see FCK_InternalCSS). + */ + +/* Fix to allow putting the caret at the end of the content in Firefox if + clicking below the content. */ +html +{ + min-height: 100%; +} + +table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th +{ + border: #d3d3d3 1px solid; +} + +form +{ + border: 1px dotted #FF0000; + padding: 2px; +} + +.FCK__Flash +{ + border: #a9a9a9 1px solid; + background-position: center center; + background-image: url(images/fck_flashlogo.gif); + background-repeat: no-repeat; + width: 80px; + height: 80px; +} + +.FCK__UnknownObject +{ + border: #a9a9a9 1px solid; + background-position: center center; + background-image: url(images/fck_plugin.gif); + background-repeat: no-repeat; + width: 80px; + height: 80px; +} + +/* Empty anchors images */ +.FCK__Anchor +{ + border: 1px dotted #00F; + background-position: center center; + background-image: url(images/fck_anchor.gif); + background-repeat: no-repeat; + width: 16px; + height: 15px; + vertical-align: middle; +} + +/* Anchors with content */ +.FCK__AnchorC +{ + border: 1px dotted #00F; + background-position: 1px center; + background-image: url(images/fck_anchor.gif); + background-repeat: no-repeat; + padding-left: 18px; +} + +/* Any anchor for non-IE, if we combine it with the previous rule IE ignores all. */ +a[name] +{ + border: 1px dotted #00F; + background-position: 0 center; + background-image: url(images/fck_anchor.gif); + background-repeat: no-repeat; + padding-left: 18px; +} + +.FCK__PageBreak +{ + background-position: center center; + background-image: url(images/fck_pagebreak.gif); + background-repeat: no-repeat; + clear: both; + display: block; + float: none; + width: 100%; + border-top: #999999 1px dotted; + border-bottom: #999999 1px dotted; + border-right: 0px; + border-left: 0px; + height: 5px; +} + +/* Hidden fields */ +.FCK__InputHidden +{ + width: 19px; + height: 18px; + background-image: url(images/fck_hiddenfield.gif); + background-repeat: no-repeat; + vertical-align: text-bottom; + background-position: center center; +} + +.FCK__ShowBlocks p, +.FCK__ShowBlocks div, +.FCK__ShowBlocks pre, +.FCK__ShowBlocks address, +.FCK__ShowBlocks blockquote, +.FCK__ShowBlocks h1, +.FCK__ShowBlocks h2, +.FCK__ShowBlocks h3, +.FCK__ShowBlocks h4, +.FCK__ShowBlocks h5, +.FCK__ShowBlocks h6 +{ + background-repeat: no-repeat; + border: 1px dotted gray; + padding-top: 8px; + padding-left: 8px; +} + +.FCK__ShowBlocks p +{ + background-image: url(images/block_p.png); +} + +.FCK__ShowBlocks div +{ + background-image: url(images/block_div.png); +} + +.FCK__ShowBlocks pre +{ + background-image: url(images/block_pre.png); +} + +.FCK__ShowBlocks address +{ + background-image: url(images/block_address.png); +} + +.FCK__ShowBlocks blockquote +{ + background-image: url(images/block_blockquote.png); +} + +.FCK__ShowBlocks h1 +{ + background-image: url(images/block_h1.png); +} + +.FCK__ShowBlocks h2 +{ + background-image: url(images/block_h2.png); +} + +.FCK__ShowBlocks h3 +{ + background-image: url(images/block_h3.png); +} + +.FCK__ShowBlocks h4 +{ + background-image: url(images/block_h4.png); +} + +.FCK__ShowBlocks h5 +{ + background-image: url(images/block_h5.png); +} + +.FCK__ShowBlocks h6 +{ + background-image: url(images/block_h6.png); +} diff --git a/fckeditor/FCKeditor/editor/css/fck_showtableborders_gecko.css b/fckeditor/FCKeditor/editor/css/fck_showtableborders_gecko.css new file mode 100644 index 0000000..333161f --- /dev/null +++ b/fckeditor/FCKeditor/editor/css/fck_showtableborders_gecko.css @@ -0,0 +1,49 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This CSS Style Sheet defines the rules to show table borders on Gecko. + */ + +/* ######### + * WARNING + * ######### + * When changing this file, the minified version of it must be updated in the + * fckeditor.html file (see FCK_ShowTableBordersCSS). + */ + +/* For tables with the "border" attribute set to "0" */ +table[border="0"], +table[border="0"] > tr > td, table[border="0"] > tr > th, +table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th, +table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th, +table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th +{ + border: #d3d3d3 1px dotted ; +} + +/* For tables with no "border" attribute set */ +table:not([border]), +table:not([border]) > tr > td, table:not([border]) > tr > th, +table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th, +table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th, +table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th +{ + border: #d3d3d3 1px dotted ; +} diff --git a/fckeditor/FCKeditor/editor/css/images/block_address.png b/fckeditor/FCKeditor/editor/css/images/block_address.png new file mode 100644 index 0000000000000000000000000000000000000000..8bbae6e5ad708d9023696ab3a227b227d38c52ea GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^xfDwCDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVokNUIi-}jvbvIB*w!}4}#5q4VH#M(>!MP|ku_QG` zp**uBLm?z1Rl(iUH{gAWY93Hwi>HfYNX4zUQx5VSP~dRx{&@K3=eH?N92=}Qr?6Kk z`FBP+EV$~Wdb4R&+$t??vzRw>)1t*bYTP&SdiUV*jrdtN#h)@9SP|pLck7X~8s}k# zgu1KcJ~!VwYr9#-PJMR8^1S%x;(*XRk+p(qw-{3`tj(>{&Q30}_x)8>@{N0MZhzS7 bugrH3X)o?w_h=nA&^-*Eu6{1-oD!MFdgVos*TFNyzr0pfylPw!}4}#5q4VH#M(>!MP|ku_QG` zp**uBLm?z1Rl(iUH{gAWY93Hwr>Bc!NX4zUAs6`$7_cn4+5Wq@I!mpot?w?t)rv0ck=8q5%o&#@Y@$HwKqC9;r#L3y=m ziRsztKF1z%ByZo+y0Dc0{nfR0_f|d%uGXE?oWDi2{@M1Jhh_EN`6`PdviA!qhc4Xp hQvA|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;VIeuy8>v7c*%H@?66gHf+|;}h2Ir#G#FEq$ zh4Rdj426)4R0VfW-+=cis(C<#o}Mm_Ar-fh6C_xfS*4_;{v9^hWnt8-=cko$DA7_` z@zuj%uAbQJW)`z=fuH#7cLy|5bu5|dL`v|$E%gIE?u$Va$`Kp$iREekWp&q RKOdl>44$rjF6*2UngAfwM|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;ZT-MY8vQ^a*%H@?66gHf+|;}h2Ir#G#FEq$ zh4Rdj426)4R0VfW-+=cis(C<#cAhSdAr-fh6C_xfS*4_;{v{_TKMrP^aiUOQuWs6s zWk+?se2~3pmzR-|uw)zmNxoN%n|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;eQ6OcNjspBY>8_`iF1B#Zfaf$gL6@8Vo7R> zLV0FMhC)b2s)DC!}47L6$^@kkgTe~ HDWM4fvNb)= literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/css/images/block_h3.png b/fckeditor/FCKeditor/editor/css/images/block_h3.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3034faf54dfb53b179f58317baae85250b233c GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^azM<_!3HEh@2Z~zq}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;9eugU`#gX`vL&t&CC>S|xv6<249-QVi6yBi z3gww4844j8sS56%z5(x3RP%re?LA!_Ln>}1CrGd|vr0)x{d=6G{P|^)q2BQTrWqY2 zJjz>bPdJ^p9#M1NbP0 Hl+XkKqp?E8 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/css/images/block_h4.png b/fckeditor/FCKeditor/editor/css/images/block_h4.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3f64de6b97f8b53891b931b353eb2e66a959cd GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^azM<_!3HEh@2Z~zq}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;U2f~{>>EHK*%H@?66gHf+|;}h2Ir#G#FEq$ zh4Rdj426)4R0VfW-+=cis(C<#o}Mm_Ar-fh6C_xfS*4_;{v{_L{_!H|36olo%#{ll z4tVJD8}Wvm*d)M}7xhDIdB3!jl*C0{r@r{CqsA9IyJt-^>V5V&(BKUNgX(m(maolf RN|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;eX*?Fsm(wk*%H@?66gHf+|;}h2Ir#G#FEq$ zh4Rdj426)4R0VfW-+=cis(C<#0iG_7Ar-fh6C_xfS*4_;{w>}t4J4J5vu+%AYHF5P z`O;A>$f+r6-_e)JIbsKDcuE|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;UCYlgRuMoU*%H@?66gHf+|;}h2Ir#G#FEq$ zh4Rdj426)4R0VfW-+=cis(C<#Hl8kyAr-fh6C_xfS*4_;{yk1o{`@k@Q15sE(~J`Z z63V7JX^Ky>b@rvpL^}HF9&pOpbIE3f`$3HbVhju`%(R>8GXp^GX7F_Nb6Mw<&;$T| CZaz%_ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/css/images/block_p.png b/fckeditor/FCKeditor/editor/css/images/block_p.png new file mode 100644 index 0000000000000000000000000000000000000000..d055c514a6c77c69bea7ef2994e060e2d908a722 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^azM<_!3HEh@2Z~zq}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;E#A2+BeZ}*vL&t&CC>S|xv6<249-QVi6yBi z3gww4844j8sS56%z5(x3RP%re4Lw~PLn>}1CrGfCF!j7(;^pQ2fAL38Ng=0L_y5a> sd~`QfF^0PPoCyaGIUJ?R>F8HBd8yr>mdKI;Vst07*(dMF0Q* literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/css/images/block_pre.png b/fckeditor/FCKeditor/editor/css/images/block_pre.png new file mode 100644 index 0000000000000000000000000000000000000000..be8ad26a75ad27b456dd0835d4667ed92fc17cf2 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^azM<_!3HEh@2Z~zq}Y|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfbq+B;E%`hF%_N|ZY>8_`iF1B#Zfaf$gL6@8Vo7R> zLV0FMhC)b2s)DgJ|Uu&?oD;%Ae!z@09(NL_hv#6Slx0y!YR{?r|LJZgAju=f-$sQVWNL{+Tsz18#+~Ke%+zTWns()WcPwy8dQcr!JH# U&i)o#hQ}|Gy#O|EKr=edPZ~8vO4q_`j_G|MH3d zH_!iH9Pr;);s3MyKRjgr`6&F~H2-;B+P@j~|2ED08=?O(&g$W$rvFR(|KB|SuRh_y z{7L`!um2Zm@S;BL-=_J0>*N3R6x?1h|K7ZbUxT&p&ztz9qvT(j!@s3{|Lg_+cISVJ zv-*=__cg)hKTu^+z;8RgcNrf4dkX%iIs7+f_zwmQxPjtN7DfgJGX@=y5|E!5*#0}r zF7VKiY8MG;J!WGy|8S>+g9nR{$%<_pnL1eyq7-)D4dPDxuw%{AWrwr3ZFa6WeDYJ$ zibg+iA!FW(N@o+sd>JNwA?X%ZedBy?6Y)OxwoE>zsncAgCT1Fo&2=-8$xK#V;-bNu zZ|t*iwSZAs`DzosZCTAN^LOuAq8Wdnuup_3Uy||6nTWXp3^O-g*_$KJRGYxSzuJZA zQYMq~Jty@AiQEQH&1BhcnX)peEfLo8X8B-xX9o}Gu2UHu2TD)$*>K)7*sEF4;9}WY zz|vC{5x}F<@+L!o;eZ1}uf&_S4H+8`IWL}|5j<_>F$M-+1~;2SB8L>N@hJKh?6Pq< z^7KrJqTmb(fk%@Xcp2Cdo^AO!sjZPQpnsoEkplyp5!W2P0|6auAxyrkXC$=0s{4ui z^l~{G9DeMpmdtOm*Yb$EAd6q(L`ee|yPs^ir><{U!f-(AfHuRcDf?R)&Nw)z b9J+CuD@{Yf=%(AVjaetTW(q2DFjxZs`Jnz5 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/css/images/fck_hiddenfield.gif b/fckeditor/FCKeditor/editor/css/images/fck_hiddenfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..953f643b60032c36ac92590950577c336f133512 GIT binary patch literal 105 zcmZ?wbhEHb6lM@&n8?8JABg_{Z)j*>U|`SzVg`^n1Cx_W&+?fM`5zlEy44+e;LbT+ zkH8h7N-kQ@I;_|Q}>&=&Wsxvt_U!{00zr0#2QD@sN HCI)K&$9F25 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/css/images/fck_pagebreak.gif b/fckeditor/FCKeditor/editor/css/images/fck_pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d1cffd64af72709b1180b3b0a51bbfe30bcb8c6 GIT binary patch literal 54 zcmZ?wbhEHbR zh=C=r6qdmXSP83OHN-(Ytbw)g9;}1)kN_JY5t872NQTXj3R@u!(&0nc1{%nKOvnN) zWJ3<Tuow2hekg_mPy(fJ5Dvj%(1QWWpd2dT2pok^pb|cX z<8T5_!YTL+s-PN-@Hy1L7jPQBgfnm!zJhab9xlMw@C}%t7V6+4)WaocfJSJ7W@v#{ z_!ho{@8Jh%gUfIQ+Tki(gCF51xDG$VFK`1o;8*w!euqxzf}8LMbi*z96K=yDxC{5- zFZdho!$0r<9>OE&fydAbPv9v$gXi!9{)Ikx3H>m@!2boee%bV-Rk6vdRw`1~B*!a4 z!)Ha}_CjbTd1dLtD_)0!xSxSR&S6#h+AOjC=$NJ|!^K>w`;5}C>at7u@`-CZnySki z3(TcDhg5wx0*k@QFukfaQ)DgIRftWZe8^*LrjOHEOfd85t92z|ueNR8)y zzZhe*VdN@_;}~y|ph<7pW(e6cId6vJ7;E#7qt7fqAh;C1+tbHWieIEkJW=Zq+#w^vl71ZsRdrfq@(<^e1^&`W@hC(N~6h)*;C9q3;E?qn+ zygk~t!N1=>b(b=C$MEs1yYGyz56K@I_>`@IUTy|&2Q_HB8s)?tw*F=zOu-s&YO?;cCksDuw6We99WkRh~a zTY%-XK0meH>_|hfJpO!au4}gDQnUB*O1nTaae>Kdtc^mJ{ig^etV>B$>)@~Y9QL~EBpu#Lhi z+i`K)We?|+;xjsBnxUsy6;d=EEo3%JRkSmup*nZ39kAiBebJAVN1jWLR8f zS58&B^{yuO!b8?3v*EK86quJwN!LF9G=ap|ta~?KK6)V#3WHgT0 zd_6JOQ4!Ip5<2%un>A}Z@=yI@(a&SrS!CH>+XBp7CP=_@709~ MFP~hub&xXkKL?Jd#{d8T literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.css b/fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.css new file mode 100644 index 0000000..1119e44 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.css @@ -0,0 +1,85 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This is the CSS file used for interface details in some dialog + * windows. + */ + +/* ######### + * WARNING + * ######### + * When changing this file, the minified version of it must be updated in the + * fck_dialog_common.js file (see GetCommonDialogCss). + */ + +.ImagePreviewArea +{ + border: #000000 1px solid; + overflow: auto; + width: 100%; + height: 170px; + background-color: #ffffff; +} + +.FlashPreviewArea +{ + border: #000000 1px solid; + padding: 5px; + overflow: auto; + width: 100%; + height: 170px; + background-color: #ffffff; +} + +.BtnReset +{ + float: left; + background-position: center center; + background-image: url(images/reset.gif); + width: 16px; + height: 16px; + background-repeat: no-repeat; + border: 1px none; + font-size: 1px ; +} + +.BtnLocked, .BtnUnlocked +{ + float: left; + background-position: center center; + background-image: url(images/locked.gif); + width: 16px; + height: 16px; + background-repeat: no-repeat; + border: none 1px; + font-size: 1px ; +} + +.BtnUnlocked +{ + background-image: url(images/unlocked.gif); +} + +.BtnOver +{ + border: outset 1px; + cursor: pointer; + cursor: hand; +} diff --git a/fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.js b/fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.js new file mode 100644 index 0000000..478d3d5 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/common/fck_dialog_common.js @@ -0,0 +1,347 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Useful functions used by almost all dialog window pages. + * Dialogs should link to this file as the very first script on the page. + */ + +// Automatically detect the correct document.domain (#123). +(function() +{ + var d = document.domain ; + + while ( true ) + { + // Test if we can access a parent property. + try + { + var test = window.parent.document.domain ; + break ; + } + catch( e ) {} + + // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ... + d = d.replace( /.*?(?:\.|$)/, '' ) ; + + if ( d.length == 0 ) + break ; // It was not able to detect the domain. + + try + { + document.domain = d ; + } + catch (e) + { + break ; + } + } +})() ; + +// Attention: FCKConfig must be available in the page. +function GetCommonDialogCss( prefix ) +{ + // CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt). + return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ; +} + +// Gets a element by its Id. Used for shorter coding. +function GetE( elementId ) +{ + return document.getElementById( elementId ) ; +} + +function ShowE( element, isVisible ) +{ + if ( typeof( element ) == 'string' ) + element = GetE( element ) ; + element.style.display = isVisible ? '' : 'none' ; +} + +function SetAttribute( element, attName, attValue ) +{ + if ( attValue == null || attValue.length == 0 ) + element.removeAttribute( attName, 0 ) ; // 0 : Case Insensitive + else + element.setAttribute( attName, attValue, 0 ) ; // 0 : Case Insensitive +} + +function GetAttribute( element, attName, valueIfNull ) +{ + var oAtt = element.attributes[attName] ; + + if ( oAtt == null || !oAtt.specified ) + return valueIfNull ? valueIfNull : '' ; + + var oValue = element.getAttribute( attName, 2 ) ; + + if ( oValue == null ) + oValue = oAtt.nodeValue ; + + return ( oValue == null ? valueIfNull : oValue ) ; +} + +function SelectField( elementId ) +{ + var element = GetE( elementId ) ; + element.focus() ; + + // element.select may not be available for some fields (like + + + + + + + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_button.html b/fckeditor/FCKeditor/editor/dialog/fck_button.html new file mode 100644 index 0000000..9351013 --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_button.html @@ -0,0 +1,104 @@ + + + + + Button Properties + + + + + + + + + + +
    + + + + + + + + + + +
    + Name
    + +
    + Text (Value)
    + +
    + Type
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_checkbox.html b/fckeditor/FCKeditor/editor/dialog/fck_checkbox.html new file mode 100644 index 0000000..624c7df --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_checkbox.html @@ -0,0 +1,104 @@ + + + + + Checkbox Properties + + + + + + + + + + +
    + + + + + + + + + + +
    + Name
    + +
    + Value
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_colorselector.html b/fckeditor/FCKeditor/editor/dialog/fck_colorselector.html new file mode 100644 index 0000000..0f2aaac --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_colorselector.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + +
    + + + + + +
    + +
    +
    + Highlight +
    +
     
    + Selected +
    + +
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/dialog/fck_div.html b/fckeditor/FCKeditor/editor/dialog/fck_div.html new file mode 100644 index 0000000..524c66a --- /dev/null +++ b/fckeditor/FCKeditor/editor/dialog/fck_div.html @@ -0,0 +1,396 @@ + + + + + + + + + + + +

    ';return C?'Disable SCAYT':'Enable SCAYT';};var Z=function(tooltip,style){this.Command=FCKCommands.GetCommand('Scayt');this.CommandName='Scayt';this.Label=this.GetLabel();this.Tooltip=FCKLang.ScaytTitle;this.Style=1;};Z.prototype=new FCKToolbarSpecialCombo;Z.prototype.CreateItems=function(){this._Combo.AddItem('Trigger','Enable SCAYT');this._Combo.AddItem('Options',FCKLang.ScaytTitleOptions||"Options");this._Combo.AddItem('Langs',FCKLang.ScaytTitleLangs||"Languages");this._Combo.AddItem('About',FCKLang.ScaytTitleAbout||"About");};Z.prototype.GetLabel=function(){var a=FCKConfig.SkinPath+'fck_strip.gif';return FCKBrowserInfo.IsIE?'
    ':'';};function ScaytMessage(m){m&&alert(m);};var b=function(){name='ScaytContext';};b.prototype.Execute=function(contextInfo){var c=contextInfo&&contextInfo.action,g=c&&contextInfo.node,Q=window.scayt_control;if (g){switch (c){case 'Suggestion':Q.replace(g,contextInfo.suggestion);break;case 'Ignore':Q.ignore(g);break;case 'Ignore All':Q.ignoreAll(g);break;case 'Add Word':var E=FCK.EditorWindow.parent.parent;E.scayt.addWordToUserDictionary(g);break;}}};function InitSetup(){FCK.ContextMenu.RegisterListener({AddItems:function(menu){var E=FCK.EditorWindow.parent.parent;var Q=window.scayt_control,P=E.scayt;if (!Q) return;var g=Q.getScaytNode();if (!g) return;var h=P.getSuggestion(Q.getWord(g),Q.getLang());if (!h||!h.length) return;menu.AddSeparator();var j=FCK.Config.ScaytMaxSuggestions||5;var k=(j==-1)?h.length:j;for (var i=0;i';G.open();G.write(''+H+''+document.getElementById('xToolbarSpace').innerHTML+'');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (window.onresize){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save(true);var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})(); +var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}; +var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}}; +var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}; +var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;iVil du rense teksten før den indsættes?", +NotCompatiblePaste : "Denne kommando er tilgændelig i Internet Explorer 5.5 eller senere.
    Vil du indsætte teksten uden at rense den ?", +UnknownToolbarItem : "Ukendt værktøjslinjeobjekt \"%1\"!", +UnknownCommand : "Ukendt kommandonavn \"%1\"!", +NotImplemented : "Kommandoen er ikke implementeret!", +UnknownToolbarSet : "Værktøjslinjen \"%1\" eksisterer ikke!", +NoActiveX : "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.
    Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.", +BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!
    Slå pop-up blokering fra.", +DialogBlocked : "Dialogvinduet kunne ikke åbnes!
    Slå pop-up blokering fra.", +VisitLinkBlocked : "Det var ikke muligt at åbne et nyt vindue. Tjek, at ingen popup-blokkere er aktive.", + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Annuller", +DlgBtnClose : "Luk", +DlgBtnBrowseServer : "Gennemse...", +DlgAdvancedTag : "Avanceret", +DlgOpOther : "", +DlgInfoTab : "Generelt", +DlgAlertUrl : "Indtast URL", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Id", +DlgGenLangDir : "Tekstretning", +DlgGenLangDirLtr : "Fra venstre mod højre (LTR)", +DlgGenLangDirRtl : "Fra højre mod venstre (RTL)", +DlgGenLangCode : "Sprogkode", +DlgGenAccessKey : "Genvejstast", +DlgGenName : "Navn", +DlgGenTabIndex : "Tabulator indeks", +DlgGenLongDescr : "Udvidet beskrivelse", +DlgGenClass : "Typografiark", +DlgGenTitle : "Titel", +DlgGenContType : "Indholdstype", +DlgGenLinkCharset : "Tegnsæt", +DlgGenStyle : "Typografi", + +// Image Dialog +DlgImgTitle : "Egenskaber for billede", +DlgImgInfoTab : "Generelt", +DlgImgBtnUpload : "Upload", +DlgImgURL : "URL", +DlgImgUpload : "Upload", +DlgImgAlt : "Alternativ tekst", +DlgImgWidth : "Bredde", +DlgImgHeight : "Højde", +DlgImgLockRatio : "Lås størrelsesforhold", +DlgBtnResetSize : "Nulstil størrelse", +DlgImgBorder : "Ramme", +DlgImgHSpace : "HMargen", +DlgImgVSpace : "VMargen", +DlgImgAlign : "Justering", +DlgImgAlignLeft : "Venstre", +DlgImgAlignAbsBottom: "Absolut nederst", +DlgImgAlignAbsMiddle: "Absolut centreret", +DlgImgAlignBaseline : "Grundlinje", +DlgImgAlignBottom : "Nederst", +DlgImgAlignMiddle : "Centreret", +DlgImgAlignRight : "Højre", +DlgImgAlignTextTop : "Toppen af teksten", +DlgImgAlignTop : "Øverst", +DlgImgPreview : "Vis eksempel", +DlgImgAlertUrl : "Indtast stien til billedet", +DlgImgLinkTab : "Hyperlink", + +// Flash Dialog +DlgFlashTitle : "Egenskaber for Flash", +DlgFlashChkPlay : "Automatisk afspilning", +DlgFlashChkLoop : "Gentagelse", +DlgFlashChkMenu : "Vis Flash menu", +DlgFlashScale : "Skalér", +DlgFlashScaleAll : "Vis alt", +DlgFlashScaleNoBorder : "Ingen ramme", +DlgFlashScaleFit : "Tilpas størrelse", + +// Link Dialog +DlgLnkWindowTitle : "Egenskaber for hyperlink", +DlgLnkInfoTab : "Generelt", +DlgLnkTargetTab : "Mål", + +DlgLnkType : "Hyperlink type", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Bogmærke på denne side", +DlgLnkTypeEMail : "E-mail", +DlgLnkProto : "Protokol", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Vælg et anker", +DlgLnkAnchorByName : "Efter anker navn", +DlgLnkAnchorById : "Efter element Id", +DlgLnkNoAnchors : "(Ingen bogmærker dokumentet)", +DlgLnkEMail : "E-mailadresse", +DlgLnkEMailSubject : "Emne", +DlgLnkEMailBody : "Brødtekst", +DlgLnkUpload : "Upload", +DlgLnkBtnUpload : "Upload", + +DlgLnkTarget : "Mål", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Nyt vindue (_blank)", +DlgLnkTargetParent : "Overordnet ramme (_parent)", +DlgLnkTargetSelf : "Samme vindue (_self)", +DlgLnkTargetTop : "Hele vinduet (_top)", +DlgLnkTargetFrameName : "Destinationsvinduets navn", +DlgLnkPopWinName : "Pop-up vinduets navn", +DlgLnkPopWinFeat : "Egenskaber for pop-up", +DlgLnkPopResize : "Skalering", +DlgLnkPopLocation : "Adresselinje", +DlgLnkPopMenu : "Menulinje", +DlgLnkPopScroll : "Scrollbars", +DlgLnkPopStatus : "Statuslinje", +DlgLnkPopToolbar : "Værktøjslinje", +DlgLnkPopFullScrn : "Fuld skærm (IE)", +DlgLnkPopDependent : "Koblet/dependent (Netscape)", +DlgLnkPopWidth : "Bredde", +DlgLnkPopHeight : "Højde", +DlgLnkPopLeft : "Position fra venstre", +DlgLnkPopTop : "Position fra toppen", + +DlnLnkMsgNoUrl : "Indtast hyperlink URL!", +DlnLnkMsgNoEMail : "Indtast e-mailaddresse!", +DlnLnkMsgNoAnchor : "Vælg bogmærke!", +DlnLnkMsgInvPopName : "Navnet på popup'en skal starte med et bogstav og må ikke indeholde mellemrum", + +// Color Dialog +DlgColorTitle : "Vælg farve", +DlgColorBtnClear : "Nulstil", +DlgColorHighlight : "Markeret", +DlgColorSelected : "Valgt", + +// Smiley Dialog +DlgSmileyTitle : "Vælg smiley", + +// Special Character Dialog +DlgSpecialCharTitle : "Vælg symbol", + +// Table Dialog +DlgTableTitle : "Egenskaber for tabel", +DlgTableRows : "Rækker", +DlgTableColumns : "Kolonner", +DlgTableBorder : "Rammebredde", +DlgTableAlign : "Justering", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Venstrestillet", +DlgTableAlignCenter : "Centreret", +DlgTableAlignRight : "Højrestillet", +DlgTableWidth : "Bredde", +DlgTableWidthPx : "pixels", +DlgTableWidthPc : "procent", +DlgTableHeight : "Højde", +DlgTableCellSpace : "Celleafstand", +DlgTableCellPad : "Cellemargen", +DlgTableCaption : "Titel", +DlgTableSummary : "Resume", +DlgTableHeaders : "Headers", //MISSING +DlgTableHeadersNone : "None", //MISSING +DlgTableHeadersColumn : "First column", //MISSING +DlgTableHeadersRow : "First Row", //MISSING +DlgTableHeadersBoth : "Both", //MISSING + +// Table Cell Dialog +DlgCellTitle : "Egenskaber for celle", +DlgCellWidth : "Bredde", +DlgCellWidthPx : "pixels", +DlgCellWidthPc : "procent", +DlgCellHeight : "Højde", +DlgCellWordWrap : "Orddeling", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Ja", +DlgCellWordWrapNo : "Nej", +DlgCellHorAlign : "Vandret justering", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Venstrestillet", +DlgCellHorAlignCenter : "Centreret", +DlgCellHorAlignRight: "Højrestillet", +DlgCellVerAlign : "Lodret justering", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Øverst", +DlgCellVerAlignMiddle : "Centreret", +DlgCellVerAlignBottom : "Nederst", +DlgCellVerAlignBaseline : "Grundlinje", +DlgCellType : "Cell Type", //MISSING +DlgCellTypeData : "Data", //MISSING +DlgCellTypeHeader : "Header", //MISSING +DlgCellRowSpan : "Højde i antal rækker", +DlgCellCollSpan : "Bredde i antal kolonner", +DlgCellBackColor : "Baggrundsfarve", +DlgCellBorderColor : "Rammefarve", +DlgCellBtnSelect : "Vælg...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Søg og erstat", + +// Find Dialog +DlgFindTitle : "Find", +DlgFindFindBtn : "Find", +DlgFindNotFoundMsg : "Søgeteksten blev ikke fundet!", + +// Replace Dialog +DlgReplaceTitle : "Erstat", +DlgReplaceFindLbl : "Søg efter:", +DlgReplaceReplaceLbl : "Erstat med:", +DlgReplaceCaseChk : "Forskel på store og små bogstaver", +DlgReplaceReplaceBtn : "Erstat", +DlgReplaceReplAllBtn : "Erstat alle", +DlgReplaceWordChk : "Kun hele ord", + +// Paste Operations / Dialog +PasteErrorCut : "Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk!
    Brug i stedet tastaturet til at klippe teksten (Ctrl+X).", +PasteErrorCopy : "Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk!
    Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).", + +PasteAsText : "Indsæt som ikke-formateret tekst", +PasteFromWord : "Indsæt fra Word", + +DlgPasteMsg2 : "Indsæt i feltet herunder (Ctrl+V) og klik OK.", +DlgPasteSec : "På grund af browserens sikkerhedsindstillinger kan editoren ikke tilgå udklipsholderen direkte. Du skal indsætte udklipsholderens indhold i dette vindue igen.", +DlgPasteIgnoreFont : "Ignorer font definitioner", +DlgPasteRemoveStyles : "Ignorer typografi", + +// Color Picker +ColorAutomatic : "Automatisk", +ColorMoreColors : "Flere farver...", + +// Document Properties +DocProps : "Egenskaber for dokument", + +// Anchor Dialog +DlgAnchorTitle : "Egenskaber for bogmærke", +DlgAnchorName : "Bogmærke navn", +DlgAnchorErrorName : "Indtast bogmærke navn!", + +// Speller Pages Dialog +DlgSpellNotInDic : "Ikke i ordbogen", +DlgSpellChangeTo : "Forslag", +DlgSpellBtnIgnore : "Ignorer", +DlgSpellBtnIgnoreAll : "Ignorer alle", +DlgSpellBtnReplace : "Erstat", +DlgSpellBtnReplaceAll : "Erstat alle", +DlgSpellBtnUndo : "Tilbage", +DlgSpellNoSuggestions : "- ingen forslag -", +DlgSpellProgress : "Stavekontrolen arbejder...", +DlgSpellNoMispell : "Stavekontrol færdig: Ingen fejl fundet", +DlgSpellNoChanges : "Stavekontrol færdig: Ingen ord ændret", +DlgSpellOneChange : "Stavekontrol færdig: Et ord ændret", +DlgSpellManyChanges : "Stavekontrol færdig: %1 ord ændret", + +IeSpellDownload : "Stavekontrol ikke installeret.
    Vil du hente den nu?", + +// Button Dialog +DlgButtonText : "Tekst", +DlgButtonType : "Type", +DlgButtonTypeBtn : "Knap", +DlgButtonTypeSbm : "Send", +DlgButtonTypeRst : "Nulstil", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Navn", +DlgCheckboxValue : "Værdi", +DlgCheckboxSelected : "Valgt", + +// Form Dialog +DlgFormName : "Navn", +DlgFormAction : "Handling", +DlgFormMethod : "Metod", + +// Select Field Dialog +DlgSelectName : "Navn", +DlgSelectValue : "Værdi", +DlgSelectSize : "Størrelse", +DlgSelectLines : "linier", +DlgSelectChkMulti : "Tillad flere valg", +DlgSelectOpAvail : "Valgmuligheder", +DlgSelectOpText : "Tekst", +DlgSelectOpValue : "Værdi", +DlgSelectBtnAdd : "Tilføj", +DlgSelectBtnModify : "Rediger", +DlgSelectBtnUp : "Op", +DlgSelectBtnDown : "Ned", +DlgSelectBtnSetValue : "Sæt som valgt", +DlgSelectBtnDelete : "Slet", + +// Textarea Dialog +DlgTextareaName : "Navn", +DlgTextareaCols : "Kolonner", +DlgTextareaRows : "Rækker", + +// Text Field Dialog +DlgTextName : "Navn", +DlgTextValue : "Værdi", +DlgTextCharWidth : "Bredde (tegn)", +DlgTextMaxChars : "Max antal tegn", +DlgTextType : "Type", +DlgTextTypeText : "Tekst", +DlgTextTypePass : "Adgangskode", + +// Hidden Field Dialog +DlgHiddenName : "Navn", +DlgHiddenValue : "Værdi", + +// Bulleted List Dialog +BulletedListProp : "Egenskaber for punktopstilling", +NumberedListProp : "Egenskaber for talopstilling", +DlgLstStart : "Start", +DlgLstType : "Type", +DlgLstTypeCircle : "Cirkel", +DlgLstTypeDisc : "Udfyldt cirkel", +DlgLstTypeSquare : "Firkant", +DlgLstTypeNumbers : "Nummereret (1, 2, 3)", +DlgLstTypeLCase : "Små bogstaver (a, b, c)", +DlgLstTypeUCase : "Store bogstaver (A, B, C)", +DlgLstTypeSRoman : "Små romertal (i, ii, iii)", +DlgLstTypeLRoman : "Store romertal (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Generelt", +DlgDocBackTab : "Baggrund", +DlgDocColorsTab : "Farver og margen", +DlgDocMetaTab : "Metadata", + +DlgDocPageTitle : "Sidetitel", +DlgDocLangDir : "Sprog", +DlgDocLangDirLTR : "Fra venstre mod højre (LTR)", +DlgDocLangDirRTL : "Fra højre mod venstre (RTL)", +DlgDocLangCode : "Landekode", +DlgDocCharSet : "Tegnsæt kode", +DlgDocCharSetCE : "Centraleuropæisk", +DlgDocCharSetCT : "Traditionel kinesisk (Big5)", +DlgDocCharSetCR : "Kyrillisk", +DlgDocCharSetGR : "Græsk", +DlgDocCharSetJP : "Japansk", +DlgDocCharSetKR : "Koreansk", +DlgDocCharSetTR : "Tyrkisk", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Vesteuropæisk", +DlgDocCharSetOther : "Anden tegnsæt kode", + +DlgDocDocType : "Dokumenttype kategori", +DlgDocDocTypeOther : "Anden dokumenttype kategori", +DlgDocIncXHTML : "Inkludere XHTML deklartion", +DlgDocBgColor : "Baggrundsfarve", +DlgDocBgImage : "Baggrundsbillede URL", +DlgDocBgNoScroll : "Fastlåst baggrund", +DlgDocCText : "Tekst", +DlgDocCLink : "Hyperlink", +DlgDocCVisited : "Besøgt hyperlink", +DlgDocCActive : "Aktivt hyperlink", +DlgDocMargins : "Sidemargen", +DlgDocMaTop : "Øverst", +DlgDocMaLeft : "Venstre", +DlgDocMaRight : "Højre", +DlgDocMaBottom : "Nederst", +DlgDocMeIndex : "Dokument index nøgleord (kommasepareret)", +DlgDocMeDescr : "Dokument beskrivelse", +DlgDocMeAuthor : "Forfatter", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Vis", + +// Templates Dialog +Templates : "Skabeloner", +DlgTemplatesTitle : "Indholdsskabeloner", +DlgTemplatesSelMsg : "Vælg den skabelon, som skal åbnes i editoren:", +DlgTemplatesLoading : "Henter liste over skabeloner...", +DlgTemplatesNoTpl : "(Der er ikke defineret nogen skabelon!)", +DlgTemplatesReplace : "Erstat det faktiske indhold", + +// About Dialog +DlgAboutAboutTab : "Om", +DlgAboutBrowserInfoTab : "Generelt", +DlgAboutLicenseTab : "Licens", +DlgAboutVersion : "version", +DlgAboutInfo : "For yderlig information gå til", + +// Div Dialog +DlgDivGeneralTab : "Generelt", +DlgDivAdvancedTab : "Avanceret", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline style", + +ScaytTitle : "SCAYT", //MISSING +ScaytTitleOptions : "Options", //MISSING +ScaytTitleLangs : "Languages", //MISSING +ScaytTitleAbout : "About" //MISSING +}; diff --git a/fckeditor/FCKeditor/editor/lang/de.js b/fckeditor/FCKeditor/editor/lang/de.js new file mode 100644 index 0000000..1d55a76 --- /dev/null +++ b/fckeditor/FCKeditor/editor/lang/de.js @@ -0,0 +1,539 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * German language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Symbolleiste einklappen", +ToolbarExpand : "Symbolleiste ausklappen", + +// Toolbar Items and Context Menu +Save : "Speichern", +NewPage : "Neue Seite", +Preview : "Vorschau", +Cut : "Ausschneiden", +Copy : "Kopieren", +Paste : "Einfügen", +PasteText : "aus Textdatei einfügen", +PasteWord : "aus MS-Word einfügen", +Print : "Drucken", +SelectAll : "Alles auswählen", +RemoveFormat : "Formatierungen entfernen", +InsertLinkLbl : "Link", +InsertLink : "Link einfügen/editieren", +RemoveLink : "Link entfernen", +VisitLink : "Link aufrufen", +Anchor : "Anker einfügen/editieren", +AnchorDelete : "Anker entfernen", +InsertImageLbl : "Bild", +InsertImage : "Bild einfügen/editieren", +InsertFlashLbl : "Flash", +InsertFlash : "Flash einfügen/editieren", +InsertTableLbl : "Tabelle", +InsertTable : "Tabelle einfügen/editieren", +InsertLineLbl : "Linie", +InsertLine : "Horizontale Linie einfügen", +InsertSpecialCharLbl: "Sonderzeichen", +InsertSpecialChar : "Sonderzeichen einfügen/editieren", +InsertSmileyLbl : "Smiley", +InsertSmiley : "Smiley einfügen", +About : "Über FCKeditor", +Bold : "Fett", +Italic : "Kursiv", +Underline : "Unterstrichen", +StrikeThrough : "Durchgestrichen", +Subscript : "Tiefgestellt", +Superscript : "Hochgestellt", +LeftJustify : "Linksbündig", +CenterJustify : "Zentriert", +RightJustify : "Rechtsbündig", +BlockJustify : "Blocksatz", +DecreaseIndent : "Einzug verringern", +IncreaseIndent : "Einzug erhöhen", +Blockquote : "Zitatblock", +CreateDiv : "Erzeuge Div Block", +EditDiv : "Bearbeite Div Block", +DeleteDiv : "Entferne Div Block", +Undo : "Rückgängig", +Redo : "Wiederherstellen", +NumberedListLbl : "Nummerierte Liste", +NumberedList : "Nummerierte Liste einfügen/entfernen", +BulletedListLbl : "Liste", +BulletedList : "Liste einfügen/entfernen", +ShowTableBorders : "Zeige Tabellenrahmen", +ShowDetails : "Zeige Details", +Style : "Stil", +FontFormat : "Format", +Font : "Schriftart", +FontSize : "Größe", +TextColor : "Textfarbe", +BGColor : "Hintergrundfarbe", +Source : "Quellcode", +Find : "Suchen", +Replace : "Ersetzen", +SpellCheck : "Rechtschreibprüfung", +UniversalKeyboard : "Universal-Tastatur", +PageBreakLbl : "Seitenumbruch", +PageBreak : "Seitenumbruch einfügen", + +Form : "Formular", +Checkbox : "Checkbox", +RadioButton : "Radiobutton", +TextField : "Textfeld einzeilig", +Textarea : "Textfeld mehrzeilig", +HiddenField : "verstecktes Feld", +Button : "Klickbutton", +SelectionField : "Auswahlfeld", +ImageButton : "Bildbutton", + +FitWindow : "Editor maximieren", +ShowBlocks : "Blöcke anzeigen", + +// Context Menu +EditLink : "Link editieren", +CellCM : "Zelle", +RowCM : "Zeile", +ColumnCM : "Spalte", +InsertRowAfter : "Zeile unterhalb einfügen", +InsertRowBefore : "Zeile oberhalb einfügen", +DeleteRows : "Zeile entfernen", +InsertColumnAfter : "Spalte rechts danach einfügen", +InsertColumnBefore : "Spalte links davor einfügen", +DeleteColumns : "Spalte löschen", +InsertCellAfter : "Zelle danach einfügen", +InsertCellBefore : "Zelle davor einfügen", +DeleteCells : "Zelle löschen", +MergeCells : "Zellen verbinden", +MergeRight : "nach rechts verbinden", +MergeDown : "nach unten verbinden", +HorizontalSplitCell : "Zelle horizontal teilen", +VerticalSplitCell : "Zelle vertikal teilen", +TableDelete : "Tabelle löschen", +CellProperties : "Zellen-Eigenschaften", +TableProperties : "Tabellen-Eigenschaften", +ImageProperties : "Bild-Eigenschaften", +FlashProperties : "Flash-Eigenschaften", + +AnchorProp : "Anker-Eigenschaften", +ButtonProp : "Button-Eigenschaften", +CheckboxProp : "Checkbox-Eigenschaften", +HiddenFieldProp : "Verstecktes Feld-Eigenschaften", +RadioButtonProp : "Optionsfeld-Eigenschaften", +ImageButtonProp : "Bildbutton-Eigenschaften", +TextFieldProp : "Textfeld (einzeilig) Eigenschaften", +SelectionFieldProp : "Auswahlfeld-Eigenschaften", +TextareaProp : "Textfeld (mehrzeilig) Eigenschaften", +FormProp : "Formular-Eigenschaften", + +FontFormats : "Normal;Formatiert;Addresse;Überschrift 1;Überschrift 2;Überschrift 3;Überschrift 4;Überschrift 5;Überschrift 6;Normal (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Bearbeite XHTML. Bitte warten...", +Done : "Fertig", +PasteWordConfirm : "Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?", +NotCompatiblePaste : "Diese Funktion steht nur im Internet Explorer ab Version 5.5 zur Verfügung. Möchten Sie den Text unbereinigt einfügen?", +UnknownToolbarItem : "Unbekanntes Menüleisten-Objekt \"%1\"", +UnknownCommand : "Unbekannter Befehl \"%1\"", +NotImplemented : "Befehl nicht implementiert", +UnknownToolbarSet : "Menüleiste \"%1\" existiert nicht", +NoActiveX : "Die Sicherheitseinstellungen Ihres Browsers beschränken evtl. einige Funktionen des Editors. Aktivieren Sie die Option \"ActiveX-Steuerelemente und Plugins ausführen\" in den Sicherheitseinstellungen, um diese Funktionen nutzen zu können", +BrowseServerBlocked : "Ein Auswahlfenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.", +DialogBlocked : "Das Dialog-Fenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.", +VisitLinkBlocked : "Es war leider nicht möglich ein neues Fenster zu öffnen. Bitte versichern Sie sich das der Popup-Blocker ausgeschaltet ist.", + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Abbrechen", +DlgBtnClose : "Schließen", +DlgBtnBrowseServer : "Server durchsuchen", +DlgAdvancedTag : "Erweitert", +DlgOpOther : "", +DlgInfoTab : "Info", +DlgAlertUrl : "Bitte tragen Sie die URL ein", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "ID", +DlgGenLangDir : "Schreibrichtung", +DlgGenLangDirLtr : "Links nach Rechts (LTR)", +DlgGenLangDirRtl : "Rechts nach Links (RTL)", +DlgGenLangCode : "Sprachenkürzel", +DlgGenAccessKey : "Zugriffstaste", +DlgGenName : "Name", +DlgGenTabIndex : "Tab-Index", +DlgGenLongDescr : "Langform URL", +DlgGenClass : "Stylesheet Klasse", +DlgGenTitle : "Titel Beschreibung", +DlgGenContType : "Inhaltstyp", +DlgGenLinkCharset : "Ziel-Zeichensatz", +DlgGenStyle : "Style", + +// Image Dialog +DlgImgTitle : "Bild-Eigenschaften", +DlgImgInfoTab : "Bild-Info", +DlgImgBtnUpload : "Zum Server senden", +DlgImgURL : "Bildauswahl", +DlgImgUpload : "Upload", +DlgImgAlt : "Alternativer Text", +DlgImgWidth : "Breite", +DlgImgHeight : "Höhe", +DlgImgLockRatio : "Größenverhältniss beibehalten", +DlgBtnResetSize : "Größe zurücksetzen", +DlgImgBorder : "Rahmen", +DlgImgHSpace : "Horizontal-Abstand", +DlgImgVSpace : "Vertikal-Abstand", +DlgImgAlign : "Ausrichtung", +DlgImgAlignLeft : "Links", +DlgImgAlignAbsBottom: "Abs Unten", +DlgImgAlignAbsMiddle: "Abs Mitte", +DlgImgAlignBaseline : "Baseline", +DlgImgAlignBottom : "Unten", +DlgImgAlignMiddle : "Mitte", +DlgImgAlignRight : "Rechts", +DlgImgAlignTextTop : "Text Oben", +DlgImgAlignTop : "Oben", +DlgImgPreview : "Vorschau", +DlgImgAlertUrl : "Bitte geben Sie die Bild-URL an", +DlgImgLinkTab : "Link", + +// Flash Dialog +DlgFlashTitle : "Flash-Eigenschaften", +DlgFlashChkPlay : "autom. Abspielen", +DlgFlashChkLoop : "Endlosschleife", +DlgFlashChkMenu : "Flash-Menü aktivieren", +DlgFlashScale : "Skalierung", +DlgFlashScaleAll : "Alles anzeigen", +DlgFlashScaleNoBorder : "ohne Rand", +DlgFlashScaleFit : "Passgenau", + +// Link Dialog +DlgLnkWindowTitle : "Link", +DlgLnkInfoTab : "Link-Info", +DlgLnkTargetTab : "Zielseite", + +DlgLnkType : "Link-Typ", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Anker in dieser Seite", +DlgLnkTypeEMail : "E-Mail", +DlgLnkProto : "Protokoll", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Anker auswählen", +DlgLnkAnchorByName : "nach Anker Name", +DlgLnkAnchorById : "nach Element Id", +DlgLnkNoAnchors : "(keine Anker im Dokument vorhanden)", +DlgLnkEMail : "E-Mail Addresse", +DlgLnkEMailSubject : "Betreffzeile", +DlgLnkEMailBody : "Nachrichtentext", +DlgLnkUpload : "Upload", +DlgLnkBtnUpload : "Zum Server senden", + +DlgLnkTarget : "Zielseite", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Neues Fenster (_blank)", +DlgLnkTargetParent : "Oberes Fenster (_parent)", +DlgLnkTargetSelf : "Gleiches Fenster (_self)", +DlgLnkTargetTop : "Oberstes Fenster (_top)", +DlgLnkTargetFrameName : "Ziel-Fenster-Name", +DlgLnkPopWinName : "Pop-up Fenster-Name", +DlgLnkPopWinFeat : "Pop-up Fenster-Eigenschaften", +DlgLnkPopResize : "Vergrößerbar", +DlgLnkPopLocation : "Adress-Leiste", +DlgLnkPopMenu : "Menü-Leiste", +DlgLnkPopScroll : "Rollbalken", +DlgLnkPopStatus : "Statusleiste", +DlgLnkPopToolbar : "Werkzeugleiste", +DlgLnkPopFullScrn : "Vollbild (IE)", +DlgLnkPopDependent : "Abhängig (Netscape)", +DlgLnkPopWidth : "Breite", +DlgLnkPopHeight : "Höhe", +DlgLnkPopLeft : "Linke Position", +DlgLnkPopTop : "Obere Position", + +DlnLnkMsgNoUrl : "Bitte geben Sie die Link-URL an", +DlnLnkMsgNoEMail : "Bitte geben Sie e-Mail Adresse an", +DlnLnkMsgNoAnchor : "Bitte wählen Sie einen Anker aus", +DlnLnkMsgInvPopName : "Der Name des Popups muss mit einem Buchstaben beginnen und darf keine Leerzeichen enthalten", + +// Color Dialog +DlgColorTitle : "Farbauswahl", +DlgColorBtnClear : "Keine Farbe", +DlgColorHighlight : "Vorschau", +DlgColorSelected : "Ausgewählt", + +// Smiley Dialog +DlgSmileyTitle : "Smiley auswählen", + +// Special Character Dialog +DlgSpecialCharTitle : "Sonderzeichen auswählen", + +// Table Dialog +DlgTableTitle : "Tabellen-Eigenschaften", +DlgTableRows : "Zeile", +DlgTableColumns : "Spalte", +DlgTableBorder : "Rahmen", +DlgTableAlign : "Ausrichtung", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Links", +DlgTableAlignCenter : "Zentriert", +DlgTableAlignRight : "Rechts", +DlgTableWidth : "Breite", +DlgTableWidthPx : "Pixel", +DlgTableWidthPc : "%", +DlgTableHeight : "Höhe", +DlgTableCellSpace : "Zellenabstand außen", +DlgTableCellPad : "Zellenabstand innen", +DlgTableCaption : "Überschrift", +DlgTableSummary : "Inhaltsübersicht", +DlgTableHeaders : "Headers", //MISSING +DlgTableHeadersNone : "None", //MISSING +DlgTableHeadersColumn : "First column", //MISSING +DlgTableHeadersRow : "First Row", //MISSING +DlgTableHeadersBoth : "Both", //MISSING + +// Table Cell Dialog +DlgCellTitle : "Zellen-Eigenschaften", +DlgCellWidth : "Breite", +DlgCellWidthPx : "Pixel", +DlgCellWidthPc : "%", +DlgCellHeight : "Höhe", +DlgCellWordWrap : "Umbruch", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Ja", +DlgCellWordWrapNo : "Nein", +DlgCellHorAlign : "Horizontale Ausrichtung", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Links", +DlgCellHorAlignCenter : "Zentriert", +DlgCellHorAlignRight: "Rechts", +DlgCellVerAlign : "Vertikale Ausrichtung", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Oben", +DlgCellVerAlignMiddle : "Mitte", +DlgCellVerAlignBottom : "Unten", +DlgCellVerAlignBaseline : "Grundlinie", +DlgCellType : "Cell Type", //MISSING +DlgCellTypeData : "Data", //MISSING +DlgCellTypeHeader : "Header", //MISSING +DlgCellRowSpan : "Zeilen zusammenfassen", +DlgCellCollSpan : "Spalten zusammenfassen", +DlgCellBackColor : "Hintergrundfarbe", +DlgCellBorderColor : "Rahmenfarbe", +DlgCellBtnSelect : "Auswahl...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Suchen und Ersetzen", + +// Find Dialog +DlgFindTitle : "Finden", +DlgFindFindBtn : "Finden", +DlgFindNotFoundMsg : "Der gesuchte Text wurde nicht gefunden.", + +// Replace Dialog +DlgReplaceTitle : "Ersetzen", +DlgReplaceFindLbl : "Suche nach:", +DlgReplaceReplaceLbl : "Ersetze mit:", +DlgReplaceCaseChk : "Groß-Kleinschreibung beachten", +DlgReplaceReplaceBtn : "Ersetzen", +DlgReplaceReplAllBtn : "Alle Ersetzen", +DlgReplaceWordChk : "Nur ganze Worte suchen", + +// Paste Operations / Dialog +PasteErrorCut : "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).", +PasteErrorCopy : "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).", + +PasteAsText : "Als Text einfügen", +PasteFromWord : "Aus Word einfügen", + +DlgPasteMsg2 : "Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Strg+V) ein und bestätigen Sie mit OK.", +DlgPasteSec : "Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.", +DlgPasteIgnoreFont : "Ignoriere Schriftart-Definitionen", +DlgPasteRemoveStyles : "Entferne Style-Definitionen", + +// Color Picker +ColorAutomatic : "Automatisch", +ColorMoreColors : "Weitere Farben...", + +// Document Properties +DocProps : "Dokument-Eigenschaften", + +// Anchor Dialog +DlgAnchorTitle : "Anker-Eigenschaften", +DlgAnchorName : "Anker Name", +DlgAnchorErrorName : "Bitte geben Sie den Namen des Ankers ein", + +// Speller Pages Dialog +DlgSpellNotInDic : "Nicht im Wörterbuch", +DlgSpellChangeTo : "Ändern in", +DlgSpellBtnIgnore : "Ignorieren", +DlgSpellBtnIgnoreAll : "Alle Ignorieren", +DlgSpellBtnReplace : "Ersetzen", +DlgSpellBtnReplaceAll : "Alle Ersetzen", +DlgSpellBtnUndo : "Rückgängig", +DlgSpellNoSuggestions : " - keine Vorschläge - ", +DlgSpellProgress : "Rechtschreibprüfung läuft...", +DlgSpellNoMispell : "Rechtschreibprüfung abgeschlossen - keine Fehler gefunden", +DlgSpellNoChanges : "Rechtschreibprüfung abgeschlossen - keine Worte geändert", +DlgSpellOneChange : "Rechtschreibprüfung abgeschlossen - ein Wort geändert", +DlgSpellManyChanges : "Rechtschreibprüfung abgeschlossen - %1 Wörter geändert", + +IeSpellDownload : "Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?", + +// Button Dialog +DlgButtonText : "Text (Wert)", +DlgButtonType : "Typ", +DlgButtonTypeBtn : "Button", +DlgButtonTypeSbm : "Absenden", +DlgButtonTypeRst : "Zurücksetzen", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Name", +DlgCheckboxValue : "Wert", +DlgCheckboxSelected : "ausgewählt", + +// Form Dialog +DlgFormName : "Name", +DlgFormAction : "Action", +DlgFormMethod : "Method", + +// Select Field Dialog +DlgSelectName : "Name", +DlgSelectValue : "Wert", +DlgSelectSize : "Größe", +DlgSelectLines : "Linien", +DlgSelectChkMulti : "Erlaube Mehrfachauswahl", +DlgSelectOpAvail : "Mögliche Optionen", +DlgSelectOpText : "Text", +DlgSelectOpValue : "Wert", +DlgSelectBtnAdd : "Hinzufügen", +DlgSelectBtnModify : "Ändern", +DlgSelectBtnUp : "Hoch", +DlgSelectBtnDown : "Runter", +DlgSelectBtnSetValue : "Setze als Standardwert", +DlgSelectBtnDelete : "Entfernen", + +// Textarea Dialog +DlgTextareaName : "Name", +DlgTextareaCols : "Spalten", +DlgTextareaRows : "Reihen", + +// Text Field Dialog +DlgTextName : "Name", +DlgTextValue : "Wert", +DlgTextCharWidth : "Zeichenbreite", +DlgTextMaxChars : "Max. Zeichen", +DlgTextType : "Typ", +DlgTextTypeText : "Text", +DlgTextTypePass : "Passwort", + +// Hidden Field Dialog +DlgHiddenName : "Name", +DlgHiddenValue : "Wert", + +// Bulleted List Dialog +BulletedListProp : "Listen-Eigenschaften", +NumberedListProp : "Nummerierte Listen-Eigenschaften", +DlgLstStart : "Start", +DlgLstType : "Typ", +DlgLstTypeCircle : "Ring", +DlgLstTypeDisc : "Kreis", +DlgLstTypeSquare : "Quadrat", +DlgLstTypeNumbers : "Nummern (1, 2, 3)", +DlgLstTypeLCase : "Kleinbuchstaben (a, b, c)", +DlgLstTypeUCase : "Großbuchstaben (A, B, C)", +DlgLstTypeSRoman : "Kleine römische Zahlen (i, ii, iii)", +DlgLstTypeLRoman : "Große römische Zahlen (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Allgemein", +DlgDocBackTab : "Hintergrund", +DlgDocColorsTab : "Farben und Abstände", +DlgDocMetaTab : "Metadaten", + +DlgDocPageTitle : "Seitentitel", +DlgDocLangDir : "Schriftrichtung", +DlgDocLangDirLTR : "Links nach Rechts", +DlgDocLangDirRTL : "Rechts nach Links", +DlgDocLangCode : "Sprachkürzel", +DlgDocCharSet : "Zeichenkodierung", +DlgDocCharSetCE : "Zentraleuropäisch", +DlgDocCharSetCT : "traditionell Chinesisch (Big5)", +DlgDocCharSetCR : "Kyrillisch", +DlgDocCharSetGR : "Griechisch", +DlgDocCharSetJP : "Japanisch", +DlgDocCharSetKR : "Koreanisch", +DlgDocCharSetTR : "Türkisch", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Westeuropäisch", +DlgDocCharSetOther : "Andere Zeichenkodierung", + +DlgDocDocType : "Dokumententyp", +DlgDocDocTypeOther : "Anderer Dokumententyp", +DlgDocIncXHTML : "Beziehe XHTML Deklarationen ein", +DlgDocBgColor : "Hintergrundfarbe", +DlgDocBgImage : "Hintergrundbild URL", +DlgDocBgNoScroll : "feststehender Hintergrund", +DlgDocCText : "Text", +DlgDocCLink : "Link", +DlgDocCVisited : "Besuchter Link", +DlgDocCActive : "Aktiver Link", +DlgDocMargins : "Seitenränder", +DlgDocMaTop : "Oben", +DlgDocMaLeft : "Links", +DlgDocMaRight : "Rechts", +DlgDocMaBottom : "Unten", +DlgDocMeIndex : "Schlüsselwörter (durch Komma getrennt)", +DlgDocMeDescr : "Dokument-Beschreibung", +DlgDocMeAuthor : "Autor", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Vorschau", + +// Templates Dialog +Templates : "Vorlagen", +DlgTemplatesTitle : "Vorlagen", +DlgTemplatesSelMsg : "Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen:", +DlgTemplatesLoading : "Liste der Vorlagen wird geladen. Bitte warten...", +DlgTemplatesNoTpl : "(keine Vorlagen definiert)", +DlgTemplatesReplace : "Aktuellen Inhalt ersetzen", + +// About Dialog +DlgAboutAboutTab : "Über", +DlgAboutBrowserInfoTab : "Browser-Info", +DlgAboutLicenseTab : "Lizenz", +DlgAboutVersion : "Version", +DlgAboutInfo : "Für weitere Informationen siehe", + +// Div Dialog +DlgDivGeneralTab : "Allgemein", +DlgDivAdvancedTab : "Erweitert", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style", + +ScaytTitle : "SCAYT", //MISSING +ScaytTitleOptions : "Options", //MISSING +ScaytTitleLangs : "Languages", //MISSING +ScaytTitleAbout : "About" //MISSING +}; diff --git a/fckeditor/FCKeditor/editor/lang/en.js b/fckeditor/FCKeditor/editor/lang/en.js new file mode 100644 index 0000000..3356518 --- /dev/null +++ b/fckeditor/FCKeditor/editor/lang/en.js @@ -0,0 +1,539 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * English language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Collapse Toolbar", +ToolbarExpand : "Expand Toolbar", + +// Toolbar Items and Context Menu +Save : "Save", +NewPage : "New Page", +Preview : "Preview", +Cut : "Cut", +Copy : "Copy", +Paste : "Paste", +PasteText : "Paste as plain text", +PasteWord : "Paste from Word", +Print : "Print", +SelectAll : "Select All", +RemoveFormat : "Remove Format", +InsertLinkLbl : "Link", +InsertLink : "Insert/Edit Link", +RemoveLink : "Remove Link", +VisitLink : "Open Link", +Anchor : "Insert/Edit Anchor", +AnchorDelete : "Remove Anchor", +InsertImageLbl : "Image", +InsertImage : "Insert/Edit Image", +InsertFlashLbl : "Flash", +InsertFlash : "Insert/Edit Flash", +InsertTableLbl : "Table", +InsertTable : "Insert/Edit Table", +InsertLineLbl : "Line", +InsertLine : "Insert Horizontal Line", +InsertSpecialCharLbl: "Special Character", +InsertSpecialChar : "Insert Special Character", +InsertSmileyLbl : "Smiley", +InsertSmiley : "Insert Smiley", +About : "About FCKeditor", +Bold : "Bold", +Italic : "Italic", +Underline : "Underline", +StrikeThrough : "Strike Through", +Subscript : "Subscript", +Superscript : "Superscript", +LeftJustify : "Left Justify", +CenterJustify : "Center Justify", +RightJustify : "Right Justify", +BlockJustify : "Block Justify", +DecreaseIndent : "Decrease Indent", +IncreaseIndent : "Increase Indent", +Blockquote : "Blockquote", +CreateDiv : "Create Div Container", +EditDiv : "Edit Div Container", +DeleteDiv : "Remove Div Container", +Undo : "Undo", +Redo : "Redo", +NumberedListLbl : "Numbered List", +NumberedList : "Insert/Remove Numbered List", +BulletedListLbl : "Bulleted List", +BulletedList : "Insert/Remove Bulleted List", +ShowTableBorders : "Show Table Borders", +ShowDetails : "Show Details", +Style : "Style", +FontFormat : "Format", +Font : "Font", +FontSize : "Size", +TextColor : "Text Color", +BGColor : "Background Color", +Source : "Source", +Find : "Find", +Replace : "Replace", +SpellCheck : "Check Spelling", +UniversalKeyboard : "Universal Keyboard", +PageBreakLbl : "Page Break", +PageBreak : "Insert Page Break", + +Form : "Form", +Checkbox : "Checkbox", +RadioButton : "Radio Button", +TextField : "Text Field", +Textarea : "Textarea", +HiddenField : "Hidden Field", +Button : "Button", +SelectionField : "Selection Field", +ImageButton : "Image Button", + +FitWindow : "Maximize the editor size", +ShowBlocks : "Show Blocks", + +// Context Menu +EditLink : "Edit Link", +CellCM : "Cell", +RowCM : "Row", +ColumnCM : "Column", +InsertRowAfter : "Insert Row After", +InsertRowBefore : "Insert Row Before", +DeleteRows : "Delete Rows", +InsertColumnAfter : "Insert Column After", +InsertColumnBefore : "Insert Column Before", +DeleteColumns : "Delete Columns", +InsertCellAfter : "Insert Cell After", +InsertCellBefore : "Insert Cell Before", +DeleteCells : "Delete Cells", +MergeCells : "Merge Cells", +MergeRight : "Merge Right", +MergeDown : "Merge Down", +HorizontalSplitCell : "Split Cell Horizontally", +VerticalSplitCell : "Split Cell Vertically", +TableDelete : "Delete Table", +CellProperties : "Cell Properties", +TableProperties : "Table Properties", +ImageProperties : "Image Properties", +FlashProperties : "Flash Properties", + +AnchorProp : "Anchor Properties", +ButtonProp : "Button Properties", +CheckboxProp : "Checkbox Properties", +HiddenFieldProp : "Hidden Field Properties", +RadioButtonProp : "Radio Button Properties", +ImageButtonProp : "Image Button Properties", +TextFieldProp : "Text Field Properties", +SelectionFieldProp : "Selection Field Properties", +TextareaProp : "Textarea Properties", +FormProp : "Form Properties", + +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Processing XHTML. Please wait...", +Done : "Done", +PasteWordConfirm : "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?", +NotCompatiblePaste : "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?", +UnknownToolbarItem : "Unknown toolbar item \"%1\"", +UnknownCommand : "Unknown command name \"%1\"", +NotImplemented : "Command not implemented", +UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist", +NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", +BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", +DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Cancel", +DlgBtnClose : "Close", +DlgBtnBrowseServer : "Browse Server", +DlgAdvancedTag : "Advanced", +DlgOpOther : "", +DlgInfoTab : "Info", +DlgAlertUrl : "Please insert the URL", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Id", +DlgGenLangDir : "Language Direction", +DlgGenLangDirLtr : "Left to Right (LTR)", +DlgGenLangDirRtl : "Right to Left (RTL)", +DlgGenLangCode : "Language Code", +DlgGenAccessKey : "Access Key", +DlgGenName : "Name", +DlgGenTabIndex : "Tab Index", +DlgGenLongDescr : "Long Description URL", +DlgGenClass : "Stylesheet Classes", +DlgGenTitle : "Advisory Title", +DlgGenContType : "Advisory Content Type", +DlgGenLinkCharset : "Linked Resource Charset", +DlgGenStyle : "Style", + +// Image Dialog +DlgImgTitle : "Image Properties", +DlgImgInfoTab : "Image Info", +DlgImgBtnUpload : "Send it to the Server", +DlgImgURL : "URL", +DlgImgUpload : "Upload", +DlgImgAlt : "Alternative Text", +DlgImgWidth : "Width", +DlgImgHeight : "Height", +DlgImgLockRatio : "Lock Ratio", +DlgBtnResetSize : "Reset Size", +DlgImgBorder : "Border", +DlgImgHSpace : "HSpace", +DlgImgVSpace : "VSpace", +DlgImgAlign : "Align", +DlgImgAlignLeft : "Left", +DlgImgAlignAbsBottom: "Abs Bottom", +DlgImgAlignAbsMiddle: "Abs Middle", +DlgImgAlignBaseline : "Baseline", +DlgImgAlignBottom : "Bottom", +DlgImgAlignMiddle : "Middle", +DlgImgAlignRight : "Right", +DlgImgAlignTextTop : "Text Top", +DlgImgAlignTop : "Top", +DlgImgPreview : "Preview", +DlgImgAlertUrl : "Please type the image URL", +DlgImgLinkTab : "Link", + +// Flash Dialog +DlgFlashTitle : "Flash Properties", +DlgFlashChkPlay : "Auto Play", +DlgFlashChkLoop : "Loop", +DlgFlashChkMenu : "Enable Flash Menu", +DlgFlashScale : "Scale", +DlgFlashScaleAll : "Show all", +DlgFlashScaleNoBorder : "No Border", +DlgFlashScaleFit : "Exact Fit", + +// Link Dialog +DlgLnkWindowTitle : "Link", +DlgLnkInfoTab : "Link Info", +DlgLnkTargetTab : "Target", + +DlgLnkType : "Link Type", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Link to anchor in the text", +DlgLnkTypeEMail : "E-Mail", +DlgLnkProto : "Protocol", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Select an Anchor", +DlgLnkAnchorByName : "By Anchor Name", +DlgLnkAnchorById : "By Element Id", +DlgLnkNoAnchors : "(No anchors available in the document)", +DlgLnkEMail : "E-Mail Address", +DlgLnkEMailSubject : "Message Subject", +DlgLnkEMailBody : "Message Body", +DlgLnkUpload : "Upload", +DlgLnkBtnUpload : "Send it to the Server", + +DlgLnkTarget : "Target", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "New Window (_blank)", +DlgLnkTargetParent : "Parent Window (_parent)", +DlgLnkTargetSelf : "Same Window (_self)", +DlgLnkTargetTop : "Topmost Window (_top)", +DlgLnkTargetFrameName : "Target Frame Name", +DlgLnkPopWinName : "Popup Window Name", +DlgLnkPopWinFeat : "Popup Window Features", +DlgLnkPopResize : "Resizable", +DlgLnkPopLocation : "Location Bar", +DlgLnkPopMenu : "Menu Bar", +DlgLnkPopScroll : "Scroll Bars", +DlgLnkPopStatus : "Status Bar", +DlgLnkPopToolbar : "Toolbar", +DlgLnkPopFullScrn : "Full Screen (IE)", +DlgLnkPopDependent : "Dependent (Netscape)", +DlgLnkPopWidth : "Width", +DlgLnkPopHeight : "Height", +DlgLnkPopLeft : "Left Position", +DlgLnkPopTop : "Top Position", + +DlnLnkMsgNoUrl : "Please type the link URL", +DlnLnkMsgNoEMail : "Please type the e-mail address", +DlnLnkMsgNoAnchor : "Please select an anchor", +DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", + +// Color Dialog +DlgColorTitle : "Select Color", +DlgColorBtnClear : "Clear", +DlgColorHighlight : "Highlight", +DlgColorSelected : "Selected", + +// Smiley Dialog +DlgSmileyTitle : "Insert a Smiley", + +// Special Character Dialog +DlgSpecialCharTitle : "Select Special Character", + +// Table Dialog +DlgTableTitle : "Table Properties", +DlgTableRows : "Rows", +DlgTableColumns : "Columns", +DlgTableBorder : "Border size", +DlgTableAlign : "Alignment", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Left", +DlgTableAlignCenter : "Center", +DlgTableAlignRight : "Right", +DlgTableWidth : "Width", +DlgTableWidthPx : "pixels", +DlgTableWidthPc : "percent", +DlgTableHeight : "Height", +DlgTableCellSpace : "Cell spacing", +DlgTableCellPad : "Cell padding", +DlgTableCaption : "Caption", +DlgTableSummary : "Summary", +DlgTableHeaders : "Headers", +DlgTableHeadersNone : "None", +DlgTableHeadersColumn : "First column", +DlgTableHeadersRow : "First Row", +DlgTableHeadersBoth : "Both", + +// Table Cell Dialog +DlgCellTitle : "Cell Properties", +DlgCellWidth : "Width", +DlgCellWidthPx : "pixels", +DlgCellWidthPc : "percent", +DlgCellHeight : "Height", +DlgCellWordWrap : "Word Wrap", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Yes", +DlgCellWordWrapNo : "No", +DlgCellHorAlign : "Horizontal Alignment", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Left", +DlgCellHorAlignCenter : "Center", +DlgCellHorAlignRight: "Right", +DlgCellVerAlign : "Vertical Alignment", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Top", +DlgCellVerAlignMiddle : "Middle", +DlgCellVerAlignBottom : "Bottom", +DlgCellVerAlignBaseline : "Baseline", +DlgCellType : "Cell Type", +DlgCellTypeData : "Data", +DlgCellTypeHeader : "Header", +DlgCellRowSpan : "Rows Span", +DlgCellCollSpan : "Columns Span", +DlgCellBackColor : "Background Color", +DlgCellBorderColor : "Border Color", +DlgCellBtnSelect : "Select...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", + +// Find Dialog +DlgFindTitle : "Find", +DlgFindFindBtn : "Find", +DlgFindNotFoundMsg : "The specified text was not found.", + +// Replace Dialog +DlgReplaceTitle : "Replace", +DlgReplaceFindLbl : "Find what:", +DlgReplaceReplaceLbl : "Replace with:", +DlgReplaceCaseChk : "Match case", +DlgReplaceReplaceBtn : "Replace", +DlgReplaceReplAllBtn : "Replace All", +DlgReplaceWordChk : "Match whole word", + +// Paste Operations / Dialog +PasteErrorCut : "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).", +PasteErrorCopy : "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).", + +PasteAsText : "Paste as Plain Text", +PasteFromWord : "Paste from Word", + +DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", +DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", +DlgPasteIgnoreFont : "Ignore Font Face definitions", +DlgPasteRemoveStyles : "Remove Styles definitions", + +// Color Picker +ColorAutomatic : "Automatic", +ColorMoreColors : "More Colors...", + +// Document Properties +DocProps : "Document Properties", + +// Anchor Dialog +DlgAnchorTitle : "Anchor Properties", +DlgAnchorName : "Anchor Name", +DlgAnchorErrorName : "Please type the anchor name", + +// Speller Pages Dialog +DlgSpellNotInDic : "Not in dictionary", +DlgSpellChangeTo : "Change to", +DlgSpellBtnIgnore : "Ignore", +DlgSpellBtnIgnoreAll : "Ignore All", +DlgSpellBtnReplace : "Replace", +DlgSpellBtnReplaceAll : "Replace All", +DlgSpellBtnUndo : "Undo", +DlgSpellNoSuggestions : "- No suggestions -", +DlgSpellProgress : "Spell check in progress...", +DlgSpellNoMispell : "Spell check complete: No misspellings found", +DlgSpellNoChanges : "Spell check complete: No words changed", +DlgSpellOneChange : "Spell check complete: One word changed", +DlgSpellManyChanges : "Spell check complete: %1 words changed", + +IeSpellDownload : "Spell checker not installed. Do you want to download it now?", + +// Button Dialog +DlgButtonText : "Text (Value)", +DlgButtonType : "Type", +DlgButtonTypeBtn : "Button", +DlgButtonTypeSbm : "Submit", +DlgButtonTypeRst : "Reset", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Name", +DlgCheckboxValue : "Value", +DlgCheckboxSelected : "Selected", + +// Form Dialog +DlgFormName : "Name", +DlgFormAction : "Action", +DlgFormMethod : "Method", + +// Select Field Dialog +DlgSelectName : "Name", +DlgSelectValue : "Value", +DlgSelectSize : "Size", +DlgSelectLines : "lines", +DlgSelectChkMulti : "Allow multiple selections", +DlgSelectOpAvail : "Available Options", +DlgSelectOpText : "Text", +DlgSelectOpValue : "Value", +DlgSelectBtnAdd : "Add", +DlgSelectBtnModify : "Modify", +DlgSelectBtnUp : "Up", +DlgSelectBtnDown : "Down", +DlgSelectBtnSetValue : "Set as selected value", +DlgSelectBtnDelete : "Delete", + +// Textarea Dialog +DlgTextareaName : "Name", +DlgTextareaCols : "Columns", +DlgTextareaRows : "Rows", + +// Text Field Dialog +DlgTextName : "Name", +DlgTextValue : "Value", +DlgTextCharWidth : "Character Width", +DlgTextMaxChars : "Maximum Characters", +DlgTextType : "Type", +DlgTextTypeText : "Text", +DlgTextTypePass : "Password", + +// Hidden Field Dialog +DlgHiddenName : "Name", +DlgHiddenValue : "Value", + +// Bulleted List Dialog +BulletedListProp : "Bulleted List Properties", +NumberedListProp : "Numbered List Properties", +DlgLstStart : "Start", +DlgLstType : "Type", +DlgLstTypeCircle : "Circle", +DlgLstTypeDisc : "Disc", +DlgLstTypeSquare : "Square", +DlgLstTypeNumbers : "Numbers (1, 2, 3)", +DlgLstTypeLCase : "Lowercase Letters (a, b, c)", +DlgLstTypeUCase : "Uppercase Letters (A, B, C)", +DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)", +DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "General", +DlgDocBackTab : "Background", +DlgDocColorsTab : "Colors and Margins", +DlgDocMetaTab : "Meta Data", + +DlgDocPageTitle : "Page Title", +DlgDocLangDir : "Language Direction", +DlgDocLangDirLTR : "Left to Right (LTR)", +DlgDocLangDirRTL : "Right to Left (RTL)", +DlgDocLangCode : "Language Code", +DlgDocCharSet : "Character Set Encoding", +DlgDocCharSetCE : "Central European", +DlgDocCharSetCT : "Chinese Traditional (Big5)", +DlgDocCharSetCR : "Cyrillic", +DlgDocCharSetGR : "Greek", +DlgDocCharSetJP : "Japanese", +DlgDocCharSetKR : "Korean", +DlgDocCharSetTR : "Turkish", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Western European", +DlgDocCharSetOther : "Other Character Set Encoding", + +DlgDocDocType : "Document Type Heading", +DlgDocDocTypeOther : "Other Document Type Heading", +DlgDocIncXHTML : "Include XHTML Declarations", +DlgDocBgColor : "Background Color", +DlgDocBgImage : "Background Image URL", +DlgDocBgNoScroll : "Nonscrolling Background", +DlgDocCText : "Text", +DlgDocCLink : "Link", +DlgDocCVisited : "Visited Link", +DlgDocCActive : "Active Link", +DlgDocMargins : "Page Margins", +DlgDocMaTop : "Top", +DlgDocMaLeft : "Left", +DlgDocMaRight : "Right", +DlgDocMaBottom : "Bottom", +DlgDocMeIndex : "Document Indexing Keywords (comma separated)", +DlgDocMeDescr : "Document Description", +DlgDocMeAuthor : "Author", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Preview", + +// Templates Dialog +Templates : "Templates", +DlgTemplatesTitle : "Content Templates", +DlgTemplatesSelMsg : "Please select the template to open in the editor:", +DlgTemplatesLoading : "Loading templates list. Please wait...", +DlgTemplatesNoTpl : "(No templates defined)", +DlgTemplatesReplace : "Replace actual contents", + +// About Dialog +DlgAboutAboutTab : "About", +DlgAboutBrowserInfoTab : "Browser Info", +DlgAboutLicenseTab : "License", +DlgAboutVersion : "version", +DlgAboutInfo : "For further information go to", + +// Div Dialog +DlgDivGeneralTab : "General", +DlgDivAdvancedTab : "Advanced", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style", + +ScaytTitle : "SCAYT", +ScaytTitleOptions : "Options", +ScaytTitleLangs : "Languages", +ScaytTitleAbout : "About" +}; diff --git a/fckeditor/FCKeditor/editor/lang/fr.js b/fckeditor/FCKeditor/editor/lang/fr.js new file mode 100644 index 0000000..dad92d3 --- /dev/null +++ b/fckeditor/FCKeditor/editor/lang/fr.js @@ -0,0 +1,539 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * French language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Masquer Outils", +ToolbarExpand : "Afficher Outils", + +// Toolbar Items and Context Menu +Save : "Enregistrer", +NewPage : "Nouvelle page", +Preview : "Prévisualisation", +Cut : "Couper", +Copy : "Copier", +Paste : "Coller", +PasteText : "Coller comme texte", +PasteWord : "Coller de Word", +Print : "Imprimer", +SelectAll : "Tout sélectionner", +RemoveFormat : "Supprimer le format", +InsertLinkLbl : "Lien", +InsertLink : "Insérer/modifier le lien", +RemoveLink : "Supprimer le lien", +VisitLink : "Suivre le lien", +Anchor : "Insérer/modifier l'ancre", +AnchorDelete : "Supprimer l'ancre", +InsertImageLbl : "Image", +InsertImage : "Insérer/modifier l'image", +InsertFlashLbl : "Animation Flash", +InsertFlash : "Insérer/modifier l'animation Flash", +InsertTableLbl : "Tableau", +InsertTable : "Insérer/modifier le tableau", +InsertLineLbl : "Séparateur", +InsertLine : "Insérer un séparateur", +InsertSpecialCharLbl: "Caractères spéciaux", +InsertSpecialChar : "Insérer un caractère spécial", +InsertSmileyLbl : "Smiley", +InsertSmiley : "Insérer un Smiley", +About : "A propos de FCKeditor", +Bold : "Gras", +Italic : "Italique", +Underline : "Souligné", +StrikeThrough : "Barré", +Subscript : "Indice", +Superscript : "Exposant", +LeftJustify : "Aligné à gauche", +CenterJustify : "Centré", +RightJustify : "Aligné à Droite", +BlockJustify : "Texte justifié", +DecreaseIndent : "Diminuer le retrait", +IncreaseIndent : "Augmenter le retrait", +Blockquote : "Citation", +CreateDiv : "Créer Balise Div", +EditDiv : "Modifier Balise Div", +DeleteDiv : "Supprimer Balise Div", +Undo : "Annuler", +Redo : "Refaire", +NumberedListLbl : "Liste numérotée", +NumberedList : "Insérer/supprimer la liste numérotée", +BulletedListLbl : "Liste à puces", +BulletedList : "Insérer/supprimer la liste à puces", +ShowTableBorders : "Afficher les bordures du tableau", +ShowDetails : "Afficher les caractères invisibles", +Style : "Style", +FontFormat : "Format", +Font : "Police", +FontSize : "Taille", +TextColor : "Couleur de caractère", +BGColor : "Couleur de fond", +Source : "Source", +Find : "Chercher", +Replace : "Remplacer", +SpellCheck : "Orthographe", +UniversalKeyboard : "Clavier universel", +PageBreakLbl : "Saut de page", +PageBreak : "Insérer un saut de page", + +Form : "Formulaire", +Checkbox : "Case à cocher", +RadioButton : "Bouton radio", +TextField : "Champ texte", +Textarea : "Zone de texte", +HiddenField : "Champ caché", +Button : "Bouton", +SelectionField : "Liste/menu", +ImageButton : "Bouton image", + +FitWindow : "Edition pleine page", +ShowBlocks : "Afficher les blocs", + +// Context Menu +EditLink : "Modifier le lien", +CellCM : "Cellule", +RowCM : "Ligne", +ColumnCM : "Colonne", +InsertRowAfter : "Insérer une ligne après", +InsertRowBefore : "Insérer une ligne avant", +DeleteRows : "Supprimer des lignes", +InsertColumnAfter : "Insérer une colonne après", +InsertColumnBefore : "Insérer une colonne avant", +DeleteColumns : "Supprimer des colonnes", +InsertCellAfter : "Insérer une cellule après", +InsertCellBefore : "Insérer une cellule avant", +DeleteCells : "Supprimer des cellules", +MergeCells : "Fusionner les cellules", +MergeRight : "Fusionner à droite", +MergeDown : "Fusionner en bas", +HorizontalSplitCell : "Scinder la cellule horizontalement", +VerticalSplitCell : "Scinder la cellule verticalement", +TableDelete : "Supprimer le tableau", +CellProperties : "Propriétés de cellule", +TableProperties : "Propriétés du tableau", +ImageProperties : "Propriétés de l'image", +FlashProperties : "Propriétés de l'animation Flash", + +AnchorProp : "Propriétés de l'ancre", +ButtonProp : "Propriétés du bouton", +CheckboxProp : "Propriétés de la case à cocher", +HiddenFieldProp : "Propriétés du champ caché", +RadioButtonProp : "Propriétés du bouton radio", +ImageButtonProp : "Propriétés du bouton image", +TextFieldProp : "Propriétés du champ texte", +SelectionFieldProp : "Propriétés de la liste/du menu", +TextareaProp : "Propriétés de la zone de texte", +FormProp : "Propriétés du formulaire", + +FontFormats : "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Calcul XHTML. Veuillez patienter...", +Done : "Terminé", +PasteWordConfirm : "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?", +NotCompatiblePaste : "Cette commande nécessite Internet Explorer version 5.5 minimum. Souhaitez-vous coller sans nettoyage?", +UnknownToolbarItem : "Elément de barre d'outil inconnu \"%1\"", +UnknownCommand : "Nom de commande inconnu \"%1\"", +NotImplemented : "Commande non encore écrite", +UnknownToolbarSet : "La barre d'outils \"%1\" n'existe pas", +NoActiveX : "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.", +BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.", +DialogBlocked : "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.", +VisitLinkBlocked : "Impossible d'ouvrir une nouvelle fenêtre. Assurez-vous que les bloqueurs de popups soient désactivés.", + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Annuler", +DlgBtnClose : "Fermer", +DlgBtnBrowseServer : "Parcourir le serveur", +DlgAdvancedTag : "Avancé", +DlgOpOther : "", +DlgInfoTab : "Info", +DlgAlertUrl : "Veuillez saisir l'URL", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Id", +DlgGenLangDir : "Sens d'écriture", +DlgGenLangDirLtr : "De gauche à droite (LTR)", +DlgGenLangDirRtl : "De droite à gauche (RTL)", +DlgGenLangCode : "Code langue", +DlgGenAccessKey : "Equivalent clavier", +DlgGenName : "Nom", +DlgGenTabIndex : "Ordre de tabulation", +DlgGenLongDescr : "URL de description longue", +DlgGenClass : "Classes de feuilles de style", +DlgGenTitle : "Titre", +DlgGenContType : "Type de contenu", +DlgGenLinkCharset : "Encodage de caractère", +DlgGenStyle : "Style", + +// Image Dialog +DlgImgTitle : "Propriétés de l'image", +DlgImgInfoTab : "Informations sur l'image", +DlgImgBtnUpload : "Envoyer sur le serveur", +DlgImgURL : "URL", +DlgImgUpload : "Télécharger", +DlgImgAlt : "Texte de remplacement", +DlgImgWidth : "Largeur", +DlgImgHeight : "Hauteur", +DlgImgLockRatio : "Garder les proportions", +DlgBtnResetSize : "Taille originale", +DlgImgBorder : "Bordure", +DlgImgHSpace : "Espacement horizontal", +DlgImgVSpace : "Espacement vertical", +DlgImgAlign : "Alignement", +DlgImgAlignLeft : "Gauche", +DlgImgAlignAbsBottom: "Abs Bas", +DlgImgAlignAbsMiddle: "Abs Milieu", +DlgImgAlignBaseline : "Bas du texte", +DlgImgAlignBottom : "Bas", +DlgImgAlignMiddle : "Milieu", +DlgImgAlignRight : "Droite", +DlgImgAlignTextTop : "Haut du texte", +DlgImgAlignTop : "Haut", +DlgImgPreview : "Prévisualisation", +DlgImgAlertUrl : "Veuillez saisir l'URL de l'image", +DlgImgLinkTab : "Lien", + +// Flash Dialog +DlgFlashTitle : "Propriétés de l'animation Flash", +DlgFlashChkPlay : "Lecture automatique", +DlgFlashChkLoop : "Boucle", +DlgFlashChkMenu : "Activer le menu Flash", +DlgFlashScale : "Affichage", +DlgFlashScaleAll : "Par défaut (tout montrer)", +DlgFlashScaleNoBorder : "Sans bordure", +DlgFlashScaleFit : "Ajuster aux dimensions", + +// Link Dialog +DlgLnkWindowTitle : "Propriétés du lien", +DlgLnkInfoTab : "Informations sur le lien", +DlgLnkTargetTab : "Destination", + +DlgLnkType : "Type de lien", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Ancre dans cette page", +DlgLnkTypeEMail : "E-Mail", +DlgLnkProto : "Protocole", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Sélectionner une ancre", +DlgLnkAnchorByName : "Par nom", +DlgLnkAnchorById : "Par id", +DlgLnkNoAnchors : "(Pas d'ancre disponible dans le document)", +DlgLnkEMail : "Adresse E-Mail", +DlgLnkEMailSubject : "Sujet du message", +DlgLnkEMailBody : "Corps du message", +DlgLnkUpload : "Télécharger", +DlgLnkBtnUpload : "Envoyer sur le serveur", + +DlgLnkTarget : "Destination", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Nouvelle fenêtre (_blank)", +DlgLnkTargetParent : "Fenêtre mère (_parent)", +DlgLnkTargetSelf : "Même fenêtre (_self)", +DlgLnkTargetTop : "Fenêtre supérieure (_top)", +DlgLnkTargetFrameName : "Nom du cadre de destination", +DlgLnkPopWinName : "Nom de la fenêtre popup", +DlgLnkPopWinFeat : "Caractéristiques de la fenêtre popup", +DlgLnkPopResize : "Taille modifiable", +DlgLnkPopLocation : "Barre d'adresses", +DlgLnkPopMenu : "Barre de menu", +DlgLnkPopScroll : "Barres de défilement", +DlgLnkPopStatus : "Barre d'état", +DlgLnkPopToolbar : "Barre d'outils", +DlgLnkPopFullScrn : "Plein écran (IE)", +DlgLnkPopDependent : "Dépendante (Netscape)", +DlgLnkPopWidth : "Largeur", +DlgLnkPopHeight : "Hauteur", +DlgLnkPopLeft : "Position à partir de la gauche", +DlgLnkPopTop : "Position à partir du haut", + +DlnLnkMsgNoUrl : "Veuillez saisir l'URL", +DlnLnkMsgNoEMail : "Veuillez saisir l'adresse e-mail", +DlnLnkMsgNoAnchor : "Veuillez sélectionner une ancre", +DlnLnkMsgInvPopName : "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace", + +// Color Dialog +DlgColorTitle : "Sélectionner", +DlgColorBtnClear : "Effacer", +DlgColorHighlight : "Prévisualisation", +DlgColorSelected : "Sélectionné", + +// Smiley Dialog +DlgSmileyTitle : "Insérer un Smiley", + +// Special Character Dialog +DlgSpecialCharTitle : "Insérer un caractère spécial", + +// Table Dialog +DlgTableTitle : "Propriétés du tableau", +DlgTableRows : "Lignes", +DlgTableColumns : "Colonnes", +DlgTableBorder : "Bordure", +DlgTableAlign : "Alignement", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Gauche", +DlgTableAlignCenter : "Centré", +DlgTableAlignRight : "Droite", +DlgTableWidth : "Largeur", +DlgTableWidthPx : "pixels", +DlgTableWidthPc : "pourcentage", +DlgTableHeight : "Hauteur", +DlgTableCellSpace : "Espacement", +DlgTableCellPad : "Contour", +DlgTableCaption : "Titre", +DlgTableSummary : "Résumé", +DlgTableHeaders : "Entêtes", +DlgTableHeadersNone : "Sans", +DlgTableHeadersColumn : "Première colonne", +DlgTableHeadersRow : "Première Ligne", +DlgTableHeadersBoth : "Les 2", + +// Table Cell Dialog +DlgCellTitle : "Propriétés de la cellule", +DlgCellWidth : "Largeur", +DlgCellWidthPx : "pixels", +DlgCellWidthPc : "pourcentage", +DlgCellHeight : "Hauteur", +DlgCellWordWrap : "Retour à la ligne", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Oui", +DlgCellWordWrapNo : "Non", +DlgCellHorAlign : "Alignement horizontal", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Gauche", +DlgCellHorAlignCenter : "Centré", +DlgCellHorAlignRight: "Droite", +DlgCellVerAlign : "Alignement vertical", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Haut", +DlgCellVerAlignMiddle : "Milieu", +DlgCellVerAlignBottom : "Bas", +DlgCellVerAlignBaseline : "Bas du texte", +DlgCellType : "Type de Cellule", +DlgCellTypeData : "Données", +DlgCellTypeHeader : "Entête", +DlgCellRowSpan : "Lignes fusionnées", +DlgCellCollSpan : "Colonnes fusionnées", +DlgCellBackColor : "Fond", +DlgCellBorderColor : "Bordure", +DlgCellBtnSelect : "Choisir...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Chercher et Remplacer", + +// Find Dialog +DlgFindTitle : "Chercher", +DlgFindFindBtn : "Chercher", +DlgFindNotFoundMsg : "Le texte indiqué est introuvable.", + +// Replace Dialog +DlgReplaceTitle : "Remplacer", +DlgReplaceFindLbl : "Rechercher:", +DlgReplaceReplaceLbl : "Remplacer par:", +DlgReplaceCaseChk : "Respecter la casse", +DlgReplaceReplaceBtn : "Remplacer", +DlgReplaceReplAllBtn : "Tout remplacer", +DlgReplaceWordChk : "Mot entier", + +// Paste Operations / Dialog +PasteErrorCut : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).", +PasteErrorCopy : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).", + +PasteAsText : "Coller comme texte", +PasteFromWord : "Coller à partir de Word", + +DlgPasteMsg2 : "Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl+V) et cliquez sur OK.", +DlgPasteSec : "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.", +DlgPasteIgnoreFont : "Ignorer les polices de caractères", +DlgPasteRemoveStyles : "Supprimer les styles", + +// Color Picker +ColorAutomatic : "Automatique", +ColorMoreColors : "Plus de couleurs...", + +// Document Properties +DocProps : "Propriétés du document", + +// Anchor Dialog +DlgAnchorTitle : "Propriétés de l'ancre", +DlgAnchorName : "Nom de l'ancre", +DlgAnchorErrorName : "Veuillez saisir le nom de l'ancre", + +// Speller Pages Dialog +DlgSpellNotInDic : "Pas dans le dictionnaire", +DlgSpellChangeTo : "Changer en", +DlgSpellBtnIgnore : "Ignorer", +DlgSpellBtnIgnoreAll : "Ignorer tout", +DlgSpellBtnReplace : "Remplacer", +DlgSpellBtnReplaceAll : "Remplacer tout", +DlgSpellBtnUndo : "Annuler", +DlgSpellNoSuggestions : "- Aucune suggestion -", +DlgSpellProgress : "Vérification d'orthographe en cours...", +DlgSpellNoMispell : "Vérification d'orthographe terminée: Aucune erreur trouvée", +DlgSpellNoChanges : "Vérification d'orthographe terminée: Pas de modifications", +DlgSpellOneChange : "Vérification d'orthographe terminée: Un mot modifié", +DlgSpellManyChanges : "Vérification d'orthographe terminée: %1 mots modifiés", + +IeSpellDownload : "Le Correcteur n'est pas installé. Souhaitez-vous le télécharger maintenant?", + +// Button Dialog +DlgButtonText : "Texte (valeur)", +DlgButtonType : "Type", +DlgButtonTypeBtn : "Bouton", +DlgButtonTypeSbm : "Envoyer", +DlgButtonTypeRst : "Réinitialiser", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Nom", +DlgCheckboxValue : "Valeur", +DlgCheckboxSelected : "Sélectionné", + +// Form Dialog +DlgFormName : "Nom", +DlgFormAction : "Action", +DlgFormMethod : "Méthode", + +// Select Field Dialog +DlgSelectName : "Nom", +DlgSelectValue : "Valeur", +DlgSelectSize : "Taille", +DlgSelectLines : "lignes", +DlgSelectChkMulti : "Sélection multiple", +DlgSelectOpAvail : "Options disponibles", +DlgSelectOpText : "Texte", +DlgSelectOpValue : "Valeur", +DlgSelectBtnAdd : "Ajouter", +DlgSelectBtnModify : "Modifier", +DlgSelectBtnUp : "Monter", +DlgSelectBtnDown : "Descendre", +DlgSelectBtnSetValue : "Valeur sélectionnée", +DlgSelectBtnDelete : "Supprimer", + +// Textarea Dialog +DlgTextareaName : "Nom", +DlgTextareaCols : "Colonnes", +DlgTextareaRows : "Lignes", + +// Text Field Dialog +DlgTextName : "Nom", +DlgTextValue : "Valeur", +DlgTextCharWidth : "Largeur en caractères", +DlgTextMaxChars : "Nombre maximum de caractères", +DlgTextType : "Type", +DlgTextTypeText : "Texte", +DlgTextTypePass : "Mot de passe", + +// Hidden Field Dialog +DlgHiddenName : "Nom", +DlgHiddenValue : "Valeur", + +// Bulleted List Dialog +BulletedListProp : "Propriétés de liste à puces", +NumberedListProp : "Propriétés de liste numérotée", +DlgLstStart : "Début", +DlgLstType : "Type", +DlgLstTypeCircle : "Cercle", +DlgLstTypeDisc : "Disque", +DlgLstTypeSquare : "Carré", +DlgLstTypeNumbers : "Nombres (1, 2, 3)", +DlgLstTypeLCase : "Lettres minuscules (a, b, c)", +DlgLstTypeUCase : "Lettres majuscules (A, B, C)", +DlgLstTypeSRoman : "Chiffres romains minuscules (i, ii, iii)", +DlgLstTypeLRoman : "Chiffres romains majuscules (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Général", +DlgDocBackTab : "Fond", +DlgDocColorsTab : "Couleurs et marges", +DlgDocMetaTab : "Métadonnées", + +DlgDocPageTitle : "Titre de la page", +DlgDocLangDir : "Sens d'écriture", +DlgDocLangDirLTR : "De la gauche vers la droite (LTR)", +DlgDocLangDirRTL : "De la droite vers la gauche (RTL)", +DlgDocLangCode : "Code langue", +DlgDocCharSet : "Encodage de caractère", +DlgDocCharSetCE : "Europe Centrale", +DlgDocCharSetCT : "Chinois Traditionnel (Big5)", +DlgDocCharSetCR : "Cyrillique", +DlgDocCharSetGR : "Grec", +DlgDocCharSetJP : "Japonais", +DlgDocCharSetKR : "Coréen", +DlgDocCharSetTR : "Turc", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Occidental", +DlgDocCharSetOther : "Autre encodage de caractère", + +DlgDocDocType : "Type de document", +DlgDocDocTypeOther : "Autre type de document", +DlgDocIncXHTML : "Inclure les déclarations XHTML", +DlgDocBgColor : "Couleur de fond", +DlgDocBgImage : "Image de fond", +DlgDocBgNoScroll : "Image fixe sans défilement", +DlgDocCText : "Texte", +DlgDocCLink : "Lien", +DlgDocCVisited : "Lien visité", +DlgDocCActive : "Lien activé", +DlgDocMargins : "Marges", +DlgDocMaTop : "Haut", +DlgDocMaLeft : "Gauche", +DlgDocMaRight : "Droite", +DlgDocMaBottom : "Bas", +DlgDocMeIndex : "Mots-clés (séparés par des virgules)", +DlgDocMeDescr : "Description", +DlgDocMeAuthor : "Auteur", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Prévisualisation", + +// Templates Dialog +Templates : "Modèles", +DlgTemplatesTitle : "Modèles de contenu", +DlgTemplatesSelMsg : "Veuillez sélectionner le modèle à ouvrir dans l'éditeur:", +DlgTemplatesLoading : "Chargement de la liste des modèles. Veuillez patienter...", +DlgTemplatesNoTpl : "(Aucun modèle disponible)", +DlgTemplatesReplace : "Remplacer tout le contenu", + +// About Dialog +DlgAboutAboutTab : "A propos de", +DlgAboutBrowserInfoTab : "Navigateur", +DlgAboutLicenseTab : "Licence", +DlgAboutVersion : "Version", +DlgAboutInfo : "Pour plus d'informations, aller à", + +// Div Dialog +DlgDivGeneralTab : "Général", +DlgDivAdvancedTab : "Avancé", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Attribut Style", + +ScaytTitle : "SCAYT", //MISSING +ScaytTitleOptions : "Options", //MISSING +ScaytTitleLangs : "Languages", //MISSING +ScaytTitleAbout : "About" //MISSING +}; diff --git a/fckeditor/FCKeditor/editor/lang/it.js b/fckeditor/FCKeditor/editor/lang/it.js new file mode 100644 index 0000000..5353ac3 --- /dev/null +++ b/fckeditor/FCKeditor/editor/lang/it.js @@ -0,0 +1,539 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Italian language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Nascondi la barra degli strumenti", +ToolbarExpand : "Mostra la barra degli strumenti", + +// Toolbar Items and Context Menu +Save : "Salva", +NewPage : "Nuova pagina vuota", +Preview : "Anteprima", +Cut : "Taglia", +Copy : "Copia", +Paste : "Incolla", +PasteText : "Incolla come testo semplice", +PasteWord : "Incolla da Word", +Print : "Stampa", +SelectAll : "Seleziona tutto", +RemoveFormat : "Elimina formattazione", +InsertLinkLbl : "Collegamento", +InsertLink : "Inserisci/Modifica collegamento", +RemoveLink : "Elimina collegamento", +VisitLink : "Open Link", //MISSING +Anchor : "Inserisci/Modifica Ancora", +AnchorDelete : "Rimuovi Ancora", +InsertImageLbl : "Immagine", +InsertImage : "Inserisci/Modifica immagine", +InsertFlashLbl : "Oggetto Flash", +InsertFlash : "Inserisci/Modifica Oggetto Flash", +InsertTableLbl : "Tabella", +InsertTable : "Inserisci/Modifica tabella", +InsertLineLbl : "Riga orizzontale", +InsertLine : "Inserisci riga orizzontale", +InsertSpecialCharLbl: "Caratteri speciali", +InsertSpecialChar : "Inserisci carattere speciale", +InsertSmileyLbl : "Emoticon", +InsertSmiley : "Inserisci emoticon", +About : "Informazioni su FCKeditor", +Bold : "Grassetto", +Italic : "Corsivo", +Underline : "Sottolineato", +StrikeThrough : "Barrato", +Subscript : "Pedice", +Superscript : "Apice", +LeftJustify : "Allinea a sinistra", +CenterJustify : "Centra", +RightJustify : "Allinea a destra", +BlockJustify : "Giustifica", +DecreaseIndent : "Riduci rientro", +IncreaseIndent : "Aumenta rientro", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING +Undo : "Annulla", +Redo : "Ripristina", +NumberedListLbl : "Elenco numerato", +NumberedList : "Inserisci/Modifica elenco numerato", +BulletedListLbl : "Elenco puntato", +BulletedList : "Inserisci/Modifica elenco puntato", +ShowTableBorders : "Mostra bordi tabelle", +ShowDetails : "Mostra dettagli", +Style : "Stile", +FontFormat : "Formato", +Font : "Font", +FontSize : "Dimensione", +TextColor : "Colore testo", +BGColor : "Colore sfondo", +Source : "Codice Sorgente", +Find : "Trova", +Replace : "Sostituisci", +SpellCheck : "Correttore ortografico", +UniversalKeyboard : "Tastiera universale", +PageBreakLbl : "Interruzione di pagina", +PageBreak : "Inserisci interruzione di pagina", + +Form : "Modulo", +Checkbox : "Checkbox", +RadioButton : "Radio Button", +TextField : "Campo di testo", +Textarea : "Area di testo", +HiddenField : "Campo nascosto", +Button : "Bottone", +SelectionField : "Menu di selezione", +ImageButton : "Bottone immagine", + +FitWindow : "Massimizza l'area dell'editor", +ShowBlocks : "Visualizza Blocchi", + +// Context Menu +EditLink : "Modifica collegamento", +CellCM : "Cella", +RowCM : "Riga", +ColumnCM : "Colonna", +InsertRowAfter : "Inserisci Riga Dopo", +InsertRowBefore : "Inserisci Riga Prima", +DeleteRows : "Elimina righe", +InsertColumnAfter : "Inserisci Colonna Dopo", +InsertColumnBefore : "Inserisci Colonna Prima", +DeleteColumns : "Elimina colonne", +InsertCellAfter : "Inserisci Cella Dopo", +InsertCellBefore : "Inserisci Cella Prima", +DeleteCells : "Elimina celle", +MergeCells : "Unisce celle", +MergeRight : "Unisci a Destra", +MergeDown : "Unisci in Basso", +HorizontalSplitCell : "Dividi Cella Orizzontalmente", +VerticalSplitCell : "Dividi Cella Verticalmente", +TableDelete : "Cancella Tabella", +CellProperties : "Proprietà cella", +TableProperties : "Proprietà tabella", +ImageProperties : "Proprietà immagine", +FlashProperties : "Proprietà Oggetto Flash", + +AnchorProp : "Proprietà ancora", +ButtonProp : "Proprietà bottone", +CheckboxProp : "Proprietà checkbox", +HiddenFieldProp : "Proprietà campo nascosto", +RadioButtonProp : "Proprietà radio button", +ImageButtonProp : "Proprietà bottone immagine", +TextFieldProp : "Proprietà campo di testo", +SelectionFieldProp : "Proprietà menu di selezione", +TextareaProp : "Proprietà area di testo", +FormProp : "Proprietà modulo", + +FontFormats : "Normale;Formattato;Indirizzo;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Elaborazione XHTML in corso. Attendere prego...", +Done : "Completato", +PasteWordConfirm : "Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?", +NotCompatiblePaste : "Questa funzione è disponibile solo per Internet Explorer 5.5 o superiore. Desideri incollare il testo senza pulirlo?", +UnknownToolbarItem : "Elemento della barra strumenti sconosciuto \"%1\"", +UnknownCommand : "Comando sconosciuto \"%1\"", +NotImplemented : "Comando non implementato", +UnknownToolbarSet : "La barra di strumenti \"%1\" non esiste", +NoActiveX : "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.", +BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.", +DialogBlocked : "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Annulla", +DlgBtnClose : "Chiudi", +DlgBtnBrowseServer : "Cerca sul server", +DlgAdvancedTag : "Avanzate", +DlgOpOther : "", +DlgInfoTab : "Info", +DlgAlertUrl : "Devi inserire l'URL", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Id", +DlgGenLangDir : "Direzione scrittura", +DlgGenLangDirLtr : "Da Sinistra a Destra (LTR)", +DlgGenLangDirRtl : "Da Destra a Sinistra (RTL)", +DlgGenLangCode : "Codice Lingua", +DlgGenAccessKey : "Scorciatoia
    da tastiera", +DlgGenName : "Nome", +DlgGenTabIndex : "Ordine di tabulazione", +DlgGenLongDescr : "URL descrizione estesa", +DlgGenClass : "Nome classe CSS", +DlgGenTitle : "Titolo", +DlgGenContType : "Tipo della risorsa collegata", +DlgGenLinkCharset : "Set di caretteri della risorsa collegata", +DlgGenStyle : "Stile", + +// Image Dialog +DlgImgTitle : "Proprietà immagine", +DlgImgInfoTab : "Informazioni immagine", +DlgImgBtnUpload : "Invia al server", +DlgImgURL : "URL", +DlgImgUpload : "Carica", +DlgImgAlt : "Testo alternativo", +DlgImgWidth : "Larghezza", +DlgImgHeight : "Altezza", +DlgImgLockRatio : "Blocca rapporto", +DlgBtnResetSize : "Reimposta dimensione", +DlgImgBorder : "Bordo", +DlgImgHSpace : "HSpace", +DlgImgVSpace : "VSpace", +DlgImgAlign : "Allineamento", +DlgImgAlignLeft : "Sinistra", +DlgImgAlignAbsBottom: "In basso assoluto", +DlgImgAlignAbsMiddle: "Centrato assoluto", +DlgImgAlignBaseline : "Linea base", +DlgImgAlignBottom : "In Basso", +DlgImgAlignMiddle : "Centrato", +DlgImgAlignRight : "Destra", +DlgImgAlignTextTop : "In alto al testo", +DlgImgAlignTop : "In Alto", +DlgImgPreview : "Anteprima", +DlgImgAlertUrl : "Devi inserire l'URL per l'immagine", +DlgImgLinkTab : "Collegamento", + +// Flash Dialog +DlgFlashTitle : "Proprietà Oggetto Flash", +DlgFlashChkPlay : "Avvio Automatico", +DlgFlashChkLoop : "Cicla", +DlgFlashChkMenu : "Abilita Menu di Flash", +DlgFlashScale : "Ridimensiona", +DlgFlashScaleAll : "Mostra Tutto", +DlgFlashScaleNoBorder : "Senza Bordo", +DlgFlashScaleFit : "Dimensione Esatta", + +// Link Dialog +DlgLnkWindowTitle : "Collegamento", +DlgLnkInfoTab : "Informazioni collegamento", +DlgLnkTargetTab : "Destinazione", + +DlgLnkType : "Tipo di Collegamento", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Ancora nella pagina", +DlgLnkTypeEMail : "E-Mail", +DlgLnkProto : "Protocollo", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Scegli Ancora", +DlgLnkAnchorByName : "Per Nome", +DlgLnkAnchorById : "Per id elemento", +DlgLnkNoAnchors : "(Nessuna ancora disponibile nel documento)", +DlgLnkEMail : "Indirizzo E-Mail", +DlgLnkEMailSubject : "Oggetto del messaggio", +DlgLnkEMailBody : "Corpo del messaggio", +DlgLnkUpload : "Carica", +DlgLnkBtnUpload : "Invia al Server", + +DlgLnkTarget : "Destinazione", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Nuova finestra (_blank)", +DlgLnkTargetParent : "Finestra padre (_parent)", +DlgLnkTargetSelf : "Stessa finestra (_self)", +DlgLnkTargetTop : "Finestra superiore (_top)", +DlgLnkTargetFrameName : "Nome del riquadro di destinazione", +DlgLnkPopWinName : "Nome finestra popup", +DlgLnkPopWinFeat : "Caratteristiche finestra popup", +DlgLnkPopResize : "Ridimensionabile", +DlgLnkPopLocation : "Barra degli indirizzi", +DlgLnkPopMenu : "Barra del menu", +DlgLnkPopScroll : "Barre di scorrimento", +DlgLnkPopStatus : "Barra di stato", +DlgLnkPopToolbar : "Barra degli strumenti", +DlgLnkPopFullScrn : "A tutto schermo (IE)", +DlgLnkPopDependent : "Dipendente (Netscape)", +DlgLnkPopWidth : "Larghezza", +DlgLnkPopHeight : "Altezza", +DlgLnkPopLeft : "Posizione da sinistra", +DlgLnkPopTop : "Posizione dall'alto", + +DlnLnkMsgNoUrl : "Devi inserire l'URL del collegamento", +DlnLnkMsgNoEMail : "Devi inserire un'indirizzo e-mail", +DlnLnkMsgNoAnchor : "Devi selezionare un'ancora", +DlnLnkMsgInvPopName : "Il nome del popup deve iniziare con una lettera, e non può contenere spazi", + +// Color Dialog +DlgColorTitle : "Seleziona colore", +DlgColorBtnClear : "Vuota", +DlgColorHighlight : "Evidenziato", +DlgColorSelected : "Selezionato", + +// Smiley Dialog +DlgSmileyTitle : "Inserisci emoticon", + +// Special Character Dialog +DlgSpecialCharTitle : "Seleziona carattere speciale", + +// Table Dialog +DlgTableTitle : "Proprietà tabella", +DlgTableRows : "Righe", +DlgTableColumns : "Colonne", +DlgTableBorder : "Dimensione bordo", +DlgTableAlign : "Allineamento", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Sinistra", +DlgTableAlignCenter : "Centrato", +DlgTableAlignRight : "Destra", +DlgTableWidth : "Larghezza", +DlgTableWidthPx : "pixel", +DlgTableWidthPc : "percento", +DlgTableHeight : "Altezza", +DlgTableCellSpace : "Spaziatura celle", +DlgTableCellPad : "Padding celle", +DlgTableCaption : "Intestazione", +DlgTableSummary : "Indice", +DlgTableHeaders : "Headers", //MISSING +DlgTableHeadersNone : "None", //MISSING +DlgTableHeadersColumn : "First column", //MISSING +DlgTableHeadersRow : "First Row", //MISSING +DlgTableHeadersBoth : "Both", //MISSING + +// Table Cell Dialog +DlgCellTitle : "Proprietà cella", +DlgCellWidth : "Larghezza", +DlgCellWidthPx : "pixel", +DlgCellWidthPc : "percento", +DlgCellHeight : "Altezza", +DlgCellWordWrap : "A capo automatico", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Si", +DlgCellWordWrapNo : "No", +DlgCellHorAlign : "Allineamento orizzontale", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Sinistra", +DlgCellHorAlignCenter : "Centrato", +DlgCellHorAlignRight: "Destra", +DlgCellVerAlign : "Allineamento verticale", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "In Alto", +DlgCellVerAlignMiddle : "Centrato", +DlgCellVerAlignBottom : "In Basso", +DlgCellVerAlignBaseline : "Linea base", +DlgCellType : "Cell Type", //MISSING +DlgCellTypeData : "Data", //MISSING +DlgCellTypeHeader : "Header", //MISSING +DlgCellRowSpan : "Righe occupate", +DlgCellCollSpan : "Colonne occupate", +DlgCellBackColor : "Colore sfondo", +DlgCellBorderColor : "Colore bordo", +DlgCellBtnSelect : "Scegli...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Cerca e Sostituisci", + +// Find Dialog +DlgFindTitle : "Trova", +DlgFindFindBtn : "Trova", +DlgFindNotFoundMsg : "L'elemento cercato non è stato trovato.", + +// Replace Dialog +DlgReplaceTitle : "Sostituisci", +DlgReplaceFindLbl : "Trova:", +DlgReplaceReplaceLbl : "Sostituisci con:", +DlgReplaceCaseChk : "Maiuscole/minuscole", +DlgReplaceReplaceBtn : "Sostituisci", +DlgReplaceReplAllBtn : "Sostituisci tutto", +DlgReplaceWordChk : "Solo parole intere", + +// Paste Operations / Dialog +PasteErrorCut : "Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).", +PasteErrorCopy : "Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).", + +PasteAsText : "Incolla come testo semplice", +PasteFromWord : "Incolla da Word", + +DlgPasteMsg2 : "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (Ctrl+V) e premi OK.", +DlgPasteSec : "A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.", +DlgPasteIgnoreFont : "Ignora le definizioni di Font", +DlgPasteRemoveStyles : "Rimuovi le definizioni di Stile", + +// Color Picker +ColorAutomatic : "Automatico", +ColorMoreColors : "Altri colori...", + +// Document Properties +DocProps : "Proprietà del Documento", + +// Anchor Dialog +DlgAnchorTitle : "Proprietà ancora", +DlgAnchorName : "Nome ancora", +DlgAnchorErrorName : "Inserici il nome dell'ancora", + +// Speller Pages Dialog +DlgSpellNotInDic : "Non nel dizionario", +DlgSpellChangeTo : "Cambia in", +DlgSpellBtnIgnore : "Ignora", +DlgSpellBtnIgnoreAll : "Ignora tutto", +DlgSpellBtnReplace : "Cambia", +DlgSpellBtnReplaceAll : "Cambia tutto", +DlgSpellBtnUndo : "Annulla", +DlgSpellNoSuggestions : "- Nessun suggerimento -", +DlgSpellProgress : "Controllo ortografico in corso", +DlgSpellNoMispell : "Controllo ortografico completato: nessun errore trovato", +DlgSpellNoChanges : "Controllo ortografico completato: nessuna parola cambiata", +DlgSpellOneChange : "Controllo ortografico completato: 1 parola cambiata", +DlgSpellManyChanges : "Controllo ortografico completato: %1 parole cambiate", + +IeSpellDownload : "Contollo ortografico non installato. Lo vuoi scaricare ora?", + +// Button Dialog +DlgButtonText : "Testo (Value)", +DlgButtonType : "Tipo", +DlgButtonTypeBtn : "Bottone", +DlgButtonTypeSbm : "Invio", +DlgButtonTypeRst : "Annulla", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Nome", +DlgCheckboxValue : "Valore", +DlgCheckboxSelected : "Selezionato", + +// Form Dialog +DlgFormName : "Nome", +DlgFormAction : "Azione", +DlgFormMethod : "Metodo", + +// Select Field Dialog +DlgSelectName : "Nome", +DlgSelectValue : "Valore", +DlgSelectSize : "Dimensione", +DlgSelectLines : "righe", +DlgSelectChkMulti : "Permetti selezione multipla", +DlgSelectOpAvail : "Opzioni disponibili", +DlgSelectOpText : "Testo", +DlgSelectOpValue : "Valore", +DlgSelectBtnAdd : "Aggiungi", +DlgSelectBtnModify : "Modifica", +DlgSelectBtnUp : "Su", +DlgSelectBtnDown : "Gi", +DlgSelectBtnSetValue : "Imposta come predefinito", +DlgSelectBtnDelete : "Rimuovi", + +// Textarea Dialog +DlgTextareaName : "Nome", +DlgTextareaCols : "Colonne", +DlgTextareaRows : "Righe", + +// Text Field Dialog +DlgTextName : "Nome", +DlgTextValue : "Valore", +DlgTextCharWidth : "Larghezza", +DlgTextMaxChars : "Numero massimo di caratteri", +DlgTextType : "Tipo", +DlgTextTypeText : "Testo", +DlgTextTypePass : "Password", + +// Hidden Field Dialog +DlgHiddenName : "Nome", +DlgHiddenValue : "Valore", + +// Bulleted List Dialog +BulletedListProp : "Proprietà lista puntata", +NumberedListProp : "Proprietà lista numerata", +DlgLstStart : "Inizio", +DlgLstType : "Tipo", +DlgLstTypeCircle : "Tondo", +DlgLstTypeDisc : "Disco", +DlgLstTypeSquare : "Quadrato", +DlgLstTypeNumbers : "Numeri (1, 2, 3)", +DlgLstTypeLCase : "Caratteri minuscoli (a, b, c)", +DlgLstTypeUCase : "Caratteri maiuscoli (A, B, C)", +DlgLstTypeSRoman : "Numeri Romani minuscoli (i, ii, iii)", +DlgLstTypeLRoman : "Numeri Romani maiuscoli (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Genarale", +DlgDocBackTab : "Sfondo", +DlgDocColorsTab : "Colori e margini", +DlgDocMetaTab : "Meta Data", + +DlgDocPageTitle : "Titolo pagina", +DlgDocLangDir : "Direzione scrittura", +DlgDocLangDirLTR : "Da Sinistra a Destra (LTR)", +DlgDocLangDirRTL : "Da Destra a Sinistra (RTL)", +DlgDocLangCode : "Codice Lingua", +DlgDocCharSet : "Set di caretteri", +DlgDocCharSetCE : "Europa Centrale", +DlgDocCharSetCT : "Cinese Tradizionale (Big5)", +DlgDocCharSetCR : "Cirillico", +DlgDocCharSetGR : "Greco", +DlgDocCharSetJP : "Giapponese", +DlgDocCharSetKR : "Coreano", +DlgDocCharSetTR : "Turco", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Europa Occidentale", +DlgDocCharSetOther : "Altro set di caretteri", + +DlgDocDocType : "Intestazione DocType", +DlgDocDocTypeOther : "Altra intestazione DocType", +DlgDocIncXHTML : "Includi dichiarazione XHTML", +DlgDocBgColor : "Colore di sfondo", +DlgDocBgImage : "Immagine di sfondo", +DlgDocBgNoScroll : "Sfondo fissato", +DlgDocCText : "Testo", +DlgDocCLink : "Collegamento", +DlgDocCVisited : "Collegamento visitato", +DlgDocCActive : "Collegamento attivo", +DlgDocMargins : "Margini", +DlgDocMaTop : "In Alto", +DlgDocMaLeft : "A Sinistra", +DlgDocMaRight : "A Destra", +DlgDocMaBottom : "In Basso", +DlgDocMeIndex : "Chiavi di indicizzazione documento (separate da virgola)", +DlgDocMeDescr : "Descrizione documento", +DlgDocMeAuthor : "Autore", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Anteprima", + +// Templates Dialog +Templates : "Modelli", +DlgTemplatesTitle : "Contenuto dei modelli", +DlgTemplatesSelMsg : "Seleziona il modello da aprire nell'editor:", +DlgTemplatesLoading : "Caricamento modelli in corso. Attendere prego...", +DlgTemplatesNoTpl : "(Nessun modello definito)", +DlgTemplatesReplace : "Cancella il contenuto corrente", + +// About Dialog +DlgAboutAboutTab : "Informazioni", +DlgAboutBrowserInfoTab : "Informazioni Browser", +DlgAboutLicenseTab : "Licenza", +DlgAboutVersion : "versione", +DlgAboutInfo : "Per maggiori informazioni visitare", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style", //MISSING + +ScaytTitle : "SCAYT", //MISSING +ScaytTitleOptions : "Options", //MISSING +ScaytTitleLangs : "Languages", //MISSING +ScaytTitleAbout : "About" //MISSING +}; diff --git a/fckeditor/FCKeditor/editor/lang/nl.js b/fckeditor/FCKeditor/editor/lang/nl.js new file mode 100644 index 0000000..bb5f357 --- /dev/null +++ b/fckeditor/FCKeditor/editor/lang/nl.js @@ -0,0 +1,539 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Dutch language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Menubalk inklappen", +ToolbarExpand : "Menubalk uitklappen", + +// Toolbar Items and Context Menu +Save : "Opslaan", +NewPage : "Nieuwe pagina", +Preview : "Voorbeeld", +Cut : "Knippen", +Copy : "Kopiëren", +Paste : "Plakken", +PasteText : "Plakken als platte tekst", +PasteWord : "Plakken als Word-gegevens", +Print : "Printen", +SelectAll : "Alles selecteren", +RemoveFormat : "Opmaak verwijderen", +InsertLinkLbl : "Link", +InsertLink : "Link invoegen/wijzigen", +RemoveLink : "Link verwijderen", +VisitLink : "Link volgen", +Anchor : "Interne link", +AnchorDelete : "Anker verwijderen", +InsertImageLbl : "Afbeelding", +InsertImage : "Afbeelding invoegen/wijzigen", +InsertFlashLbl : "Flash", +InsertFlash : "Flash invoegen/wijzigen", +InsertTableLbl : "Tabel", +InsertTable : "Tabel invoegen/wijzigen", +InsertLineLbl : "Lijn", +InsertLine : "Horizontale lijn invoegen", +InsertSpecialCharLbl: "Speciale tekens", +InsertSpecialChar : "Speciaal teken invoegen", +InsertSmileyLbl : "Smiley", +InsertSmiley : "Smiley invoegen", +About : "Over FCKeditor", +Bold : "Vet", +Italic : "Schuingedrukt", +Underline : "Onderstreept", +StrikeThrough : "Doorhalen", +Subscript : "Subscript", +Superscript : "Superscript", +LeftJustify : "Links uitlijnen", +CenterJustify : "Centreren", +RightJustify : "Rechts uitlijnen", +BlockJustify : "Uitvullen", +DecreaseIndent : "Inspringen verkleinen", +IncreaseIndent : "Inspringen vergroten", +Blockquote : "Citaatblok", +CreateDiv : "DIV aanmaken", +EditDiv : "DIV wijzigen", +DeleteDiv : "DIV verwijderen", +Undo : "Ongedaan maken", +Redo : "Opnieuw uitvoeren", +NumberedListLbl : "Genummerde lijst", +NumberedList : "Genummerde lijst invoegen/verwijderen", +BulletedListLbl : "Opsomming", +BulletedList : "Opsomming invoegen/verwijderen", +ShowTableBorders : "Randen tabel weergeven", +ShowDetails : "Details weergeven", +Style : "Stijl", +FontFormat : "Opmaak", +Font : "Lettertype", +FontSize : "Grootte", +TextColor : "Tekstkleur", +BGColor : "Achtergrondkleur", +Source : "Code", +Find : "Zoeken", +Replace : "Vervangen", +SpellCheck : "Spellingscontrole", +UniversalKeyboard : "Universeel toetsenbord", +PageBreakLbl : "Pagina-einde", +PageBreak : "Pagina-einde invoegen", + +Form : "Formulier", +Checkbox : "Aanvinkvakje", +RadioButton : "Selectievakje", +TextField : "Tekstveld", +Textarea : "Tekstvak", +HiddenField : "Verborgen veld", +Button : "Knop", +SelectionField : "Selectieveld", +ImageButton : "Afbeeldingsknop", + +FitWindow : "De editor maximaliseren", +ShowBlocks : "Toon blokken", + +// Context Menu +EditLink : "Link wijzigen", +CellCM : "Cel", +RowCM : "Rij", +ColumnCM : "Kolom", +InsertRowAfter : "Voeg rij in achter", +InsertRowBefore : "Voeg rij in voor", +DeleteRows : "Rijen verwijderen", +InsertColumnAfter : "Voeg kolom in achter", +InsertColumnBefore : "Voeg kolom in voor", +DeleteColumns : "Kolommen verwijderen", +InsertCellAfter : "Voeg cel in achter", +InsertCellBefore : "Voeg cel in voor", +DeleteCells : "Cellen verwijderen", +MergeCells : "Cellen samenvoegen", +MergeRight : "Voeg samen naar rechts", +MergeDown : "Voeg samen naar beneden", +HorizontalSplitCell : "Splits cellen horizontaal", +VerticalSplitCell : "Splits cellen verticaal", +TableDelete : "Tabel verwijderen", +CellProperties : "Eigenschappen cel", +TableProperties : "Eigenschappen tabel", +ImageProperties : "Eigenschappen afbeelding", +FlashProperties : "Eigenschappen Flash", + +AnchorProp : "Eigenschappen interne link", +ButtonProp : "Eigenschappen knop", +CheckboxProp : "Eigenschappen aanvinkvakje", +HiddenFieldProp : "Eigenschappen verborgen veld", +RadioButtonProp : "Eigenschappen selectievakje", +ImageButtonProp : "Eigenschappen afbeeldingsknop", +TextFieldProp : "Eigenschappen tekstveld", +SelectionFieldProp : "Eigenschappen selectieveld", +TextareaProp : "Eigenschappen tekstvak", +FormProp : "Eigenschappen formulier", + +FontFormats : "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6;Normaal (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Bezig met verwerken XHTML. Even geduld aub...", +Done : "Klaar", +PasteWordConfirm : "De tekst die u plakte lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?", +NotCompatiblePaste : "Deze opdracht is beschikbaar voor Internet Explorer versie 5.5 of hoger. Wilt u plakken zonder op te schonen?", +UnknownToolbarItem : "Onbekend item op menubalk \"%1\"", +UnknownCommand : "Onbekende opdrachtnaam: \"%1\"", +NotImplemented : "Opdracht niet geïmplementeerd.", +UnknownToolbarSet : "Menubalk \"%1\" bestaat niet.", +NoActiveX : "De beveilingsinstellingen van uw browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.", +BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.", +DialogBlocked : "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.", +VisitLinkBlocked : "Het was niet mogelijk een nieuw venster te openen. Controleer of er geen pop-up-blocker aktief is.", + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Annuleren", +DlgBtnClose : "Afsluiten", +DlgBtnBrowseServer : "Bladeren op server", +DlgAdvancedTag : "Geavanceerd", +DlgOpOther : "", +DlgInfoTab : "Informatie", +DlgAlertUrl : "Geef URL op", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Kenmerk", +DlgGenLangDir : "Schrijfrichting", +DlgGenLangDirLtr : "Links naar rechts (LTR)", +DlgGenLangDirRtl : "Rechts naar links (RTL)", +DlgGenLangCode : "Taalcode", +DlgGenAccessKey : "Toegangstoets", +DlgGenName : "Naam", +DlgGenTabIndex : "Tabvolgorde", +DlgGenLongDescr : "Lange URL-omschrijving", +DlgGenClass : "Stylesheet-klassen", +DlgGenTitle : "Aanbevolen titel", +DlgGenContType : "Aanbevolen content-type", +DlgGenLinkCharset : "Karakterset van gelinkte bron", +DlgGenStyle : "Stijl", + +// Image Dialog +DlgImgTitle : "Eigenschappen afbeelding", +DlgImgInfoTab : "Informatie afbeelding", +DlgImgBtnUpload : "Naar server verzenden", +DlgImgURL : "URL", +DlgImgUpload : "Upload", +DlgImgAlt : "Alternatieve tekst", +DlgImgWidth : "Breedte", +DlgImgHeight : "Hoogte", +DlgImgLockRatio : "Afmetingen vergrendelen", +DlgBtnResetSize : "Afmetingen resetten", +DlgImgBorder : "Rand", +DlgImgHSpace : "HSpace", +DlgImgVSpace : "VSpace", +DlgImgAlign : "Uitlijning", +DlgImgAlignLeft : "Links", +DlgImgAlignAbsBottom: "Absoluut-onder", +DlgImgAlignAbsMiddle: "Absoluut-midden", +DlgImgAlignBaseline : "Basislijn", +DlgImgAlignBottom : "Beneden", +DlgImgAlignMiddle : "Midden", +DlgImgAlignRight : "Rechts", +DlgImgAlignTextTop : "Boven tekst", +DlgImgAlignTop : "Boven", +DlgImgPreview : "Voorbeeld", +DlgImgAlertUrl : "Geef de URL van de afbeelding", +DlgImgLinkTab : "Link", + +// Flash Dialog +DlgFlashTitle : "Eigenschappen Flash", +DlgFlashChkPlay : "Automatisch afspelen", +DlgFlashChkLoop : "Herhalen", +DlgFlashChkMenu : "Flashmenu\'s inschakelen", +DlgFlashScale : "Schaal", +DlgFlashScaleAll : "Alles tonen", +DlgFlashScaleNoBorder : "Geen rand", +DlgFlashScaleFit : "Precies passend", + +// Link Dialog +DlgLnkWindowTitle : "Link", +DlgLnkInfoTab : "Linkomschrijving", +DlgLnkTargetTab : "Doel", + +DlgLnkType : "Linktype", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Interne link in pagina", +DlgLnkTypeEMail : "E-mail", +DlgLnkProto : "Protocol", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Kies een interne link", +DlgLnkAnchorByName : "Op naam interne link", +DlgLnkAnchorById : "Op kenmerk interne link", +DlgLnkNoAnchors : "(Geen interne links in document gevonden)", +DlgLnkEMail : "E-mailadres", +DlgLnkEMailSubject : "Onderwerp bericht", +DlgLnkEMailBody : "Inhoud bericht", +DlgLnkUpload : "Upload", +DlgLnkBtnUpload : "Naar de server versturen", + +DlgLnkTarget : "Doel", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Nieuw venster (_blank)", +DlgLnkTargetParent : "Origineel venster (_parent)", +DlgLnkTargetSelf : "Zelfde venster (_self)", +DlgLnkTargetTop : "Hele venster (_top)", +DlgLnkTargetFrameName : "Naam doelframe", +DlgLnkPopWinName : "Naam popupvenster", +DlgLnkPopWinFeat : "Instellingen popupvenster", +DlgLnkPopResize : "Grootte wijzigen", +DlgLnkPopLocation : "Locatiemenu", +DlgLnkPopMenu : "Menubalk", +DlgLnkPopScroll : "Schuifbalken", +DlgLnkPopStatus : "Statusbalk", +DlgLnkPopToolbar : "Menubalk", +DlgLnkPopFullScrn : "Volledig scherm (IE)", +DlgLnkPopDependent : "Afhankelijk (Netscape)", +DlgLnkPopWidth : "Breedte", +DlgLnkPopHeight : "Hoogte", +DlgLnkPopLeft : "Positie links", +DlgLnkPopTop : "Positie boven", + +DlnLnkMsgNoUrl : "Geef de link van de URL", +DlnLnkMsgNoEMail : "Geef een e-mailadres", +DlnLnkMsgNoAnchor : "Selecteer een interne link", +DlnLnkMsgInvPopName : "De naam van de popup moet met een alfa-numerieke waarde beginnen, en mag geen spaties bevatten.", + +// Color Dialog +DlgColorTitle : "Selecteer kleur", +DlgColorBtnClear : "Opschonen", +DlgColorHighlight : "Accentueren", +DlgColorSelected : "Geselecteerd", + +// Smiley Dialog +DlgSmileyTitle : "Smiley invoegen", + +// Special Character Dialog +DlgSpecialCharTitle : "Selecteer speciaal teken", + +// Table Dialog +DlgTableTitle : "Eigenschappen tabel", +DlgTableRows : "Rijen", +DlgTableColumns : "Kolommen", +DlgTableBorder : "Breedte rand", +DlgTableAlign : "Uitlijning", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Links", +DlgTableAlignCenter : "Centreren", +DlgTableAlignRight : "Rechts", +DlgTableWidth : "Breedte", +DlgTableWidthPx : "pixels", +DlgTableWidthPc : "procent", +DlgTableHeight : "Hoogte", +DlgTableCellSpace : "Afstand tussen cellen", +DlgTableCellPad : "Afstand vanaf rand cel", +DlgTableCaption : "Naam", +DlgTableSummary : "Samenvatting", +DlgTableHeaders : "Headers", //MISSING +DlgTableHeadersNone : "None", //MISSING +DlgTableHeadersColumn : "First column", //MISSING +DlgTableHeadersRow : "First Row", //MISSING +DlgTableHeadersBoth : "Both", //MISSING + +// Table Cell Dialog +DlgCellTitle : "Eigenschappen cel", +DlgCellWidth : "Breedte", +DlgCellWidthPx : "pixels", +DlgCellWidthPc : "procent", +DlgCellHeight : "Hoogte", +DlgCellWordWrap : "Afbreken woorden", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Ja", +DlgCellWordWrapNo : "Nee", +DlgCellHorAlign : "Horizontale uitlijning", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Links", +DlgCellHorAlignCenter : "Centreren", +DlgCellHorAlignRight: "Rechts", +DlgCellVerAlign : "Verticale uitlijning", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Boven", +DlgCellVerAlignMiddle : "Midden", +DlgCellVerAlignBottom : "Beneden", +DlgCellVerAlignBaseline : "Basislijn", +DlgCellType : "Cell Type", //MISSING +DlgCellTypeData : "Data", //MISSING +DlgCellTypeHeader : "Header", //MISSING +DlgCellRowSpan : "Overkoepeling rijen", +DlgCellCollSpan : "Overkoepeling kolommen", +DlgCellBackColor : "Achtergrondkleur", +DlgCellBorderColor : "Randkleur", +DlgCellBtnSelect : "Selecteren...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Zoeken en vervangen", + +// Find Dialog +DlgFindTitle : "Zoeken", +DlgFindFindBtn : "Zoeken", +DlgFindNotFoundMsg : "De opgegeven tekst is niet gevonden.", + +// Replace Dialog +DlgReplaceTitle : "Vervangen", +DlgReplaceFindLbl : "Zoeken naar:", +DlgReplaceReplaceLbl : "Vervangen met:", +DlgReplaceCaseChk : "Hoofdlettergevoelig", +DlgReplaceReplaceBtn : "Vervangen", +DlgReplaceReplAllBtn : "Alles vervangen", +DlgReplaceWordChk : "Hele woord moet voorkomen", + +// Paste Operations / Dialog +PasteErrorCut : "De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.", +PasteErrorCopy : "De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.", + +PasteAsText : "Plakken als platte tekst", +PasteFromWord : "Plakken als Word-gegevens", + +DlgPasteMsg2 : "Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (Ctrl+V) en klik op OK.", +DlgPasteSec : "Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.", +DlgPasteIgnoreFont : "Negeer \"Font Face\"-definities", +DlgPasteRemoveStyles : "Verwijder \"Style\"-definities", + +// Color Picker +ColorAutomatic : "Automatisch", +ColorMoreColors : "Meer kleuren...", + +// Document Properties +DocProps : "Eigenschappen document", + +// Anchor Dialog +DlgAnchorTitle : "Eigenschappen interne link", +DlgAnchorName : "Naam interne link", +DlgAnchorErrorName : "Geef de naam van de interne link op", + +// Speller Pages Dialog +DlgSpellNotInDic : "Niet in het woordenboek", +DlgSpellChangeTo : "Wijzig in", +DlgSpellBtnIgnore : "Negeren", +DlgSpellBtnIgnoreAll : "Alles negeren", +DlgSpellBtnReplace : "Vervangen", +DlgSpellBtnReplaceAll : "Alles vervangen", +DlgSpellBtnUndo : "Ongedaan maken", +DlgSpellNoSuggestions : "-Geen suggesties-", +DlgSpellProgress : "Bezig met spellingscontrole...", +DlgSpellNoMispell : "Klaar met spellingscontrole: geen fouten gevonden", +DlgSpellNoChanges : "Klaar met spellingscontrole: geen woorden aangepast", +DlgSpellOneChange : "Klaar met spellingscontrole: één woord aangepast", +DlgSpellManyChanges : "Klaar met spellingscontrole: %1 woorden aangepast", + +IeSpellDownload : "De spellingscontrole niet geïnstalleerd. Wilt u deze nu downloaden?", + +// Button Dialog +DlgButtonText : "Tekst (waarde)", +DlgButtonType : "Soort", +DlgButtonTypeBtn : "Knop", +DlgButtonTypeSbm : "Versturen", +DlgButtonTypeRst : "Leegmaken", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Naam", +DlgCheckboxValue : "Waarde", +DlgCheckboxSelected : "Geselecteerd", + +// Form Dialog +DlgFormName : "Naam", +DlgFormAction : "Actie", +DlgFormMethod : "Methode", + +// Select Field Dialog +DlgSelectName : "Naam", +DlgSelectValue : "Waarde", +DlgSelectSize : "Grootte", +DlgSelectLines : "Regels", +DlgSelectChkMulti : "Gecombineerde selecties toestaan", +DlgSelectOpAvail : "Beschikbare opties", +DlgSelectOpText : "Tekst", +DlgSelectOpValue : "Waarde", +DlgSelectBtnAdd : "Toevoegen", +DlgSelectBtnModify : "Wijzigen", +DlgSelectBtnUp : "Omhoog", +DlgSelectBtnDown : "Omlaag", +DlgSelectBtnSetValue : "Als geselecteerde waarde instellen", +DlgSelectBtnDelete : "Verwijderen", + +// Textarea Dialog +DlgTextareaName : "Naam", +DlgTextareaCols : "Kolommen", +DlgTextareaRows : "Rijen", + +// Text Field Dialog +DlgTextName : "Naam", +DlgTextValue : "Waarde", +DlgTextCharWidth : "Breedte (tekens)", +DlgTextMaxChars : "Maximum aantal tekens", +DlgTextType : "Soort", +DlgTextTypeText : "Tekst", +DlgTextTypePass : "Wachtwoord", + +// Hidden Field Dialog +DlgHiddenName : "Naam", +DlgHiddenValue : "Waarde", + +// Bulleted List Dialog +BulletedListProp : "Eigenschappen opsommingslijst", +NumberedListProp : "Eigenschappen genummerde opsommingslijst", +DlgLstStart : "Start", +DlgLstType : "Soort", +DlgLstTypeCircle : "Cirkel", +DlgLstTypeDisc : "Schijf", +DlgLstTypeSquare : "Vierkant", +DlgLstTypeNumbers : "Nummers (1, 2, 3)", +DlgLstTypeLCase : "Kleine letters (a, b, c)", +DlgLstTypeUCase : "Hoofdletters (A, B, C)", +DlgLstTypeSRoman : "Klein Romeins (i, ii, iii)", +DlgLstTypeLRoman : "Groot Romeins (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Algemeen", +DlgDocBackTab : "Achtergrond", +DlgDocColorsTab : "Kleuring en marges", +DlgDocMetaTab : "META-data", + +DlgDocPageTitle : "Paginatitel", +DlgDocLangDir : "Schrijfrichting", +DlgDocLangDirLTR : "Links naar rechts", +DlgDocLangDirRTL : "Rechts naar links", +DlgDocLangCode : "Taalcode", +DlgDocCharSet : "Karakterset-encoding", +DlgDocCharSetCE : "Centraal Europees", +DlgDocCharSetCT : "Traditioneel Chinees (Big5)", +DlgDocCharSetCR : "Cyriliaans", +DlgDocCharSetGR : "Grieks", +DlgDocCharSetJP : "Japans", +DlgDocCharSetKR : "Koreaans", +DlgDocCharSetTR : "Turks", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "West europees", +DlgDocCharSetOther : "Andere karakterset-encoding", + +DlgDocDocType : "Opschrift documentsoort", +DlgDocDocTypeOther : "Ander opschrift documentsoort", +DlgDocIncXHTML : "XHTML-declaraties meenemen", +DlgDocBgColor : "Achtergrondkleur", +DlgDocBgImage : "URL achtergrondplaatje", +DlgDocBgNoScroll : "Vaste achtergrond", +DlgDocCText : "Tekst", +DlgDocCLink : "Link", +DlgDocCVisited : "Bezochte link", +DlgDocCActive : "Active link", +DlgDocMargins : "Afstandsinstellingen document", +DlgDocMaTop : "Boven", +DlgDocMaLeft : "Links", +DlgDocMaRight : "Rechts", +DlgDocMaBottom : "Onder", +DlgDocMeIndex : "Trefwoorden betreffende document (kommagescheiden)", +DlgDocMeDescr : "Beschrijving document", +DlgDocMeAuthor : "Auteur", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Voorbeeld", + +// Templates Dialog +Templates : "Sjablonen", +DlgTemplatesTitle : "Inhoud sjabonen", +DlgTemplatesSelMsg : "Selecteer het sjabloon dat in de editor geopend moet worden:", +DlgTemplatesLoading : "Bezig met laden sjabonen. Even geduld alstublieft...", +DlgTemplatesNoTpl : "(Geen sjablonen gedefinieerd)", +DlgTemplatesReplace : "Vervang de huidige inhoud", + +// About Dialog +DlgAboutAboutTab : "Over", +DlgAboutBrowserInfoTab : "Browserinformatie", +DlgAboutLicenseTab : "Licentie", +DlgAboutVersion : "Versie", +DlgAboutInfo : "Voor meer informatie ga naar ", + +// Div Dialog +DlgDivGeneralTab : "Algemeen", +DlgDivAdvancedTab : "Geavanceerd", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style", + +ScaytTitle : "SCAYT", //MISSING +ScaytTitleOptions : "Options", //MISSING +ScaytTitleLangs : "Languages", //MISSING +ScaytTitleAbout : "About" //MISSING +}; diff --git a/fckeditor/FCKeditor/editor/lang/sk.js b/fckeditor/FCKeditor/editor/lang/sk.js new file mode 100644 index 0000000..0d9d1ad --- /dev/null +++ b/fckeditor/FCKeditor/editor/lang/sk.js @@ -0,0 +1,539 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Slovak language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Skryť panel nástrojov", +ToolbarExpand : "Zobraziť panel nástrojov", + +// Toolbar Items and Context Menu +Save : "Uložiť", +NewPage : "Nová stránka", +Preview : "Náhľad", +Cut : "Vystrihnúť", +Copy : "Kopírovať", +Paste : "Vložiť", +PasteText : "Vložiť ako čistý text", +PasteWord : "Vložiť z Wordu", +Print : "Tlač", +SelectAll : "Vybrať všetko", +RemoveFormat : "Odstrániť formátovanie", +InsertLinkLbl : "Odkaz", +InsertLink : "Vložiť/zmeniť odkaz", +RemoveLink : "Odstrániť odkaz", +VisitLink : "Ísť na odkaz", +Anchor : "Vložiť/zmeniť kotvu", +AnchorDelete : "Odstrániť kotvu", +InsertImageLbl : "Obrázok", +InsertImage : "Vložiť/zmeniť obrázok", +InsertFlashLbl : "Flash", +InsertFlash : "Vložiť/zmeniť Flash", +InsertTableLbl : "Tabuľka", +InsertTable : "Vložiť/zmeniť tabuľku", +InsertLineLbl : "Čiara", +InsertLine : "Vložiť vodorovnú čiaru", +InsertSpecialCharLbl: "Špeciálne znaky", +InsertSpecialChar : "Vložiť špeciálne znaky", +InsertSmileyLbl : "Smajlíky", +InsertSmiley : "Vložiť smajlíka", +About : "O aplikácii FCKeditor", +Bold : "Tučné", +Italic : "Kurzíva", +Underline : "Podčiarknuté", +StrikeThrough : "Prečiarknuté", +Subscript : "Dolný index", +Superscript : "Horný index", +LeftJustify : "Zarovnať vľavo", +CenterJustify : "Zarovnať na stred", +RightJustify : "Zarovnať vpravo", +BlockJustify : "Zarovnať do bloku", +DecreaseIndent : "Zmenšiť odsadenie", +IncreaseIndent : "Zväčšiť odsadenie", +Blockquote : "Citácia", +CreateDiv : "Vytvoriť Div kontajner", +EditDiv : "Editovať Div kontajner", +DeleteDiv : "Odstrániť Div kontajner", +Undo : "Späť", +Redo : "Znovu", +NumberedListLbl : "Číslovanie", +NumberedList : "Vložiť/odstrániť číslovanie", +BulletedListLbl : "Odrážky", +BulletedList : "Vložiť/odstraniť odrážky", +ShowTableBorders : "Zobraziť okraje tabuliek", +ShowDetails : "Zobraziť podrobnosti", +Style : "Štýl", +FontFormat : "Formát", +Font : "Písmo", +FontSize : "Veľkosť", +TextColor : "Farba textu", +BGColor : "Farba pozadia", +Source : "Zdroj", +Find : "Hľadať", +Replace : "Nahradiť", +SpellCheck : "Kontrola pravopisu", +UniversalKeyboard : "Univerzálna klávesnica", +PageBreakLbl : "Oddeľovač stránky", +PageBreak : "Vložiť oddeľovač stránky", + +Form : "Formulár", +Checkbox : "Zaškrtávacie políčko", +RadioButton : "Prepínač", +TextField : "Textové pole", +Textarea : "Textová oblasť", +HiddenField : "Skryté pole", +Button : "Tlačidlo", +SelectionField : "Rozbaľovací zoznam", +ImageButton : "Obrázkové tlačidlo", + +FitWindow : "Maximalizovať veľkosť okna editora", +ShowBlocks : "Ukázať bloky", + +// Context Menu +EditLink : "Zmeniť odkaz", +CellCM : "Bunka", +RowCM : "Riadok", +ColumnCM : "Stĺpec", +InsertRowAfter : "Vložiť riadok pred", +InsertRowBefore : "Vložiť riadok za", +DeleteRows : "Vymazať riadok", +InsertColumnAfter : "Vložiť stĺpec pred", +InsertColumnBefore : "Vložiť stĺpec za", +DeleteColumns : "Zmazať stĺpec", +InsertCellAfter : "Vložiť bunku za", +InsertCellBefore : "Vložiť bunku pred", +DeleteCells : "Vymazať bunky", +MergeCells : "Zlúčiť bunky", +MergeRight : "Zlúčiť doprava", +MergeDown : "Zlúčiť dole", +HorizontalSplitCell : "Rozdeliť bunky horizontálne", +VerticalSplitCell : "Rozdeliť bunky vertikálne", +TableDelete : "Vymazať tabuľku", +CellProperties : "Vlastnosti bunky", +TableProperties : "Vlastnosti tabuľky", +ImageProperties : "Vlastnosti obrázku", +FlashProperties : "Vlastnosti Flashu", + +AnchorProp : "Vlastnosti kotvy", +ButtonProp : "Vlastnosti tlačidla", +CheckboxProp : "Vlastnosti zaškrtávacieho políčka", +HiddenFieldProp : "Vlastnosti skrytého poľa", +RadioButtonProp : "Vlastnosti prepínača", +ImageButtonProp : "Vlastnosti obrázkového tlačidla", +TextFieldProp : "Vlastnosti textového poľa", +SelectionFieldProp : "Vlastnosti rozbaľovacieho zoznamu", +TextareaProp : "Vlastnosti textovej oblasti", +FormProp : "Vlastnosti formulára", + +FontFormats : "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Prebieha spracovanie XHTML. Čakajte prosím...", +Done : "Dokončené.", +PasteWordConfirm : "Vyzerá to tak, že vkladaný text je kopírovaný z Wordu. Chcete ho pred vložením vyčistiť?", +NotCompatiblePaste : "Tento príkaz je dostupný len v prehliadači Internet Explorer verzie 5.5 alebo vyššej. Chcete vložiť text bez vyčistenia?", +UnknownToolbarItem : "Neznáma položka panela nástrojov \"%1\"", +UnknownCommand : "Neznámy príkaz \"%1\"", +NotImplemented : "Príkaz nie je implementovaný", +UnknownToolbarSet : "Panel nástrojov \"%1\" neexistuje", +NoActiveX : "Bezpečnostné nastavenia vášho prehliadača môžu obmedzovať niektoré funkcie editora. Pre ich plnú funkčnosť musíte zapnúť voľbu \"Spúšťať ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkčnosťou niektorých funkcií.", +BrowseServerBlocked : "Prehliadač zdrojových prvkov nebolo možné otvoriť. Uistite sa, že máte vypnutú službu blokovania popup okien.", +DialogBlocked : "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnutú službu blokovania popup okien.", +VisitLinkBlocked : "Nebolo možné otvoriť nové okno. Uistite sa, že máte vypnutú službu blokovania popup okien.", + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Zrušiť", +DlgBtnClose : "Zavrieť", +DlgBtnBrowseServer : "Prechádzať server", +DlgAdvancedTag : "Rozšírené", +DlgOpOther : "<Ďalšie>", +DlgInfoTab : "Info", +DlgAlertUrl : "Prosím vložte URL", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Id", +DlgGenLangDir : "Orientácia jazyka", +DlgGenLangDirLtr : "Zľava doprava (LTR)", +DlgGenLangDirRtl : "Sprava doľava (RTL)", +DlgGenLangCode : "Kód jazyka", +DlgGenAccessKey : "Prístupový kľúč", +DlgGenName : "Meno", +DlgGenTabIndex : "Poradie prvku", +DlgGenLongDescr : "Dlhý popis URL", +DlgGenClass : "Trieda štýlu", +DlgGenTitle : "Pomocný titulok", +DlgGenContType : "Pomocný typ obsahu", +DlgGenLinkCharset : "Priradená znaková sada", +DlgGenStyle : "Štýl", + +// Image Dialog +DlgImgTitle : "Vlastnosti obrázku", +DlgImgInfoTab : "Informácie o obrázku", +DlgImgBtnUpload : "Odoslať na server", +DlgImgURL : "URL", +DlgImgUpload : "Odoslať", +DlgImgAlt : "Alternatívny text", +DlgImgWidth : "Šírka", +DlgImgHeight : "Výška", +DlgImgLockRatio : "Zámok", +DlgBtnResetSize : "Pôvodná veľkosť", +DlgImgBorder : "Okraje", +DlgImgHSpace : "H-medzera", +DlgImgVSpace : "V-medzera", +DlgImgAlign : "Zarovnanie", +DlgImgAlignLeft : "Vľavo", +DlgImgAlignAbsBottom: "Úplne dole", +DlgImgAlignAbsMiddle: "Do stredu", +DlgImgAlignBaseline : "Na základňu", +DlgImgAlignBottom : "Dole", +DlgImgAlignMiddle : "Na stred", +DlgImgAlignRight : "Vpravo", +DlgImgAlignTextTop : "Na horný okraj textu", +DlgImgAlignTop : "Nahor", +DlgImgPreview : "Náhľad", +DlgImgAlertUrl : "Zadajte prosím URL obrázku", +DlgImgLinkTab : "Odkaz", + +// Flash Dialog +DlgFlashTitle : "Vlastnosti Flashu", +DlgFlashChkPlay : "Automatické prehrávanie", +DlgFlashChkLoop : "Opakovanie", +DlgFlashChkMenu : "Povoliť Flash Menu", +DlgFlashScale : "Mierka", +DlgFlashScaleAll : "Zobraziť mierku", +DlgFlashScaleNoBorder : "Bez okrajov", +DlgFlashScaleFit : "Roztiahnuť na celé", + +// Link Dialog +DlgLnkWindowTitle : "Odkaz", +DlgLnkInfoTab : "Informácie o odkaze", +DlgLnkTargetTab : "Cieľ", + +DlgLnkType : "Typ odkazu", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Kotva v tejto stránke", +DlgLnkTypeEMail : "E-Mail", +DlgLnkProto : "Protokol", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Vybrať kotvu", +DlgLnkAnchorByName : "Podľa mena kotvy", +DlgLnkAnchorById : "Podľa Id objektu", +DlgLnkNoAnchors : "(V stránke nie je definovaná žiadna kotva)", +DlgLnkEMail : "E-Mailová adresa", +DlgLnkEMailSubject : "Predmet správy", +DlgLnkEMailBody : "Telo správy", +DlgLnkUpload : "Odoslať", +DlgLnkBtnUpload : "Odoslať na server", + +DlgLnkTarget : "Cieľ", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Nové okno (_blank)", +DlgLnkTargetParent : "Rodičovské okno (_parent)", +DlgLnkTargetSelf : "Rovnaké okno (_self)", +DlgLnkTargetTop : "Hlavné okno (_top)", +DlgLnkTargetFrameName : "Meno rámu cieľa", +DlgLnkPopWinName : "Názov vyskakovacieho okna", +DlgLnkPopWinFeat : "Vlastnosti vyskakovacieho okna", +DlgLnkPopResize : "Meniteľná veľkosť", +DlgLnkPopLocation : "Panel umiestnenia", +DlgLnkPopMenu : "Panel ponuky", +DlgLnkPopScroll : "Posuvníky", +DlgLnkPopStatus : "Stavový riadok", +DlgLnkPopToolbar : "Panel nástrojov", +DlgLnkPopFullScrn : "Celá obrazovka (IE)", +DlgLnkPopDependent : "Závislosť (Netscape)", +DlgLnkPopWidth : "Šírka", +DlgLnkPopHeight : "Výška", +DlgLnkPopLeft : "Ľavý okraj", +DlgLnkPopTop : "Horný okraj", + +DlnLnkMsgNoUrl : "Zadajte prosím URL odkazu", +DlnLnkMsgNoEMail : "Zadajte prosím e-mailovú adresu", +DlnLnkMsgNoAnchor : "Vyberte prosím kotvu", +DlnLnkMsgInvPopName : "Názov vyskakovacieho okna sa musá začínať písmenom a nemôže obsahovať medzery", + +// Color Dialog +DlgColorTitle : "Výber farby", +DlgColorBtnClear : "Vymazať", +DlgColorHighlight : "Zvýraznená", +DlgColorSelected : "Vybraná", + +// Smiley Dialog +DlgSmileyTitle : "Vkladanie smajlíkov", + +// Special Character Dialog +DlgSpecialCharTitle : "Výber špeciálneho znaku", + +// Table Dialog +DlgTableTitle : "Vlastnosti tabuľky", +DlgTableRows : "Riadky", +DlgTableColumns : "Stĺpce", +DlgTableBorder : "Ohraničenie", +DlgTableAlign : "Zarovnanie", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Vľavo", +DlgTableAlignCenter : "Na stred", +DlgTableAlignRight : "Vpravo", +DlgTableWidth : "Šírka", +DlgTableWidthPx : "pixelov", +DlgTableWidthPc : "percent", +DlgTableHeight : "Výška", +DlgTableCellSpace : "Vzdialenosť buniek", +DlgTableCellPad : "Odsadenie obsahu", +DlgTableCaption : "Popis", +DlgTableSummary : "Prehľad", +DlgTableHeaders : "Headers", //MISSING +DlgTableHeadersNone : "None", //MISSING +DlgTableHeadersColumn : "First column", //MISSING +DlgTableHeadersRow : "First Row", //MISSING +DlgTableHeadersBoth : "Both", //MISSING + +// Table Cell Dialog +DlgCellTitle : "Vlastnosti bunky", +DlgCellWidth : "Šírka", +DlgCellWidthPx : "bodov", +DlgCellWidthPc : "percent", +DlgCellHeight : "Výška", +DlgCellWordWrap : "Zalamovannie", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Áno", +DlgCellWordWrapNo : "Nie", +DlgCellHorAlign : "Vodorovné zarovnanie", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Vľavo", +DlgCellHorAlignCenter : "Na stred", +DlgCellHorAlignRight: "Vpravo", +DlgCellVerAlign : "Zvislé zarovnanie", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Nahor", +DlgCellVerAlignMiddle : "Doprostred", +DlgCellVerAlignBottom : "Dole", +DlgCellVerAlignBaseline : "Na základňu", +DlgCellType : "Cell Type", //MISSING +DlgCellTypeData : "Data", //MISSING +DlgCellTypeHeader : "Header", //MISSING +DlgCellRowSpan : "Zlúčené riadky", +DlgCellCollSpan : "Zlúčené stĺpce", +DlgCellBackColor : "Farba pozadia", +DlgCellBorderColor : "Farba ohraničenia", +DlgCellBtnSelect : "Výber...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Nájsť a nahradiť", + +// Find Dialog +DlgFindTitle : "Hľadať", +DlgFindFindBtn : "Hľadať", +DlgFindNotFoundMsg : "Hľadaný text nebol nájdený.", + +// Replace Dialog +DlgReplaceTitle : "Nahradiť", +DlgReplaceFindLbl : "Čo hľadať:", +DlgReplaceReplaceLbl : "Čím nahradiť:", +DlgReplaceCaseChk : "Rozlišovať malé/veľké písmená", +DlgReplaceReplaceBtn : "Nahradiť", +DlgReplaceReplAllBtn : "Nahradiť všetko", +DlgReplaceWordChk : "Len celé slová", + +// Paste Operations / Dialog +PasteErrorCut : "Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).", +PasteErrorCopy : "Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).", + +PasteAsText : "Vložiť ako čistý text", +PasteFromWord : "Vložiť text z Wordu", + +DlgPasteMsg2 : "Prosím vložte nasledovný rámček použitím klávesnice (Ctrl+V) a stlačte OK.", +DlgPasteSec : "Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.", +DlgPasteIgnoreFont : "Ignorovať nastavenia typu písma", +DlgPasteRemoveStyles : "Odstrániť formátovanie", + +// Color Picker +ColorAutomatic : "Automaticky", +ColorMoreColors : "Viac farieb...", + +// Document Properties +DocProps : "Vlastnosti dokumentu", + +// Anchor Dialog +DlgAnchorTitle : "Vlastnosti kotvy", +DlgAnchorName : "Meno kotvy", +DlgAnchorErrorName : "Zadajte prosím meno kotvy", + +// Speller Pages Dialog +DlgSpellNotInDic : "Nie je v slovníku", +DlgSpellChangeTo : "Zmeniť na", +DlgSpellBtnIgnore : "Ignorovať", +DlgSpellBtnIgnoreAll : "Ignorovať všetko", +DlgSpellBtnReplace : "Prepísat", +DlgSpellBtnReplaceAll : "Prepísat všetko", +DlgSpellBtnUndo : "Späť", +DlgSpellNoSuggestions : "- Žiadny návrh -", +DlgSpellProgress : "Prebieha kontrola pravopisu...", +DlgSpellNoMispell : "Kontrola pravopisu dokončená: bez chýb", +DlgSpellNoChanges : "Kontrola pravopisu dokončená: žiadne slová nezmenené", +DlgSpellOneChange : "Kontrola pravopisu dokončená: zmenené jedno slovo", +DlgSpellManyChanges : "Kontrola pravopisu dokončená: zmenených %1 slov", + +IeSpellDownload : "Kontrola pravopisu nie je naištalovaná. Chcete ju hneď stiahnuť?", + +// Button Dialog +DlgButtonText : "Text", +DlgButtonType : "Typ", +DlgButtonTypeBtn : "Tlačidlo", +DlgButtonTypeSbm : "Odoslať", +DlgButtonTypeRst : "Vymazať", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Názov", +DlgCheckboxValue : "Hodnota", +DlgCheckboxSelected : "Vybrané", + +// Form Dialog +DlgFormName : "Názov", +DlgFormAction : "Akcie", +DlgFormMethod : "Metóda", + +// Select Field Dialog +DlgSelectName : "Názov", +DlgSelectValue : "Hodnota", +DlgSelectSize : "Veľkosť", +DlgSelectLines : "riadkov", +DlgSelectChkMulti : "Povoliť viacnásobný výber", +DlgSelectOpAvail : "Dostupné možnosti", +DlgSelectOpText : "Text", +DlgSelectOpValue : "Hodnota", +DlgSelectBtnAdd : "Pridať", +DlgSelectBtnModify : "Zmeniť", +DlgSelectBtnUp : "Hore", +DlgSelectBtnDown : "Dole", +DlgSelectBtnSetValue : "Nastaviť ako vybranú hodnotu", +DlgSelectBtnDelete : "Zmazať", + +// Textarea Dialog +DlgTextareaName : "Názov", +DlgTextareaCols : "Stĺpce", +DlgTextareaRows : "Riadky", + +// Text Field Dialog +DlgTextName : "Názov", +DlgTextValue : "Hodnota", +DlgTextCharWidth : "Šírka pola (znakov)", +DlgTextMaxChars : "Maximálny počet znakov", +DlgTextType : "Typ", +DlgTextTypeText : "Text", +DlgTextTypePass : "Heslo", + +// Hidden Field Dialog +DlgHiddenName : "Názov", +DlgHiddenValue : "Hodnota", + +// Bulleted List Dialog +BulletedListProp : "Vlastnosti odrážok", +NumberedListProp : "Vlastnosti číslovania", +DlgLstStart : "Štart", +DlgLstType : "Typ", +DlgLstTypeCircle : "Krúžok", +DlgLstTypeDisc : "Disk", +DlgLstTypeSquare : "Štvorec", +DlgLstTypeNumbers : "Číslovanie (1, 2, 3)", +DlgLstTypeLCase : "Malé písmená (a, b, c)", +DlgLstTypeUCase : "Veľké písmená (A, B, C)", +DlgLstTypeSRoman : "Malé rímske číslice (i, ii, iii)", +DlgLstTypeLRoman : "Veľké rímske číslice (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Všeobecné", +DlgDocBackTab : "Pozadie", +DlgDocColorsTab : "Farby a okraje", +DlgDocMetaTab : "Meta Data", + +DlgDocPageTitle : "Titulok", +DlgDocLangDir : "Orientácie jazyka", +DlgDocLangDirLTR : "Zľava doprava (LTR)", +DlgDocLangDirRTL : "Sprava doľava (RTL)", +DlgDocLangCode : "Kód jazyka", +DlgDocCharSet : "Kódová stránka", +DlgDocCharSetCE : "Stredoeurópske", +DlgDocCharSetCT : "Čínština tradičná (Big5)", +DlgDocCharSetCR : "Cyrillika", +DlgDocCharSetGR : "Gréčtina", +DlgDocCharSetJP : "Japončina", +DlgDocCharSetKR : "Korejčina", +DlgDocCharSetTR : "Turečtina", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Západná európa", +DlgDocCharSetOther : "Iná kódová stránka", + +DlgDocDocType : "Typ záhlavia dokumentu", +DlgDocDocTypeOther : "Iný typ záhlavia dokumentu", +DlgDocIncXHTML : "Obsahuje deklarácie XHTML", +DlgDocBgColor : "Farba pozadia", +DlgDocBgImage : "URL adresa obrázku na pozadí", +DlgDocBgNoScroll : "Fixné pozadie", +DlgDocCText : "Text", +DlgDocCLink : "Odkaz", +DlgDocCVisited : "Navštívený odkaz", +DlgDocCActive : "Aktívny odkaz", +DlgDocMargins : "Okraje stránky", +DlgDocMaTop : "Horný", +DlgDocMaLeft : "Ľavý", +DlgDocMaRight : "Pravý", +DlgDocMaBottom : "Dolný", +DlgDocMeIndex : "Kľúčové slová pre indexovanie (oddelené čiarkou)", +DlgDocMeDescr : "Popis stránky", +DlgDocMeAuthor : "Autor", +DlgDocMeCopy : "Autorské práva", +DlgDocPreview : "Náhľad", + +// Templates Dialog +Templates : "Šablóny", +DlgTemplatesTitle : "Šablóny obsahu", +DlgTemplatesSelMsg : "Prosím vyberte šablóny na otvorenie v editore:", +DlgTemplatesLoading : "Nahrávam zoznam šablón. Čakajte prosím...", +DlgTemplatesNoTpl : "(žiadne šablóny nenájdené)", +DlgTemplatesReplace : "Nahradiť aktuálny obsah", + +// About Dialog +DlgAboutAboutTab : "O aplikáci", +DlgAboutBrowserInfoTab : "Informácie o prehliadači", +DlgAboutLicenseTab : "Licencia", +DlgAboutVersion : "verzia", +DlgAboutInfo : "Viac informácií získate na", + +// Div Dialog +DlgDivGeneralTab : "Hlavné", +DlgDivAdvancedTab : "Rozšírené", +DlgDivStyle : "Štýl", +DlgDivInlineStyle : "Inline štýl", + +ScaytTitle : "SCAYT", //MISSING +ScaytTitleOptions : "Options", //MISSING +ScaytTitleLangs : "Languages", //MISSING +ScaytTitleAbout : "About" //MISSING +}; diff --git a/fckeditor/FCKeditor/editor/plugins/autogrow/fckplugin.js b/fckeditor/FCKeditor/editor/plugins/autogrow/fckplugin.js new file mode 100644 index 0000000..1df2d0f --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/autogrow/fckplugin.js @@ -0,0 +1,111 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Plugin: automatically resizes the editor until a configurable maximun + * height (FCKConfig.AutoGrowMax), based on its contents. + */ + +var FCKAutoGrow = { + MIN_HEIGHT : window.frameElement.offsetHeight, + + Check : function() + { + var delta = FCKAutoGrow.GetHeightDelta() ; + if ( delta != 0 ) + { + var newHeight = window.frameElement.offsetHeight + delta ; + + newHeight = FCKAutoGrow.GetEffectiveHeight( newHeight ) ; + + if ( newHeight != window.frameElement.height ) + { + window.frameElement.style.height = newHeight + "px" ; + + // Gecko browsers use an onresize handler to update the innermost + // IFRAME's height. If the document is modified before the onresize + // is triggered, the plugin will miscalculate the new height. Thus, + // forcibly trigger onresize. #1336 + if ( typeof window.onresize == 'function' ) + { + window.onresize() ; + } + } + } + }, + + CheckEditorStatus : function( sender, status ) + { + if ( status == FCK_STATUS_COMPLETE ) + FCKAutoGrow.Check() ; + }, + + GetEffectiveHeight : function( height ) + { + if ( height < FCKAutoGrow.MIN_HEIGHT ) + height = FCKAutoGrow.MIN_HEIGHT; + else + { + var max = FCKConfig.AutoGrowMax; + if ( max && max > 0 && height > max ) + height = max; + } + + return height; + }, + + GetHeightDelta : function() + { + var oInnerDoc = FCK.EditorDocument ; + + var iFrameHeight ; + var iInnerHeight ; + + if ( FCKBrowserInfo.IsIE ) + { + iFrameHeight = FCK.EditorWindow.frameElement.offsetHeight ; + iInnerHeight = oInnerDoc.body.scrollHeight ; + } + else + { + iFrameHeight = FCK.EditorWindow.innerHeight ; + iInnerHeight = oInnerDoc.body.offsetHeight + + ( parseInt( FCKDomTools.GetCurrentElementStyle( oInnerDoc.body, 'margin-top' ), 10 ) || 0 ) + + ( parseInt( FCKDomTools.GetCurrentElementStyle( oInnerDoc.body, 'margin-bottom' ), 10 ) || 0 ) ; + } + + return iInnerHeight - iFrameHeight ; + }, + + SetListeners : function() + { + if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) + return ; + + FCK.EditorWindow.attachEvent( 'onscroll', FCKAutoGrow.Check ) ; + FCK.EditorDocument.attachEvent( 'onkeyup', FCKAutoGrow.Check ) ; + } +}; + +FCK.AttachToOnSelectionChange( FCKAutoGrow.Check ) ; + +if ( FCKBrowserInfo.IsIE ) + FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKAutoGrow.SetListeners ) ; + +FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow.CheckEditorStatus ) ; diff --git a/fckeditor/FCKeditor/editor/plugins/dragresizetable/fckplugin.js b/fckeditor/FCKeditor/editor/plugins/dragresizetable/fckplugin.js new file mode 100644 index 0000000..87061ff --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/dragresizetable/fckplugin.js @@ -0,0 +1,529 @@ +var FCKDragTableHandler = +{ + "_DragState" : 0, + "_LeftCell" : null, + "_RightCell" : null, + "_MouseMoveMode" : 0, // 0 - find candidate cells for resizing, 1 - drag to resize + "_ResizeBar" : null, + "_OriginalX" : null, + "_MinimumX" : null, + "_MaximumX" : null, + "_LastX" : null, + "_TableMap" : null, + "_doc" : document, + "_IsInsideNode" : function( w, domNode, pos ) + { + var myCoords = FCKTools.GetWindowPosition( w, domNode ) ; + var xMin = myCoords.x ; + var yMin = myCoords.y ; + var xMax = parseInt( xMin, 10 ) + parseInt( domNode.offsetWidth, 10 ) ; + var yMax = parseInt( yMin, 10 ) + parseInt( domNode.offsetHeight, 10 ) ; + if ( pos.x >= xMin && pos.x <= xMax && pos.y >= yMin && pos.y <= yMax ) + return true; + return false; + }, + "_GetBorderCells" : function( w, tableNode, tableMap, mouse ) + { + // Enumerate all the cells in the table. + var cells = [] ; + for ( var i = 0 ; i < tableNode.rows.length ; i++ ) + { + var r = tableNode.rows[i] ; + for ( var j = 0 ; j < r.cells.length ; j++ ) + cells.push( r.cells[j] ) ; + } + + if ( cells.length < 1 ) + return null ; + + // Get the cells whose right or left border is nearest to the mouse cursor's x coordinate. + var minRxDist = null ; + var lxDist = null ; + var minYDist = null ; + var rbCell = null ; + var lbCell = null ; + for ( var i = 0 ; i < cells.length ; i++ ) + { + var pos = FCKTools.GetWindowPosition( w, cells[i] ) ; + var rightX = pos.x + parseInt( cells[i].clientWidth, 10 ) ; + var rxDist = mouse.x - rightX ; + var yDist = mouse.y - ( pos.y + ( cells[i].clientHeight / 2 ) ) ; + if ( minRxDist == null || + ( Math.abs( rxDist ) <= Math.abs( minRxDist ) && + ( minYDist == null || Math.abs( yDist ) <= Math.abs( minYDist ) ) ) ) + { + minRxDist = rxDist ; + minYDist = yDist ; + rbCell = cells[i] ; + } + } + /* + var rowNode = FCKTools.GetElementAscensor( rbCell, "tr" ) ; + var cellIndex = rbCell.cellIndex + 1 ; + if ( cellIndex >= rowNode.cells.length ) + return null ; + lbCell = rowNode.cells.item( cellIndex ) ; + */ + var rowIdx = rbCell.parentNode.rowIndex ; + var colIdx = FCKTableHandler._GetCellIndexSpan( tableMap, rowIdx, rbCell ) ; + var colSpan = isNaN( rbCell.colSpan ) ? 1 : rbCell.colSpan ; + lbCell = tableMap[rowIdx][colIdx + colSpan] ; + + if ( ! lbCell ) + return null ; + + // Abort if too far from the border. + lxDist = mouse.x - FCKTools.GetWindowPosition( w, lbCell ).x ; + if ( lxDist < 0 && minRxDist < 0 && minRxDist < -2 ) + return null ; + if ( lxDist > 0 && minRxDist > 0 && lxDist > 3 ) + return null ; + + return { "leftCell" : rbCell, "rightCell" : lbCell } ; + }, + "_GetResizeBarPosition" : function() + { + var row = FCKTools.GetElementAscensor( this._RightCell, "tr" ) ; + return FCKTableHandler._GetCellIndexSpan( this._TableMap, row.rowIndex, this._RightCell ) ; + }, + "_ResizeBarMouseDownListener" : function( evt ) + { + if ( FCKDragTableHandler._LeftCell ) + FCKDragTableHandler._MouseMoveMode = 1 ; + if ( FCKBrowserInfo.IsIE ) + FCKDragTableHandler._ResizeBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 50 ; + else + FCKDragTableHandler._ResizeBar.style.opacity = 0.5 ; + FCKDragTableHandler._OriginalX = evt.clientX ; + + // Calculate maximum and minimum x-coordinate delta. + var borderIndex = FCKDragTableHandler._GetResizeBarPosition() ; + var offset = FCKDragTableHandler._GetIframeOffset(); + var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ); + var minX = null ; + var maxX = null ; + for ( var r = 0 ; r < FCKDragTableHandler._TableMap.length ; r++ ) + { + var leftCell = FCKDragTableHandler._TableMap[r][borderIndex - 1] ; + var rightCell = FCKDragTableHandler._TableMap[r][borderIndex] ; + var leftPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, leftCell ) ; + var rightPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, rightCell ) ; + var leftPadding = FCKDragTableHandler._GetCellPadding( table, leftCell ) ; + var rightPadding = FCKDragTableHandler._GetCellPadding( table, rightCell ) ; + if ( minX == null || leftPosition.x + leftPadding > minX ) + minX = leftPosition.x + leftPadding ; + if ( maxX == null || rightPosition.x + rightCell.clientWidth - rightPadding < maxX ) + maxX = rightPosition.x + rightCell.clientWidth - rightPadding ; + } + + FCKDragTableHandler._MinimumX = minX + offset.x ; + FCKDragTableHandler._MaximumX = maxX + offset.x ; + FCKDragTableHandler._LastX = null ; + + if (evt.preventDefault) + evt.preventDefault(); + else + evt.returnValue = false; + }, + "_ResizeBarMouseUpListener" : function( evt ) + { + FCKDragTableHandler._MouseMoveMode = 0 ; + FCKDragTableHandler._HideResizeBar() ; + + if ( FCKDragTableHandler._LastX == null ) + return ; + + // Calculate the delta value. + var deltaX = FCKDragTableHandler._LastX - FCKDragTableHandler._OriginalX ; + + // Then, build an array of current column width values. + // This algorithm can be very slow if the cells have insane colSpan values. (e.g. colSpan=1000). + var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ) ; + var colArray = [] ; + var tableMap = FCKDragTableHandler._TableMap ; + for ( var i = 0 ; i < tableMap.length ; i++ ) + { + for ( var j = 0 ; j < tableMap[i].length ; j++ ) + { + var cell = tableMap[i][j] ; + var width = FCKDragTableHandler._GetCellWidth( table, cell ) ; + var colSpan = isNaN( cell.colSpan) ? 1 : cell.colSpan ; + if ( colArray.length <= j ) + colArray.push( { width : width / colSpan, colSpan : colSpan } ) ; + else + { + var guessItem = colArray[j] ; + if ( guessItem.colSpan > colSpan ) + { + guessItem.width = width / colSpan ; + guessItem.colSpan = colSpan ; + } + } + } + } + + // Find out the equivalent column index of the two cells selected for resizing. + colIndex = FCKDragTableHandler._GetResizeBarPosition() ; + + // Note that colIndex must be at least 1 here, so it's safe to subtract 1 from it. + colIndex-- ; + + // Modify the widths in the colArray according to the mouse coordinate delta value. + colArray[colIndex].width += deltaX ; + colArray[colIndex + 1].width -= deltaX ; + + // Clear all cell widths, delete all elements from the table. + for ( var r = 0 ; r < table.rows.length ; r++ ) + { + var row = table.rows.item( r ) ; + for ( var c = 0 ; c < row.cells.length ; c++ ) + { + var cell = row.cells.item( c ) ; + cell.width = "" ; + cell.style.width = "" ; + } + } + var colElements = table.getElementsByTagName( "col" ) ; + for ( var i = colElements.length - 1 ; i >= 0 ; i-- ) + colElements[i].parentNode.removeChild( colElements[i] ) ; + + // Set new cell widths. + var processedCells = [] ; + for ( var i = 0 ; i < tableMap.length ; i++ ) + { + for ( var j = 0 ; j < tableMap[i].length ; j++ ) + { + var cell = tableMap[i][j] ; + if ( cell._Processed ) + continue ; + if ( tableMap[i][j-1] != cell ) + cell.width = colArray[j].width ; + else + cell.width = parseInt( cell.width, 10 ) + parseInt( colArray[j].width, 10 ) ; + if ( tableMap[i][j+1] != cell ) + { + processedCells.push( cell ) ; + cell._Processed = true ; + } + } + } + for ( var i = 0 ; i < processedCells.length ; i++ ) + { + if ( FCKBrowserInfo.IsIE ) + processedCells[i].removeAttribute( '_Processed' ) ; + else + delete processedCells[i]._Processed ; + } + + FCKDragTableHandler._LastX = null ; + }, + "_ResizeBarMouseMoveListener" : function( evt ) + { + if ( FCKDragTableHandler._MouseMoveMode == 0 ) + return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ; + else + return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ; + }, + // Calculate the padding of a table cell. + // It returns the value of paddingLeft + paddingRight of a table cell. + // This function is used, in part, to calculate the width parameter that should be used for setting cell widths. + // The equation in question is clientWidth = paddingLeft + paddingRight + width. + // So that width = clientWidth - paddingLeft - paddingRight. + // The return value of this function must be pixel accurate acorss all supported browsers, so be careful if you need to modify it. + "_GetCellPadding" : function( table, cell ) + { + var attrGuess = parseInt( table.cellPadding, 10 ) * 2 ; + var cssGuess = null ; + if ( typeof( window.getComputedStyle ) == "function" ) + { + var styleObj = window.getComputedStyle( cell, null ) ; + cssGuess = parseInt( styleObj.getPropertyValue( "padding-left" ), 10 ) + + parseInt( styleObj.getPropertyValue( "padding-right" ), 10 ) ; + } + else + cssGuess = parseInt( cell.currentStyle.paddingLeft, 10 ) + parseInt (cell.currentStyle.paddingRight, 10 ) ; + + var cssRuntime = cell.style.padding ; + if ( isFinite( cssRuntime ) ) + cssGuess = parseInt( cssRuntime, 10 ) * 2 ; + else + { + cssRuntime = cell.style.paddingLeft ; + if ( isFinite( cssRuntime ) ) + cssGuess = parseInt( cssRuntime, 10 ) ; + cssRuntime = cell.style.paddingRight ; + if ( isFinite( cssRuntime ) ) + cssGuess += parseInt( cssRuntime, 10 ) ; + } + + attrGuess = parseInt( attrGuess, 10 ) ; + cssGuess = parseInt( cssGuess, 10 ) ; + if ( isNaN( attrGuess ) ) + attrGuess = 0 ; + if ( isNaN( cssGuess ) ) + cssGuess = 0 ; + return Math.max( attrGuess, cssGuess ) ; + }, + // Calculate the real width of the table cell. + // The real width of the table cell is the pixel width that you can set to the width attribute of the table cell and after + // that, the table cell should be of exactly the same width as before. + // The real width of a table cell can be calculated as: + // width = clientWidth - paddingLeft - paddingRight. + "_GetCellWidth" : function( table, cell ) + { + var clientWidth = cell.clientWidth ; + if ( isNaN( clientWidth ) ) + clientWidth = 0 ; + return clientWidth - this._GetCellPadding( table, cell ) ; + }, + "MouseMoveListener" : function( FCK, evt ) + { + if ( FCKDragTableHandler._MouseMoveMode == 0 ) + return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ; + else + return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ; + }, + "_MouseFindHandler" : function( FCK, evt ) + { + if ( FCK.MouseDownFlag ) + return ; + var node = evt.srcElement || evt.target ; + try + { + if ( ! node || node.nodeType != 1 ) + { + this._HideResizeBar() ; + return ; + } + } + catch ( e ) + { + this._HideResizeBar() ; + return ; + } + + // Since this function might be called from the editing area iframe or the outer fckeditor iframe, + // the mouse point coordinates from evt.clientX/Y can have different reference points. + // We need to resolve the mouse pointer position relative to the editing area iframe. + var mouseX = evt.clientX ; + var mouseY = evt.clientY ; + if ( FCKTools.GetElementDocument( node ) == document ) + { + var offset = this._GetIframeOffset() ; + mouseX -= offset.x ; + mouseY -= offset.y ; + } + + + if ( this._ResizeBar && this._LeftCell ) + { + var leftPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._LeftCell ) ; + var rightPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._RightCell ) ; + var rxDist = mouseX - ( leftPos.x + this._LeftCell.clientWidth ) ; + var lxDist = mouseX - rightPos.x ; + var inRangeFlag = false ; + if ( lxDist >= 0 && rxDist <= 0 ) + inRangeFlag = true ; + else if ( rxDist > 0 && lxDist <= 3 ) + inRangeFlag = true ; + else if ( lxDist < 0 && rxDist >= -2 ) + inRangeFlag = true ; + if ( inRangeFlag ) + { + this._ShowResizeBar( FCK.EditorWindow, + FCKTools.GetElementAscensor( this._LeftCell, "table" ), + { "x" : mouseX, "y" : mouseY } ) ; + return ; + } + } + + var tagName = node.tagName.toLowerCase() ; + if ( tagName != "table" && tagName != "td" && tagName != "th" ) + { + if ( this._LeftCell ) + this._LeftCell = this._RightCell = this._TableMap = null ; + this._HideResizeBar() ; + return ; + } + node = FCKTools.GetElementAscensor( node, "table" ) ; + var tableMap = FCKTableHandler._CreateTableMap( node ) ; + var cellTuple = this._GetBorderCells( FCK.EditorWindow, node, tableMap, { "x" : mouseX, "y" : mouseY } ) ; + + if ( cellTuple == null ) + { + if ( this._LeftCell ) + this._LeftCell = this._RightCell = this._TableMap = null ; + this._HideResizeBar() ; + } + else + { + this._LeftCell = cellTuple["leftCell"] ; + this._RightCell = cellTuple["rightCell"] ; + this._TableMap = tableMap ; + this._ShowResizeBar( FCK.EditorWindow, + FCKTools.GetElementAscensor( this._LeftCell, "table" ), + { "x" : mouseX, "y" : mouseY } ) ; + } + }, + "_MouseDragHandler" : function( FCK, evt ) + { + var mouse = { "x" : evt.clientX, "y" : evt.clientY } ; + + // Convert mouse coordinates in reference to the outer iframe. + var node = evt.srcElement || evt.target ; + if ( FCKTools.GetElementDocument( node ) == FCK.EditorDocument ) + { + var offset = this._GetIframeOffset() ; + mouse.x += offset.x ; + mouse.y += offset.y ; + } + + // Calculate the mouse position delta and see if we've gone out of range. + if ( mouse.x >= this._MaximumX - 5 ) + mouse.x = this._MaximumX - 5 ; + if ( mouse.x <= this._MinimumX + 5 ) + mouse.x = this._MinimumX + 5 ; + + var docX = mouse.x + FCKTools.GetScrollPosition( window ).X ; + this._ResizeBar.style.left = ( docX - this._ResizeBar.offsetWidth / 2 ) + "px" ; + this._LastX = mouse.x ; + }, + "_ShowResizeBar" : function( w, table, mouse ) + { + if ( this._ResizeBar == null ) + { + this._ResizeBar = this._doc.createElement( "div" ) ; + var paddingBar = this._ResizeBar ; + var paddingStyles = { 'position' : 'absolute', 'cursor' : 'e-resize' } ; + if ( FCKBrowserInfo.IsIE ) + paddingStyles.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=10,enabled=true)" ; + else + paddingStyles.opacity = 0.10 ; + FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ; + this._avoidStyles( paddingBar ); + paddingBar.setAttribute('_fcktemp', true); + this._doc.body.appendChild( paddingBar ) ; + FCKTools.AddEventListener( paddingBar, "mousemove", this._ResizeBarMouseMoveListener ) ; + FCKTools.AddEventListener( paddingBar, "mousedown", this._ResizeBarMouseDownListener ) ; + FCKTools.AddEventListener( document, "mouseup", this._ResizeBarMouseUpListener ) ; + FCKTools.AddEventListener( FCK.EditorDocument, "mouseup", this._ResizeBarMouseUpListener ) ; + + // IE doesn't let the tranparent part of the padding block to receive mouse events unless there's something inside. + // So we need to create a spacer image to fill the block up. + var filler = this._doc.createElement( "img" ) ; + filler.setAttribute('_fcktemp', true); + filler.border = 0 ; + filler.src = FCKConfig.BasePath + "images/spacer.gif" ; + filler.style.position = "absolute" ; + paddingBar.appendChild( filler ) ; + + // Disable drag and drop, and selection for the filler image. + var disabledListener = function( evt ) + { + if ( evt.preventDefault ) + evt.preventDefault() ; + else + evt.returnValue = false ; + } + FCKTools.AddEventListener( filler, "dragstart", disabledListener ) ; + FCKTools.AddEventListener( filler, "selectstart", disabledListener ) ; + } + + var paddingBar = this._ResizeBar ; + var offset = this._GetIframeOffset() ; + var tablePos = this._GetTablePosition( w, table ) ; + var barHeight = table.offsetHeight ; + var barTop = offset.y + tablePos.y ; + // Do not let the resize bar intrude into the toolbar area. + if ( tablePos.y < 0 ) + { + barHeight += tablePos.y ; + barTop -= tablePos.y ; + } + var bw = parseInt( table.border, 10 ) ; + if ( isNaN( bw ) ) + bw = 0 ; + var cs = parseInt( table.cellSpacing, 10 ) ; + if ( isNaN( cs ) ) + cs = 0 ; + var barWidth = Math.max( bw+100, cs+100 ) ; + var paddingStyles = + { + 'top' : barTop + 'px', + 'height' : barHeight + 'px', + 'width' : barWidth + 'px', + 'left' : ( offset.x + mouse.x + FCKTools.GetScrollPosition( w ).X - barWidth / 2 ) + 'px' + } ; + if ( FCKBrowserInfo.IsIE ) + paddingBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 10 ; + else + paddingStyles.opacity = 0.1 ; + + FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ; + var filler = paddingBar.getElementsByTagName( "img" )[0] ; + + FCKDomTools.SetElementStyles( filler, + { + width : paddingBar.offsetWidth + 'px', + height : barHeight + 'px' + } ) ; + + barWidth = Math.max( bw, cs, 3 ) ; + var visibleBar = null ; + if ( paddingBar.getElementsByTagName( "div" ).length < 1 ) + { + visibleBar = this._doc.createElement( "div" ) ; + this._avoidStyles( visibleBar ); + visibleBar.setAttribute('_fcktemp', true); + paddingBar.appendChild( visibleBar ) ; + } + else + visibleBar = paddingBar.getElementsByTagName( "div" )[0] ; + + FCKDomTools.SetElementStyles( visibleBar, + { + position : 'absolute', + backgroundColor : 'blue', + width : barWidth + 'px', + height : barHeight + 'px', + left : '50px', + top : '0px' + } ) ; + }, + "_HideResizeBar" : function() + { + if ( this._ResizeBar ) + // IE bug: display : none does not hide the resize bar for some reason. + // so set the position to somewhere invisible. + FCKDomTools.SetElementStyles( this._ResizeBar, + { + top : '-100000px', + left : '-100000px' + } ) ; + }, + "_GetIframeOffset" : function () + { + return FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ; + }, + "_GetTablePosition" : function ( w, table ) + { + return FCKTools.GetWindowPosition( w, table ) ; + }, + "_avoidStyles" : function( element ) + { + FCKDomTools.SetElementStyles( element, + { + padding : '0', + backgroundImage : 'none', + border : '0' + } ) ; + }, + "Reset" : function() + { + FCKDragTableHandler._LeftCell = FCKDragTableHandler._RightCell = FCKDragTableHandler._TableMap = null ; + } + +}; + +FCK.Events.AttachEvent( "OnMouseMove", FCKDragTableHandler.MouseMoveListener ) ; +FCK.Events.AttachEvent( "OnAfterSetHTML", FCKDragTableHandler.Reset ) ; diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/CHANGELOG.txt b/fckeditor/FCKeditor/editor/plugins/nbsp/CHANGELOG.txt new file mode 100644 index 0000000..e7c36ae --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/CHANGELOG.txt @@ -0,0 +1,3 @@ +Version 1.0.1 [13-04-2006] +--------------------------- + Updaded readme.txt files. \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/fckplugin.js b/fckeditor/FCKeditor/editor/plugins/nbsp/fckplugin.js new file mode 100644 index 0000000..6ecb741 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/fckplugin.js @@ -0,0 +1,48 @@ +/* + * FCKeditor - The text editor for internet + * Copyright (C) 2003-2006 Frederico Caldeira Knabben + * + * Non-breaking Space Plugin + * Copyright (c) 2006 Bartosz Rogozinski [REGE] + * + * Licensed under the terms of the GNU Lesser General Public License: + * http://www.opensource.org/licenses/lgpl-license.php + * + * For further information visit: + * http://www.fckeditor.net/ + * + * "Support Open Source software. What about a donation today?" + * + * File Name: fckplugin.js + * Insert non-breaking space + * + * Version 1.0.1, 13-04-2006 + * + * File Authors: + * Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) - original release + */ + +var My_FCKNbspCommand = function() +{ + +} + +My_FCKNbspCommand.prototype.Execute = function() +{ + FCK.InsertHtml(' '); +} + +My_FCKNbspCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF; +} + +// Register the related command. +FCKCommands.RegisterCommand('nbsp', new My_FCKNbspCommand()); + +// Create the "nbsp" toolbar button. +var nbspItem = new FCKToolbarButton("nbsp", FCKLang.NbspButton); +nbspItem.IconPath = FCKConfig.PluginsPath + 'nbsp/nbsp.gif'; + +// 'nbsp' is the name used in the Toolbar config. +FCKToolbarItems.RegisterItem('nbsp', nbspItem); \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/lang/de.js b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/de.js new file mode 100644 index 0000000..32e19a4 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/de.js @@ -0,0 +1,20 @@ +/* + * FCKeditor - The text editor for internet + * Copyright (C) 2003-2006 Frederico Caldeira Knabben + * + * Licensed under the terms of the GNU Lesser General Public License: + * http://www.opensource.org/licenses/lgpl-license.php + * + * For further information visit: + * http://www.fckeditor.net/ + * + * "Support Open Source software. What about a donation today?" + * + * File Name: de.js + * Nbsp German language file. + * + * File Authors: + * Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) + * Übersetzung: Connie Müller-Gödecke, webdeerns.de, 2007 ;=) + */ +FCKLang.NbspButton = 'geschütztes Leerzeichen einfügen' ; diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/lang/en.js b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/en.js new file mode 100644 index 0000000..39844f0 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/en.js @@ -0,0 +1,19 @@ +/* + * FCKeditor - The text editor for internet + * Copyright (C) 2003-2006 Frederico Caldeira Knabben + * + * Licensed under the terms of the GNU Lesser General Public License: + * http://www.opensource.org/licenses/lgpl-license.php + * + * For further information visit: + * http://www.fckeditor.net/ + * + * "Support Open Source software. What about a donation today?" + * + * File Name: en.js + * Nbsp English language file. + * + * File Authors: + * Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) + */ +FCKLang.NbspButton = 'Insert non-breaking space' ; diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/lang/hu.js b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/hu.js new file mode 100644 index 0000000..1979513 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/hu.js @@ -0,0 +1,21 @@ +/* + * FCKeditor - The text editor for internet + * Copyright (C) 2003-2006 Frederico Caldeira Knabben + * + * Licensed under the terms of the GNU Lesser General Public License: + * http://www.opensource.org/licenses/lgpl-license.php + * + * For further information visit: + * http://www.fckeditor.net/ + * + * "Support Open Source software. What about a donation today?" + * + * File Name: hu.js + * Nbsp Hungarian language file. + * + * File Authors: + * Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) + * Übersetzung: Connie Müller-Gödecke, webdeerns.de, 2007 ;=) + * Fordítás: Tokodi Péter (tokodipeter@freemail.hu, 2010 :oD ) + */ +FCKLang.NbspButton = 'Nem törő szóköz beszúrása' ; diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/lang/pl.js b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/pl.js new file mode 100644 index 0000000..11d47d5 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/pl.js @@ -0,0 +1,19 @@ +/* + * FCKeditor - The text editor for internet + * Copyright (C) 2003-2006 Frederico Caldeira Knabben + * + * Licensed under the terms of the GNU Lesser General Public License: + * http://www.opensource.org/licenses/lgpl-license.php + * + * For further information visit: + * http://www.fckeditor.net/ + * + * "Support Open Source software. What about a donation today?" + * + * File Name: pl.js + * Nbsp Polish language file. + * + * File Authors: + * Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) + */ +FCKLang.NbspButton = 'Wstaw twardą spację' ; diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/lang/sk.js b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/sk.js new file mode 100644 index 0000000..4314d8d --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/lang/sk.js @@ -0,0 +1,19 @@ +/* + * FCKeditor - The text editor for internet + * Copyright (C) 2003-2006 Frederico Caldeira Knabben + * + * Licensed under the terms of the GNU Lesser General Public License: + * http://www.opensource.org/licenses/lgpl-license.php + * + * For further information visit: + * http://www.fckeditor.net/ + * + * "Support Open Source software. What about a donation today?" + * + * File Name: en.js + * Nbsp English language file. + * + * File Authors: + * Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) + */ +FCKLang.NbspButton = 'Vloi mkk medzeru' ; diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/nbsp.gif b/fckeditor/FCKeditor/editor/plugins/nbsp/nbsp.gif new file mode 100644 index 0000000000000000000000000000000000000000..442221e177703ea183e4f9f05be128d63222b4b6 GIT binary patch literal 66 zcmZ?wbhEHb6k!lyXkcW30L7myKqe!D4u}hqabS|{>0f#JEx-7Ljkly5?@9mWZ+rB^ Mr^|C$7$bu<0HeGSGynhq literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/readme_de.txt b/fckeditor/FCKeditor/editor/plugins/nbsp/readme_de.txt new file mode 100644 index 0000000..4ff181e --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/readme_de.txt @@ -0,0 +1,28 @@ +Non-breaking Space Plugin v1.0.1 +For FCKEditor v2.2 + +Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) +13-04-2006 +License: LGPL + + + +Description: +------------- +Dieses Plugin ermglicht, einen geschtzten Leerschritt in Text einzufgen. + + +Installation: +-------------- +1. Datei entpacken +2. Das entpackte Verzeichnis in den .../editor/plugins Ordner kopieren +3. Das PlugIn hinzufgen: aktivieren Sie es indem Sie die nachstehende Zeile + entweder i fckconfig.js oder in einer anderen Konfigurations-Datei eintragen: + + FCKConfig.Plugins.Add('nbsp', 'de,en'); + +4. Fgen Sie 'nbsp' dem ToolbarSet hinzu, z.B.: + + FCKConfig.ToolbarSets["Basic"] = [ + ['nbsp','Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About'] + ]; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/readme_en.txt b/fckeditor/FCKeditor/editor/plugins/nbsp/readme_en.txt new file mode 100644 index 0000000..ba67061 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/readme_en.txt @@ -0,0 +1,27 @@ +Non-breaking Space Plugin v1.0.1 +For FCKEditor v2.2 + +Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) +13-04-2006 +License: LGPL + + + +Description: +------------- +This plugin allows you to insert a non-breaking space in the editor. + + +Installation: +-------------- +1. Unzip the file +2. Copy the 'nbsp' folder to your .../editor/plugins folder +3. Add the plugin by placing it of the following line in either fckconfig.js or your custom configuration file: + + FCKConfig.Plugins.Add('nbsp', 'en,pl'); + +4. Add 'nbsp' to your ToolbarSet e.g.: + + FCKConfig.ToolbarSets["Basic"] = [ + ['nbsp','Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About'] + ]; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/nbsp/readme_pl.txt b/fckeditor/FCKeditor/editor/plugins/nbsp/readme_pl.txt new file mode 100644 index 0000000..1bee430 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/nbsp/readme_pl.txt @@ -0,0 +1,27 @@ +Non-breaking Space Plugin v1.0.1 +For FCKEditor v2.2 + +Bartosz Rogozinski [REGE] (rege-tech@wsm24.com) +13-04-2006 +License: LGPL + + + +Opis: +------ +Wtyczka ta umoliwia wstawianie do edytora tzw. "twardej spacji". + + +Instalacja: +------------ +1. Rozpakuj plik +2. Skopiuj folder 'nbsp' do folderu .../editor/plugins +3. Dodaj wtyczk do edytora wpisujc odpowiedni fragment kodu do pliku fckconfig.js lub Twojego wasnego pliku konfiguracyjnego: + + FCKConfig.Plugins.Add('nbsp', 'en,pl'); + +4. Dodaj wtyczk 'nbsp' do paska narzdzi np.: + + FCKConfig.ToolbarSets["Basic"] = [ + ['nbsp','Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About'] + ]; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/fck_placeholder.html b/fckeditor/FCKeditor/editor/plugins/placeholder/fck_placeholder.html new file mode 100644 index 0000000..df8c563 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/fck_placeholder.html @@ -0,0 +1,105 @@ + + + + + Placeholder Properties + + + + + + + + + + +
    + + + + +
    + Placeholder Name
    + +
    +
    + + diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/fckplugin.js b/fckeditor/FCKeditor/editor/plugins/placeholder/fckplugin.js new file mode 100644 index 0000000..ec4e1a5 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/fckplugin.js @@ -0,0 +1,187 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Plugin to insert "Placeholders" in the editor. + */ + +// Register the related command. +FCKCommands.RegisterCommand( 'Placeholder', new FCKDialogCommand( 'Placeholder', FCKLang.PlaceholderDlgTitle, FCKPlugins.Items['placeholder'].Path + 'fck_placeholder.html', 340, 160 ) ) ; + +// Create the "Plaholder" toolbar button. +var oPlaceholderItem = new FCKToolbarButton( 'Placeholder', FCKLang.PlaceholderBtn ) ; +oPlaceholderItem.IconPath = FCKPlugins.Items['placeholder'].Path + 'placeholder.gif' ; + +FCKToolbarItems.RegisterItem( 'Placeholder', oPlaceholderItem ) ; + + +// The object used for all Placeholder operations. +var FCKPlaceholders = new Object() ; + +// Add a new placeholder at the actual selection. +FCKPlaceholders.Add = function( name ) +{ + var oSpan = FCK.InsertElement( 'span' ) ; + this.SetupSpan( oSpan, name ) ; +} + +FCKPlaceholders.SetupSpan = function( span, name ) +{ + span.innerHTML = '[[ ' + name + ' ]]' ; + + span.style.backgroundColor = '#ffff00' ; + span.style.color = '#000000' ; + + if ( FCKBrowserInfo.IsGecko ) + span.style.cursor = 'default' ; + + span._fckplaceholder = name ; + span.contentEditable = false ; + + // To avoid it to be resized. + span.onresizestart = function() + { + FCK.EditorWindow.event.returnValue = false ; + return false ; + } +} + +// On Gecko we must do this trick so the user select all the SPAN when clicking on it. +FCKPlaceholders._SetupClickListener = function() +{ + FCKPlaceholders._ClickListener = function( e ) + { + if ( e.target.tagName == 'SPAN' && e.target._fckplaceholder ) + FCKSelection.SelectNode( e.target ) ; + } + + FCK.EditorDocument.addEventListener( 'click', FCKPlaceholders._ClickListener, true ) ; +} + +// Open the Placeholder dialog on double click. +FCKPlaceholders.OnDoubleClick = function( span ) +{ + if ( span.tagName == 'SPAN' && span._fckplaceholder ) + FCKCommands.GetCommand( 'Placeholder' ).Execute() ; +} + +FCK.RegisterDoubleClickHandler( FCKPlaceholders.OnDoubleClick, 'SPAN' ) ; + +// Check if a Placholder name is already in use. +FCKPlaceholders.Exist = function( name ) +{ + var aSpans = FCK.EditorDocument.getElementsByTagName( 'SPAN' ) ; + + for ( var i = 0 ; i < aSpans.length ; i++ ) + { + if ( aSpans[i]._fckplaceholder == name ) + return true ; + } + + return false ; +} + +if ( FCKBrowserInfo.IsIE ) +{ + FCKPlaceholders.Redraw = function() + { + if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) + return ; + + var aPlaholders = FCK.EditorDocument.body.innerText.match( /\[\[[^\[\]]+\]\]/g ) ; + if ( !aPlaholders ) + return ; + + var oRange = FCK.EditorDocument.body.createTextRange() ; + + for ( var i = 0 ; i < aPlaholders.length ; i++ ) + { + if ( oRange.findText( aPlaholders[i] ) ) + { + var sName = aPlaholders[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ; + oRange.pasteHTML( '' + aPlaholders[i] + '' ) ; + } + } + } +} +else +{ + FCKPlaceholders.Redraw = function() + { + if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) + return ; + + var oInteractor = FCK.EditorDocument.createTreeWalker( FCK.EditorDocument.body, NodeFilter.SHOW_TEXT, FCKPlaceholders._AcceptNode, true ) ; + + var aNodes = new Array() ; + + while ( ( oNode = oInteractor.nextNode() ) ) + { + aNodes[ aNodes.length ] = oNode ; + } + + for ( var n = 0 ; n < aNodes.length ; n++ ) + { + var aPieces = aNodes[n].nodeValue.split( /(\[\[[^\[\]]+\]\])/g ) ; + + for ( var i = 0 ; i < aPieces.length ; i++ ) + { + if ( aPieces[i].length > 0 ) + { + if ( aPieces[i].indexOf( '[[' ) == 0 ) + { + var sName = aPieces[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ; + + var oSpan = FCK.EditorDocument.createElement( 'span' ) ; + FCKPlaceholders.SetupSpan( oSpan, sName ) ; + + aNodes[n].parentNode.insertBefore( oSpan, aNodes[n] ) ; + } + else + aNodes[n].parentNode.insertBefore( FCK.EditorDocument.createTextNode( aPieces[i] ) , aNodes[n] ) ; + } + } + + aNodes[n].parentNode.removeChild( aNodes[n] ) ; + } + + FCKPlaceholders._SetupClickListener() ; + } + + FCKPlaceholders._AcceptNode = function( node ) + { + if ( /\[\[[^\[\]]+\]\]/.test( node.nodeValue ) ) + return NodeFilter.FILTER_ACCEPT ; + else + return NodeFilter.FILTER_SKIP ; + } +} + +FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKPlaceholders.Redraw ) ; + +// We must process the SPAN tags to replace then with the real resulting value of the placeholder. +FCKXHtml.TagProcessors['span'] = function( node, htmlNode ) +{ + if ( htmlNode._fckplaceholder ) + node = FCKXHtml.XML.createTextNode( '[[' + htmlNode._fckplaceholder + ']]' ) ; + else + FCKXHtml._AppendChildNodes( node, htmlNode, false ) ; + + return node ; +} diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/de.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/de.js new file mode 100644 index 0000000..aad19ba --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/de.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder German language file. + */ +FCKLang.PlaceholderBtn = 'Einfügen/editieren Platzhalter' ; +FCKLang.PlaceholderDlgTitle = 'Platzhalter Eigenschaften' ; +FCKLang.PlaceholderDlgName = 'Platzhalter Name' ; +FCKLang.PlaceholderErrNoName = 'Bitte den Namen des Platzhalters schreiben' ; +FCKLang.PlaceholderErrNameInUse = 'Der angegebene Namen ist schon in Gebrauch' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/en.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/en.js new file mode 100644 index 0000000..d716718 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/en.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder English language file. + */ +FCKLang.PlaceholderBtn = 'Insert/Edit Placeholder' ; +FCKLang.PlaceholderDlgTitle = 'Placeholder Properties' ; +FCKLang.PlaceholderDlgName = 'Placeholder Name' ; +FCKLang.PlaceholderErrNoName = 'Please type the placeholder name' ; +FCKLang.PlaceholderErrNameInUse = 'The specified name is already in use' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/es.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/es.js new file mode 100644 index 0000000..eaf4b72 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/es.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder Spanish language file. + */ +FCKLang.PlaceholderBtn = 'Insertar/Editar contenedor' ; +FCKLang.PlaceholderDlgTitle = 'Propiedades del contenedor ' ; +FCKLang.PlaceholderDlgName = 'Nombre de contenedor' ; +FCKLang.PlaceholderErrNoName = 'Por favor escriba el nombre de contenedor' ; +FCKLang.PlaceholderErrNameInUse = 'El nombre especificado ya esta en uso' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/fr.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/fr.js new file mode 100644 index 0000000..558793b --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/fr.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placeholder French language file. + */ +FCKLang.PlaceholderBtn = "Insérer/Modifier l'Espace réservé" ; +FCKLang.PlaceholderDlgTitle = "Propriétés de l'Espace réservé" ; +FCKLang.PlaceholderDlgName = "Nom de l'Espace réservé" ; +FCKLang.PlaceholderErrNoName = "Veuillez saisir le nom de l'Espace réservé" ; +FCKLang.PlaceholderErrNameInUse = "Ce nom est déjà utilisé" ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/hu.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/hu.js new file mode 100644 index 0000000..e45105f --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/hu.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2009 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder Hungarian language file. + */ +FCKLang.PlaceholderBtn = 'Helykitöltő hozzáadása/szerkesztése' ; +FCKLang.PlaceholderDlgTitle = 'Helykitöltő tulajdonságai' ; +FCKLang.PlaceholderDlgName = 'Helykitöltő neve' ; +FCKLang.PlaceholderErrNoName = 'Ide írja a helykitöltő nevét' ; +FCKLang.PlaceholderErrNameInUse = 'Ez a név már használatban van' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/it.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/it.js new file mode 100644 index 0000000..ac0df55 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/it.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder Italian language file. + */ +FCKLang.PlaceholderBtn = 'Aggiungi/Modifica Placeholder' ; +FCKLang.PlaceholderDlgTitle = 'Proprietà del Placeholder' ; +FCKLang.PlaceholderDlgName = 'Nome del Placeholder' ; +FCKLang.PlaceholderErrNoName = 'Digitare il nome del placeholder' ; +FCKLang.PlaceholderErrNameInUse = 'Il nome inserito è già in uso' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/pl.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/pl.js new file mode 100644 index 0000000..40e221b --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/pl.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder Polish language file. + */ +FCKLang.PlaceholderBtn = 'Wstaw/Edytuj nagłówek' ; +FCKLang.PlaceholderDlgTitle = 'Właśności nagłówka' ; +FCKLang.PlaceholderDlgName = 'Nazwa nagłówka' ; +FCKLang.PlaceholderErrNoName = 'Proszę wprowadzić nazwę nagłówka' ; +FCKLang.PlaceholderErrNameInUse = 'Podana nazwa jest już w użyciu' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/lang/sk.js b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/sk.js new file mode 100644 index 0000000..08e8ee7 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/placeholder/lang/sk.js @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2009 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Placholder English language file. + */ +FCKLang.PlaceholderBtn = 'Vložiť/Upraviť značku' ; +FCKLang.PlaceholderDlgTitle = 'Vlastnosti značky' ; +FCKLang.PlaceholderDlgName = 'Názov značky' ; +FCKLang.PlaceholderErrNoName = 'Napíšte názov značky' ; +FCKLang.PlaceholderErrNameInUse = 'Tento názov sa už používa' ; diff --git a/fckeditor/FCKeditor/editor/plugins/placeholder/placeholder.gif b/fckeditor/FCKeditor/editor/plugins/placeholder/placeholder.gif new file mode 100644 index 0000000000000000000000000000000000000000..c07078c176ea25623746d36bf111fab9b9765195 GIT binary patch literal 96 zcmZ?wbhEHb6krfwn8*ME|NjHge;`BgCkrD30~3P|NE9T`z+^b3f933l{0li5j)WiH tvL!7&SK)grlj*V*H&&|Ms+>_aN#@I~@O6($sxy6?#M?fu&|qM&1^{HXA;JIv literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/plugins/simplecommands/fckplugin.js b/fckeditor/FCKeditor/editor/plugins/simplecommands/fckplugin.js new file mode 100644 index 0000000..23f5cab --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/simplecommands/fckplugin.js @@ -0,0 +1,29 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This plugin register Toolbar items for the combos modifying the style to + * not show the box. + */ + +FCKToolbarItems.RegisterItem( 'SourceSimple' , new FCKToolbarButton( 'Source', FCKLang.Source, null, FCK_TOOLBARITEM_ONLYICON, true, true, 1 ) ) ; +FCKToolbarItems.RegisterItem( 'StyleSimple' , new FCKToolbarStyleCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ; +FCKToolbarItems.RegisterItem( 'FontNameSimple' , new FCKToolbarFontsCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ; +FCKToolbarItems.RegisterItem( 'FontSizeSimple' , new FCKToolbarFontSizeCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ; +FCKToolbarItems.RegisterItem( 'FontFormatSimple', new FCKToolbarFontFormatCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ; diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/fck_sitelink.gif b/fckeditor/FCKeditor/editor/plugins/sitelink/fck_sitelink.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9a712e388eab11eeaab1e29f638344a22247971 GIT binary patch literal 206 zcmZ?wbhEHb6krfwc+ANF1V%R6`$NMmJ_pNo-Yj~<_2TniPC*810Jm9Sc>n+a literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/fckplugin.js b/fckeditor/FCKeditor/editor/plugins/sitelink/fckplugin.js new file mode 100644 index 0000000..915bf92 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/fckplugin.js @@ -0,0 +1,17 @@ +/***********************************************/ +/** FCKeditor - Plugin Sitelink for CMSimple **/ +/** by Klaus Treichler © 2008 **/ +/** http://www.treichler.at **/ +/** klaus@treichler.at **/ +/** Scriptversion: 1.0 - 2008-06-16 **/ +/***********************************************/ + +// Register the Sitelink Plugin +var dialogPath = FCKConfig.PluginsPath + 'sitelink/sitelink.php'; +var sitelinkDialogCmd = new FCKDialogCommand( FCKLang["sitelinkTitle"], FCKLang["sitelinkTitle"], dialogPath, 500, 500 ); +FCKCommands.RegisterCommand( 'sitelink', sitelinkDialogCmd ); + +// Creating button in the FCKeditor - Toolbar +var ositelinkItem = new FCKToolbarButton( 'sitelink', FCKLang['sitelinkTitle'] ) ; +ositelinkItem.IconPath = FCKPlugins.Items['sitelink'].Path + 'fck_sitelink.gif' ; +FCKToolbarItems.RegisterItem( 'sitelink', ositelinkItem ) ; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/lang/de.js b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/de.js new file mode 100644 index 0000000..89aed2d --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/de.js @@ -0,0 +1,2 @@ +FCKLang["sitelinkTitle"] = 'Interner Link'; +FCKLang["sitelinkNotselected"] = 'Keine Auswahl getroffen!'; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/lang/en.js b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/en.js new file mode 100644 index 0000000..398ddbe --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/en.js @@ -0,0 +1,2 @@ +FCKLang["sitelinkTitle"] = 'Internal link'; +FCKLang["sitelinkNotselected"] = 'Nothing selected!'; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/lang/hu.js b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/hu.js new file mode 100644 index 0000000..f1acd1c --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/hu.js @@ -0,0 +1,2 @@ +FCKLang["sitelinkTitle"] = 'Belső link'; +FCKLang["sitelinkNotselected"] = 'Kérem, válasszon valamit!'; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/lang/sk.js b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/sk.js new file mode 100644 index 0000000..7b1d4f9 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/lang/sk.js @@ -0,0 +1,2 @@ +FCKLang["sitelinkTitle"] = 'Vnútorný odkaz'; +FCKLang["sitelinkNotselected"] = 'Nič nie je označené!'; \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.js b/fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.js new file mode 100644 index 0000000..a45bafe --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.js @@ -0,0 +1,98 @@ +/***********************************************/ +/** FCKeditor - Plugin Sitelink for CMSimple **/ +/** by Klaus Treichler © 2008 **/ +/** http://www.treichler.at **/ +/** klaus@treichler.at **/ +/** Scriptversion: 1.0 - 2008-06-16 **/ +/***********************************************/ + +var sitelink = function(){ + this.aLinks = new Array(); + this.bDebuggerOn = false; + this.sUri = ''; + this.sTitle = ''; + this.sInnerHtml = ''; + this.bError = false; +} + +sitelink.prototype.showMessage = function(sMessage,bShowAlways){ + if(this.bDebuggerOn || bShowAlways){ + alert(sMessage); + } +} + +sitelink.prototype.setUri = function(uri){ + if ( uri.length == 0 ){ + throw 'no_uri'; + } + + this.sUri = uri; + + this.showMessage('setUri(): ' + this.sUri); +} + +sitelink.prototype.setTitle = function(title){ + this.sTitle = title.replace(/"/,'\''); + this.showMessage('setTitle(): ' + this.sTitle); +} + +sitelink.prototype.checkSelection = function(){ + if(this.sLinks.length < 1){ + throw 'no_selection'; + } + this.showMessage('checkSelection()'); +} + +sitelink.prototype.createLink = function(){ + + this.sLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( this.sUri ) ; + this.showMessage('createLink(): ' + this.sLinks[0]); +} + +sitelink.prototype.perform = function(){ + oLink = this.sLinks[0]; + oLink.href = this.sUri ; + SetAttribute( oLink, '_fcksavedurl', this.sUri ) ; + this.showMessage('set HREF' + ' | ' + this.sUri); + this.showMessage('get HREF' + ' | ' + oLink.href); + SetAttribute(oLink , 'title' , this.sTitle ); + this.showMessage('set TITLE'); + oEditor.FCKSelection.SelectNode(oLink); + this.showMessage('replace LINK'); +} + +sitelink.prototype.setLink = function(url,title){ + try{ + this.setUri(url); + this.setTitle(title); + this.createLink(); + this.checkSelection(); + this.perform(); + return true ; + } + catch (e){ + if(e == 'no_selection'){ + this.showMessage(oFCKLang.sitelinkNotselected, true); + return false; + } + } +} + +var LinkObject; +var oEditor = window.parent.InnerDialogLoaded() ; +var oFCK = oEditor.FCK ; +var oFCKLang = oEditor.FCKLang ; +oEditor.FCKLanguageManager.TranslatePage(document) ; +var oLink = oFCK.Selection.MoveToAncestorNode( 'A' ) ; + +if ( oLink ){ + oFCK.Selection.SelectNode( oLink ) ; + } + +window.onload = function(){ + LinkObject = new sitelink(); +} + +function Ok(url,title){ + return LinkObject.setLink(url,title); + } \ No newline at end of file diff --git a/fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.php b/fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.php new file mode 100644 index 0000000..7596222 --- /dev/null +++ b/fckeditor/FCKeditor/editor/plugins/sitelink/sitelink.php @@ -0,0 +1,226 @@ + + + + + Sitelink + + + + + + + + + $value) { + + /* + * .. and now we look for other language folders, + * if so, put them to the array + */ + + if (is_dir("$start_folder/$value") == true && $value != '.' && $value != '..' && strlen($value) == 2 && $value != $first_value || ($value == 'content' && $value != $first_value)) { + $dir_list[] = $value; // Fill the array with all language folders + } + } + + + //Here goes the real thing... + + foreach($dir_list as $key => $value) { + + //get the content file + $value == "content" ? $c = file_get_contents($start_folder . $value . "/content.htm") : + $c = file_get_contents($start_folder . $value . "/content/content.htm"); + + //get the path to the flag image + $value == "content" ? $flag_file = "../../../../images/flags/" . $lang_default . ".gif" : + $flag_file = "../../../../images/flags/" . $value . ".gif"; + + //look for the link prefix + if ($value == "content") $value = $lang_default; + if ($value == $lang_active) { + $lng_pref = "?"; + } elseif ($value != $lang_default && $lang_active == $lang_default) { + $lng_pref = "./" . $value . "/?"; + } elseif ($value == $lang_default && $lang_active != $lang_default) { + $lng_pref = "../?"; + } else { + $lng_pref = "../" . $value . "/?"; + } + + + // write some information where the link goes to, + // if more than one language was found + $count = (count($dir_list)); + if ($count > 1) { + $output .= '    
    '; + } + + + /* + * Most of the following code was written by Klaus Treichler + * http://www.treichler.at + * + * Maybe some day somebody write a smart and compact function for this job... + * ... Maybe! ;-) + */ + + // load some stuff we need from CMSimple configuration + + /* + include '../../../../cmsimple/config.php'; + $ml = $cf['menu']['levels']; + $sep = $cf['uri']['seperator']; + */ + + /* + switch ($ml) { + + case "1" : + preg_match_all("@

    [^<]*

    |

    [^<]*

    @", $c, $header); + break; + + case "2" : + preg_match_all("@

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    @", $c, $header); + break; + + case "3" : + preg_match_all("@

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    @", $c, $header); + break; + + case "4" : + preg_match_all("@

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    @", $c, $header); + break; + + default: + preg_match_all("@

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    |

    (.*)

    @", $c, $header); + break; + } + + for($i = 0; $i < count($header[0]); $i++) { + if (strpos($header[0][$i], "

    ") !== false || strpos($header[0][$i], "

    ") !== false) { + $link_length = ((int)strlen($header[0][$i]))-9; + $link_text = substr($header[0][$i], 4, $link_length); + $link1 = rawurlencode(str_replace(" ", "_", $link_text)); + $output .= "".$link_text."
    "; + } + + if (strpos($header[0][$i], "

    ") !== false || strpos($header[0][$i], "

    ") !== false) { + $link_length = ((int)strlen($header[0][$i]))-9; + $link_text = substr($header[0][$i], 4, $link_length); + $link2 = $link1 . $sep . rawurlencode(str_replace(" ", "_", $link_text)); + $output .= "".$link_text."
    "; + } + + if (strpos($header[0][$i], "

    ") !== false || strpos($header[0][$i], "

    ") !== false) { + $link_length = ((int)strlen($header[0][$i]))-9; + $link_text = substr($header[0][$i], 4, $link_length); + $link3 = $link2 . $sep . rawurlencode(str_replace(" ", "_", $link_text)); + $output .= "".$link_text."
    "; + } + + if (strpos($header[0][$i], "

    ") !== false || strpos($header[0][$i], "

    ") !== false) { + $link_length = ((int)strlen($header[0][$i]))-9; + $link_text = substr($header[0][$i], 4, $link_length); + $link4 = $link3 . $sep . rawurlencode(str_replace(" ", "_", $link_text)); + $output .= "".$link_text."
    "; + } + } + */ + + + preg_match_all("/]*>(.*)<\/h[1-".$ml."]>/isU", $c, $headings); + $sl_ancestors = array(); + $sl_levels = $headings[1]; + $sl_link_texts = $headings[2]; + $i = 0; + foreach($sl_link_texts as $heading){ + $sl_margin = (int)$sl_levels[$i] * 20 - 20; + $sl_link_text = trim(strip_tags($heading)); + $sl_url = rawurlencode(str_replace(" ", "_", $sl_link_text)); + $sl_ancestors[$sl_levels[$i]] = $sl_url; + $sl_myself = array_slice($sl_ancestors, 0, $sl_levels[$i]); + $sl_link = $lng_pref . implode($sep, $sl_myself); + $output .= "" + .$sl_link_text."
    "; + $i++; + } + + $output .= "
    "; + } + + echo $output; + +?> + + + + diff --git a/fckeditor/FCKeditor/editor/skins/_fckviewstrips.html b/fckeditor/FCKeditor/editor/skins/_fckviewstrips.html new file mode 100644 index 0000000..fe3dc0a --- /dev/null +++ b/fckeditor/FCKeditor/editor/skins/_fckviewstrips.html @@ -0,0 +1,121 @@ + + + + + FCKeditor - View Icons Strips + + + + + + + + + + + + + + +
    + Index + Skins
    + default + office2003 + silver
    + + diff --git a/fckeditor/FCKeditor/editor/skins/default/fck_dialog.css b/fckeditor/FCKeditor/editor/skins/default/fck_dialog.css new file mode 100644 index 0000000..7e68ef3 --- /dev/null +++ b/fckeditor/FCKeditor/editor/skins/default/fck_dialog.css @@ -0,0 +1,402 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Styles used by the dialog boxes. + */ + +html, body +{ + background-color: transparent; + margin: 0px; + padding: 0px; +} + +body +{ + padding: 10px; +} + +body, td, input, select, textarea +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; +} + +body, .BackColor +{ + background-color: #f1f1e3; +} + +.PopupBody +{ + height: 100%; + width: 100%; + overflow: hidden; + background-color: transparent; + padding: 0px; +} + +#header +{ + cursor: move; +} + +.PopupTitle +{ + font-weight: bold; + font-size: 14pt; + color: #737357; + background-color: #e3e3c7; + padding: 3px 10px 3px 10px; +} + +.PopupButtons +{ + position: absolute; + right: 0px; + left: 0px; + bottom: 0px; + border-top: #d5d59d 1px solid; + background-color: #e3e3c7; + padding: 7px 10px 7px 10px; +} + +.Button +{ + border: #737357 1px solid; + color: #3b3b1f; + background-color: #c7c78f; +} + +#btnOk +{ + width: 100px; +} + +.DarkBackground +{ + background-color: #eaead1; +} + +.LightBackground +{ + background-color: #ffffbe; +} + +.PopupTitleBorder +{ + border-bottom: #d5d59d 1px solid; +} + +.PopupTabArea +{ + color: #737357; + background-color: #e3e3c7; +} + +.PopupTabEmptyArea +{ + padding-left: 10px; + border-bottom: #d5d59d 1px solid; +} + +.PopupTab, .PopupTabSelected +{ + border-right: #d5d59d 1px solid; + border-top: #d5d59d 1px solid; + border-left: #d5d59d 1px solid; + padding: 3px 5px 3px 5px; + color: #737357; +} + +.PopupTab +{ + margin-top: 1px; + border-bottom: #d5d59d 1px solid; + cursor: pointer; + cursor: hand; +} + +.PopupTabSelected +{ + font-weight: bold; + cursor: default; + padding-top: 4px; + border-bottom: #f1f1e3 1px solid; + background-color: #f1f1e3; +} + +.PopupSelectionBox +{ + border: #ff9933 1px solid !important; + background-color: #fffacd !important; + cursor: pointer; + cursor: hand; +} + +#tdBrowse +{ + vertical-align: bottom; +} + +/** + * Dialog frame related styles. + */ + +.contents +{ + position: absolute; + top: 2px; + left: 16px; + right: 16px; + bottom: 20px; + background-color: #f1f1e3; + overflow: hidden; + z-index: 1; +} + +.tl, .tr, .tc, .bl, .br, .bc +{ + position: absolute; + background-image: url(images/sprites.png); + background-repeat: no-repeat; +} + +* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc +{ + background-image: url(images/sprites.gif); +} + +.ml, .mr +{ + position: absolute; + background-image: url(images/dialog.sides.png); + background-repeat: repeat-y; +} + +* html .ml, * html .mr +{ + background-image: url(images/dialog.sides.gif); +} + +.rtl .ml, .rtl .mr +{ + position: absolute; + background-image: url(images/dialog.sides.rtl.png); + background-repeat: repeat-y; +} + +* html .rtl .ml, * html .rtl .mr +{ + background-image: url(images/dialog.sides.gif); +} + +.tl +{ + top: 0px; + left: 0px; + width: 16px; + height: 16px; + background-position: -16px -16px; +} + +.rtl .tl +{ + background-position: -16px -397px; +} + +.tr +{ + top: 0px; + right: 0px; + width: 16px; + height: 16px; + background-position: -16px -76px; +} + +.rtl .tr +{ + background-position: -16px -457px; +} + +.tc +{ + top: 0px; + right: 16px; + left: 16px; + height: 16px; + background-position: 0px -136px; + background-repeat: repeat-x; +} + +.ml +{ + top: 16px; + left: 0px; + width: 16px; + bottom: 51px; + background-position: 0px 0px; +} + +.mr +{ + top: 16px; + right: 0px; + width: 16px; + bottom: 51px; + background-position: -16px 0px; +} + +.bl +{ + bottom: 0px; + left: 0px; + width: 30px; + height: 51px; + background-position: -16px -196px; +} + +.rtl .bl +{ + background-position: -16px -517px; +} + +.br +{ + bottom: 0px; + right: 0px; + width: 30px; + height: 51px; + background-position: -16px -263px; +} + +.rtl .br +{ + background-position: -16px -584px; +} + +.bc +{ + bottom: 0px; + right: 30px; + left: 30px; + height: 51px; + background-position: 0px -330px; + background-repeat: repeat-x; +} + +/* For IE6. Do not change it. */ +* html .blocker +{ + position: absolute; + width: 100%; + height: 100%; + z-index: 12; + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0); +} + +/* The layer used to cover the dialog when opening a child dialog. */ +.cover +{ + position: absolute; + top: 0px; + left: 14px; + right: 14px; + bottom: 18px; + z-index: 11; +} + +#closeButton +{ + position: absolute; + right: 0px; + top: 0px; + margin-top: 5px; + margin-right: 10px; + width: 20px; + height: 20px; + cursor: pointer; + background-image: url(images/sprites.png); + background-repeat: no-repeat; + background-position: -16px -651px; +} + +* html #closeButton +{ + cursor: hand; + background-image: url(images/sprites.gif); +} + +.rtl #closeButton +{ + right: auto; + left: 10px; + margin-right: 0px; +} + +#closeButton:hover +{ + background-position: -16px -687px; +} + +#throbberBlock +{ + z-index: 10; +} + +#throbberBlock div +{ + float: left; + width: 8px; + height: 9px; + margin-left: 2px; + margin-right: 2px; + font-size: 1px; /* IE6 */ +} + +/* + Color Gradient Generator: + http://www.herethere.net/~samson/php/color_gradient/?cbegin=737357&cend=E3E3C7&steps=4 +*/ + +.throbber_1 +{ + background-color: #737357; +} + +.throbber_2 +{ + background-color: #8f8f73; +} + +.throbber_3 +{ + background-color: #abab8f; +} + +.throbber_4 +{ + background-color: #c7c7ab; +} + +.throbber_5 +{ + background-color: #e3e3c7; +} diff --git a/fckeditor/FCKeditor/editor/skins/default/fck_dialog_ie6.js b/fckeditor/FCKeditor/editor/skins/default/fck_dialog_ie6.js new file mode 100644 index 0000000..93dd674 --- /dev/null +++ b/fckeditor/FCKeditor/editor/skins/default/fck_dialog_ie6.js @@ -0,0 +1,110 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + */ + +(function() +{ + // IE6 doens't handle absolute positioning properly (it is always in quirks + // mode). This function fixes the sizes and positions of many elements that + // compose the skin (this is skin specific). + var fixSizes = window.DoResizeFixes = function() + { + var fckDlg = window.document.body ; + + for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ ) + { + var child = fckDlg.childNodes[i] ; + switch ( child.className ) + { + case 'contents' : + child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ; // -left -right + child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ; // -bottom -top + break ; + + case 'blocker' : + case 'cover' : + child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ; // -left -right + 4 + child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ; // -bottom -top + 4 + break ; + + case 'tr' : + child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ; + break ; + + case 'tc' : + child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ; + break ; + + case 'ml' : + child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ; + break ; + + case 'mr' : + child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ; + child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ; + break ; + + case 'bl' : + child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ; + break ; + + case 'br' : + child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ; + child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ; + break ; + + case 'bc' : + child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ; + child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ; + break ; + } + } + } + + var closeButtonOver = function() + { + this.style.backgroundPosition = '-16px -687px' ; + } ; + + var closeButtonOut = function() + { + this.style.backgroundPosition = '-16px -651px' ; + } ; + + var fixCloseButton = function() + { + var closeButton = document.getElementById ( 'closeButton' ) ; + + closeButton.onmouseover = closeButtonOver ; + closeButton.onmouseout = closeButtonOut ; + } + + var onLoad = function() + { + fixSizes() ; + fixCloseButton() ; + + window.attachEvent( 'onresize', fixSizes ) ; + window.detachEvent( 'onload', onLoad ) ; + } + + window.attachEvent( 'onload', onLoad ) ; + +})() ; diff --git a/fckeditor/FCKeditor/editor/skins/default/fck_editor.css b/fckeditor/FCKeditor/editor/skins/default/fck_editor.css new file mode 100644 index 0000000..41d5a4a --- /dev/null +++ b/fckeditor/FCKeditor/editor/skins/default/fck_editor.css @@ -0,0 +1,465 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2010 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Styles used by the editor IFRAME and Toolbar. + */ + +/* + ### Basic Editor IFRAME Styles. +*/ + +body +{ + padding: 1px; + margin: 0; + background-color: #ffffff; +} + +#xEditingArea +{ + border: #696969 1px solid; + /*padding-left:60px;*/ +} + +.SourceField +{ + padding: 5px; + margin: 0px; + font-family: Monospace; +} + +/* + Toolbar +*/ + +.TB_ToolbarSet, .TB_Expand, .TB_Collapse +{ + cursor: default; + background-color: #efefde; +} + +.TB_ToolbarSet +{ + border-top: #efefde 1px outset; + border-bottom: #efefde 1px outset; +} + +.TB_ToolbarSet TD +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif; +} + +.TB_Toolbar +{ + height: 24px; + display: inline-table; /* inline = Opera jumping buttons bug */ +} + +.TB_Separator +{ + width: 1px; + height: 16px; + margin: 2px; + background-color: #999966; +} + +.TB_Start +{ + background-image: url(images/toolbar.start.gif); + margin: 2px; + width: 3px; + background-repeat: no-repeat; + height: 16px; +} + +.TB_End +{ + display: none; +} + +.TB_ExpandImg +{ + background-image: url(images/toolbar.expand.gif); + background-repeat: no-repeat; +} + +.TB_CollapseImg +{ + background-image: url(images/toolbar.collapse.gif); + background-repeat: no-repeat; +} + +.TB_SideBorder +{ + background-color: #696969; +} + +.TB_Expand, .TB_Collapse +{ + padding: 2px 2px 2px 2px; + border: #efefde 1px outset; +} + +.TB_Collapse +{ + width: 5px; +} + +.TB_Break +{ + height: 24px; /* IE needs the height to be set, otherwise no break */ +} + +/* + Toolbar Button +*/ + +.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled +{ + border: #efefde 1px solid; /* This is the default border */ + height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */ +} + +.TB_Button_On +{ + border: #316ac5 1px solid; + background-color: #c1d2ee; +} + +.TB_Button_On_Over, .TB_Button_Off_Over +{ + border: #316ac5 1px solid; + background-color: #dff1ff; +} + +.TB_Button_Off +{ + filter: alpha(opacity=70); /* IE */ + opacity: 0.70; /* Safari, Opera and Mozilla */ +} + +.TB_Button_Disabled +{ + filter: gray() alpha(opacity=30); /* IE */ + opacity: 0.30; /* Safari, Opera and Mozilla */ +} + +.TB_Button_Padding +{ + visibility: hidden; + width: 3px; + height: 22px; +} + +.TB_Button_Image +{ + overflow: hidden; + width: 16px; + height: 16px; + margin: 3px; + background-repeat: no-repeat; +} + +.TB_Button_Image img +{ + position: relative; +} + +.TB_Button_Off .TB_Button_Text +{ + background-color: #efefde; /* Needed because of a bug on Clear Type */ +} + +.TB_ConnectionLine +{ + background-color: #ffffff; + height: 1px; + margin-left: 1px; /* ltr */ + margin-right: 1px; /* rtl */ +} + +.TB_Text +{ + height: 22px; +} + +.TB_Button_Off .TB_Text +{ + background-color: #efefde ; /* Needed because of a bug on ClearType */ +} + +.TB_Button_On_Over .TB_Text +{ + background-color: #dff1ff ; /* Needed because of a bug on ClearType */ +} + +/* + Menu +*/ + +.MN_Menu +{ + border: 1px solid #8f8f73; + padding: 2px; + background-color: #ffffff; + cursor: default; +} + +.MN_Menu, .MN_Menu .MN_Label +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif; +} + +.MN_Item_Padding +{ + visibility: hidden; + width: 3px; + height: 20px; +} + +.MN_Icon +{ + background-color: #e3e3c7; + text-align: center; + height: 20px; +} + +.MN_Label +{ + padding-left: 3px; + padding-right: 3px; +} + +.MN_Separator +{ + height: 3px; +} + +.MN_Separator_Line +{ + border-top: #b9b99d 1px solid; +} + +.MN_Item .MN_Icon IMG +{ + filter: alpha(opacity=70); + opacity: 0.70; +} + +.MN_Item_Over +{ + color: #ffffff; + background-color: #8f8f73; +} + +.MN_Item_Over .MN_Icon +{ + background-color: #737357; +} + +.MN_Item_Disabled IMG +{ + filter: gray() alpha(opacity=30); /* IE */ + opacity: 0.30; /* Safari, Opera and Mozilla */ +} + +.MN_Item_Disabled .MN_Label +{ + color: #b7b7b7; +} + +.MN_Arrow +{ + padding-right: 3px; + padding-left: 3px; +} + +.MN_ConnectionLine +{ + background-color: #ffffff; +} + +.Menu .TB_Button_On, .Menu .TB_Button_On_Over +{ + border: #8f8f73 1px solid; + background-color: #ffffff; +} + +/* + ### Panel Styles +*/ + +.FCK_Panel +{ + border: #8f8f73 1px solid; + padding: 2px; + background-color: #ffffff; +} + +.FCK_Panel, .FCK_Panel TD +{ + font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif; + font-size: 11px; +} + +/* + ### Special Combos +*/ + +.SC_Panel +{ + overflow: auto; + white-space: nowrap; + cursor: default; + border: 1px solid #8f8f73; + padding-left: 2px; + padding-right: 2px; +} + +.SC_Panel, .SC_Panel TD +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif; +} + +.SC_Item, .SC_ItemSelected +{ + margin-top: 2px; + margin-bottom: 2px; + background-position: left center; + padding-left: 11px; + padding-right: 3px; + padding-top: 2px; + padding-bottom: 2px; + text-overflow: ellipsis; + overflow: hidden; + background-repeat: no-repeat; + border: #dddddd 1px solid; +} + +.SC_Item *, .SC_ItemSelected * +{ + margin-top: 0px; + margin-bottom: 0px; +} + +.SC_ItemSelected +{ + border: #9a9afb 1px solid; + background-image: url(images/toolbar.arrowright.gif); +} + +.SC_ItemOver +{ + border: #316ac5 1px solid; +} + +.SC_Field +{ + border: #b7b7a6 1px solid; + cursor: default; +} + +.SC_FieldCaption +{ + overflow: visible; + padding-right: 5px; + padding-left: 5px; + opacity: 0.75; /* Safari, Opera and Mozilla */ + filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */ + height: 23px; + background-color: #efefde; +} + +.SC_FieldLabel +{ + white-space: nowrap; + padding: 2px; + width: 100%; + cursor: default; + background-color: #ffffff; + text-overflow: ellipsis; + overflow: hidden; +} + +.SC_FieldButton +{ + background-position: center center; + background-image: url(images/toolbar.buttonarrow.gif); + border-left: #b7b7a6 1px solid; + width: 14px; + background-repeat: no-repeat; +} + +.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text +{ + opacity: 0.30; /* Safari, Opera and Mozilla */ + filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */ +} + +.SC_FieldOver +{ + border: #316ac5 1px solid; +} + +.SC_FieldOver .SC_FieldButton +{ + border-left: #316ac5 1px solid; +} + +/* + ### Color Selector Panel +*/ + +.ColorBoxBorder +{ + border: #808080 1px solid; + position: static; +} + +.ColorBox +{ + font-size: 1px; + width: 10px; + position: static; + height: 10px; +} + +.ColorDeselected, .ColorSelected +{ + cursor: default; +} + +.ColorDeselected +{ + border: #ffffff 1px solid; + padding: 2px; + float: left; +} + +.ColorSelected +{ + border: #330066 1px solid; + padding: 2px; + float: left; + background-color: #c4cdd6; +} diff --git a/fckeditor/FCKeditor/editor/skins/default/fck_strip.gif b/fckeditor/FCKeditor/editor/skins/default/fck_strip.gif new file mode 100644 index 0000000000000000000000000000000000000000..a6ca5325d3ca178187ce5d77a17858f434128cc0 GIT binary patch literal 5175 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 VxSqvH*Of8$O2n&`I0PKf`5(2*f@J^z literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.gif b/fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f91b4753ad672ecbbda36ddd0522f6f93dadd1d GIT binary patch literal 48 zcmZ?wbhEHbRA69aXkcWxdUfvq|Nj+#vM@3L1#}pI03^e}#NN}-!TmCvfx#L8L+uN$ literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.png b/fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.png new file mode 100644 index 0000000000000000000000000000000000000000..1042a61cf9f3c3839d1c4fafa0ad9d83396253ef GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-r!3HGvcdbbWQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%xp=xbhE&{2`t$$4J+tA0B`Qsl z9vhhqtp$qJRd?FDPMdF@e_dDMD`Urf=8xG5b(}}eFZ`0d!ouSpw?IAXqxlYhq!kV@ Y*liGXlBs6f3N(+w)78&qol`;+0EeeJRsaA1 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.rtl.png b/fckeditor/FCKeditor/editor/skins/default/images/dialog.sides.rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f7b49fcc3ed5a8fa763d0ad0372f86c8582b20 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-r!3HGvcdbbWQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%xqG@ehE&{2($V8fPfJKhU`;Ah zc*d3_ry$0Vx09fWpQlD(0qaDhB!Y^fDE`igwg9eSAM}o@l*f2hbU8 Z4D&oNk%w1VLkxU0-^>0@$utWST}QXSHi-iuC9XB)t&$U{{R30A^8LW000I6 zEC2ui06qZI0ssU5Xu90~Fv>}*y*TU5yZ>M)j$~<`XsWJk>%MR-&oo*T^>ydg&Qrdh zBq)Rsi;g3bp`%+%=Dam9O*|vZ%rP`f{bIY^EjUZQqO0sFybb3} z^7~AGfKP&hdMAe_i6x69jU$gDks*^Hl^>Ubnwy-Ro}ZwhqNAjxrl)|J9jY9x8?G9# z8L}9(I)$mYeYQQiQNB~aRl--qS;kw)UCLj~Va{XFWzuKVY1V7lZQ5_#ao%&_b>esA zdFFeaycO#}=!ox%@r?71^^o_H`IP&X{ipx~3LHqVpuvL(6Dmx2qoKox5F<*QNU@^D zix@LLT*$HiqsNaRLy8oJq5$&6_xL>fFh*r%xmQJhYoI zbV$%uM_VO*wKP`KSx;+4y`^qyuc}x%6^*bJXx2?#AB6SuRnyo8X9JZrWR+c8cWZND zY&Q3&-Me`6>fOt?uiw9b0}CEZ_;1<;hY7{q^_FO3ql>)y?~x9{J;g9{%{ytwgD8j~wu&b+zm zh?pqo zorxDRmsmK_QSNT}skVF<~acbC1+Q9mL+Igiq<7*Uz!#sYGbljUR}|kdE}aGw&~`ZaK04?-#rj~cC3QJt7(s_CYjcIxS;poS`{ z0Hl^`Dyc;X0KlrOwkklX00=NZs{^R|st~HyIx7IW#tJL1vi9mLuB_H7E33Eupz5lG z#_l?-vdjj1?6W-NI&H7XRvW9cz*3vTvaPzB>Z#<4YVNt{rmOC{0|nsjyYRYOL;&H2 z8^F8(1VBKm1kii05cKxDF8~7Pi!Z_Y7HlxUtoExftN;E$@2Um@wUwF%P_|*bDaqQ06S9)@fH98 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/sprites.png b/fckeditor/FCKeditor/editor/skins/default/images/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..5be90edd2f0b6fdb0322981c924466989f07e570 GIT binary patch literal 3250 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 CgA17e literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gif b/fckeditor/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea60995e1b89fe5153d46f746d2bcf989276ceba GIT binary patch literal 46 ucmZ?wbhEHbWMyDxXkcUjg8%>jEB<5wG8q|kKzxu40~2eDtT=ZxgEauzkq6@d literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/toolbar.collapse.gif b/fckeditor/FCKeditor/editor/skins/default/images/toolbar.collapse.gif new file mode 100644 index 0000000000000000000000000000000000000000..87aa56d3b698249044daa032fb80f0e048924b30 GIT binary patch literal 152 zcmZ?wbhEHb`ann^(>+Ne(bllZtjT zSUkPExj0!>M%dF_RZg7WR72XyNa_Fo{|rO`#h)yU3=F~yIv}+mI~iC-AE+obW$^hF U&u~eynPj5t`ow{8K?{R50PMaX;{X5v literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/toolbar.end.gif b/fckeditor/FCKeditor/editor/skins/default/images/toolbar.end.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9 GIT binary patch literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/toolbar.expand.gif b/fckeditor/FCKeditor/editor/skins/default/images/toolbar.expand.gif new file mode 100644 index 0000000000000000000000000000000000000000..79075e7c3860309d9decad616cc21fcc06f2946d GIT binary patch literal 152 zcmZ?wbhEHbt^fQ}=%wcF0xIeL|oxvIa7nLEl literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/toolbar.separator.gif b/fckeditor/FCKeditor/editor/skins/default/images/toolbar.separator.gif new file mode 100644 index 0000000000000000000000000000000000000000..eaed04a7a767e1a48e65726239cb1c25f7e8ec79 GIT binary patch literal 58 zcmZ?wbhEHbWMvR#XkcJCc6jgq|Nj+#vM@3*Ff!;c00Bsbfl1IOp>5}^?@}onFTMV7 LrlxwQ2!k~M_Z<@= literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/editor/skins/default/images/toolbar.start.gif b/fckeditor/FCKeditor/editor/skins/default/images/toolbar.start.gif new file mode 100644 index 0000000000000000000000000000000000000000..1774246c2ef37fa17cdcd971b3db38c713989818 GIT binary patch literal 105 zcmZ?wbhEHbWM&Xx*v!DNYH`cTMJ){#5iK=Q6WWtDtnAH5a-ToFbl$Y$qHMnfGs+q& z!l!hn{{R1<0Spv>vM@3*@G|Itcpx(vSj09kT*=evpCkexyN`q)l}NV7#XYq D|1u-x literal 0 HcmV?d00001 diff --git a/fckeditor/FCKeditor/fckconfig.js b/fckeditor/FCKeditor/fckconfig.js new file mode 100644 index 0000000..714095e --- /dev/null +++ b/fckeditor/FCKeditor/fckconfig.js @@ -0,0 +1,325 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2009 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Editor configuration settings. + * + * Follow this link for more information: + * http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options + */ + +FCKConfig.CustomConfigurationsPath = '' ; + +FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ; +FCKConfig.EditorAreaStyles = '' ; +FCKConfig.ToolbarComboPreviewCSS = '' ; + +FCKConfig.DocType = '' ; + +FCKConfig.BaseHref = '' ; + +FCKConfig.FullPage = false ; + +// The following option determines whether the "Show Blocks" feature is enabled or not at startup. +FCKConfig.StartupShowBlocks = false ; + +FCKConfig.Debug = false ; +FCKConfig.AllowQueryStringDebug = true ; + +FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ; +FCKConfig.SkinEditorCSS = '' ; // FCKConfig.SkinPath + "|" ; +FCKConfig.SkinDialogCSS = '' ; // FCKConfig.SkinPath + "|" ; + +FCKConfig.PreloadImages = [ FCKConfig.SkinPath + 'images/toolbar.start.gif', FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ] ; + +FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; + +// FCKConfig.Plugins.Add( 'autogrow' ) ; +// FCKConfig.Plugins.Add( 'dragresizetable' ); +FCKConfig.AutoGrowMax = 400 ; + +// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ; // ASP style server side code <%...%> +// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ; // PHP style server side code +// FCKConfig.ProtectedSource.Add( /(]+>[\s|\S]*?<\/asp:[^\>]+>)|(]+\/>)/gi ) ; // ASP.Net style tags + +FCKConfig.AutoDetectLanguage = true ; +FCKConfig.DefaultLanguage = 'en' ; +FCKConfig.ContentLangDirection = 'ltr' ; + +FCKConfig.ProcessHTMLEntities = true ; +FCKConfig.IncludeLatinEntities = true ; +FCKConfig.IncludeGreekEntities = true ; + +FCKConfig.ProcessNumericEntities = false ; + +FCKConfig.AdditionalNumericEntities = '' ; // Single Quote: "'" + +FCKConfig.FillEmptyBlocks = true ; + +FCKConfig.FormatSource = true ; +FCKConfig.FormatOutput = true ; +FCKConfig.FormatIndentator = ' ' ; + +FCKConfig.EMailProtection = 'none' ; // none | encode | function +FCKConfig.EMailProtectionFunction = 'mt(NAME,DOMAIN,SUBJECT,BODY)' ; + +FCKConfig.StartupFocus = false ; +FCKConfig.ForcePasteAsPlainText = false ; +FCKConfig.AutoDetectPasteFromWord = true ; // IE only. +FCKConfig.ShowDropDialog = true ; +FCKConfig.ForceSimpleAmpersand = false ; +FCKConfig.TabSpaces = 0 ; +FCKConfig.ShowBorders = true ; +FCKConfig.SourcePopup = false ; +FCKConfig.ToolbarStartExpanded = true ; +FCKConfig.ToolbarCanCollapse = true ; +FCKConfig.IgnoreEmptyParagraphValue = true ; +FCKConfig.FloatingPanelsZIndex = 10000 ; +FCKConfig.HtmlEncodeOutput = false ; + +FCKConfig.TemplateReplaceAll = true ; +FCKConfig.TemplateReplaceCheckbox = true ; + +FCKConfig.ToolbarLocation = 'In' ; + +FCKConfig.ToolbarSets["Default"] = [ + ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'], + ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'], + ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'], + ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'], + '/', + ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'], + ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'], + ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'], + ['Link','Unlink','Anchor'], + ['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'], + '/', + ['Style','FontFormat','FontName','FontSize'], + ['TextColor','BGColor'], + ['FitWindow','ShowBlocks','-','About'] // No comma for the last row. +] ; + +FCKConfig.ToolbarSets["Basic"] = [ + ['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About'] +] ; + +FCKConfig.EnterMode = 'p' ; // p | div | br +FCKConfig.ShiftEnterMode = 'br' ; // p | div | br + +FCKConfig.Keystrokes = [ + [ CTRL + 65 /*A*/, true ], + [ CTRL + 67 /*C*/, true ], + [ CTRL + 70 /*F*/, true ], + [ CTRL + 83 /*S*/, true ], + [ CTRL + 84 /*T*/, true ], + [ CTRL + 88 /*X*/, true ], + [ CTRL + 86 /*V*/, 'Paste' ], + [ CTRL + 45 /*INS*/, true ], + [ SHIFT + 45 /*INS*/, 'Paste' ], + [ CTRL + 88 /*X*/, 'Cut' ], + [ SHIFT + 46 /*DEL*/, 'Cut' ], + [ CTRL + 90 /*Z*/, 'Undo' ], + [ CTRL + 89 /*Y*/, 'Redo' ], + [ CTRL + SHIFT + 90 /*Z*/, 'Redo' ], + [ CTRL + 76 /*L*/, 'Link' ], + [ CTRL + 66 /*B*/, 'Bold' ], + [ CTRL + 73 /*I*/, 'Italic' ], + [ CTRL + 85 /*U*/, 'Underline' ], + [ CTRL + SHIFT + 83 /*S*/, 'Save' ], + [ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ], + [ SHIFT + 32 /*SPACE*/, 'Nbsp' ] +] ; + +FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form','DivContainer'] ; +FCKConfig.BrowserContextMenuOnCtrl = false ; +FCKConfig.BrowserContextMenu = false ; + +FCKConfig.EnableMoreFontColors = true ; +FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,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' ; + +FCKConfig.FontFormats = 'p;h1;h2;h3;h4;h5;h6;pre;address;div' ; +FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; +FCKConfig.FontSizes = 'smaller;larger;xx-small;x-small;small;medium;large;x-large;xx-large' ; + +FCKConfig.StylesXmlPath = FCKConfig.EditorPath + 'fckstyles.xml' ; +FCKConfig.TemplatesXmlPath = FCKConfig.EditorPath + 'fcktemplates.xml' ; + +FCKConfig.SpellChecker = 'WSC' ; // 'WSC' | 'SpellerPages' | 'ieSpell' +FCKConfig.IeSpellDownloadUrl = 'http://www.iespell.com/download.php' ; +FCKConfig.SpellerPagesServerScript = 'server-scripts/spellchecker.php' ; // Available extension: .php .cfm .pl +FCKConfig.FirefoxSpellChecker = false ; + +FCKConfig.MaxUndoLevels = 15 ; + +FCKConfig.DisableObjectResizing = false ; +FCKConfig.DisableFFTableHandles = true ; + +FCKConfig.LinkDlgHideTarget = false ; +FCKConfig.LinkDlgHideAdvanced = false ; + +FCKConfig.ImageDlgHideLink = false ; +FCKConfig.ImageDlgHideAdvanced = false ; + +FCKConfig.FlashDlgHideAdvanced = false ; + +FCKConfig.ProtectedTags = '' ; + +// This will be applied to the body element of the editor +FCKConfig.BodyId = '' ; +FCKConfig.BodyClass = '' ; + +FCKConfig.DefaultStyleLabel = '' ; +FCKConfig.DefaultFontFormatLabel = '' ; +FCKConfig.DefaultFontLabel = '' ; +FCKConfig.DefaultFontSizeLabel = '' ; + +FCKConfig.DefaultLinkTarget = '' ; + +// The option switches between trying to keep the html structure or do the changes so the content looks like it was in Word +FCKConfig.CleanWordKeepsStructure = false ; + +// Only inline elements are valid. +FCKConfig.RemoveFormatTags = 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' ; + +// Attributes that will be removed +FCKConfig.RemoveAttributes = 'class,style,lang,width,height,align,hspace,valign' ; + +FCKConfig.CustomStyles = +{ + 'Red Title' : { Element : 'h3', Styles : { 'color' : 'Red' } } +}; + +// Do not add, rename or remove styles here. Only apply definition changes. +FCKConfig.CoreStyles = +{ + // Basic Inline Styles. + 'Bold' : { Element : 'strong', Overrides : 'b' }, + 'Italic' : { Element : 'em', Overrides : 'i' }, + 'Underline' : { Element : 'u' }, + 'StrikeThrough' : { Element : 'strike' }, + 'Subscript' : { Element : 'sub' }, + 'Superscript' : { Element : 'sup' }, + + // Basic Block Styles (Font Format Combo). + 'p' : { Element : 'p' }, + 'div' : { Element : 'div' }, + 'pre' : { Element : 'pre' }, + 'address' : { Element : 'address' }, + 'h1' : { Element : 'h1' }, + 'h2' : { Element : 'h2' }, + 'h3' : { Element : 'h3' }, + 'h4' : { Element : 'h4' }, + 'h5' : { Element : 'h5' }, + 'h6' : { Element : 'h6' }, + + // Other formatting features. + 'FontFace' : + { + Element : 'span', + Styles : { 'font-family' : '#("Font")' }, + Overrides : [ { Element : 'font', Attributes : { 'face' : null } } ] + }, + + 'Size' : + { + Element : 'span', + Styles : { 'font-size' : '#("Size","fontSize")' }, + Overrides : [ { Element : 'font', Attributes : { 'size' : null } } ] + }, + + 'Color' : + { + Element : 'span', + Styles : { 'color' : '#("Color","color")' }, + Overrides : [ { Element : 'font', Attributes : { 'color' : null } } ] + }, + + 'BackColor' : { Element : 'span', Styles : { 'background-color' : '#("Color","color")' } }, + + 'SelectionHighlight' : { Element : 'span', Styles : { 'background-color' : 'navy', 'color' : 'white' } } +}; + +// The distance of an indentation step. +FCKConfig.IndentLength = 40 ; +FCKConfig.IndentUnit = 'px' ; + +// Alternatively, FCKeditor allows the use of CSS classes for block indentation. +// This overrides the IndentLength/IndentUnit settings. +FCKConfig.IndentClasses = [] ; + +// [ Left, Center, Right, Justified ] +FCKConfig.JustifyClasses = [] ; + +// The following value defines which File Browser connector and Quick Upload +// "uploader" to use. It is valid for the default implementaion and it is here +// just to make this configuration file cleaner. +// It is not possible to change this value using an external file or even +// inline when creating the editor instance. In that cases you must set the +// values of LinkBrowserURL, ImageBrowserURL and so on. +// Custom implementations should just ignore it. +var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py +var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py + +// Don't care about the following two lines. It just calculates the correct connector +// extension to use for the default File Browser (Perl uses "cgi"). +var _FileBrowserExtension = _FileBrowserLanguage == 'perl' ? 'cgi' : _FileBrowserLanguage ; +var _QuickUploadExtension = _QuickUploadLanguage == 'perl' ? 'cgi' : _QuickUploadLanguage ; + +FCKConfig.LinkBrowser = true ; +FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ; +FCKConfig.LinkBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; // 70% +FCKConfig.LinkBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; // 70% + +FCKConfig.ImageBrowser = true ; +FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ; +FCKConfig.ImageBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; // 70% ; +FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; // 70% ; + +FCKConfig.FlashBrowser = true ; +FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ; +FCKConfig.FlashBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; //70% ; +FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; //70% ; + +FCKConfig.LinkUpload = true ; +FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ; +FCKConfig.LinkUploadAllowedExtensions = ".(7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip)$" ; // empty for all +FCKConfig.LinkUploadDeniedExtensions = "" ; // empty for no one + +FCKConfig.ImageUpload = true ; +FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Image' ; +FCKConfig.ImageUploadAllowedExtensions = ".(jpg|gif|jpeg|png|bmp)$" ; // empty for all +FCKConfig.ImageUploadDeniedExtensions = "" ; // empty for no one + +FCKConfig.FlashUpload = true ; +FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Flash' ; +FCKConfig.FlashUploadAllowedExtensions = ".(swf|flv)$" ; // empty for all +FCKConfig.FlashUploadDeniedExtensions = "" ; // empty for no one + +FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ; +FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ; +FCKConfig.SmileyColumns = 8 ; +FCKConfig.SmileyWindowWidth = 320 ; +FCKConfig.SmileyWindowHeight = 210 ; + +FCKConfig.BackgroundBlockerColor = '#ffffff' ; +FCKConfig.BackgroundBlockerOpacity = 0.50 ; + +FCKConfig.MsWebBrowserControlCompat = false ; + +FCKConfig.PreventSubmitHandler = false ; diff --git a/fckeditor/FCKeditor/fckeditor.js b/fckeditor/FCKeditor/fckeditor.js new file mode 100644 index 0000000..cfc0263 --- /dev/null +++ b/fckeditor/FCKeditor/fckeditor.js @@ -0,0 +1,330 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2009 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This is the integration file for JavaScript. + * + * It defines the FCKeditor class that can be used to create editor + * instances in a HTML page in the client side. For server side + * operations, use the specific integration system. + */ + +// FCKeditor Class +var FCKeditor = function( instanceName, width, height, toolbarSet, value ) +{ + // Properties + this.InstanceName = instanceName ; + this.Width = width || '100%' ; + this.Height = height || '200' ; + this.ToolbarSet = toolbarSet || 'Default' ; + this.Value = value || '' ; + this.BasePath = FCKeditor.BasePath ; + this.CheckBrowser = true ; + this.DisplayErrors = true ; + + this.Config = new Object() ; + + // Events + this.OnError = null ; // function( source, errorNumber, errorDescription ) +} + +/** + * This is the default BasePath used by all editor instances. + */ +FCKeditor.BasePath = '/fckeditor/' ; + +/** + * The minimum height used when replacing textareas. + */ +FCKeditor.MinHeight = 200 ; + +/** + * The minimum width used when replacing textareas. + */ +FCKeditor.MinWidth = 750 ; + +FCKeditor.prototype.Version = '2.6.4.1' ; +FCKeditor.prototype.VersionBuild = '23187' ; + +FCKeditor.prototype.Create = function() +{ + document.write( this.CreateHtml() ) ; +} + +FCKeditor.prototype.CreateHtml = function() +{ + // Check for errors + if ( !this.InstanceName || this.InstanceName.length == 0 ) + { + this._ThrowError( 701, 'You must specify an instance name.' ) ; + return '' ; + } + + var sHtml = '' ; + + if ( !this.CheckBrowser || this._IsCompatibleBrowser() ) + { + sHtml += '' ; + sHtml += this._GetConfigHtml() ; + sHtml += this._GetIFrameHtml() ; + } + else + { + var sWidth = this.Width.toString().indexOf('%') > 0 ? this.Width : this.Width + 'px' ; + var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ; + + sHtml += '" ; + } + + return $Html ; + } + + /** + * Returns true if browser is compatible with FCKeditor. + * + * @return boolean + */ + function IsCompatible() + { + return FCKeditor_IsCompatibleBrowser() ; + } + + /** + * Get settings from Config array as a single string. + * + * @access protected + * @return string + */ + function GetConfigFieldString() + { + $sParams = '' ; + $bFirst = true ; + + foreach ( $this->Config as $sKey => $sValue ) + { + if ( $bFirst == false ) + $sParams .= '&' ; + else + $bFirst = false ; + + if ( $sValue === true ) + $sParams .= $this->EncodeConfig( $sKey ) . '=true' ; + else if ( $sValue === false ) + $sParams .= $this->EncodeConfig( $sKey ) . '=false' ; + else + $sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ; + } + + return $sParams ; + } + + /** + * Encode characters that may break the configuration string + * generated by GetConfigFieldString(). + * + * @access protected + * @param string $valueToEncode + * @return string + */ + function EncodeConfig( $valueToEncode ) + { + $chars = array( + '&' => '%26', + '=' => '%3D', + '"' => '%22' ) ; + + return strtr( $valueToEncode, $chars ) ; + } +} diff --git a/fckeditor/FCKeditor/fckeditor_php5.php b/fckeditor/FCKeditor/fckeditor_php5.php new file mode 100644 index 0000000..074b340 --- /dev/null +++ b/fckeditor/FCKeditor/fckeditor_php5.php @@ -0,0 +1,258 @@ += 5.5) ; + } + else if ( strpos($sAgent, 'Gecko/') !== false ) + { + $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ; + return ($iVersion >= 20030210) ; + } + else if ( strpos($sAgent, 'Opera/') !== false ) + { + $fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ; + return ($fVersion >= 9.5) ; + } + else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) ) + { + $iVersion = $matches[1] ; + return ( $matches[1] >= 522 ) ; + } + else + return false ; +} + +class FCKeditor +{ + /** + * Name of the FCKeditor instance. + * + * @access protected + * @var string + */ + public $InstanceName ; + /** + * Path to FCKeditor relative to the document root. + * + * @var string + */ + public $BasePath ; + /** + * Width of the FCKeditor. + * Examples: 100%, 600 + * + * @var mixed + */ + public $Width ; + /** + * Height of the FCKeditor. + * Examples: 400, 50% + * + * @var mixed + */ + public $Height ; + /** + * Name of the toolbar to load. + * + * @var string + */ + public $ToolbarSet ; + /** + * Initial value. + * + * @var string + */ + public $Value ; + /** + * This is where additional configuration can be passed. + * Example: + * $oFCKeditor->Config['EnterMode'] = 'br'; + * + * @var array + */ + public $Config ; + + /** + * Main Constructor. + * Refer to the _samples/php directory for examples. + * + * @param string $instanceName + */ + public function __construct( $instanceName ) + { + $this->InstanceName = $instanceName ; + $this->BasePath = '/fckeditor/' ; + $this->Width = '100%' ; + $this->Height = '200' ; + $this->ToolbarSet = 'Default' ; + $this->Value = '' ; + + $this->Config = array() ; + } + + /** + * Display FCKeditor. + * + */ + public function Create() + { + echo $this->CreateHtml() ; + } + + /** + * Return the HTML code required to run FCKeditor. + * + * @return string + */ + public function CreateHtml() + { + $HtmlValue = htmlspecialchars( $this->Value ) ; + + $Html = '' ; + + if ( $this->IsCompatible() ) + { + if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" ) + $File = 'fckeditor.original.html' ; + else + $File = 'fckeditor.html' ; + + $Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ; + + if ( $this->ToolbarSet != '' ) + $Link .= "&Toolbar={$this->ToolbarSet}" ; + + // Render the linked hidden field. + $Html .= "InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ; + + // Render the configurations hidden field. + $Html .= "InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ; + + // Render the editor IFRAME. + $Html .= "" ; + } + else + { + if ( strpos( $this->Width, '%' ) === false ) + $WidthCSS = $this->Width . 'px' ; + else + $WidthCSS = $this->Width ; + + if ( strpos( $this->Height, '%' ) === false ) + $HeightCSS = $this->Height . 'px' ; + else + $HeightCSS = $this->Height ; + + $Html .= "" ; + } + + return $Html ; + } + + /** + * Returns true if browser is compatible with FCKeditor. + * + * @return boolean + */ + public function IsCompatible() + { + return FCKeditor_IsCompatibleBrowser() ; + } + + /** + * Get settings from Config array as a single string. + * + * @access protected + * @return string + */ + public function GetConfigFieldString() + { + $sParams = '' ; + $bFirst = true ; + + foreach ( $this->Config as $sKey => $sValue ) + { + if ( $bFirst == false ) + $sParams .= '&' ; + else + $bFirst = false ; + + if ( $sValue === true ) + $sParams .= $this->EncodeConfig( $sKey ) . '=true' ; + else if ( $sValue === false ) + $sParams .= $this->EncodeConfig( $sKey ) . '=false' ; + else + $sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ; + } + + return $sParams ; + } + + /** + * Encode characters that may break the configuration string + * generated by GetConfigFieldString(). + * + * @access protected + * @param string $valueToEncode + * @return string + */ + public function EncodeConfig( $valueToEncode ) + { + $chars = array( + '&' => '%26', + '=' => '%3D', + '"' => '%22' ) ; + + return strtr( $valueToEncode, $chars ) ; + } +} diff --git a/fckeditor/FCKeditor/license.txt b/fckeditor/FCKeditor/license.txt new file mode 100644 index 0000000..9d0fd6d --- /dev/null +++ b/fckeditor/FCKeditor/license.txt @@ -0,0 +1,1246 @@ +FCKeditor - The text editor for Internet - http://www.fckeditor.net +Copyright (C) 2003-2009 Frederico Caldeira Knabben + +Licensed under the terms of any of the following licenses at your +choice: + + - GNU General Public License Version 2 or later (the "GPL") + http://www.gnu.org/licenses/gpl.html + (See Appendix A) + + - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + http://www.gnu.org/licenses/lgpl.html + (See Appendix B) + + - Mozilla Public License Version 1.1 or later (the "MPL") + http://www.mozilla.org/MPL/MPL-1.1.html + (See Appendix C) + +You are not required to, but if you want to explicitly declare the +license you have chosen to be bound to when using, reproducing, +modifying and distributing this software, just include a text file +titled "legal.txt" in your version of this software, indicating your +license choice. In any case, your choice will not restrict any +recipient of your version of this software to use, reproduce, modify +and distribute this software under any of the above licenses. + +Appendix A: The GPL License +=========================== + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + 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. + + 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 +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. + + 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. + + 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. + + 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 +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 +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 +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 + + +Appendix B: The LGPL License +============================ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + +Appendix C: The MPL License +=========================== + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] diff --git a/fckeditor/fckconfig_calendar.js b/fckeditor/fckconfig_calendar.js new file mode 100644 index 0000000..9ed4668 --- /dev/null +++ b/fckeditor/fckconfig_calendar.js @@ -0,0 +1,207 @@ +/******************************************************************************************* +FCKeditor-Integration for Calendar-Plugin for CMSimple_XH by svasti (www.svasti.de) + +based on work of +© 2007-2009 Connie Müller-Gödecke, Holger Irmler, Klaus Treichler, especially +Version 1.6 bei Holger Irmler supplied with CMSImple_XM 1.4 +This work is licensed under GNU General Public License Version 2 or later (GPL), +********************************************************************************************/ + +// Name and path to your custom EditorAreaCSS file +// Here you can precisely simulate the output of your site inside FCKeditor, including background colors, +// font styles, sizes and your custom CSS definitions +// Remember to comment out / remove the line with the include of your template-stylesheet css in ./cmsimple/fckeditor.php! +// FCKConfig.EditorAreaCSS = '' ; + +//You can precisely simulate the output of your site inside FCKeditor, including background colors, font styles and +//sizes. The EditorAreaStyles option is similar to EditorAreaCSS. The difference is that you define your custom style +//inside the configuration file or inline in the page when creating the editor instance. +//For example: FCKConfig.EditorAreaStyles = 'body { color: Grey } h1 { color: Orange }'; +//FCKConfig.EditorAreaStyles = 'body {margin:0;padding:0;font:normal normal 11px/1.4 Verdana} p,li {margin:0; padding:0;} ul,ol {margin-top:0;margin-bottom:0;} i {color:#006;letter-spacing:0.05em;} b {font-size:13px;color:#447}'; + +// ToolbarComboPreviewCSS makes it possible to point the Style and Format toolbar combos to +// a different CSS, avoiding conflicts with the editor area CSS. +// Example: +// FCKConfig.ToolbarComboPreviewCSS = '/mycssstyles/toolbar.css' ; +// FCKConfig.ToolbarComboPreviewCSS = '../custom_configurations/toolbar.css' ; + +// This option sets the DOCTYPE to be used in the editable area. The actual rendering depends on the value set here. +// For example, to make the editor rendering engine work under the XHTML 1.0 Transitional: +// FCKConfig.DocType = '' ; +// As of FCKeditor 2.6.1, if the DocType setting is explicetlly set to the HTML4 doctype, the editor will not produce tags like
    but
    instead. +// FCKConfig.DocType = '' ; + +// Name and path to your custom fckstyles.xml file for the "Style" toolbar: +// Here you can offer a complete set of predefined formatting definitions to the end-user (writer) +// so the text can be well designed without messing up the HTML +// FCKConfig.StylesXmlPath = '../custom_configurations/custom_fckstyles.xml' ; +// Or you can define a list of custom styles like below +// +// FCKConfig.CustomStyles = +// { +// 'Red Title' : { Element : 'h3', Styles : { 'color' : 'Red' } } +// }; +FCKConfig.CustomStyles = '' ; + + +// FCKConfig.TemplatesXmlPath = '' ; + +//FCKConfig.EnableMoreFontColors = true ; +//FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,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' ; + +FCKConfig.FontFormats = 'p;h3;h4;h5;h6' ; +//FCKConfig.FontNames = 'Arial;Arial Black;Comic Sans MS;Courier New;Georgia;Tahoma;Times New Roman;Trebuchet MS;Verdana' ; +//FCKConfig.FontSizes = '8px;9px;10px;11px;12px;13px;14px;15px;16px;17px;18px;19px;20px;22px;24px;26px;28px;30px;32px;34px;36px;38px;40px' ; + +// define which Skin you want to use, more skins can be downloaded at: +// http://sourceforge.net/tracker/?group_id=75348&atid=740153 +// FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/silver/' ; +FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ; +// FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/office2003/' ; + +FCKConfig.ProcessHTMLEntities = false ; +FCKConfig.IncludeLatinEntities = false ; +FCKConfig.IncludeGreekEntities = false ; + +FCKConfig.ProcessNumericEntities = false ; + +FCKConfig.AdditionalNumericEntities = '' ; // Single Quote: "'" + +FCKConfig.FillEmptyBlocks = true ; + +FCKConfig.FormatSource = false ; +FCKConfig.FormatOutput = false ; +FCKConfig.FormatIndentator = ' ' ; + + +FCKConfig.ForcePasteAsPlainText = true ; +FCKConfig.IgnoreEmptyParagraphValue = true ; + + +FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; +// PlugIns can be activated by commenting / uncommenting them +FCKConfig.Plugins.Add('nbsp','de,en'); +FCKConfig.Plugins.Add('sitelink','de,en'); + +FCKConfig.TemplateReplaceAll = false ; + +FCKConfig.ToolbarSets["calendar"] = [ + ['Bold','Italic','Underline'], + ['OrderedList','UnorderedList'],['Undo'], + ['FitWindow','Image'], + ['JustifyLeft','JustifyCenter','JustifyRight'], + ['Outdent','Indent'], + ['Link','Unlink','sitelink'], + ['Style'],['FontFormat'],['RemoveFormat'],['Source'] +] ; + +FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ; // PHP style server side code +// FCKConfig.ProtectedSource.Add( /#CMSimple[\s\S]*?#/g ) ; // CMSimple scripting + +FCKConfig.EnterMode = 'p' ; // p | div | br +FCKConfig.ShiftEnterMode = 'br' ; // p | div | br + +FCKConfig.Keystrokes = [ + [ CTRL + 65 /*A*/, true ], + [ CTRL + 67 /*C*/, true ], + [ CTRL + 70 /*F*/, true ], + [ CTRL + 83 /*S*/, true ], + [ CTRL + 84 /*T*/, true ], + [ CTRL + 88 /*X*/, true ], + [ CTRL + 86 /*V*/, 'Paste' ], + [ CTRL + 45 /*INS*/, true ], + [ SHIFT + 45 /*INS*/, 'Paste' ], + [ CTRL + 88 /*X*/, 'Cut' ], + [ SHIFT + 46 /*DEL*/, 'Cut' ], + [ CTRL + 90 /*Z*/, 'Undo' ], + [ CTRL + 89 /*Y*/, 'Redo' ], + [ CTRL + SHIFT + 90 /*Z*/, 'Redo' ], + [ CTRL + 76 /*L*/, 'Link' ], + [ CTRL + 66 /*B*/, 'Bold' ], + [ CTRL + 73 /*I*/, 'Italic' ], + [ CTRL + 85 /*U*/, 'Underline' ], + [ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ], + [ SHIFT + 32 /*SPACE*/, 'Nbsp' ], + [ CTRL + ALT + 83 /*S*/, 'Source' ], +] ; + +FCKConfig.AutoDetectLanguage = true ; +FCKConfig.DefaultLanguage = 'de' ; +FCKConfig.ContentLangDirection = 'ltr' ; + +FCKConfig.CoreStyles = +{ + // Basic Inline Styles. + 'Bold' : { Element : 'b', Overrides : 'strong' }, + 'Italic' : { Element : 'i', Overrides : 'em' }, + 'Underline' : { Element : 'u' }, + 'StrikeThrough' : { Element : 'strike' }, + 'Subscript' : { Element : 'sub' }, + 'Superscript' : { Element : 'sup' }, + + // Basic Block Styles (Font Format Combo). + 'p' : { Element : 'p' }, + 'div' : { Element : 'div' }, + 'pre' : { Element : 'pre' }, + 'address' : { Element : 'address' }, + 'h1' : { Element : 'h1' }, + 'h2' : { Element : 'h2' }, + 'h3' : { Element : 'h3' }, + 'h4' : { Element : 'h4' }, + 'h5' : { Element : 'h5' }, + 'h6' : { Element : 'h6' }, + + // Other formatting features. + 'FontFace' : + { + Element : 'span', + Styles : { 'font-family' : '#("Font")' }, + Overrides : [ { Element : 'font', Attributes : { 'face' : null } } ] + }, + + 'Size' : + { + Element : 'span', + Styles : { 'font-size' : '#("Size","fontSize")' }, + Overrides : [ { Element : 'font', Attributes : { 'size' : null } } ] + }, + + 'Color' : + { + Element : 'span', + Styles : { 'color' : '#("Color","color")' }, + Overrides : [ { Element : 'font', Attributes : { 'color' : null } } ] + }, + + 'BackColor' : { Element : 'span', Styles : { 'background-color' : '#("Color","color")' } }, + + 'SelectionHighlight' : { Element : 'span', Styles : { 'background-color' : 'navy', 'color' : 'white' } } +}; + +// The following value defines which File Browser connector and Quick Upload +// "uploader" to use. It is valid for the default implementaion and it is here +// just to make this configuration file cleaner. +// It is not possible to change this value using an external file or even +// inline when creating the editor instance. In that cases you must set the +// values of LinkBrowserURL, ImageBrowserURL and so on. +// Custom implementations should just ignore it. +var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py +var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py + +// HI: FileBrowser-Settings moved to FCKeditor.php with Version 2.4.0 + +FCKConfig.LinkUpload = false ; //Deactivate QuickUpload-Tab +FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ; +FCKConfig.LinkUploadAllowedExtensions = ".(7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip)$" ; // empty for all +FCKConfig.LinkUploadDeniedExtensions = "" ; // empty for no one + +FCKConfig.ImageUpload = false ; //Deactivate QuickUpload-Tab +FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Image' ; +FCKConfig.ImageUploadAllowedExtensions = ".(jpg|gif|jpeg|png)$" ; // empty for all +FCKConfig.ImageUploadDeniedExtensions = "" ; // empty for no one + +FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ; +FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ; +FCKConfig.SmileyColumns = 8 ; +FCKConfig.SmileyWindowWidth = 320 ; +FCKConfig.SmileyWindowHeight = 240 ; diff --git a/fckeditor/fckeditor_for_calendar.php b/fckeditor/fckeditor_for_calendar.php new file mode 100644 index 0000000..c77cbfb --- /dev/null +++ b/fckeditor/fckeditor_for_calendar.php @@ -0,0 +1,126 @@ +'."\n"; +//} else { +// $hjs.=''."\n"; +//} +//initialising the connector to the filemanager in case the filemanager hasn't been called already by other actions of the user +if(session_id() == ''){ + session_start(); +} + +//puts the FCKEditor Html Editor into a chosen textarea +function fckeditor() +{ + global $plugin_cf,$plugin_tx,$pth,$sl,$plugin,$sn,$su,$cf,$adm; + + + if ($adm) { + $_SESSION["_VALID_FCKeditor"] = "enabled"; + } + + //for multi language sites, if you are not in main language pages + $sl != $cf['language']['default'] ? $repl = $sl . "/index.php" : $repl = "index.php"; + $CMSimple_root_folder = str_replace($repl, "", $_SERVER['SCRIPT_NAME']); + + //for bugfixing -- looking for the values of the variables + //$x="

    cf['language']['default']: ".$cf['language']['default']."

    $sl

    $repl

    ".$_SERVER['SCRIPT_NAME']."

    .$CMSimple_root_folder.

    "; + + $upload_folder = $CMSimple_root_folder; + $_SESSION["upload_folder"] = $upload_folder; + + $isInSubfolder = substr_count($upload_folder, '/'); + + $_SESSION["lang_active"] = $sl; + + if($sl == $cf['language']['default']) { + $isDefaultLanguage = 1; + } else {$isDefaultLanguage = 0; } + + if(isset($cf['fckeditor']['folder']) && $cf['fckeditor']['folder']=='')$cf['fckeditor']['folder']='FCKeditor'; + + + + // Decide if html or Xhtml should be used + $DocType = ''; + if ($cf['xhtml']['endtags'] != 'true') { + $DocType = '' ; + } + // Look for the custom configuration file with tool bar + $ccp = $CMSimple_root_folder + .'plugins/calendar/fckeditor/fckconfig_calendar.js'; + + // Look for the ccs-file in the editor window + $css = $CMSimple_root_folder + .'plugins/calendar/css/editor.css,'; + $css .= $pth['folder']['template']."stylesheet.css"; + + // Look for the xml-style file + $fckstyles = $CMSimple_root_folder + .'plugins/calendar/fckeditor/fckstyles_calendar.xml'; + + // Look for the template file + $templatepath = $CMSimple_root_folder + .'plugins/calendar/fckeditor/fcktemplate_calendar.xml'; + + // Give the path to FCKeditor in the CMSimple installation + $fckpath = $CMSimple_root_folder . 'plugins/calendar/fckeditor/FCKeditor/'; + $connector = $CMSimple_root_folder . 'plugins/calendar/fckeditor/FCKeditor/editor/filemanager/connectors/php/connector.php'; + $browserPath = $CMSimple_root_folder . 'plugins/calendar/fckeditor/FCKeditor/editor/filemanager/browser/cmsimple/browser.html?'; + + // Editor height + $height = $plugin_cf['calendar']['editor_height']; + + // Now call FCKEditor via java script + $o = ''; + return $o; +} +?> diff --git a/fckeditor/fckstyles_calendar.xml b/fckeditor/fckstyles_calendar.xml new file mode 100644 index 0000000..6bc957c --- /dev/null +++ b/fckeditor/fckstyles_calendar.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + +

    Calendar Plugin 1.4.5 for CMSimple_XH

    +

    Originally developed by Michael Svarrer in 2005, modified by Tory and Bob, revised and enlarged by Svasti and Holger and again by Svasti


    + +

    Calendar produces calendars with marked event days, which are linked to an event list.

    +

    +New in Version 1.4.3: Up to version 1.4.2 for saving the complete event list was send to the server. Unfortunately some users reported data loss in long lists. In version 1.4.3 now only the one actually changed event is sent to the server to prevent data loss. Don't edit more than one event before saving, as only one event can be saved at a time.
    +Version 1.4.4 & 1.4.5: Bug fixes

    + + +
      +
    1. Installation
    2. +
    3. Basic Usage
    4. +
    5. Putting Calendar on your page
    6. +
    7. Configuration
    8. +
    9. Events
    10. +
    11. Coloring the Calendar Days
    12. +
    13. Entering New Events
    14. +
    15. Exceptions and Additional Dates
    16. +
    17. Editors
    18. +
    19. Event Page = Page with the Event-List
    20. +
    21. Event-List Style
    22. +
    23. Holidays
    24. +
    25. Display of Next Coming Event via Marquee
    26. +
    27. Adjusting Your Page Template
    28. +
    29. Icons, background images, birthday symbols
    30. +
    31. Creating an Event-Archive
    32. +
    33. Second Calendar with Different Events
    34. +
    35. Input of Events in Protected Member Pages
    36. +
    37. Calendar on Subsites or Multi Language Sites
    38. +
    39. Conflicts with other Plugins
    40. +
    41. Installing Calendar Plugin in CMSimple 3.4 or CMSimple LE
    42. +
    43. List of Function Calls
    44. + +
    + +
      +

      Updating 1.4.4 –> 1.4.5

      +
    • Exchange: admin.php, additionally version.nfo, changelog.txt, the help folder, readme.txt
    • + +

      1.4.0 –> 1.4.5

      +
    • Exchange: admin.php, index.php, the editorconfigs, includes and language folders, additionally version.nfo, changelog.txt, the help folder, readme.txt
    • + +

      1.4 beta –> 1.4.5

      + +
    • Save old settings through Presets>backup for both Event-list and also Calendar.
    • +
    • Keep calendar/content folder + calendar/templates/ folder, and calendar/config/config.php in case you have changed config settings. Replace all other files.
    • +
    • Activate your old presets by choosing Presets>backupname for both event-list and calendar. If you have kept your old config file, you need to add the line:
      + $plugin_cf['calendar']['eventlist_start_moves_with_clicked_event']="1"; +
    • + + +

      1.1 –> 1.4.5

      + +
    • Re-use old content files
    • +
    • Old function calls usually still work (except calls which include the event page; the way to enter the event page has been changed).
    • +
    • The method of entering links and birthdays has changed.
    • +
    + + +

    Installation

    +
      +
    • Extract zip-file and put the calendar folder into your CMSimple plugins folder. Websites on shared hosting servers may require writing permissions (646 usually works) for config.php, config2.php, stylesheet.php, templates and content folders with all files, and language file.
    • +
    • You can change some paths (but don't have to!): +
        +
      • You may want to put your calendar event data in a subfolder under userfiles. In config > filepath data enter ./userfiles/calendar/ and move all content files to that folder.
      • +
      • You may want to put the calendar background images in a subfolder under images. In config > filepath calendar background images enter ../../../images/calendar/ and move the provided backgrounds to that folder.
      • +
      +
    • +
    • Choose your Date Delimiter before you start entering events. Enter in config if you want "." or "-" or "/" to deliminate the numerals in dates, i.e. 01.01.2011 or 01-01-2011 or 01/01/2011. If you change this setting later, exceptions, additional days and provisional dates will be erased and your event list will not show anything. After saving the event file, the event list will work again, however the above mentioned date entries will be lost.
      American style date month/day/year is not possible, only day/month/year is supported.
    • + + +
    + +
    + +Basic Usage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Function CallResultUsed for
    editevents()event input tablepassword protected pages
    calendar()one month small calendartemplate
    multicalendar()2 or more months calendartemplate + pages
    year()year calendarpages
    bigcalendar()big one month calendarpages
    events()list of eventspages
    nextevent()marquee of next coming eventstemplate + pages
    + + +

    P.S. No need to use all functions, one may be sufficient for your site.


    + +

    Putting calendar on your page

    +
      +
    • {{{PLUGIN:bigcalendar();}}}
      puts a big one-month calendar on your page.
      + You can customize the looks of this big calendar in calendar config above the calendar view. Presets are also available. +

    • +
    • {{{PLUGIN:multicalendar([number of months],[number of columns next to each other]);}}}
      puts a multi-months calendar with months displayed in columns on your page. + +
        +
      • multicalendar(3,3) will show 3 months, starting from present month, in 3 columns.
        +multicalendar_3-3.jpg, 18kB


      • + +
      • multicalendar(3) has no value for columns, so no columns are created and no frame line. Months are displayed one under another, first month with weekday names.
        +multicalendar_3.jpg, 15kB
      • +
      +
    • +
    • {{{PLUGIN:year();}}}produces a year calendar
      + You can specify the year, e.g.: {{{PLUGIN:year(2021);}}}
      + and the number of columns, e.g.: {{{PLUGIN:year('',4);}}}. 3 columns is the default value.
      + Here an example with 4 columns:
      +year_-4.jpg, 61kB

    • + +
    • {{{PLUGIN:events();}}} puts the event list on your page.
      + In former versions of calendar you always needed an event list. In this version event information can be shown in calendar pop-ups, so that a separate event list is no must any more. Only when the page with the event list is specified, event days in calendar are linked to the event list.
    • +
    + +

    Configuration

    +
      +
    • Next to the normal CMSimple plug-in config file Calendar has direct configuration possibilities in "Edit Events", "Calendar" and "Marquee".
    • +
    • A click on [+] behind presets let's you select presets. You can save your own settings as presets by entering a name and clicking backup. Presets can be edited and deleted in main plugin menu Backup > Delete.
    • +
    • A click on [+] behind Event-list config, Big Calendar, Small Calendar, Pop-up, opens self-explanatory menus. On saving changes can be seen right away. If you see only partial changes, try reloading the page, or empty your browser cache.
    • +
    • Color fields: click opens small frame with color choices. Alternatively you can enter a standard color name into the field, like: black, blue, gray, green, purple, red, silver, white, yellow, or enter a 3-digit color code like #555 or #F00. If you leave the field empty (by deleting the color number) no color will be applied.
    • +
    • Font selection lets you choose font family, font size and sometimes line height. Possible values are listed in config.
    • +
    • HINT: The configuration utility manipulates the css-file. Usually browsers store this file on the first loading of a page for faster future loading. If you change some css-values and your browser doesn't reloaded the css-file, you won't see the changes. The plugin tries to force the browser to reload the css-file in the configuration-page. However when you go to some page of your site to see the final result, your browser may not reload the css-file. Before thinking the program doesn't work, just reload your page in the browser.
    • +
    + +

    Events

    +
      +
    • Events are organized as: DATE, TIME, ENTRY1, MAIN-ENTRY, ENTRY3, INFO/LINKS, additional DESCRIPTION.
    • +
    • You can deselect unwanted fields; minimum selection is DATE and MAIN-ENTRY.
    • +
    + +

    Coloring the Days in Calendar

    +
      +
    • Coloring of calendar days is organized in 8 consecutive layers: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1simple day numbersbasic colornormal weightno background
      2weekendsweekend colorboldno background
      3public holidaysholiday colorboldno background
      4single day events + 1st day of long eventscolor possible
      not recommanded, as it obscures holiday and weekend markings
      bold possible
      but not recommanded
      event day background
      5specially marked events for border markingcolored borderweight can not be setno background
      62nd and following days of long events
      (not in big calendar)
      underliningweight can not be setno background
      7birthdays
      (not in big calendar)
      color can not be setweight can not be setpartly transparent background image
      8today
      (not in big calendar)
      color possible
      not recommanded, as it obsures events, holidays and weekends
      bold possible
      but not recommanded
      background possible
    • +
    • Not using color or bold for events means that weekends or public holidays are still clearly visible.
    • +
    + +

    Entering New Events

    +
      +
    • + save = save this event
      + add.png, 733B = create new event
      + copy.png = copy event
      + delete.png, 715B = delete event
    • +
    • cal-grey.gif, 170B = opens a datepicker and lets you choose the Date of an event. Dates can also be entered directly. For uncertain events you may enter as day "--","-" (will be sorted at the start of a month) or "?","??" (sorted at the end of a month). Month and year have always to be specified. Events with such uncertain dates will appear in the event list but not in the calendar. You can enter events (e.g. for anniversaries) from the year 100 (yes!) up to the year 999999. Entering only 2 digits makes the datepicker add "20" before your entry.
    • + +
    • Time: Enter the start time (hh:mm, 24 hour mode only) in the first field, the ending time in the second. Different events on the same day will be sorted according to start time in the calendar displays. Events without start time will be sorted after events with start time. Instead of time a short text can also be entered there (e.g. "evening"). For events lasting more than a day the first time will be taken as start time on start day and the second time as end time on end day. If your event has the same start and end times every day (e.g. an exposition) check daily times. This will be shown in the calendar and different events on the same day will be sorted accordingly.
    • +
    • Entering links:
      +
        +
      • Choose internal page links via the options list
      • +
      • External links can be entered in the next line with or without "http://", e.g. www.cmsimple-xh.com. For more than 1 link separate the links by "|"
      • +
      • Links can be attached to text. If there is more than 1 link (including the internal link), the texts to the different links are also separated by "|"
      • +
      • For links to pdf- or word-files in download-folder: enter the exact file name with spaces and accents (case-sensitive), e.g. my word äöü file.docx, in case you use a subfolder of the downloads folder, enter that foldername also, e.g. subfolder/my pdf äöü file.pdf
      • +
      • Links to external pdfs: enter the full address, e.g. www.website.xx/xx/.../my pdf äöü file.pdf
      • + +
      • Special cases:
          +
        • Additional internal links can be entered as simple page name. e.g. + Start if there is no second page with the same name. Some glyph-combinations may be problematic. In case of problems error messages are returned.
          + Alternatively enter the pagename starting with ? followed by the pagename with all upper level pages, separated by your URI separator (as set in CMS config), e.g.: ?Welcome:New here?:Get going!
        • + +
        • For links to CMSimpleRealBlog entries or anchors enter the URL as it appears in the browser address line starting with "?", e.g. + ?Start&realblogaction=view&realblogID=1&page=1
        • + +
        • For links to subsite pages, enter the URL starting with "/" followed by the subsite code, e.g. + /de/?Willkommen
          + + Example: you want to link to the page Dětské letní tábory 2012 on a subsite in Czech. It is sufficient to enter: /cs/?Dětské letní tábory 2012 with all accents and spaces. If the page is on a secondary menu level, the higher level page names have to be added like in former Calendar versions. The easiest way is to simply copy the relevant part of the address line as it appears in the browser. +
        • +
        +
      • +
      +
    • + +
    • For yearly events like anniversaries check yearly with or without age calculation, enter date of birth or commemoration date in the date field and the name of the person or event in the main event entry field. Some text like "anniversary" or "commemoration" can be entered, etc. in the next field. If you checked yearly + age cal. Calendar will calculate the age of the person and display it with birthday special color as background. If you checked only yearly, the birthday special color will not be applied.
    • + +
    • For weekly events enter the date of the first of these events and check weekly. The last planned event can also be entered. If no last event is specified a period of 10 years is supposed. All longer periods will be cut to 10 years maximum.
    • +
    • Formatting:
      + Text of main event entries can be formatted via a simple markup method. +
        +
      • Soft hyphen: Enter \- at the place where you wish to have a soft hyphen. Long words can mess up narrow fields in the event table and in big calendar. Usage of "\-" is strongly recommended to enable hyphenation of long words.
      • +
      • * _ ~ # + = provide further markup, details are shown in formatting at the top of the input table. Examples: *text* results in italic text, **text** results in bold text, ++text++ in red text, ==text== in big text, _text_ in underlined text, __text__ in small text. Combinations are possible.
      • +
      +
    • +
    • Larger entry fields: The size of several entry fields is set in config: without entry the fields will be 1 line entry fields, by entering a height value, e.g. 2.6em, a field will become a textarea with that height, entering "1" will produce the default height.
    • +
    • Extra field: Entry1 has the option in config input-field entry1 show in input always. Thus, even when not used in event list, the field is still available and could be used for marquee for instance.
    • +
    + +

    Exceptions and Additonal Dates

    +
      +
    • Long events and weekly event can have exceptions, where no event takes place. Enter exceptions to these weekly events as comma separated dates. (Same delimiter as your other dates, year will be converted to 2 digits even if you enter 4 digits.)
    • +
    • Weekly events can have additional dates (e.g. if an event gets shifted, use an exception and an addition).
    • +
    • Events (lasting not longer than a day) can be given additional dates, so that repetitions of an event require only one entry. (This feature is not implemented for long events.)
    • +
    + +

    Editors

    +
      +
    • For the field "additional description" Calendar automatically selects either Tinymce or CKeditor as set in your CMS. For CMSimple versions prior to 1.5 FCKeditor will be chosen.
      +In plugin config under editor you can enter html (for plain html) or fckeditor. If you don't use FCKeditor, you can delete the folder calendar/fckeditor (1.4 MB).
    • + +
    • The height of the editor field is set in px under editor height (only a number, not px). The editors come with a special list of styles (= css classes), i.e. left, left2, right for images, so that you can set images to the left or right with fitting margins to the text, and Big, Small, Red to get the same text formatting as in simple markup in the other fields.
    • + +
    • While entering images it is generally faster, easier and gets you better looking results, if you use style-classes and not the other possibilities offered in the image entering dialog. +
      +
      +The included FCKeditor has been modified so that you can select the image style class right away:
      +(Unfortunately this is not so easy in the other non modified editors)

      +fckeditor_image_insert.jpg, 38kB
      +
      + +In TinyMCE you can select a style class after selecting appearance

      +tinymce_image_class.jpg, 56kB

      + +However it is easier in TinyMCE and CKeditor to first enter the image without any styling, and to click on the image in a second step and select a fitting css-style:

      +tinymce_image_style.jpg, 41kB + +
    + + + +
    + + +

    Further Settings

    + + +

    Event Page = Page with the Event-List

    +
      +
    • If you have selected this page in the event-list config, clicking on any event-day in the calendar will lead to this page. The page should contain the function call {{{PLUGIN:events();}}} to show the event-list. If you don't want an event-list, select no event-list page in event-list config.
    • +
    • The time period for events to be shown in the event list is set in event-list config. Present month is minimum. Past events can also be shown, either normal or in gray. You can choose that no past events, not even from the present month, will be shown. If past events in gray is selected, the "additional descriptions" of past event will also not be shown (this is a setting of the css-file and could easily be changed).
    • +
    • Clicking on an event-day which is not in the present month, may have some effect to the period of shown events in the list: +
        +
      • In default setting the event-list displays the standard period of events, which will be enlarged to the future or past if the clicked event is outside the standard period
      • +
      • Entering "1" in the config field eventlist start moves with clicked event makes the shown period shift to the month of the clicked event instead of getting enlarged. The advantage is that the clicked event is usually at the beginning of the list. A link to reset the event list is added at the beginning. (As the list may also shift to the past, settings "show no past events" and "past events in gray" are overridden in the shifted list.)
      • +
    • +
    • The event-list page can also directly be entered in the plugin language settings under event page. You can enter just the name of the event page or the relative URL-address starting with "?" or the relative URL-address of a page of a subsite starting with "./".
    • +
    + + +

    Event-List Style: Spreadsheet or Template?

    +
      +
    • The event list shows your events in chronological order, either in spreadsheet table style or in template driven style. Spreadsheet table style is preset. Effect of templates can be tested in Event List.
    • +
    • If you enter in Plugin Config under eventlist template the name of the template file, this template will be used as standard in your event-list.
    • +
    • Templates can be edited via Backup > Presets. They are written in HTML with placeholders between %…% in place of variables. The templates contain 12 output cases, separated by "===". If cases are empty, there will be no output for that case.
    • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      casevariables
      1 - headline announcing the time period shown%period% %start% %till% %end%
      2 - headline weekly section%weekly%
      3 - weekday header%longweekday% %shortweekday%
      4 - weekly events%bookedout% %longweekday% %shortweekday% %time% %date% %field1% %mainfield% %field3% %infolink% %description%
      5 - past weekly events%ended% %longweekday% %shortweekday% %time% %date% %field1% %mainfield% %field3% %infolink% %description%
      6 - headline single events section%single%
      7 - month header%month% %year%
      8 - yearly events with age calculation%bookedout% %date% %time% %field1% %mainfield% %age% %field3% %infolink% %description%
      9 - yearly events%bookedout% %date% %time% %field1% %mainfield% %field3% %infolink% %description%
      10 - past yearly events%ended% %date% %time% %field1% %mainfield% %field3% %infolink% %description%
      11 - single events%bookedout% %date% %time% %field1% %mainfield% %field3% %infolink% %description%
      12 - past single events%ended% %date% %time% %field1% %mainfield% %field3% %infolink% %description%
      +
    • All variables are simple unstyled texts, except %description%, which is fully formatted html-text (by the editor). So don't use <p>%description%</p>, but rather <div>%description%</div>.
    • +
    • The desired template of an event list can also directly be set in the event list function call, making differently styled event lists on the same site possible:
      + {{{PLUGIN:events('','','','','','','Name of the template file');}}}
      +(Template file name = 7th place in the function call. If you put 1 instead of a file name the spreadsheet table style is used, without value the standard as set in config is used.)
    • + +
    + + +

    Holidays

    +
      +
    • Set holidays via the Holiday menu. Holidays are saved in the language file. Each holiday entry consist of date description and holiday-name. You can enter fixed holidays as day.month, movable holidays depending on the Easter date as easter +/- x day (x = number of days before or after Easter) and movable holidays occuring on a fixed weekday following or preceding a fixed date as n days m Weekday day.month, meaning n days before or after the mth weekday before or after the fixed date. Weekday names must be entered in English, the words "day" or "days" work both, negative numbers mean "before".
    • +
    + + +

    Display of Next Coming Event via Marquee

    +
      +
    • Marquee is run either by the jQuery plugin or uses the Microsoft marquee function and does not validate.
    • +
    • To display next coming event inside a page enter: {{{PLUGIN:nextevent();}}}
    • +
    • To display next coming event via the template use: <?php echo nextevent();?>.
    • +
    • If you want the marquee in the template to be activated on certain pages only, use: <?php echo calendar(); if ($nextevent) echo nextevent(); ?>. The marquee will be shown under the calendar. To activate the marquee, write into the page #CMSimple $nextevent="show";#.
    • +
    + + +

    Adjusting Your Page Template

    +
      +
    • Often it is practical to have the event list more space than for usual text. You may use for this page a special template. The backend has the possibility to select different templates just for backend testing.
    • +
    + + +

    Icons, Background Images, Birthday Symbols

    +
      +
    • Available icons for links and "info" are shown on mouse over help_icon.png, 899B in front of the icon setting options. You can add your own icons (gif or png) and put them in a new folder under plugins>calendar>images>. The icon sets go in pairs; the set for past events is in another folder with the same name and "past" added. Added sets will automatically be listed in the setting options.
    • +
    • Background images for big month calendar are jpg-images in the folder given in config > filepath calendar background images, which in the delivery state of the plugin is ../backgroundimages. All jpg-images of that folder are selectable in the option list for calendar background images.
    • +
    • The same folder also contains the gif-symbols used for marking birthdays in small calendars. You can freely add your own symbols. All gif-images of that folder are selectable in the small calendar birthday option list.
    • +
    + + +

    Creating an Event-Archive

    +
      +
    • In Backup you can copy your event list under a new name, e.g. the name "archive". If you delete afterwards in your normal event file some event entries, they will still be there in your "archive". You can add to this archived list from time to time your standard list with the merge function (which has automatic duplicate avoidance), thus building up a list of past events.
    • +
    • This archived list can be shown on a page with the function call: {{{PLUGIN:events('starting month','starting year','duration in months','0','name of archive file','','',1);}}}
      + (The last "1" prevents that past events will be shown in gray).
    • +
    + + +

    Second Calendar with Different Events

    +
      +
    • You can use two independent calendars! To activate a second calendar enter a name as filename (i.e. "extracalendar") for the events of this second calendar in config under second-calendar filename (no spaces, only english letters). If the file doesn't exist, the plugin will create it. This second calendar can have its own event page. Enter the pagename where you put this list under second-calendar_eventpage. (Either just the pagename or starting with ?
    • +
    • If you have thus activated a second Calendar, the backend menu gets enlarged (after clicking on a menu item) with new items for editing and viewing this second calendar, and the following additional function calls will become available:
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Function CallResultUsed for
      editevents2()event input table for second calendarpassword protected pages
      calendar2()one month small second calendartemplate
      calendar12()one month small combined calendar of standard and second calendar"
      multicalendar2()2 or more months second calendartemplate + pages
      multicalendar12()2 or more months combined calendar of standard and second calendar"
      year2()year view of second calendarpages
      year12()year view of combined calendar of standard and second calendar"
      bigcalendar2()big one month of second calendarpages
      bigcalendar12()big one month of combined calendar of standard and second calendar"
      events2()list of events of second calendarpages
      events12()list of events of combined calendar of standard and second calendar"
      nextevent12()marquee of next coming events based on the standard and second calendartemplate
      +
        +
      • In these function calls the same variables (mostly) can be added as in the standard function calls (e.g. {{{PLUGIN:multicalendar2(3,4);}}} etc.)
      • +
      • All calendars based on the second calendar will link to the second event-page set in plugin config.
      • +
      • All combined calendars however will link to the standard event-page set in event-list config. When using a combined calendar it is recommanded to use a combined event-list on the standard event-list page.
      • +
      • More complex setups are possible, e.g. two different calendars with separate event-lists plus a combined calendar with combined event-list. However to force the calendar to link to a different list than the standard list, you have to take advantage of the full function call. Calls like calendar12() are only shortcuts based on the full calls.
      • +
      + +
    • +
    + + +

    Input of Events in Protected Member Pages

    +
      +
    • You may want to offer selected visitors to your site the possibility to enter events. Just put {{{PLUGIN:editevents();}}} on the page. For security reasons the filebrowser is disabled so that visitors are prevented from deleting or uploading files.
      + +If you want only a special event file to be edited by visitors, use the function call:
      + {{{PLUGIN:editevents('extraevents');}}}
      +If you want your secondary calendar to be edited by visitors, the function call would be:
      {{{PLUGIN:editevents2();}}} +
    • +
    + +

    Calendar on Subsites or Multi Language Sites

    +
      +
    • A different calendar for each language or subsite is the standard setting. If you want to have the same calendar for different languages or subsites, you can enable same-event-calendar_for_all_subsites.
    • +
    • With this setting calendar will not use language-related event files, e.g. eventcalendar_en.txt, but create new eventfiles without a language suffix, namely eventcalendar.txt. (You can change file names in Backup menu.)
    • +
    • As relative links have different paths from subsites than from the main site, you should enter images in this case only from your main site. Calendar adjusts the image path when viewed from a subsite, but not otherwise. If images are entered from the subsite, they will not show on the main site.
    • +
    • Internal Links only work, when entered from the main site, and they can only direct to pages of the main site.
    • +
    • If you want to use calendar2 with links to an event list in subsites, create an event list page with the same name as the secondary event list page in the main page.
    • +
    + + +

    Conflicts with other Plugins

    +
      +
    • Other Plugins may lay their pop-ups on top of calendar's pop-ups. This can be prevented by giving calendar a higher z-index value in config. You have to experiment to find a fitting value. There seems to be no upper limit to z-index, so you may start with 10 and if this doesn't give the wanted result, try 100, 1000, 10000.
    • +
    • If you don't need it, don't use z-index.
    • + +
    • There can be a small problem with year or months in columns and using z-index. In the case of pop-ups, which extend to the right above the next month to the right, the event days of that month shine through the pop-up. This happens because the following month is created later and if z-index is used this month is strangely automatically regarded as being on top of the preceding month. By programming one could give a lower z-index to that month on the right, but then a similar problem would occur with pop-ups to the left, because then the month to the left will have a higher z-index, which makes its event days shine through. The easy solution is to set in config > calendar popup class to left so that pop-ups always open to the left side.
    • +
    + + +

    Installing Calendar Plugin in CMSimple 3.4

    +
      +
    • Install a Plugin Loader.
    • +
    • Be sure to have no index.htm in your image folder, as this prevents image selection with Fckeditor.
    • +
    • Use for function calls (inside pages) the old method #CMSimple $output.=[function call];# instead of {{{…}}}.
    • +
    • Switch off jQuery in marquee if you use marquee.
    • +
    + + +

    List of Function Calls

    +[ ] means some entry specified in the brackets. The square brackets are not to be entered. +
        +
      • Template calls: <?php echo [function call];?>
      • +
      • Old method to call a function inside a page: #CMSimple $output.=[function call];#
      • +
      • New method to call a function inside a page: {{{PLUGIN:[function call];}}}

      • +
      +
    • editevents(["filename"]) + creates the event editing table
      + (without filename => standard event file is taken)
    • +
    • editevents2() the same for the 2nd calendar.

    • + +
    • calendar ([year],[month],["special_eventpage"],["size"].[number],[columns],
      + ["file"],["additional_file"],[use_eventpage_of_calendar2])

      + creates the calendar
      +
        +
      • without year/month => present year/month is used
      • +
      • without special eventpage => eventpage as set in language file is used
        + The "special eventpage" can be entered as +
          +
        • simple pagename (must not occur more than once!) exactly as the pagename is, e.g.: Dětské letní tábory 2012
        • +
        • urlencoded pagename with all pagenames of superior level separated by your URI-separator (set in CMS-config), preceeded by "?", with all spaces replace by "_", e.g.: ?Start:Latest_News:Hot or ?Anfang:Neu_hier%3F
        • +
        • using urlencoded pagenames you can even link to a page on a subsite. Than start with ./ followed by the subsite abbreviation, e.g.: ./de/?Willkomen:Neu_hier%3F:Weiter
        • +
      • +
      • size can be set to "big" and creates a big calendar
      • +
      • number gives the number of months to be displayed, preset to 1
      • +
      • columns give the number of columns to display
      • +
      • file name of the eventfile which you want to show in the calendar, if not set, the standard file will be used
      • +
      • additional file name of an additional event file to be used
      • +
      • use eventpage of calendar2, value 1 or 0, this setting is used for the second calendar
      • +
      +
    • +
    • calendar2 ([year],[month],["special_eventpage"],["size"].[number],[columns])
      + The same for the 2nd calendar.
    • +
    • calendar12 ([year],[month],["special_eventpage"],["size"].[number],[columns])
      + The same for the combination of standard and 2nd calendar.

    • + +
    • multicalendar([number],[columns],["file"],["additional_file"])
      + creates calendars with several months.
      + This is a shortcut function to avoid complicated entries in calendar()
      +
    • function multicalendar2([number],[columns])
      + The same for the 2nd calendar.
    • +
    • function multicalendar12([number],[columns])
      + The same for the combination of standard and 2nd calendar.

    • + +
    • year([year],[columns],["file"],["special_eventpage"])
      + Another shortcut to avoid complicated entries in calendar()
      +
        + +
      • In year you can enter the year which you want to show. Left empty the present year is shown.
      • +
      • columns left empty will produce a 3 column layout.
      • +
      • file takes the name of the eventfile which you want to show in the calendar, if empty, the standard eventfile will be used.
      • +
      • special eventpage is useful, if you want a different eventpage from the standard event page.
      • +
      +
    • +
    • year2([year],[columns])
      + The same for the 2nd calendar.
    • +
    • year12([year],[columns])
      + The same for the combination of standard and 2nd calendar.

    • + +
    • bigcalendar()
      + creates a big monthly calendar useful for a whole page
      + Also a short cut for complicated entries in calendar() +
    • +
    • bigcalendar2()
      + The same for the 2nd calendar.
    • +
    • bigcalendar12()
      + The same for the combination of standard and 2nd calendar.

    • + +
    • events([month],[year],[future_months],[past_months],["filename"],["additional_file"],[style],[past_events])
      + creates the event list
      +
        +
      • without month/year => present month/year used
      • +
      • without future/past month => setting taken from event-list config
      • +
      • without filename => standard event file is used
      • + +
      • additional file name of an additional event file to be used
      • +
      • style takes 3 settings:
        + empty or 0 -> style as set in config,
        + 1 -> spreadsheet table style,
        + filename -> template driven style with this file
      • +
      • past events decides how to handle past events:
        + empty or
        + 0 -> standard treatment of past events as set in event-list config,
        + 1 -> past events are neither marked nor shown in gray,
        + 2 -> past events are shown in gray,
        + 3 -> no past events are shown
      • +
      +
    • +
    • events2([month],[year],[future_months],[past_months])
      + The same for the 2nd calendar.
    • +
    • events12([month],[year],[future_months],[past_months])
      + The same for the combination of standard and 2nd calendar.

    • + +
    • nextevent([number],["file"],["additional_file"])
      + creates marquee of next coming event
      + ([number] = number of events to be announced,
      + without number, number is taken from config)
      + file –> name of the eventfile which you want to use as source, if not set, the standard event-file will be used
      + additional file –> name of an additional event file to be used as source
    • + +
    • nextevent12()
      + creates marquee of next coming event(s) based on the combination of standard and 2nd calendar
      +
    • +
    + + +

    Limitations

    +
      +
    • The marquee element doesn't validate
    • +
    • Birthdays can last only one day.
    • +
    • Multiple events can (at present) only be single day events each
    • +
    • Long events are limited to 90 days.
    • +
    • Weekly events are limited to 10 years.
    • +
    + + +



    Written by Svasti Nov 2011 - June 2013

    + + + diff --git a/help/multicalendar_3-3.jpg b/help/multicalendar_3-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..35a8277314986d0e675ddf9ed8a9265f7a4f18a7 GIT binary patch literal 19283 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 FO#lRHcqsq? literal 0 HcmV?d00001 diff --git a/help/multicalendar_3.jpg b/help/multicalendar_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a9c53b639f42525bf620195fa3284853d1ecdcc GIT binary patch literal 16234 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 literal 0 HcmV?d00001 diff --git a/help/tinymce_image_class.jpg b/help/tinymce_image_class.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5797d2ce53cd94fbf0f8a068fed4b567bfc3f4da GIT binary patch literal 57808 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 OzW>yh*np;gANW6<)EZ0x literal 0 HcmV?d00001 diff --git a/help/tinymce_image_style.jpg b/help/tinymce_image_style.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2644ae2f818ee38d037d245dd86e33ea8c2425c7 GIT binary patch literal 42644 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 TH8%>%#%X6L6KK8yzE1uZbdS%v literal 0 HcmV?d00001 diff --git a/images/1/external_link.gif b/images/1/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..069324544aa397ffc4982dbcb0ac967a2c2a2d1f GIT binary patch literal 134 zcmZ?wbhEHb6k-ryn8?7u#?JPOn`7S9(BD~SkDaht4YxhkeoaIs4}H|vQU l%a02V_Q>V>9kHB{;yKHzvTeyv0o7BBT++2-Zy6~t0046sDOvyk literal 0 HcmV?d00001 diff --git a/images/1/info.gif b/images/1/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..455c037eb2ddceb817205b6915d323ac740e1857 GIT binary patch literal 989 zcmWlYJ&50Q9L7KYdnu{d>n~@qQ4jjNScJe0jXA2JA{UK{K|w+z5*%#644DpsWXN*$ z4jZb2ih==$D>{Xa9mF7%T>;InNGdw)Q!voI?FFyaIe`OWL z-yBQknzO7#nX=o+J&~VBi4!r9G?9;5(YE|H$~4K%PApUI4DxOxjxD!(aXtBCl5Yq3 zw3Q%~uX?E~$#N-j`MeX~lPJV#P&Ud#g{TCTqbk(gY*8JmM-8YEHK7CxEECJd@~}dz z1S`j?uo|outHbKC2CNZl!V)xS6K$hCbcjySIl4kO=oa0fd-Q-F(Gyy5z%g-b91myS zEy2k#1T{BXoDQeQ8E{6N2}f|jHF0fR4>!b3aC6)Wx4~_3JKP?3z#VZXT)_w5#JBN1 z{189E&+#k#2EWDc@O%6Lf5e~gg#ZGRz$WkrLV|=KC#VP-f|j5o=m`dbkzl^hynKZ* z64^u^^KGMqC?~3j8lsk{BkG9;qIqT_5@Lu=Vw>0_4v7=uoVX%xh+E>0xF;TnN8*WC zNFg;zZBmakBuz+j(u%YpZAm-Qo^&7`NheYvgUlqe$vm=n~EqNC_328xklq7X_bO-h^6qYNn%%AB&IY$#jGjC-=>YjR_9;qjceEr|0lgB66IL7fOwu~>C8EeKt zu(!BktiE@&zH`Wmq4tk1uxBiudujXbD~Io#I=gmpXM5|$!t#lQ*M8dn`o`|*N6y@L z`GDQ!4_5Uz=l|sPvr7*=asICUFnH$bx%BB<+kgGOu=4oqseiWKxV^NXH^V!htk0H= zlj`+ff1E9ScYXHo<@fiG4i~RktKYwTba7{IW$~d`H}_{7&s{saeDCHL`-g8|e^9S| k{NMVUoVs6azIDK7Kb$_ZcIn{4m4jcdo_KWQF-vjje_jhN6951J literal 0 HcmV?d00001 diff --git a/images/1/internal_link.gif b/images/1/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..96caf30cd85b0263a22539037073a41777181f03 GIT binary patch literal 135 zcmZ?wbhEHb6k-ryn8?8J|NsBBOMCuvFaUw#PZmxPtpg%J@(vu442&Ey9vc=oHZcit zNk}9x9BgBkv~rnYpyblYY?O6p#>a)utz4>dJe&y&4|J<)i#@UUn9?xaAbFoo$ESp| hv)J;t`D6+)oNH99{-+Wdq!KWdCwZHT)Wie_1^@<8Dog+X literal 0 HcmV?d00001 diff --git a/images/1past/external_link.gif b/images/1past/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef7e585d67a59f959a3bbf2c8e4cfd1f11013a5d GIT binary patch literal 134 zcmZ?wbhEHb6k-ryn8?6TS68=m>C*G(&;S4bU-2gkCj$dBgAM}_faD!GA{f{?WIPHS z8k#v+nFJgR5)U?V%X5`TI4C-Iig7aCIPp>OP#3e3SV=^HirZvG%T+Ozf{R_+xmi!- lSbkh^utzS}?}+7u6wg^!m2FFY3aFl1yd%yl|j{!wwq+ z2%zw=!+;9|CluJ=u)>1}793_6fI;Dc1spnPs8GS-h64{23S2-yf(DTg2E-(|VZcKL z6CVU%Ad)~rfd^VX)Nu1*1O_qzOgJE*Kmh>>Dn!kQAi#hD0Tfu+${+#9iXAc-fS~Ze z1cwp=$PMte1B3om;t7<#;R;79QwU)fRhV@o`DRbc5u5 mIvt-9&dy@X-{zB9#Bi=rvHG7%WROb0RG#E*E>aT{92fvgu`R&> literal 0 HcmV?d00001 diff --git a/images/2/external_link.gif b/images/2/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..af663634b300068364d68824438bd05a2d42bc80 GIT binary patch literal 131 zcmZ?wbhEHb6k*_Hn8?8J|NsB$>gxXt3=CFN6o0aCGB7YP=m2>PAbAIl5C&!r8IOPk z4b2?ckcdw`t<+XxBvft z`ws*VvlV}`aDrGmAOd8k1IIQ7Mh=-B51HC{nc3qkE-XxJ=Vf9ED7cY$fR#a*D<>o3 z;X!6@USpmE1_cM1_+(8&R$M4J+{n(!sH33Z=4o`-MjMMl` zZrb9Cr85sZ` C{&#c$ literal 0 HcmV?d00001 diff --git a/images/2/internal_link.gif b/images/2/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..78a39e89cfe3b9bf19731105e35d8fe7723b49e3 GIT binary patch literal 132 zcmZ?wbhEHb6k*_Hn8?8J|NsB$>gxXt3=CFN6o0aCGB7YP=m2>PAbAIlFa}l*84ZPo zgUuZLLM#V1JZxy^m6VE+5Ik_0QB++>WX6WY$9max!=^|)Safo-xOAP0gwW#?Q<2L?5nwZWEgNIJtZ2W01KRzlQo26ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8Le00000EC2ui01yBW06++~009Ubh)(2% zlsW+2QsHYzPMI=v4daP&H?UW)egEo_Bi9h$D`g1*^fGm=UPx%7U<$-1%Aqca$~XZF zX$s*hmJaLLbVveV{{ literal 0 HcmV?d00001 diff --git a/images/2past/internal_link.gif b/images/2past/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..00b9f22aa9fc35ec3e2f87a53da965edd989a215 GIT binary patch literal 132 zcmZ?wbhEHb6k*_Hn8?8JpMhcJ%9RHW9QgnLzv538P6i;*0TCd12aYfXMh+PchlYdA z9Q;Bu2R0-&wDU?z#Yhw$ILsibE+jHz!{TGTY`S4nG#)HEIayq~PDMiK@rkL-&XeAF h7%CmgxXt3=CFN6o0aCGB7YP=m2>PAbAIlR0dWK8IOPm z4b2?v96SOH4Tsw~WW{1mY*^&l&dDECb7G?M;Z6nav^zHh7awcnVl{YEaUr>(Ni6vk zkEe06*GzFn4vCeU5d_u|NqC2AOHUc>LUs${$$|98;KPRj4W&%N=gX=L5>I6lq`$(oM=!u#L8-?S2BZP zAwwgVoQZh7?@brm}E?JY@WmwA(eB$;ZQRxr;ttsgW_ukHh#G$ zH9rg$!>2O{s0Hk}obA%ZuBwvYk82&Rrf#OdVP6h^61|1L|q}G9>n1P!^ z#$&?*Mfb`4o?* yakAG;adrlYm75YhCu{nz(~%T>640S5Tc=X-<$1$W=Gp&Ryab=0X=G$%um%9-elvjp literal 0 HcmV?d00001 diff --git a/images/3past/info.gif b/images/3past/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e06a2982613365d776d2fac44668bd57e22b05b GIT binary patch literal 226 zcmZ?wbhEHb6ky4j?!6Bi+fw7y7O-SNG zp~DeI79Amtj*AD5^=fg(xpZz+Y?{cy!r>F?;BaK3AajMxfk_SiZ5q5`Uo0j$cr~-i zNOior=x}_h_1Z->FANp0Hk*s;P0^aD#L(g H4Gjzc{y9kU literal 0 HcmV?d00001 diff --git a/images/3past/internal_link.gif b/images/3past/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..05338d39325ef446179645319066d7cf57e7ce52 GIT binary patch literal 163 zcmZ?wbhEHb6k!lxSj52apMhbg(69|NjRHfPmsp7ETbY10q0b9XK)> z7&&A-HY{*thk!U#3z`(*PGQ(qI149QJtCz}wjf>se8THa+Jc}N?_le49=@fi= z+|aGXt~Y0<0fXBl3*~crEH5o_@8;(Im2=YY*@bER>_=D%zC3ZAXcQ?_S}{?bVRppk JtX2sD1^^WhI6(ja literal 0 HcmV?d00001 diff --git a/images/4/external_link.gif b/images/4/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..415a8262627492fc2de0b3c5e47f7cd19160c003 GIT binary patch literal 250 zcmZ?wbhEHblwuHI*v!E2|NsA^*WMpJdbDTG+Lo3U1`uNS&j18Kq6I{w0>z&!oD2-? z3_2iTkQojf%Nh7NL^K*29GRHdv|@HlaA0B);Po(RP+(+ili(L{P)In?z#=5*5i()p zl7=RBehr2N4Gm3`nWEOISWaMIU}RwPF)7%%ARL6mzE#u6;PJa5D->BH`Omw zO7zDkHSg7il2R#B3Jm90+MD0=(YoYtXr)7|mrnpgO5kFL$?tR;9_YrfrkuXiyK=$$ hQ~QGYpFRC4wBg~t$mL>oJQju#hwJ}x@o+F$0|1ucQau0w literal 0 HcmV?d00001 diff --git a/images/4/info.gif b/images/4/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..29474b23bccb7d7e14fb924d8f6b56515eeec9cd GIT binary patch literal 527 zcmZ?wbhEHb6krfwc*elM@c%y$r=_JeG=P|#hJg%e433U&9Wz$^|38zViQ)c@Q`c@j zY?*zqrKS1z?(2K(0XmD^xnOD6B85HuQy>}NGmSQ`S$alo@d6Q zjmM3=k{&+1`25A&tq0Ctdh{>KQ-ArQ=^ws;>^pGr)wv5n3pSizar|G&|_wFU_I`N=p*{8`%4|^tGaw>oD{(V8_)R+IyFcj5K<>TX9x^!s+14DT2?Md7I zm{&3O&N6@W>EEGi|E!xB7#e^+XfP>e)Ji3wa<_#w>f6 zNi50hRL(rv9=MddY_p49j&#lhf1^AW=UNfVGWN8Y#%_JwGY*s+<}w{PZ~*LrhBIf* z{0Dgv7?>cEAW;0t!pXp(#-IaI35pX3jvNMG4jGRNEpwWR9%+<(PFpD5%EBiVBGJy^ z+AW}})>83t(UB(Rr!FoYA6sTm&htwV*|9Ncj=84orZ*Xa$w&JYA|GART%PXVYUjM` qiATud)00_zb{)*PqQ*EQf5y2jCpWwZ=~7?&>C4Hj%MUa#SOWmNY3$Dc literal 0 HcmV?d00001 diff --git a/images/4/internal_link.gif b/images/4/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aeebeeac5779331d6b39c69e89598f8bad0052d GIT binary patch literal 899 zcmchW>q}E%0Egc*wabT0x{8;eC;|(@)`wyWC1f=0Ln;&|>To-oI+axR#f(upBe8-O zb!tM%G8LE8%}c{ecy`g9<2IYRgdkp&Hjmg|G)ze&+pRZ%(Lf2`#~I_ z06Ha0d$k_0H03ILzaUtA>lN^*Bh41{QGZ0uu01;=q9`PSs* zB(=IaFffptn@a*veDB(n`7MOloqILZ?^T)!TW!{~w6siVbxuxBy{djS^vC6J&@^r8 z?iL6HSaWmpTN8$YM)j-ftv{}0U3vfEBjNGSyIgiVZfI+BI-MAbs?}<%)vD2G{C>Yq zrxOZ=!C-(O#x*Z6gL#^wsO;?Q+1c6Ryu6HzjFpuYnxTBYx#eYli;;vRUm}rcb^UJl zq|G*3SXemkoktL)qoadn)~?;iGn>up>uYs&b)B7^>FMeIWe-KITP&8^+FI3_6AZ(M z#p1ay-vXhqR4QHSLR2c%()XVT04sqtjD#%9-oLM!UizxL2oe$#7?zDhBB4JN6^WFU zmGMASnOt64S_uuc0C z@IW{mZhF!Li71gsMA`|3LV-l_&}WkV{{HCbZ7#dR=kv*AGG$E-iZRI23_d-l zs=L|H(6G6=$pZ)rIhLhy9CtVz5Yo^ABpB@0buTO|^!4>=)J-f0Z8lrAqQ-0{D=RA@ zWGgBvdV72E;de9>^0r176coswO9*1ZWHObPm(R@1cs!mAq0r-T+U<6ZVU0#3=Hy04 zM*$KuJUko>1|fu79sd6v-i+P}z(H{GANt=X&hID!r*=7acRQg$OX ee)X*JWA!Iz%f*sI#}ZB-acNU79mtB01A@OM2h2+V literal 0 HcmV?d00001 diff --git a/images/4past/external_link.gif b/images/4past/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..82205b1dac217fe6c9b380242bfccc11592afe82 GIT binary patch literal 240 zcmZ?wbhEHblwuHI*v!E2|NsB@@83Ur_Uzobb4QOJ-Me@1(xpqQtE>MrU#v| zmozj98_O{iG#qH0%oMfGX2Apo21a@HWjZ@IC>)t!rMT}&r0}A^xrT+0VpdL3yV$6o zziEop$G^p!K@`H_V#wQf4U1#+Xh?N#L}BsMGg?)HJ XFK&0}{C$7A%?-l$a0qboa4-M>Pt8(N literal 0 HcmV?d00001 diff --git a/images/4past/info.gif b/images/4past/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..29441edd24d2074c7f6d5204733becd632cb9e19 GIT binary patch literal 165 zcmZ?wbhEHb6krfwSj52a|NsB@@89p;yLZl0|P6A4u}s@>%fuC zz|A4!v4NqniG@K!Mj_!LLn{-XR0zicMVBr?R<%7RHZD5S#LStZvP00Jfl-5l7LL MZ+A|GCO9wv0EqK7TmS$7 literal 0 HcmV?d00001 diff --git a/images/4past/internal_link.gif b/images/4past/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..70aa7b6c5c99402e2f512a466b2cf215d0f7d39b GIT binary patch literal 142 zcmZ?wbhEHb6lD-#n8?8J|NsA`OP8Kw00G6HESwAsObj|84oKdCBY}aHgU4aR0>>sM zVJ#k@@Zn}wSuL3x6A}-1OECM0Bz#mn(k^XXXCkp_(cyj}^)eey!>4Y263M%KG6K_% pP8X5AwP!`((vx$Ii?40DS^V()T-QuFRVgE-3rn=z#e5_L7ywENE%5*V literal 0 HcmV?d00001 diff --git a/images/5/external_link.gif b/images/5/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..c78fc4dfec8fb8845444c397709e69d9584b2dec GIT binary patch literal 139 zcmV;60CfLHNk%w1VHN-o0FeLy1_uWE3ka>FjQ{`tA^8Le00093EC2ui02Tlc06+*_ z00#&hNU)$mf&c^%48ZW9!Gr=LDjdkL;=zOt1!BzTuwui96Bm9Q5a43Sks3o51i-ST t%a$rRQuJ8z;md*^O&+v}a^S|9H97vY=rd+fp+-|8%_y;{)0hDP06QJYGkgF5 literal 0 HcmV?d00001 diff --git a/images/5/info.gif b/images/5/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..5427f7738c4ddcc1d9bf7340fd025f096ed6f4b2 GIT binary patch literal 985 zcmWlYPiWqB9L7KIANs!4Ruebb4<;-PDh8%3b^woZ29v?G zU4|z?Mgt-nc#z=1!Vn<{cH%*ZP!EEa2wucf*hw7>zP^19pTom*czED>`qy{ZRcI!fgXW_}XenBOwlr(B2CYTw(0a51O;Dh8l!N91I^L!bmX+j0&U1XfRrg4x`5yFa!%M9m~XW zu$J8-tdzN+EzKIM!D_KOtR8E?5^S(_Y!lnT_OT=E6uZE#uxsoFyT$IXd+Y&QaKY7a zO85_W_= z;Xo+F5bMMyu|w<=N5m;{L0l2n#0_yv+!6Q01F?`mqLY{;4v9|^k)$LANkvkVG$bua zN79oFBtiz6PG*uhWIkC$mXZ}@6Jj`{WUMN?wpxD-+T1>$^Ey!xOnN{{l%~2>8@~ literal 0 HcmV?d00001 diff --git a/images/5/internal_link.gif b/images/5/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..d04f75fe94e5089fce045139fcda0badc759b1eb GIT binary patch literal 263 zcmZ?wbhEHb6k`xz*v!E2|NsB*-@o6xckkS}b6dA=oib%gb#--icJ_Y;1}`r!LqkJF zMMVJt0S*oh1~5?k$->FNz`>vc;(^R?;Ml?-$RXpgVS!^4w*(8r0RabQW?p8Ign$DJ zjxh1C$|!6weB8*$%p;dz(2&f;#KR+UL*ju$GXs0_DH)A~gH3Hb!H-lPC^Q~y;g+`R zvDlb&kcm&qAYwv7WAhYtA+rybo3qX^un5UmC^#fAu8m0)6WL&-(ZIm1U?y`Rq0y0z zr@$)Y^n~S&+Y1Z%ax<6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8Le00930EC2ui01yBW06+*-0RIUbNU)T_gMOYBG)Qn@!iED63M};y zqC4BzY!Y0_@S;GRBTvSJ NND`*eqZk7M06X2?sO$g$ literal 0 HcmV?d00001 diff --git a/images/5past/info.gif b/images/5past/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2fe5e1d6ca2c3ce1f4cffcf2f83b9c89293bbc5 GIT binary patch literal 984 zcmV;}11J1PNk%w1VGsZi0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8Le00000EC2ui01yBW06++~009Ubh)(2% zlsW+2QsHYzPMI=v4daP&H?UW)egEo_Bi9h$D`g1*^fGm=UPx%7U<$-1%Aqca$~XZF zX$s*hmJaLLbVveV{{ literal 0 HcmV?d00001 diff --git a/images/5past/internal_link.gif b/images/5past/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca42ef01b37a583afeeb2976240c470672087502 GIT binary patch literal 237 zcmZ?wbhEHb6k`xz*v!E2|NsB*-@m_q|NhytXV

    J9qBf(W6JVZr!?e?b@YFm(H0p z=RX4qQ2fcl$-uzPpaT*Gnc=`On?amI#$&?*$0kk@hKL;jjf`y!92yD<21<>sOguan zIxaRaFtYJ#2yFOxfT5kmqKlp-UI5s#d^+2M$i{ zY<(f{j egi;(Q7PP;*+U@YnaV_(kG#Q3shKG%ej0^xSj91A3 literal 0 HcmV?d00001 diff --git a/images/6/external_link.png b/images/6/external_link.png new file mode 100644 index 0000000000000000000000000000000000000000..e25c7ad59cb1a9697c93723d7e4f0346f65c0d15 GIT binary patch literal 961 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 BWTgNA literal 0 HcmV?d00001 diff --git a/images/6/internal_link.png b/images/6/internal_link.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ce7faea7b7257eddb2566f16bb47bbe74d4b4d GIT binary patch literal 600 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 literal 0 HcmV?d00001 diff --git a/images/6past/internal_link.png b/images/6past/internal_link.png new file mode 100644 index 0000000000000000000000000000000000000000..fc4f230817e72ba6da584948fd1045bc992f5645 GIT binary patch literal 499 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z6*C@!VVkP}00DDJL_t(I%bkem)&* zZN1;`^BWjr>Q3I}bUJapURkf#L{UVwS}nRgDzVm*Wf`?v4Qnk0fl`Y7eov)RAxRPj zg8|Fs63_E+T^FSkm&=9o`OI)QEXbV4xmv9jyWNg%w+p~%G%EGwe!my7^Y|D90YMM| zaJ$`J3iEM<5U&JEDUQcup&%#vu>vV2aUA3OK1q_$Xf#+X7I>bA=Xppe3lGNQ@hgE4 zf_A(8=puKVP{bUH03=yW=4HXC}q9ssl1?4RG+kx~|c)*7w#k9R>ziIb-3hcV{u pf3`6%PSfgxXt3=CFN6o0aCGB7YP=m2>PAbAIlWCm6a8IOPm z4b2?v96SOH4Tsw~WW{1mY*^&l%qhy1@MA-=dz-Mc*cp$D%14@6OpD%Bd`NC+5=%ZM y;%U6tYo;jsq&qh*EOBm;@SfEpQS|gABfq1N$t&T8ON~CYc1t^opB-pmum%8|2QqvB literal 0 HcmV?d00001 diff --git a/images/7/info.png b/images/7/info.png new file mode 100644 index 0000000000000000000000000000000000000000..edcc490e5e09a60f166336dec8b15d6e127e0c8a GIT binary patch literal 3423 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 BWTgNA literal 0 HcmV?d00001 diff --git a/images/7/internal_link.gif b/images/7/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e45af79bdfa7fb671d707fb3c3e06fb3628a42e GIT binary patch literal 133 zcmZ?wbhEHb6lM@$n8?8J|NsAU3=9m4Js{#I3nv2uBZCf*%>a^j;0R}6W)X1Mu)wj2 zNtjCnD15k?RaPtI#fF7PyM=^UBofj7|Ow$d|a*-5% h;?ZRqe{M}g@zZ1T>@uItk=VH0ua((ZOhiI}0RUCYDLw!I literal 0 HcmV?d00001 diff --git a/images/7past/external_link.gif b/images/7past/external_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..c68b69f224dd7ff7cd24f2e5d923e06d2320f51e GIT binary patch literal 146 zcmZ?wbhEHb6k!lxn8?8JpMhcb?%gL(p8Ws+zv538P6i;*0TCd12aaS0Mh+Q|fP{u- z4rUG!g@lH~?HsaVF()=Ga&6`mWlH$5A=$l6*jen1$3^8M%`B!xZz?`4ZfFuqJ|*I5 wyx41|DEp*4H!du3Zjtbw)gw{#^dtknqmap~;)Y9&KDBmBJBptjXkf4g0J5MpP5=M^ literal 0 HcmV?d00001 diff --git a/images/7past/info.png b/images/7past/info.png new file mode 100644 index 0000000000000000000000000000000000000000..687c5b33aa6696c6ad1bd425608e1d870dc63c91 GIT binary patch literal 3308 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 literal 0 HcmV?d00001 diff --git a/images/7past/internal_link.gif b/images/7past/internal_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f94a79d9bfe7ee11aca50b48baf9706e3d184a5 GIT binary patch literal 134 zcmZ?wbhEHb6lM@$n8?8J|NsA`OP8Kw00G6HESwAsObj|84oKdCBb>sM zVJ;q^@Zn}wS*?^88x|hz77`As;rRIQNSiEw-5Lp_$4(RYtY^t|UQA+`rW>B+A}RdD hqsuh@+?t5ur^n{mWj>oDv2nRyE3>nhh=c%xH2?;IDslh- literal 0 HcmV?d00001 diff --git a/images/Juri_Gagarin_thumb.jpg b/images/Juri_Gagarin_thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5fc5dd9d500e022856e1c3b7d9fcd45dd18a82ea GIT binary patch literal 4104 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 S;!+7$?dJ19)xWgPX#WGL{FN5~ literal 0 HcmV?d00001 diff --git a/images/add.png b/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a6f773955886eb8d85b30e4281f824ce5d5603 GIT binary patch literal 769 zcmV+c1OEJpP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb& z00I_r?ek~=00MzYL_t(I%cYauOOs(3#;?uUkm*d!nlnf@7fy{xZ55#&h(!>kjUdF2 zP7)IAuc$vDJdh58{J^7(FttEPZMizggrNyj=Q4GsIp^Hoz3=ncQBxZc)O~dG@Z7)W zdbqAzC#A&yl;QV-4(}~H<-Cb--pV<*B%}sOu)(S9r3pDOdS_zk;CQ6W5)_FAhmzY;^6&!I#Kx*bmd0QXnh zk&p>gX1Xx(Wf)7o)pbT`_3Q(GKo0;^h-Pzkp0zly48xm4PzZrSE<`f`=m9`uti^6A$8_v7wsy7idAEco@DQysY6BXWe_n|kW>J{5MdGQlE`0u*K>(92nf#i zbD(N+?c4Tpai+5QgMfan7}hr<88;EEi|a{#jq4(;M^8d0bqIz77@M5LUQ`J&Av%8zrvLz;{ISEX zGSWnuXcdB3xa44zZxF_MrQ`#<50yVJ)4$YDDr;-8wCOS#00000NkvXXu0mjfdm>Hu literal 0 HcmV?d00001 diff --git a/images/copy.png b/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..7f64a4471b151ecda68e14720382dc2735abb989 GIT binary patch literal 704 zcmV;x0zdtUP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb% z7dImU(Ri@{00KZsL_t(I%cYY`NR&|&$A2?f!bngFGR{Py(xP0MLv7N9K?Z@86NIAX zCZa$>+J%q^GJE$EU z3_FtE0|zUMtIJE-38aC9DR>%>^5gaLymXAVk3H9hT}W$<)|wL|55qNs(Ns@b=n1`{ z39WTU#&Ki&u5_gKUcMU6avrTUwIjo&LfJ2Bj@JjOcIQ+5mpg|>?vfmPJEv@;YVqEk z&t3qb?54tCNg$L1PXdQx-5h)MoFmT$nanZq7FYoxj3$6J15-7Z9}ZEN1GmJw0a*Sz z1Hh0-yC#)q&!Lss>~6u9X3&?PM`%4E3ul!wrisO;iP;jLzX*FpqJ$ZAJ8&`%OF0z) zunM;hV8=GRrUF3O2CjiLRC0D^mg|e-03_-zD+q07!25H&<{!yHY zT@`L_q^@&Q@km`Ki8EaQj6b-Aw$uIY41}o$P}?t##Rmeiwt<^IAE9g~Ihq8F537jf zywo0+ zBGaq#%;Hc(Gy99n@CYwcU*7R1(uY`Cm{-zj%fed>0E${$%Y@{`{H#MZW-(%u6rW33FBe0000C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/images/help_icon.png b/images/help_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..84284f29453a33ed28f029a48140569a26fd99be GIT binary patch literal 899 zcmV-}1AP36P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipb^ z6ec16?0lsF00RR_L_t(I%UzSpOPp62#((E#oY6Q|9Y-D7I7wO)L6WpsC?>J76j~&- zS#;68>1EkPHZ5ckXczS#Xu(YjU4;@tpbaTV3oR%H$wsG!z!y`|I6BTHj>b9XJEx0@ zQv0r6-s{7|^9cSI>+9<|t@VU4X3Tq^dr^++_4>4PZmO@ZFZ%Di*iQ3lQZw{ZbQus;l{q<}%8y_6l*w|27>zfPtf3Dp5HBWoH#u$MQ zjpGuqE>JEzF28@8S5IVaIp;pgX0x#X*xK6qdU0vx%iDLC=<3p>I}*G#e46gAc7zaY zZkCyy%d@(D#kJsXxLzx%^OWL)^r1 z%#T0aWwqkiDmuRS+?(O{Z?ga>r5GG|1t%oQ zlxAlBq0w4TXsz|w{Bo6KtHH;fM^Bzo-rm6|#m_Tae0aY507Y$Q4KX5jrq>%rZWD4j}{!ixJ=6dPr5Yv12{QlOCxdAkb3Es5|L1g_@#jHHm~Egg_>p zq*$o|@WZ`4^_HVF163<2)arC4JW7g4#&JA-=2(i=XBrc77l2b}eD5b_?A94Uv5IN_jt+i8~ot=m5 Z{4d1jUW6pf00961002ovPDHLkV1mCap0oe} literal 0 HcmV?d00001 diff --git a/images/minus_icon.gif b/images/minus_icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..362b592c0d5bbd3979a6983e99f4deaf650f1724 GIT binary patch literal 97 zcmZ?wbhEHb6krfwn8?8J|Ns9vbLKFBfewfSi92vuF)(w;cx+hUz`(#GPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipn^ z5*#X)B?7D6zZU=GC23Rd>Tu3^ zAHMH9@6kkr|54JP8(Q#4E{3YbPz@L=3yDFDDRf#{l}@?*^~%X-D>OeQ`RV?3K*AiLwAzL57=+)!@~}mArh#)m3IOpb8K@&e? zk-fm{C{`GvvKUNv0nF*L8P?G%sNTKsV~~ zl~K4di{#vcg*gb%f@2zHr=Wj^j=UC1oR(SZI}W;84~9>7d| z0!90#Bx=oBH7FIJIK{=$GqCsxrbn##WEMeMA@p`b|Kuu)^Aa$+wnq6zMh(hr!ESh{ zJOCMf5Dlh7@bDun8j~oRew()d0JLj6b1}?X;?jUpS%`oxQy69|rgX|(_4m*8FZu=4 WR4{X{q>j-50000 zmXMGj5D1z9WB_dda)3twN`MXk6+lf*jZ`XaY;0606iTI1rBbQYYCV7fzzi@AKmg1E zyaTWUd;nMhSOstad}1&@GnwlETL51G+!(gWW^b|C+Z>Juz{}_VPD!DYlj-#IU`9qb zJ3E@08OhD1^YX}|BC5DJR8c{T#Sw{wtgWT%>d2Osh+H1%?hdHc$cS(p*Jw0atyZVg z>Gk^F-d=;jFf=qYJUl!$Ha0#!ZZerBCMG5)C#R;S2!gO$trU*a|I}y#BO{^FQQz$B zpP3nwAgK9yo6Y8MIGj%B+S;1S<#M~-J3Bk1%jNNSyk76_?(W{+-v0i+&*$^|{fCE# zfj}S_42D9XqoX5|Bq@pthr={YA0Hn_B9W7mlV~)G{*O$G$wH_cT{+E9pIpO!qAtwa zeskqadi+xovp+Cbq*ZTPj0??fI4ZXL*v$+=jGd+?qZW*k?L zBwppmNg4>FwEHB+;9C$tVE&6E`9QXp=c<5)0M&F QnimefA?DeyJT5Bx3u7l6O8@`> literal 0 HcmV?d00001 diff --git a/images/pdf_past.gif b/images/pdf_past.gif new file mode 100644 index 0000000000000000000000000000000000000000..3fd80677454ea462b32599a837bbf006e6b9a325 GIT binary patch literal 1023 zcmV6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8Le00930EC2ui01^NY06+-b0RIX6$1T^bg9ve<8_4h#fsIdS=t&R>-WtTGJY`m?d#VsiP9um`&x=? z=n!AMqq4TmllRWuv|cLv!DQDenks0+yy>$!&{#izV8enHc&lMCef8$SV`nbdw_8I8 zUJ4}&lqXJ_E>)7mYG2S>>;yu3^8;9)GFqQct-g~v}p1pbW=;eyKFCRWw trzGpk$5r4;n6theJC@7VtgTU1?GiioU+I6uE(2K(0XmD^xnOD6B85HuQy>}NGmSQ`S$alo@d6Q zjmM3=k{&+1`25A&tq0Ctdh{>KQ-ArQ=^ws;>^pGr)wv5n3pSizar|G&|_wFU_I`N=p*{8`%4|^tGaw>oD{(V8_)R+IyFcj5K<>TX9x^!s+14DT2?Md7I zm{&3O&N6@W>EEGi|E!xB7#e^+XfP>e)Ji3wa<_#w>f6 zNi50hRL(rv9=MddY_p49j&#lhf1^AW=UNfVGWN8Y#%_JwGY*s+<}w{PZ~*LrhBIf* z{0Dgv7?>cEAW;0t!pXo;%%B5O35pX3jx>hn95Nmo7921yWYUOPVc;ii$)+sja>5`{ z#!^C2&gVqILg(IMfn$=MM(1Xmv$~qC`B9*7w2wDhF2{NEGT)hs{;%#>PE0;Lkt1-I i%+Jj#eiK!Dn_Om19x3KJT-Ss87PR7^;AV6X-NBjppz literal 0 HcmV?d00001 diff --git a/images/up.gif b/images/up.gif new file mode 100644 index 0000000000000000000000000000000000000000..a111b81b5666303fa3edf200066fae14ae1beea0 GIT binary patch literal 97 zcmZ?wbhEHb6krfwn8?7uFvIBo-)}$~2o!&^a56A3GU$LfAbAH4BL-#;8IKJM4l*zZ v$;F%~NI2BaCGBOxk)Y(%!K0Y9<-|s1r#^o5yfZ5{J~}u_(Uy;ggTWdAIIS62 literal 0 HcmV?d00001 diff --git a/images/word.gif b/images/word.gif new file mode 100644 index 0000000000000000000000000000000000000000..c9c9a94b6124aa9a7a09c08788fd85c2f083a4b2 GIT binary patch literal 184 zcmZ?wbhEHb6k-rySi}GZ|AFNHhK7a%2M+xI58?oU;!hS%1_nk39S{ek)`6pzftiEH zV8Mce&CIM^8VVp;CJvDT4~Iw2tpdhoIT06?8d_MmJ49|?R6f=##n>TZQ25}`bS+sc zodlx;hbCHRUX!s{u;hG~yzr(YmPHN$jar>udpH+lUg!}{ythVD_^Efd$$Yoe8DG>+ ZE)O$(v_~W4<&DKmy;iZi%^VyUtO50ZJ%#`P literal 0 HcmV?d00001 diff --git a/images/word_past.gif b/images/word_past.gif new file mode 100644 index 0000000000000000000000000000000000000000..bcd3f278512c3eb87868f3f4f798e702ccdd03e0 GIT binary patch literal 925 zcmV;O17iF~Nk%w1VG;lk0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8Le00930EC2ui01^NY06++O0RIX6_o|@5g98P6`sZm=u}z+e{c~7M z;zNZHGd65k(c-3r1VMK6h;gIFk0DVqT-k8qLyP||t^_HNBFTiWM(V7nQs66^K6~~| zxNzd8qcvMXWVkeDOq3r_E{y0@X4I)Diwd-AvTH(_1AhYDI`q}ivuMx$3kU!^oM^!^ literal 0 HcmV?d00001 diff --git a/includes/calendar.php b/includes/calendar.php new file mode 100644 index 0000000..bc7d182 --- /dev/null +++ b/includes/calendar.php @@ -0,0 +1,1081 @@ +%s'; + } else $head = '

    %s

    '; +} else $head = '

    %s

    '; + +//choosing the event data file +if ($file) { + $eventfile = $datapath . $file; +}else { + $eventfile = $datapath . "eventcalendar$lang.txt"; +} + +//should the week start on Mondays? +$startmon = $plugin_cf[$plugin]['calendar_week_starts_monday']; + +//determine with which month to start +//==================================== +if(!$month) $month = date("n",time()); +if(!$year) $year = date("Y",time()); + +// to prevent XSS injection htmlspecialchars is used by advice of cmb +if(isset($_GET['month'])) $month = htmlspecialchars($_GET['month']); +if(isset($_GET['year'])) $year = htmlspecialchars($_GET['year']); + + +// determine period on display to prevent useless calculation of events outside this period +$calendarstart = mktime(NULL,NULL,NULL,$month,1,$year); +$calendarend = strtotime("+$number months -1 day",$calendarstart); + +// if months of different years are to be shown holiday list has to be looped twice +$years = ($month + $number - 1 > 12)? $year.'/'.($year + 1) : $year; +$one_year_only = $years==$year? TRUE : FALSE; + + + +$event_day_array = array(); +$event_month_array = array(); +$event_year_array = array(); +$event_yearmonth_array = array(); +$event_array = array(); +$yearly_array = array(); +$yearly2_array = array(); +$event_type_array = array(); +$event_popup_array = array(); +$holiday_array = array(); +$big_array = array(); //for entries for the big calendar +$timesort_array = array(); //used to sort different events on the same day according to starting time + +$eventdates = ''; +$event_date_start = ''; +$event_date_end = ''; +$event_time = ''; +$event_end_time = ''; +$event_day = ''; +$event_end_day = ''; +$event_month = ''; +$event_end_month = ''; +$event_year = ''; +$event_end_year = ''; +$event_yearmonth = ''; +$event = ''; +$event_entry3 = ''; +$event_entry1 = ''; +$event_today = ''; +$event_title = ''; + + +if(is_file($eventfile)) +{ + $file_array = file($eventfile); + + // checking the version of the data file + //========================================= + if (isset($file_array[0]) && substr($file_array[0],0,19)=="Calendar eventfile ") { + $version = array_shift($file_array); + $version = substr($version,19,3); + } else { + $version = FALSE; + } + + // in case a second data file is added to the calendar + if($addfile && is_file($datapath.$addfile)) { + $addfile_array = file($datapath.$addfile); + //checking the version + if (isset($addfile_array[0]) && substr($addfile_array[0],0,19)=="Calendar eventfile ") { + $addversion = array_shift($addfile_array); + $addversion = substr($addversion,19,3); + } else { + $addversion = FALSE; + } + // if of the same version, merger can go ahead + if($version==$addversion) { + $file_array = array_merge($file_array,$addfile_array); + } else $o .= '

    '.$plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions']."

    \n"; + } + + + // processing the data file line by line + //========================================== + foreach ( $file_array as $line) { + + //process only lines containing data + if(strpos($line,';')) + { + list($eventdates,$event,$event_entry3,,$event_time) = explode( ";", $line); + + $timesort = $event_time? str_replace(':','',$event_time) : 2400 ; + + //eliminate possible "*"-markings meaning "don't show event on marquee" + if (substr($eventdates,0,1)=="*") $eventdates = substr($eventdates,1); + + if(stristr($eventdates, ',')){ + list($event_date_start,$event_date_end,$event_end_time,$event_entry1) = explode(",",$eventdates,4); + + + // checking if there is an * before the endtime, meaning given times of multi day events are daily times + if (substr($event_end_time,0,1)=="*") { + $event_end_time = substr($event_end_time,1); // eliminating any * + $daily = TRUE; + } else $daily = FALSE; + + // checking if there is an * before the enddate, which means event is overbooked + if (substr($event_date_end,0,1)=="*") { + $event_date_end = substr($event_date_end,1); // eliminating any * + } + // checking if there is an * before the event_entry1, which means alternative marking in calendar + if (substr($event_entry1,0,1)=="*") { + $event_entry1 = substr($event_entry1,1); // eliminating any * + $alt = '3'; + } else $alt = ''; + + + if($event_date_start){ + list($event_day,$event_month,$event_year) = explode( dpSeperator(), $event_date_start); + $event_start = mktime(0,0,0,$event_month,(int)$event_day,$event_year); + } else { + $event_day = ''; + $event_month = ''; + $event_year = ''; + } + + if($event_date_end){ + list($event_end_day,$event_end_month,$event_end_year) = explode( dpSeperator(), $event_date_end); + $event_end = mktime(0,0,0,$event_end_month,(int)$event_end_day,$event_end_year); + $short_event_date_end = $event_end_day . dpSeperator() . $event_end_month . dpSeperator() . substr($event_end_year,2,2); + } else { + $event_end_day = ''; + $event_end_month = ''; + $event_end_year = ''; + $event_end = ''; + $short_event_date_end = ''; + } + + } else { + $event_date_start = $eventdates; + list($event_day,$event_month,$event_year) = explode( dpSeperator(), $event_date_start); + $event_start = mktime(0,0,0,$event_month,(int)$event_day,$event_year); + $event_date_end = ''; + $event_end_time = ''; + list($event_day,$event_month,$event_year) = explode( dpSeperator(), $event_date_start); + } + + //checking for yearly or weekly events (coded in such a way as to keep the original file structure) + $yearly = FALSE; + $yearly2 = FALSE; + $weekly = FALSE; + $exceptions = ''; + $additional = ''; + $exceptionsarray = array(); + $additionaldatesarray = array(); + + if (substr($event_entry3,0,3)=="###") { + $event_entry3 = substr($event_entry3,3); // eliminating any ### + $yearly = TRUE; + } + if (substr($event_entry3,0,3)=="#*#") { + $event_entry3 = substr($event_entry3,3); // eliminating any #*# + $yearly2 = TRUE; + } + //legacy code (checking for multievents), not used any more + if (substr($event_entry3,0,3)=="*#*") { + $event_entry3 = substr($event_entry3,3); // eliminating any #*# + } + if (substr($event_entry3,0,3)=="***") { + $event_entry3 = substr($event_entry3,3); // eliminating any *** + $weekly = TRUE; + + //only recent data will be considered to save memory + if($event_start < strtotime("-10 years")) $weekly = FALSE; + } + + if(strpos($event,'|')){ + $additional = substr($event,0,strpos($event,'|')); + $dates = explode(",",$additional); + foreach ($dates as $value) { + $trimmeddates = trim($value); + list($d,$m,$y) = explode(dpSeperator(),$trimmeddates); + $y = rtrim($y,'*'); + $timestamp = mktime(null,null,null,$m,$d,$y); + $additionaldatesarray[] = $timestamp; + } + // eliminating additional dates from $event + $event = substr($event,(strpos($event,'|')+1)); + } + if(strpos($event_entry3,'|')){ + $exceptions = substr($event_entry3,0,strpos($event_entry3,'|')); + $dates = explode(",",$exceptions); + foreach ($dates as $value) { + $trimmeddates = trim($value); + list($d,$m,$y) = explode(dpSeperator(),$trimmeddates); + $timestamp = mktime(null,null,null,$m,$d,$y); + $exceptionsarray[] = $timestamp; + } + // eliminating exception dates from entry3 + $event_entry3 = substr($event_entry3,(strpos($event_entry3,'|')+1)); + } + if($size) { +// $event = strip_tags($event,'

    '); +// $event_entry3 = strip_tags($event_entry3,'

    '); + } + + + } + //========================================================= + // case 1: long events = events lasting longer than 1 day + //========================================================= + if($event_date_end && !$weekly) + { + //first day of long events + //============================= + + //give the start and end date a nice form, e.g.: 5.5.-6.6.1930 + $date_txt = $event_day; + if ($event_month!=$event_end_month || $event_year!=$event_end_year) $date_txt .= dpSeperator().$event_month ; + if ($event_year!=$event_end_year) $date_txt .= dpSeperator().$event_year ; + if ($event_year==$event_end_year && dpSeperator()=='.') $date_txt.= "."; + $date_txt .= " ".$plugin_tx['calendar']['event_date_till_date'] . " "; + $date_txt .= $event_end_day.dpSeperator().$event_end_month.dpSeperator().$event_end_year; + + // small title attribute popup text + $title_txt = $event ; + if($event_entry3 && $calendar_cf['titleattributepopup_entry3']) $title_txt .= ' ' . $event_entry3; + $title_txt .= ' ' . $date_txt; + if($daily) { + $title_txt .= ' ' . $plugin_tx['calendar']['event_daily'] . ' ' . $event_time; + if($event_end_time) { + $title_txt .= $plugin_tx['calendar']['event_time_till_time'] . $event_end_time ; + } + } + if($exceptions) $title_txt .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' . $exceptions; + + // big popup text + $popup_txt = ''; + if($daily) { + $popup_txt .= "" . $event_time; + if($event_end_time) { + $popup_txt .= $plugin_tx['calendar']['event_time_till_time'] . $event_end_time ; + } + $popup_txt .= ' (' . $plugin_tx['calendar']['event_daily'] . ")\n"; + } elseif ($event_time) { + $popup_txt = "\n" . $event_time . ' ' . $plugin_tx['calendar']['event_start'] . "\n"; + } + $popup_txt .= "\n$date_txt"; + if($exceptions) $popup_txt .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' . $exceptions; + $popup_txt .= "\n"; + if($event_entry1) $popup_txt .= "\n$event_entry1\n"; + $popup_txt .= '' . $event . "\n"; + if($event_entry3) $popup_txt .= '' . $event_entry3 . "\n"; + + // text for big calendar + $big_txt = '
    '; + if ($calendar_cf['bigcalendar_write_time']){ + if($event_time) { + $big_txt .= '' . $event_time . ' '; + } else { + $big_txt .= '' . $calendar_cf['bigcalendar_symbol_if_no_time_given'] . ' '; + } + } + $big_txt .= $calendar_cf['bigcalendar_write_entry1']? '' . $event_entry1 . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_event']? '' . $event . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_entry3']? '' . $event_entry3 . '' : ''; + $big_txt .= '
    '; + + //enter first day of long events into array + array_push($event_year_array, $event_year); + array_push($event_month_array, $event_month); + array_push($event_day_array, $event_day); + array_push($event_array, $title_txt); + array_push($event_type_array, 'startevent'.$alt); + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, $yearly); + array_push($yearly2_array, $yearly2); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + array_push($timesort_array, $timesort); + + // last day of long events + //============================= + // big popup text for last day + if (!$daily) { + $popup_txt = "\n" . $date_txt; + if($exceptions) $popup_txt .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' . $exceptions; + $popup_txt .= "\n"; + if($event_entry1) $popup_txt .= "\n$event_entry1\n"; + $popup_txt .= "\n" . $event . "\n"; + if($event_entry3) $popup_txt .= "\n$event_entry3\n"; + if($event_end_time) $popup_txt .= "\n" . $event_end_time . ' ' . $plugin_tx['calendar']['event_end'] . "\n"; + + // text for big calendar + $big_txt = '
    '; + if ($calendar_cf['bigcalendar_write_time']){ + $big_txt .= '' . $calendar_cf['bigcalendar_symbol_if_no_time_given'] . ' '; + } + $big_txt .= $calendar_cf['bigcalendar_write_entry1']? '' . $event_entry1 . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_event']? '' . $event . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_entry3']? '' . $event_entry3 . '' : ''; + $big_txt .= '
    '; + } + + //enter last day of long events into array + array_push($event_year_array, date('Y',$event_end)); + array_push($event_month_array, date('m',$event_end)); + array_push($event_day_array, date('d',$event_end)); + array_push($event_array, $title_txt); + array_push($event_type_array, 'endevent'.$alt); + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, $yearly); + array_push($yearly2_array, $yearly2); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + if($daily){ + array_push($timesort_array, $timesort); + } else { + array_push($timesort_array, 2400); + } + + // middle days of long events + //================================ + + // big-popup text for mid event days + if (!$daily) { + $popup_txt = "\n$date_txt"; + if($exceptions) $popup_txt .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' . $exceptions; + $popup_txt .= "\n"; + if($event_entry1) $popup_txt .= "\n$event_entry1\n"; + $popup_txt .= '' . $event . "\n"; + if($event_entry3) $popup_txt .= '' . $event_entry3 . "\n"; + } + + // enter mid event day into array, limit number of mid event days to 90 days + // php memory limit may pose problems + if($event_end - $event_start < 7776000) { + $i = 1; + $date = strtotime("+".$i." day",$event_start); + while($date < $event_end) { + $exception = FALSE; + if($exceptions){ + foreach ($exceptionsarray as $value) { + if($value==$date) {$exception = TRUE;break;} + } + } + if(!$exception){ + array_push($event_year_array, date('Y',$date)); + array_push($event_month_array, date('m',$date)); + array_push($event_day_array, date('d',$date)); + array_push($event_array, $title_txt ); + array_push($event_type_array, 'midevent'.$alt); + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, $yearly); + array_push($yearly2_array, $yearly2); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + if($daily){ + array_push($timesort_array, $timesort); + } else { + array_push($timesort_array, 2400); + } + } + $i++; + $date = strtotime("+".$i." day",$event_start); + } + } + $date_txt = ''; + + + //========================= + // case 2: weekly events + //========================= + } elseif($weekly) { + + //in case no end is given or end is too far in future, 10 years planning maximum for weekly events + $twoyearsahead = strtotime("+10 years", $event_start); + if(!$event_end) $event_end = $twoyearsahead; + if($event_end - $event_start > 63072000) $event_end = $twoyearsahead; + + // small title attribute popup text + $title_txt = $event; + if($event_entry3 && $calendar_cf['titleattributepopup_entry3']) {$title_txt .= ': ' . $event_entry3;} + if($event_time) {$title_txt .= ' ' . $event_time;} + if($event_end_time) {$title_txt .= $plugin_tx['calendar']['event_time_till_time'].$event_end_time;} + $title_txt .= ' (' . $plugin_tx['calendar']['event_weekly']; + if($event_date_end) {$title_txt .= ' ' . $plugin_tx['calendar']['event_date_till_date'] . ' ' . $short_event_date_end;} + if($exceptions) $title_txt .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' . $exceptions; + $title_txt .= ')'; + + // text for big calendar + $big_txt = '
    '; + if ($calendar_cf['bigcalendar_write_time']){ + if($event_time) { + $big_txt .= '' . $event_time . ' '; + } else { + $big_txt .= '' . $calendar_cf['bigcalendar_symbol_if_no_time_given'] . ' '; + } + } + $big_txt .= $calendar_cf['bigcalendar_write_entry1']? '' . $event_entry1 . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_event']? '' . $event . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_entry3']? '' . $event_entry3 . '' : ''; + $big_txt .= '
    '; + + // big popup text + if($event_time) $popup_txt = "\n" . $event_time . $plugin_tx['calendar']['event_time_till_time'] . $event_end_time . "\n"; + if($event_entry1) $popup_txt .= '' . $event_entry1 . "\n"; + $popup_txt .= '' . $event . "\n"; + if($event_entry3) $popup_txt .= '' . $event_entry3 . "\n"; + $popup_txt .= '' .' (' . $plugin_tx['calendar']['event_weekly']; + if($event_date_end) {$popup_txt .= ' ' . $plugin_tx['calendar']['event_date_till_date'] . ' ' . $short_event_date_end;} + if($exceptions) $popup_txt .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' . $exceptions; + if($additional) $popup_txt .= ' ' . $plugin_tx['calendar']['event_additional'] . ' ' . $additional; + $popup_txt .= ')' . "\n"; + + //determining the dates of the weekly event + $weekly_event = $event_start; + while($weekly_event < $event_end) { + $exception = FALSE; + if($exceptions){ + foreach ($exceptionsarray as $value) { + if($value==$weekly_event) {$exception = TRUE;break;} + } + } + if( !$exception + && $weekly_event >= $calendarstart + && $weekly_event <= $calendarend) { + array_push($event_year_array, date('Y',$weekly_event)); + array_push($event_month_array, date('m',$weekly_event)); + array_push($event_day_array, date('d',$weekly_event)); + array_push($event_array, $title_txt ); + array_push($event_type_array, 'shortevent'.$alt); + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, ''); + array_push($yearly2_array, ''); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + array_push($timesort_array, $timesort); + } + $weekly_event = strtotime("+1 week",$weekly_event); + } + if($additional){ + foreach ($additionaldatesarray as $value) { + array_push($event_year_array, date('Y',$value)); + array_push($event_month_array, date('m',$value)); + array_push($event_day_array, date('d',$value)); + array_push($event_array, $title_txt); + array_push($event_type_array, 'shortevent'.$alt); + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, ''); + array_push($yearly2_array, ''); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + array_push($timesort_array, $timesort); + } + } + + + + //===================================================================================== + // case 3 single day events (can have same event on additional days), yearly events + //===================================================================================== + } else { + + //time styling + $time_txt = ''; + if($event_time) $time_txt .= $event_time; + if($event_end_time) $time_txt .= $plugin_tx['calendar']['event_time_till_time'] . $event_end_time ; + + // small title attribute popup text + $title_txt = ''; + if($time_txt) $title_txt = $time_txt . ' '; + $title_txt .= $event; + if($event_entry3 && $calendar_cf['titleattributepopup_entry3']) $title_txt .= ' ' . $event_entry3; + + // big calendar text + if ($yearly) { + $big_txt = '
    \" oder \"html\" eingeben."; +$plugin_tx['calendar']['cf_editor_deletes_empty_lines_at_the_end']="\"1\" bedeutet, dass alle leeren Zeilen am Ende des Feldes \"zusätzliche Beschreibung\" gelöscht werden. Praktische Einstellung, da man das Vorhanensein von leeren Zeilen nicht im Editor sehen kann."; +$plugin_tx['calendar']['cf_editor_height']="Höhe des Editorfeldes in Pixel. Nur eine Zahl eingeben, nicht die Maßeinheit px."; +$plugin_tx['calendar']['cf_eventlist_start_moves_with_clicked_event']="Die angezeigte Periode der Eventliste wird hier beeinflusst. Kein Eintrag bedeutet, dass man bei Klick auf ein Kalenderevent zur Eventliste mit voreingestellter Anzeigeperiode gelangt, solange das angeklickte Event innerhalt dieser Periode liegt. Liegt es außerhalb, wird die Periode entsprechend erweitert. Bei Eingabe von \"1\" wird die Periode stattdessen zum Monat des angeklicken Events hin verschoben und das angeklickte Event erscheint somit ziemlich am Anfang der Eventliste. Gleichzeitig gibt es am Anfang einen Link um die angezeigte Periode wieder auf Normal zu stellen. "; +$plugin_tx['calendar']['cf_eventlist_template']="Gibt es hier keinen Eintrag, wird die Eventliste im Tabellenstil dargestellt, Wenn hier der Name einer Templatedatei eingetragen wird, bestimmt diese das Aussehen der Eventliste."; +$plugin_tx['calendar']['cf_filepath_calendar_background_images']="Pfad zu den Hintergrundbildern des Kalenders, eine relative Adresse die beim Calendar Style Sheet anfängt wird benötigt, da sie in das Style Sheet eingefügt wird. Bei Nutzung des normalen Bilderspeichers eingeben:.\"../../../images/\"."; +$plugin_tx['calendar']['cf_filepath_data']="Der Weg zum Verzeichnis, in dem Calendar seine Eventdateien speichert. Ohne Angabe gilt \"./plugins/calendar/content/\". Alternativen Pfad mit Punkt Schrägstrich anfangen."; +$plugin_tx['calendar']['cf_input-field_additional_days_as_textarea']="Bei Eintrag eines Wertes für die Höhe wie \"2.6em\" wird das Eingabefeld von zusätzlichen Eventdaten eine textarea statt einfacher Eingabezeile. Praktisch für viele zusätzliceh Daten."; +$plugin_tx['calendar']['cf_input-field_entry1_as_textarea']="Bei Eintrag eines Wertes für die Höhe wie \"2.6em\" wird das Eingabefeld von Feld1 eine textarea statt einfacher Eingabezeile."; +$plugin_tx['calendar']['cf_input-field_entry1_show_in_input_always']="Bei Eintrag von \"1\" wird Feld 1, selbst wenn in der Eventliste ausgeschaltet, trotzdem im Eingabebereich angezeigt. Diese Eingaben können z.B. für den Lauftext genutzt werden."; +$plugin_tx['calendar']['cf_input-field_entry3_as_textarea']="Bei Eintrag eines Wertes für die Höhe wie \"2.6em\" wird das Eingabefeld von Feld3 eine textarea statt einfacher Eingabezeile."; +$plugin_tx['calendar']['cf_input-field_mainentry_as_textarea']="Bei Eintrag eines Wertes für die Höhe wie \"2.6em\" wird das Eingabefeld des Hauptfeldes eine textarea statt einfacher Eingabezeile."; +$plugin_tx['calendar']['cf_popup_direction_big_calendar']="Richtung, in der die Pop-ups beim großen Kalendar erscheinen: \"right\"=rechts, \"down\"=unten, keine Einstellung = links."; +$plugin_tx['calendar']['cf_popup_direction_small_calendar']="Richtung, in der die Pop-ups beim kleinen Kalendar erscheinen: \"right\"=rechts, \"down\"=unten, keine Einstellung = links."; +$plugin_tx['calendar']['cf_same-event-calendar_for_all_subsites']="Speziell für mehrsprachigen Websites! Mit \"1\" wird eine sprachunspezifische Kalenderdatei calendarevent.txt angelegt, die für alle Sprachversionen genutzt wird. WICHTIG: Wenn diese Option eingestellt ist, Bilder nur von der Basissprache aus in den Kalender einfügen, da Bilder in den Sekundärsprachen einen anderen Adresspfad haben."; +$plugin_tx['calendar']['cf_second-calendar_eventpage']="Hier den Namen der Seite eingeben, zu der der 2. Kalender verlinken soll. Ohne Eintrag bleibt der 2. Kalnder ohne Links. Der Eintrag kann der einfache Seitenname sein (Name darf nicht mehrmals vorkommen) oder der URL-Teil ab \"?\", z.B.: \"?Start:News\"."; +$plugin_tx['calendar']['cf_second-calendar_filename']="Hier kann ein beliebiger Name als Dateiname für die Eventdaten eines zweiten Calendars eingeben werden. Die Eingabe aktiviert drei zusätzliche Menüeintrage für den zweiten Kalendaer im Pluginmenü."; +$plugin_tx['calendar']['cf_style_headline_eventtype']="Wenn es wöchentliche Events gibt, erscheit darüber eine Überschrift, deren Aussehen hier bestimmt wird. Eine ähnliche Überschrift kündigt anschließend die folgenden Einzelevents an."; +$plugin_tx['calendar']['cf_style_headline_year']="Wenn leer wird für die Überschrift Jahr/Monat über Jahrkalendar / Kalendar in Spalten der Stil h4 genutzt. Alternativ hier einen Stil von h1 bis h6 oder p eintragen, oder HTML-Code mit %s als Platzhalter für Jahr/Monat, z.B. ‹h5› %s ‹/h5›;"; +$plugin_tx['calendar']['cf_z-index']="Falls andere Plugins die Popups von Kalendar überdecken, kann man hier eine hohe Zahl (z.B. 100000) eintragen um den Kalender auf eine höhere Anordnungsebene zu bringen"; +$plugin_tx['calendar']['config_additional']="zusätzlich"; +$plugin_tx['calendar']['config_additional_dates_bookedout']="(Jahr + * = Ausgebucht)"; +$plugin_tx['calendar']['config_all_same_color']="Farbwähler, der auf alle Felder wirkt"; +$plugin_tx['calendar']['config_articlestyle']="Template"; +$plugin_tx['calendar']['config_background']="Hintergrund"; +$plugin_tx['calendar']['config_background_color']="Hintergrundfarbe"; +$plugin_tx['calendar']['config_background_image']="Hintergrundbild"; +$plugin_tx['calendar']['config_background_or_color']="Hintergrundbild oder Farbe"; +$plugin_tx['calendar']['config_bigcalendar']="Großer Kalender"; +$plugin_tx['calendar']['config_birthday']="Geburtstag"; +$plugin_tx['calendar']['config_birthday_age']="Alter (Geburtstag)"; +$plugin_tx['calendar']['config_birthday_color']="besondere Farbe bei Geburtstag"; +$plugin_tx['calendar']['config_birthday_image']="Hintergrundbild Geburtstag"; +$plugin_tx['calendar']['config_birthday_in_dayfield']="Geburtstagsfeld im Tagesfeld"; +$plugin_tx['calendar']['config_bold']="fett"; +$plugin_tx['calendar']['config_border_color']="Randfarbe"; +$plugin_tx['calendar']['config_border_color_width']="Randfarbe + Breite"; +$plugin_tx['calendar']['config_border_width']="Randbreite"; +$plugin_tx['calendar']['config_calendar_template']="Test-Template"; +$plugin_tx['calendar']['config_color']="Farbe"; +$plugin_tx['calendar']['config_date']="Datumsfeld"; +$plugin_tx['calendar']['config_day_border_spacing']="Abstand der Tagesfelder"; +$plugin_tx['calendar']['config_day_field_height']="Tagesfeldhöhe"; +$plugin_tx['calendar']['config_day_name_color']="Wochentagsnamenfarbe"; +$plugin_tx['calendar']['config_day_names_more_css']="zusätzl. Wochentagsnamen-Css"; +$plugin_tx['calendar']['config_dayfield_border']="Tagesfeldumrandung"; +$plugin_tx['calendar']['config_dayfield_padding']="Tagesfeldinnenrand"; +$plugin_tx['calendar']['config_event']="Eventfeld"; +$plugin_tx['calendar']['config_event_list_period']="%sTerminzeitraum als Überschrift.  Zeitraum = %sMonate + %svergangene Monate  %sabgelaufene Events in grau  %skeine abgelaufenen Events zeigen"; +$plugin_tx['calendar']['config_event_on_holidays']="Event feiertags"; +$plugin_tx['calendar']['config_event_on_workdays']="Event werktags"; +$plugin_tx['calendar']['config_eventday']="Event 1.Tag Vordergrund/Hintergrund"; +$plugin_tx['calendar']['config_eventlist_standard']="Standardeinstellung"; +$plugin_tx['calendar']['config_eventlist_table_selected']="Tabellenstil"; +$plugin_tx['calendar']['config_exceptions']="Ausnahmen"; +$plugin_tx['calendar']['config_fontfamily']="Font"; +$plugin_tx['calendar']['config_fontsize']="Größe"; +$plugin_tx['calendar']['config_headline_more_css']="zusätzl. Überschrift-Css"; +$plugin_tx['calendar']['config_headline_style']="Überschrift Zeichenfarbe + Stil"; +$plugin_tx['calendar']['config_hint']="Hinweis"; +$plugin_tx['calendar']['config_holiday']="Feiertage"; +$plugin_tx['calendar']['config_in_title_label']="Bei kleinem Pop-up dazunehmen"; +$plugin_tx['calendar']['config_indented']="eingerückt: %s Feld(er)"; +$plugin_tx['calendar']['config_input_fields']="Eingabefelder"; +$plugin_tx['calendar']['config_line_between_events_in_bigcalendar']="Zwischenlinien"; +$plugin_tx['calendar']['config_lineheight']="Zeilenhöhe"; +$plugin_tx['calendar']['config_list_page']="Seite mit Event-Liste"; +$plugin_tx['calendar']['config_long_event']="Mehrtagesevent"; +$plugin_tx['calendar']['config_margin-top']="Abstand über Überschrift"; +$plugin_tx['calendar']['config_mark2']="Rand für als umrandet markierte Events"; +$plugin_tx['calendar']['config_month']="Monatsansicht"; +$plugin_tx['calendar']['config_month_fontsize']="Monat usw."; +$plugin_tx['calendar']['config_more']="mehr"; +$plugin_tx['calendar']['config_name']="Name"; +$plugin_tx['calendar']['config_no_event_list_page']="Keine Event-Liste"; +$plugin_tx['calendar']['config_no_image']="Kein Bild"; +$plugin_tx['calendar']['config_no_special_font']="kein spezieller Font"; +$plugin_tx['calendar']['config_normalday']="normaler Tag"; +$plugin_tx['calendar']['config_on']="Feld an?"; +$plugin_tx['calendar']['config_one_line_per_entry']="nur 1 Zeile pro Eintrag"; +$plugin_tx['calendar']['config_opacity_no_event']="Opazität wenn kein Event"; +$plugin_tx['calendar']['config_popup']="Pop-up"; +$plugin_tx['calendar']['config_popup_in_small_calendar']="Großes Pop-up statt kleines"; +$plugin_tx['calendar']['config_presets']="Presets"; +$plugin_tx['calendar']['config_roundcorners']="runde Ecken"; +$plugin_tx['calendar']['config_select']="Bitte auswählen"; +$plugin_tx['calendar']['config_select_internal_link']="Internen Link auswählen"; +$plugin_tx['calendar']['config_shadow']="Schatten"; +$plugin_tx['calendar']['config_small_calendar']="Kleiner Kalender"; +$plugin_tx['calendar']['config_subhead_fontsize']="Feldüberschriften"; +$plugin_tx['calendar']['config_symbol_when_no_time_is_given']="Symbol wenn keine Zeitangabe"; +$plugin_tx['calendar']['config_tablestyle']="Tabelle"; +$plugin_tx['calendar']['config_template']="Template"; +$plugin_tx['calendar']['config_textarea']="großer Eingabebereich"; +$plugin_tx['calendar']['config_time_on']="Zeitfeld?"; +$plugin_tx['calendar']['config_today']="Heutiger Tag"; +$plugin_tx['calendar']['config_today_background']="Heutiges Datum Vordergrund/Hintergrund"; +$plugin_tx['calendar']['config_underline_longevent']="Unterstreichung Folge-Eventtage oder %s Darstellung wie 1.Tag"; +$plugin_tx['calendar']['config_use_default_template']="Standard-Template"; +$plugin_tx['calendar']['config_weekdaynames_padding']="oben/unten Raum Wochentagsnamen"; +$plugin_tx['calendar']['config_weekend']="Wochenende"; +$plugin_tx['calendar']['config_width']="Breite"; +$plugin_tx['calendar']['config_year']="Jahresansicht"; +$plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions']="FEHLER: Dateien unterschiedlicher Calendar-Versionen können nicht kombiniert werden."; +$plugin_tx['calendar']['error_could_not_change_config_file']="Konnte Konfig-Datei nicht ändern"; +$plugin_tx['calendar']['error_could_not_change_css_file']="Konnte Css-Datei nicht ändern/"; +$plugin_tx['calendar']['error_could_not_change_language_file']="Konnte Sprach-Datei nicht ändern"; +$plugin_tx['calendar']['error_do_not_edit_from_subsite']="WARNUNG: Sie haben \"Dieselbe Event-Datei für alle Sprachen\" eingestellt. Nur wenn sie Events von der Seite mit der Hauptsprache bearbeiten, werden Bilder und interne Links richtig verknüpft. P.S. Interne Links zu Seiten der Zweitsprache als URL beginnend mit / und Subsitekürzel eingeben."; +$plugin_tx['calendar']['error_event_page_not_found']="als Seite für Eventliste nicht gefunden"; +$plugin_tx['calendar']['error_event_page_occurs_more_than_once']="kommt als Seitenname mehr als einmal vor. Bitte korrigieren."; +$plugin_tx['calendar']['error_file_name_wrong']="Fehler: Dateiname beinhaltet nicht erlaubte Zeichen"; +$plugin_tx['calendar']['error_file_not_saved']="Fehler: Änderungen nicht gespeichert"; +$plugin_tx['calendar']['error_file_not_writable']="Fehler: Datei nicht schreibbar, wahrscheinlich schreibgeschützt"; +$plugin_tx['calendar']['error_link_unclear']="Link uneindeutig"; +$plugin_tx['calendar']['error_links_unclear']="Links uneindeutig"; +$plugin_tx['calendar']['error_occured']="Ein Fehler ist aufgetreten"; +$plugin_tx['calendar']['error_pagename_double']="verlinkter Seitenname kommt mehrmals vor"; +$plugin_tx['calendar']['error_pagenames_double']="verlinkte Seitennamen kommen mehrmals vor"; +$plugin_tx['calendar']['error_settings_name_wrong']="Fehler: Name der Einstellungen enthält Leerzeichen oder nicht erlaubte Zeichen"; +$plugin_tx['calendar']['error_settings_not_saved']="Fehler, Daten konnen nicht gespeichert werden"; +$plugin_tx['calendar']['event_additional']="zusätzlich"; +$plugin_tx['calendar']['event_additional_days']="zusätzliche Tage"; +$plugin_tx['calendar']['event_booked_out']="Ausgebucht"; +$plugin_tx['calendar']['event_border_marked']="umrandet im Kalender"; +$plugin_tx['calendar']['event_daily']="tägl."; +$plugin_tx['calendar']['event_date']="Datum"; +$plugin_tx['calendar']['event_date_till_date']="bis"; +$plugin_tx['calendar']['event_description']="zusätzliche Beschreibung"; +$plugin_tx['calendar']['event_end']="Ende"; +$plugin_tx['calendar']['event_end_date']="Enddatum"; +$plugin_tx['calendar']['event_entry1']="Ort"; +$plugin_tx['calendar']['event_entry3']="Referent"; +$plugin_tx['calendar']['event_except']="außer"; +$plugin_tx['calendar']['event_exceptions']="Termin-Ausnahmen"; +$plugin_tx['calendar']['event_has_ended']="Beendet"; +$plugin_tx['calendar']['event_icon']="Icon"; +$plugin_tx['calendar']['event_info_icon']="Info Tooltip Icon"; +$plugin_tx['calendar']['event_info_text']="Info-Text"; +$plugin_tx['calendar']['event_link_etc']="Info"; +$plugin_tx['calendar']['event_link_icon']="Link Icon"; +$plugin_tx['calendar']['event_link_text']="Link-Text"; +$plugin_tx['calendar']['event_main_entry']="Thema"; +$plugin_tx['calendar']['event_mark2']="umrandet"; +$plugin_tx['calendar']['event_multiple']="mehrfach"; +$plugin_tx['calendar']['event_not_on_marquee']="nicht im Lauftext"; +$plugin_tx['calendar']['event_other_link']="Weiterer Link"; +$plugin_tx['calendar']['event_same_on_other_days']="gleiches Tagesevent an obigen Tagen"; +$plugin_tx['calendar']['event_start']="Anfang"; +$plugin_tx['calendar']['event_start_date']="Startdatum"; +$plugin_tx['calendar']['event_time']="Uhrzeit"; +$plugin_tx['calendar']['event_time_till_time']="-"; +$plugin_tx['calendar']['event_times_are_daily']="tägliche Zeiten?"; +$plugin_tx['calendar']['event_weekly']="jede Woche"; +$plugin_tx['calendar']['event_weekly_ongoing']="jede Woche"; +$plugin_tx['calendar']['event_weekly_starting_on']="Beginn"; +$plugin_tx['calendar']['event_widepopup']="+ breites Popup"; +$plugin_tx['calendar']['event_yearly']="jährlich"; +$plugin_tx['calendar']['event_yearly_with_age_calculation']="jährlich + Alter"; +$plugin_tx['calendar']['headline_multiple_events']="Mehrfachveranstaltungen"; +$plugin_tx['calendar']['headline_single_events']="Einzelveranstaltungen"; +$plugin_tx['calendar']['headline_started_earlier']="Früher begonnen"; +$plugin_tx['calendar']['headline_weekly_events']="Wöchentliche Veranstaltungen"; +$plugin_tx['calendar']['headline_yearly_events']="Jährliche Events"; +$plugin_tx['calendar']['help_config_jquery_marquee']="Die Auswirkung einer Änderung der jQuery-Einstellung sind nur sichtbar, wenn man nach Klicken auf \"Änderungen anwenden\" den Menüpunkt Lauftext im Pluginmenü neu anwählt. (Das ganze Calendar-Plugin muss neu geladen werden)

    Ohne jQuery wird für den Lauftext die Microsoft Marquee Funktion genutzt."; +$plugin_tx['calendar']['help_config_padweekdaynames']="Zahl und Maßeinheit (px, em) für Leerraum über und unter Wochentagsnahmen eingeben"; +$plugin_tx['calendar']['help_config_presets']="Presets können alle oder einen Teil der Werte für die Eventliste oder den Kalendar enthalten. Eigene Einstellungen können gespeichert werden und im Menü 'Backup etc.' bearbeitet werden."; +$plugin_tx['calendar']['help_config_roundcorners']="4 Werte für Eckradium in px angeben: linksoben rechtsoben rechtsunten linksunten"; +$plugin_tx['calendar']['help_config_shadow']="3 Werte in px und 1 Farbcode: Rechtsverschiebung Verschiebung-nach-unten Verlauf Farbe"; +$plugin_tx['calendar']['help_config_topmargin']="Zahl und Maßeinheit (z.B. 50px, 10em) für zusätzlichen Leerraum über der Überschrift, so dass mehr vom HIntergrundbild zu sehen ist"; +$plugin_tx['calendar']['help_holiday_date_calculation']="
      \r\n
    • Feste Feiertage => Tag.Monat (Bindestrich oder Schrägstrich statt Punkt nehmen, wenn dies als Datumstrenner eingestellt ist.)
    • \r\n
    • Bewegliche Feiertage, die vom Osterdatum abhängen => easter + x day oder - x day z.B. Karfreitag: easter - 2 day
    • \r\n
    • Bewegliche Feiertage, die auf festen Wochentag fallen:\r\n
        \r\n
      • Erster Montag im Mai: monday 1.5
      • \r\n
      • Letzter Montag im Mai (= Montag vor dem 1.6.): -1 monday 1.6
      • \r\n
      • 11 Tage vor dem 1. Sonntag nach dem 26.11 (Buß- u. Bettag): -11 days 1 sunday 26.11
      • \r\n
      • 4. Sonntag nach dem 26.11 (4. Advent): 4 sunday 26.11
      • \r\n
      \r\n
    • \r\n
    "; +$plugin_tx['calendar']['hint_blog_links']="Interne Links zu Blogeinträgen: URL ab ?"; +$plugin_tx['calendar']['hint_event_formatting']="Formatierung"; +$plugin_tx['calendar']['hint_external_links']="Links zu fremden Seiten"; +$plugin_tx['calendar']['hint_file_links']="Links zu PDF/ Word-Dateien im Download-Ordner: nur Dateiname (Groß-/Kleinschr. beachten)"; +$plugin_tx['calendar']['hint_formattable_fields']="Formatierbare Felder"; +$plugin_tx['calendar']['hint_how_to_enter_links']="Wie man Links eingibt:"; +$plugin_tx['calendar']['hint_icon_add']="Neue Eventzeile hierunter anfügen"; +$plugin_tx['calendar']['hint_icon_copy']="Diese Veranstaltung kopieren"; +$plugin_tx['calendar']['hint_icon_delete']="Diese Veranstaltung löschen"; +$plugin_tx['calendar']['hint_icon_ok']="Alle Einträge speichern"; +$plugin_tx['calendar']['hint_internal_links']="Links zu eigenen Seiten aus Auswahlliste auswählen. Weitere Links im Feld darunter eintragen. Bei mehreren Links diese durch | trennen. Linktexte bei mehreren Links ebenfalls durch | trennen."; +$plugin_tx['calendar']['hint_links']="Links"; +$plugin_tx['calendar']['hint_mouseover_in_calendar']="Maus auf Datum zeigt Details – Klick führt zur Eventliste"; +$plugin_tx['calendar']['hint_subsite_links']="Links zu Seiten einer Subsite: URL ab /"; +$plugin_tx['calendar']['holiday_date_calculation']="Datumsberechnung"; +$plugin_tx['calendar']['holiday_name']="Feiertagsname"; +$plugin_tx['calendar']['holydays']="1.1,Neujahr;6.1,Hl. Drei Könige;1.5,Tag der Arbeit;easter - 48 day,Rosenmontag;easter -2 day,Karfreitag;easter,Ostern;easter + 1 day,Ostermontag;easter + 39 day,Himmelfahrt;easter + 49 day,Pfingsten;easter + 50 day,Pfingstmontag;easter + 60 day,Fronleichnam;15.8,Mariä Himmelfahrt;3.10,Tag der Deutschen Einheit;31.10,Reformationstag;1.11,Allerheiligen;-11 days 1 sunday 26.11,Buß- u. Bettag;1 sunday 26.11,1. Advent;2 sunday 26.11,2. Advent;3 sunday 26.11,3. Advent;4 sunday 26.11,4. Advent;24.12,Heiligabend;25.12,1. Weihnachtstag;26.12,2. Weihnachtstag;31.12,Silvester"; +$plugin_tx['calendar']['link-button_next_month']="Nächster Monat"; +$plugin_tx['calendar']['link-button_next_year']="Nächstes Jahr"; +$plugin_tx['calendar']['link-button_prev_month']="Vorheriger Monat"; +$plugin_tx['calendar']['link-button_prev_year']="Vorheriges Jahr"; +$plugin_tx['calendar']['link_to_present_month']="» Liste zurücksetzen auf aktuellen Monat"; +$plugin_tx['calendar']['marquee_1stline']="1. Zeile unter Datum"; +$plugin_tx['calendar']['marquee_2ndline']="2. Zeile unter Datum"; +$plugin_tx['calendar']['marquee_age']="Altersanzeige bei Geburtstag in"; +$plugin_tx['calendar']['marquee_contents']="Inhalt des Lauftextes"; +$plugin_tx['calendar']['marquee_dateline']="Datumszeile"; +$plugin_tx['calendar']['marquee_dateline_height']="Höhe der Überschrift im Lauftext (nur Zahl)"; +$plugin_tx['calendar']['marquee_emptyline']="Nichts"; +$plugin_tx['calendar']['marquee_height']="Gesamthöhe des Lauftextbereichs (nur Zahl)"; +$plugin_tx['calendar']['marquee_height_unit']="Einheit für obige Angaben"; +$plugin_tx['calendar']['marquee_not_in_marquee']="Keine Anzeige"; +$plugin_tx['calendar']['marquee_number_of_events_shown']="Anzahl der angezeigten Events"; +$plugin_tx['calendar']['marquee_speed']="Geschwindigkeit (in px/0,01 sec)"; +$plugin_tx['calendar']['marquee_use_jquery']="Lauftext von jQuery gesteuert"; +$plugin_tx['calendar']['menu_apply_preset']="Preset anwenden"; +$plugin_tx['calendar']['menu_backup']="Backup"; +$plugin_tx['calendar']['menu_config']="Konfig"; +$plugin_tx['calendar']['menu_credits']="Autoren"; +$plugin_tx['calendar']['menu_css']="CSS"; +$plugin_tx['calendar']['menu_eventlistconfig']="Einstell."; +$plugin_tx['calendar']['menu_help']="Hilfe"; +$plugin_tx['calendar']['menu_holidays']="Feiertage"; +$plugin_tx['calendar']['menu_language']="Sprachdatei"; +$plugin_tx['calendar']['menu_main']="Events bearbeiten"; +$plugin_tx['calendar']['menu_marquee']="Lauftext"; +$plugin_tx['calendar']['menu_preset_backup']="Backup"; +$plugin_tx['calendar']['menu_save_config']="Änderungen anwenden"; +$plugin_tx['calendar']['menu_settings_backupname']="Backupname"; +$plugin_tx['calendar']['menu_show_calendar']="Kalender"; +$plugin_tx['calendar']['menu_test']="Testen"; +$plugin_tx['calendar']['menu_test_event_list']="Eventliste"; +$plugin_tx['calendar']['names_of_days']="So,Mo,Di,Mi,Do,Fr,Sa"; +$plugin_tx['calendar']['names_of_days_longform']="Sonntags,Montags,Dienstags,Mittwochs,Donnerstags,Freitags,Samstags"; +$plugin_tx['calendar']['names_of_months']="Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember"; +$plugin_tx['calendar']['notice_backup_setting']="Backups"; +$plugin_tx['calendar']['notice_commercial']="Kommerzielle Nutzung?"; +$plugin_tx['calendar']['notice_commercial_licence']="Dieses Plugin ist kostenlos.
    Sie können trotzdem eine Lizenz erwerben zu einem beliebigen Betrag, um den Programmierer zu unterstützen. Senden Sie einfach eine E-Mail an den Programmierer um die Lizenz und eine Rechnung zu erhalten."; +$plugin_tx['calendar']['notice_event_entries']="Event-Einträge"; +$plugin_tx['calendar']['notice_file_not_yet_saved']="Änderungen noch nicht gespeichert"; +$plugin_tx['calendar']['notice_no_eventlist2_page']="Kalendar2 Eventlist-Seite nicht angegeben"; +$plugin_tx['calendar']['notice_no_eventlist_page']="Eventlist-Seite nicht angegeben"; +$plugin_tx['calendar']['notice_no_next_event_scheduled']="Zurzeit keine Veranstaltungsankündigungen"; +$plugin_tx['calendar']['notice_number_of_events_saved_in_file']="Events in"; +$plugin_tx['calendar']['notice_preset_applied']="Preset \"%s\" geladen"; +$plugin_tx['calendar']['notice_settings_data_saved']="Einstellung als \"%s\" in calendar/templates/ gespeichert"; +$plugin_tx['calendar']['notice_telling_month_of_events']="Veranstaltungen im"; +$plugin_tx['calendar']['notice_telling_period_of_events']="Termine für den Zeitraum"; +$plugin_tx['calendar']['notice_today']="heute"; +$plugin_tx['calendar']['notice_copied']="1 Event kopiert, "; +$plugin_tx['calendar']['notice_changed']="1 Event gesichert/geändert, "; +$plugin_tx['calendar']['notice_added']="1 Leer-Event zugefügt, "; +$plugin_tx['calendar']['notice_deleted']="1 Event gelöscht, "; + +?> diff --git a/languages/default.php b/languages/default.php new file mode 100644 index 0000000..11bbb65 --- /dev/null +++ b/languages/default.php @@ -0,0 +1,328 @@ +fckeditor
    '; + if ($calendar_cf['bigcalendar_write_time']){ + if($event_time) { + $big_txt .= '' . $event_time . ' '; + } else { + $big_txt .= '' . $calendar_cf['bigcalendar_symbol_if_no_time_given'] . ' '; + } + } + $big_txt .= $calendar_cf['bigcalendar_write_entry1']? '' . $event_entry1 . ' ' : ''; + $big_txt .= $event . ' '; + $big_txt .= $calendar_cf['bigcalendar_anniversary_write_entry3']? $event_entry3.' ' : ''; + } else { + $big_txt = '
    '; + if ($calendar_cf['bigcalendar_write_time']){ + if($event_time) { + $big_txt .= '' . $event_time . ' '; + } else { + $big_txt .= '' . $calendar_cf['bigcalendar_symbol_if_no_time_given'] . ' '; + } + } + $big_txt .= $calendar_cf['bigcalendar_write_entry1']? '' . $event_entry1 . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_event']? '' . $event . ' ' : ''; + $big_txt .= $calendar_cf['bigcalendar_write_entry3']? '' . $event_entry3 . '' : ''; + $big_txt .= '
    '; + } + + + // popup text + $popup_txt = ''; + $y = $yearly? ' anniversary' : ''; + if($time_txt) $popup_txt .= "\n" . $time_txt . "\n"; + if($event_entry1) $popup_txt .= "" . $event_entry1 . "\n"; + $popup_txt .= "" . $event . "\n"; + if($event_entry3) $popup_txt .= "" . $event_entry3 . "\n"; + + + array_push($event_year_array, $event_year); + array_push($event_month_array, $event_month); + array_push($event_day_array, $event_day); + array_push($event_array, $title_txt); + if($yearly) { + array_push($event_type_array, 'birthday'); + } else { + array_push($event_type_array, 'shortevent'.$alt); + } + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, $yearly); + array_push($yearly2_array, $yearly2); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + $birthdaytime = ($yearly && !$event_time)? 0 : $timesort; //if no time is given, birthday will be announced first + array_push($timesort_array, $birthdaytime); + + if($additional){ + foreach ($additionaldatesarray as $value) { + array_push($event_year_array, date('Y',$value)); + array_push($event_month_array, date('m',$value)); + array_push($event_day_array, date('d',$value)); + array_push($event_array, $title_txt); + array_push($event_type_array, 'shortevent'.$alt); + array_push($event_popup_array, $popup_txt); + array_push($yearly_array, ''); + array_push($yearly2_array, ''); + array_push($holiday_array, ''); + array_push($big_array, $big_txt); + array_push($timesort_array, $timesort); + } + } + + } + } +} + + + +//========================== +// processing holyday list +//========================== +// first check if function exists (thanx to cmb!) +if (!function_exists('easter_date')) { + function easter_date($year) { + $g = $year % 19 + 1; + $s = (11 * $g - 6) % 30; + $s = $s == 0 ? $s - 1 : ($s == 1 && $g >= 12 ? $s - 2 : $s); + $fm = mktime(0, 0, 0, 4, 19 - $s, $year); + $w = date('w', $fm); + $e = mktime(0, 0, 0, 4, 19 - $s + 7 - $w, $year); + return $e; + } +} +// now start processiong holyday list +// list has to be looped twice in case display extends over Dec-Jan +for($i=0 ;$i<2 ;$i++){ + $displayyear = $year + $i; + $easter = date("m/d/Y",easter_date($displayyear)); + + $holidayarray = explode(";",$plugin_tx['calendar']['holydays']); + foreach ($holidayarray as $value) { + list($holiday_date,$holiday_name) = explode(",",$value); + // holidays depending on the easter date + if(strpos($holiday_date,'easter')!==FALSE){ + $easter_add = str_replace('easter','',$holiday_date); + $holiday_day = date("d",strtotime("$easter $easter_add")); + $holiday_month = date("m",strtotime("$easter $easter_add")); + // holidays on a certain weekday depending on another fixed date + } elseif (strpos($holiday_date,'day')!==FALSE) { + $complex_array = explode(" ",$holiday_date); + $complex_starting_date = array_pop($complex_array); + list($complex_day,$complex_month) = explode(dpSeperator(),$complex_starting_date); + $complex_add = implode(' ',$complex_array); + $holiday_day = date("d",strtotime("$complex_add", mktime(0,0,0,$complex_month,$complex_day,$displayyear))); + $holiday_month = date("m",strtotime("$complex_add", mktime(0,0,0,$complex_month,$complex_day,$displayyear))); + // fixed holidays + } else { + list($holiday_day,$holiday_month) = explode(dpSeperator(),$holiday_date); + } + array_push($event_year_array, $displayyear); + array_push($event_month_array, $holiday_month); + array_push($event_day_array, $holiday_day); + array_push($event_array, ''); + array_push($event_type_array, 'holiday'); + array_push($event_popup_array, ''); + array_push($yearly_array, ''); + array_push($yearly2_array, ''); + array_push($holiday_array, $holiday_name); + } + if($one_year_only) break; +} +// end of entering holidays +//·························· + + +$event_popup_with_time = ''; +$event_popup = ''; +$showtoday = ''; +$shortevent = ''; +$startevent = ''; +$midevent = ''; +$endevent = ''; +$shortevent3 = ''; +$startevent3 = ''; +$midevent3 = ''; +$endevent3 = ''; +$birthday = ''; +$borderstartevent = ''; +$bordermidevent = ''; +$borderendevent = ''; +$linkstart = ''; +$linkend = ''; +$holiday = ''; +$dayname = ''; +$day_name = ''; +$popup_divider = ''; +$bigcal_txt = ''; +$zcalculation = ''; +$event_titles = array(); +$bigcal_txts = array(); +$event_popups = array(); +$timesorting = array(); + + +$o .= "\n\n\n\n"; + + +//writing a headline for multi months and year calendars in columns +if($columns) { + if($yeardisplay){ + $year_prev = $year - 1; + $year_next = $year + 1; + if($navigation) { + // provide correct href in case calendar is called via admin + $hrefpart = $admxx ? "&calendar&admxx=$admxx" : "$su"; + + $calhead = $year_prev + 3 > date("Y") + ? "\n
    ‹‹  " + . "\n" + : "\n".'    '; + $calhead .= "\n $year \n"; + $calhead .= $year_next - 3 < date("Y") + ? "  ››" + . "\n" + : "\n".'    '; + } else { + $calhead = $year; + } + + } elseif($navigation) { + + if($month <= 1){$month_prev = 12; $year_prev = $year - 1;} + else {$month_prev = $month - 1; $year_prev = $year;} + if($month >= 12){$month_next=1; $year_next = $year + 1;} + else {$month_next = $month + 1; $year_next = $year;} + + $calhead = $year_prev + 2 > date("Y") + ? "\n‹‹  " + . "\n" + : "\n".'    '; + $calhead .= "\n $years \n"; + $calhead .= $year_next - 2 < date("Y") + ? "  ››" + . "\n" + : "\n".'    '; + + } else { + $calhead = $years; + } + + $o .= '
    ' + . "\n
    \n" + . sprintf($head, $calhead) + . "\n
    \n\n" + . "\n\n"; +} + + +$extramonths=0; +while ($extramonths < $number) { + + $month = $extramonths? ($month + 1) : $month; + if($month > 12) {$month-=12;$year++;} + + $monthnames = explode(",", $plugin_tx['calendar']['names_of_months']); + $textmonth = $monthnames[$month - 1]; + + $today = date("j", time()); + // highlight today but only for current month & year + $today = ($month == date("n",time()) && $year == date("Y",time())) ? $today : 32; + + // find number of days in a given month + $days = date("t",mktime(1,1,1,$month,1,$year)); + $dayone = date("w",mktime(1,1,1,$month,1,$year)); + $daylast = date("w",mktime(1,1,1,$month,$days,$year)); + $dayarray = explode(",", $plugin_tx['calendar']['names_of_days']); + + //start new row depending on number of columns wanted + if($columns && ($extramonths % $columns == 0) && $extramonths > 0) { + $o .= "\n\n"; + $zcalculation++; + } + if(!$columns && $extramonths>0) $zcalculation++; + + //============================ + // building the calendar + //============================ + + //z-index calculation + if($plugin_cf['calendar']['z-index'] > 0) { + $z = $plugin_cf['calendar']['z-index'] - $zcalculation; + $zindex = " style='position:relative;z-index:$z;'"; + } else $zindex = ''; + + if($columns) $o .= '\n"; + + $extramonths++; +} + +if($columns) $o .= "
    '."\n"; + $o .= "\n"; + + // 1st row: headline with month and year (year only if needed) + //============================================================ + $o .= "\n\n\n"; + + + // 2nd row: weekday names + //=================== + if(!$extramonths && !$columns) { + $o .="\n"; + + for($i=0; $i <= 6; $i++) { + if($startmon){$j = $i+1;} else {$j = $i;} + if($j==7)$j=0; + if($j==date('w') && $month==date('n') && $year==date('Y')) { + $o .= "\n"; + } else { + $o .= "\n"; + } + } + $o .= "\n"; + } + + + // starting the numbered day fields + //================================== + + if($startmon){$span1 = $dayone-1;}else{$span1 = $dayone;} + if($span1 == -1)$span1 = 6; + + if($startmon){$span2 = 7 - $daylast;}else{$span2 = 6 - $daylast;} + if($span2 == 7)$span2 = 0; + + //$o .= print_r($event_year_array); + //$o .= print_r($event_array); + + + + // going through all the days of the month + for($i = 1; $i <= $days; $i++): + $dayofweek = date("w",mktime(1,1,1,$month,$i,$year)); + + if($startmon)$dayofweek = $dayofweek - 1; + if($dayofweek == -1)$dayofweek = 6; + + + // going through all the events and selecting the ones that occur on the day + foreach($event_year_array as $keys=>$temp) + { + + if( ($event_year_array[$keys] == $year + && $event_month_array[$keys] == $month + && $event_day_array[$keys] == $i + && !$yearly_array[$keys]) + || + ($yearly2_array[$keys] + and $event_month_array[$keys] == $month + and $event_day_array[$keys] == $i) + ) + { + //producing variables ($shortevent, $startevent, $midevent, $endevent. $holiday) that can be filled with a date + $$event_type_array[$keys]=$i; + // extracting the holiday name + $day_name = $holiday_array[$keys]; + + //writing all occuring events of the day into arrays + If($event_array[$keys]) { + $event_titles[] = strip_tags($event_array[$keys]); + $bigcal_txts[] = $big_array[$keys]; + $event_popups[] = $event_popup_array[$keys]; + $timesorting[] = $timesort_array[$keys]; + } + } + + //Birthday case + if($yearly_array[$keys] + and $event_month_array[$keys] == $month + and $event_day_array[$keys] == $i) + { + $birthday=$i; + $age = $year - $event_year_array[$keys]; + if ($age >= 5){ + $age .= " " . $plugin_tx['calendar']['age_5_and_more_years_old']; + } + elseif ($age >= 2 and $age < 5){ + $age .= " " . $plugin_tx['calendar']['age_2-4_years_old']; + } + else { + $age .= " " . $plugin_tx['calendar']['age_1_year_old']; + } + $event_titles[] = strip_tags($event_array[$keys]); + $event_popups[] = $event_popup_array[$keys] + . '' . $age . "\n"; + $age = $calendar_cf['bigcalendar_anniversary_write_age']? $age : ''; + $bigcal_txts[] = $big_array[$keys] . $age. "\n";; + $timesorting[] = $timesort_array[$keys]; + } + } + + //sorting the events of the day according to time + array_multisort($timesorting,$event_titles,$bigcal_txts,$event_popups); + $event_title = implode('  |  ',$event_titles); + $bigcal_separator = $calendar_cf['bigcalendar_line_between_entries']? tag('hr') : ''; + $bigcal_txt = implode($bigcal_separator,$bigcal_txts); + $event_popup = implode('',$event_popups); + + + $tableday = $i; + if($i == 1 || $dayofweek == 0) { + $o .= "\n"; + if($span1 > 0 && $i == 1) $o .= "\n"; + } + + //Coloring the weekend days + $weekend_day_1 = $plugin_cf['calendar']['calendar_weekend_day_1'] -1; + $weekend_day_2 = $plugin_cf['calendar']['calendar_weekend_day_2'] -1; + if ($dayofweek == $weekend_day_1 || $dayofweek == $weekend_day_2) { + $daytype = "calendar_weekend"; + } else { + $daytype = "calendar_workday"; + } + + $x = $calendar_cf['dont_underline_longevents']? '2':''; + + $showtoday = $i == $today ? " ${size}calendar_today" : ''; + $shortevent = $i == $shortevent ? " calendar_shortevent" : ''; + $startevent = $i == $startevent ? " calendar_startevent$x" : ''; + $midevent = $i == $midevent ? " calendar_midevent$x" : ''; + $endevent = $i == $endevent ? " calendar_endevent$x" : ''; + $shortevent3 = $i == $shortevent3 ? " calendar_shortevent3" : ''; + $startevent3 = $i == $startevent3 ? " calendar_startevent3" : ''; + $midevent3 = $i == $midevent3 ? " calendar_midevent3" : ''; + $endevent3 = $i == $endevent3 ? " calendar_endevent3" : ''; + $birthday = $i == $birthday ? " ${size}calendar_birthday" : ''; + $holiday = $i == $holiday ? " calendar_holiday" : ''; + + + //setting the popup class, can be different for every weekday + if($size) { + $popup_class = $plugin_cf['calendar']['popup_direction_big_calendar']? $plugin_cf['calendar']['popup_direction_big_calendar'] : 'left'; + } else { + $popup_class = $plugin_cf['calendar']['popup_direction_small_calendar']? $plugin_cf['calendar']['popup_direction_small_calendar'] : 'left'; + } + if($popup_class == 'down') $popup_class = $popup_class.$dayofweek; + $popup_class = " class='$popup_class'"; + + $eventday = ( $startevent + || $midevent + || $endevent + || $shortevent + || $startevent3 + || $midevent3 + || $endevent3 + || $shortevent3 + || $birthday + || $holiday)? ' eventday':''; + + if($eventday){ + if(!$size && !$calendar_cf['calendar-popup_big']) { + //default setting: title-style info in calendar + $divider = ($holiday && ($event_title || $birthday))? '  |  ' : ''; + $linkstart = $eventpage ? "" + : + "\n"; + $divider = ''; + $linkend = ""; + } else { + //popups in calendar + if($holiday) $dayname = "\n$day_name"; + $linkstart = $eventpage ? "\n" + : + "\n".''; + $linkend = "$dayname$event_popup"; + } + } + //If no event occurs, the day number of bigcalendar can be treated by css via + if($size && !$linkstart) {$linkstart = ''; $linkend ='';} + + if($size) { + $bigcalendar = '
    ' . $day_name . '
    '; + $bigcalendar .= $bigcal_txt; + } else $bigcalendar = ''; + + $headnotice = ($i == $today && $size)? ' '. $plugin_tx['calendar']['notice_today'] : ''; + + + $o .= '
    \n"; + + if($i == $days && $span2 > 0) $o .= "\n"; + if($dayofweek == 6 || $i == $days) $o .= "\n"; + + //resetting all variables + $calendar_eventday = ''; + $calendar_birthday = ''; + $linkstart = ''; + $linkend = ''; + $event_title = ''; + $event_popup_with_time = ''; + $event_popup = ''; + $border = ''; + $borderstartevent = ''; + $bordermidevent = ''; + $borderendevent = ''; + $popup_class = ''; + $birthday = ''; + $age = ''; + $holiday = ''; + $dayname = ''; + $day_name = ''; + $bigcal_txt = ''; + $shortevent3 = ''; + $startevent3 = ''; + $midevent3 = ''; + $endevent3 = ''; + $event_titles = array(); + $bigcal_txts = array(); + $event_popups = array(); + $timesorting = array(); + + endfor; + + $o .= "
    \n"; + $display_year = (!$one_year_only || $year != date("Y"))? true : false; + if($columns) $display_year = !$one_year_only; + $monthyear = $display_year? $textmonth.' '.$year : $textmonth; + + if($navigation && !$extramonths && !$columns) { + if($month <= 1){$month_prev = 12; $year_prev = $year - 1;} + else {$month_prev = $month - 1; $year_prev = $year;} + if($month >= 12){$month_next=1; $year_next = $year + 1;} + else {$month_next = $month + 1; $year_next = $year;} + // provide correct href in case calendar is called via admin + $hrefpart = $admxx ? "&calendar&admxx=$admxx" : "$su"; + + if($year_prev + 2 > date("Y")) { + $calhead = "\n" + . "‹‹  " : "'><<"; + $calhead .= ''; + } else { + $calhead = "\n".'    '; + } + + $calhead .= " $monthyear "; + + if($year_prev - 2 < date("Y")) { + $calhead .= "  ››" : "'>>>"; + $calhead .= ''; + } else { + $calhead .= "\n".'    '; + } + + } else { + // adding an empty line when months are displayed one under another without columns + $calhead = (!$columns && $extramonths)? tag('br').$monthyear:$monthyear; + } + + if($size && $j=$calendar_cf['bigcalendar_month_year_headline_style']) { + $o .= "
    <$j class='bigcalendar_monthyear_color'>$calhead
    \n"; + } elseif ($size) { + $o .= "
    $calhead
    \n"; + } else $o .= "
    $calhead
    \n"; + + $o .="
    $dayarray[$j]$dayarray[$j]
     ' + . $linkstart + . $tableday + . $headnotice + . $linkend + . $bigcalendar + . " 
    \n"; + if($columns) $o .= "
    \n"; +$o .= $size? '

    ' . $plugin_tx['calendar']['hint_mouseover_in_calendar'] . "

    \n" : ''; + +$o .= "\n\n\n\n"; diff --git a/includes/calendarconfig.php b/includes/calendarconfig.php new file mode 100644 index 0000000..9c68d26 --- /dev/null +++ b/includes/calendarconfig.php @@ -0,0 +1,872 @@ + $calendartemplate, + 'bigcalendar_write_time' => $writetime, + 'bigcalendar_write_event' => $writeevent, + 'bigcalendar_write_entry3' => $writeentry3, + 'bigcalendar_write_entry1' => $writeentry1, + 'bigcalendar_anniversary_write_entry3' => $birthdayentry3, + 'bigcalendar_anniversary_write_age' => $birthdayage, + 'bigcalendar_line_between_entries' => $linebetween, + 'bigcalendar_symbol_if_no_time_given' => $notimesymbol, + 'calendar-popup_big' => $smallcalpopup, + 'titleattributepopup_entry3' => $entry3popup, + 'bigcalendar_month_year_headline_style' => $headline, + 'dont_underline_longevents' => $underlongevent, + ), + $configfile,1); + //save the values + $config_ok = file_put_contents($pth['folder']['plugins'] . $plugin . '/config/config2.php',$configfile); + $error .= $config_ok? '': $plugin_tx['calendar']['error_could_not_change_config_file'].', '; + //and get the changed config values again + include ($pth['folder']['plugins'] . $plugin .'/config/config2.php'); + + + // language file + //================ + $languagefile = file_get_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php"); + $languagefile = changevalue( + array( + 'hint_mouseover_in_calendar' => $hintmouseover, + ), + $languagefile,2); + $lang_ok = file_put_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php",$languagefile); + $error .= $lang_ok? '' : $plugin_tx['calendar']['error_could_not_change_language_file'].', '; + + include ($pth['folder']['plugins'] . $plugin ."/languages/$sl.php"); + + // css-values + //============= + $nowrapdata = $nowrap? 'nowrap' : 'normal'; + if(get_magic_quotes_gpc()) { + $headlineconfig = "\n" . trim(stripslashes($headlineconfig)) . "\n"; + $daynameconfig = "\n" . trim(stripslashes($daynameconfig)) . "\n"; + $todaynameconfig = "\n" . trim(stripslashes($todaynameconfig)) . "\n"; + } + $csseventdaybold = $eventdaybold? 'bold' :''; + $csstodaybold = $todaybold? 'bold' :''; + $bordercollapse = $dayspacing=='0px'? 'collapse':'separate'; + $dayfieldborder = $dfbwidth .' '.$dfbstyle.' '.$dfbcolor; + + $cssfile = changevalue(array( + 'a1' => $normaldaycolor, + 'a2' => $weekendcolor, + 'a3' => $holidaycolor, + 'a4' => $eventdaycolor, + 'a5,!im' => $eventdaybgcolor, + 'a6' => $underlongcolor, + 'a7' => $underlongwidth, + 'a8' => $mark2color, + 'a9' => $mark2width, + 'a10' => $csseventdaybold, + + 'c1' => $headlinecolor, + 'c2' => $backgroundcolor, + 'c3,url' => $backgroundimage, + 'c4' => $bordercolor, + 'c5' => $borderwidth, + 'c6' => $dayspacing, + 'c7' => $nowrapdata, + 'c10' => $daynamespadtop, + 'c11' => $daynamespadbot, + 'c13' => $dayheight, + 'c14' => $topmargin, + 'c18' => $daynames, + 'c19,!im' => $birthdayfield, + 'c20' => $roundcorners, + 'c21' => $shadow, + 'c22' => $opacitynoevent, + 'c31,sU' => $headlineconfig, + 'c32,sU' => $daynameconfig, + 'c33,sU' => $todaynameconfig, + 'c34' => $bigcalfont, + 'c35' => $bigcalfontsize, + 'c36' => $dayfieldborder, + 'c37' => $bordercollapse, + 'c38' => $dayfieldpadding, + + 'sc1' => $smallcallineheight, + 'sc2' => $smallcalfont, + 'sc3' => $smallcalfontsize, + 'sc4,url!' => $birthdayimage, + 'sc5' => $todaycolor, + 'sc6,!im' => $todaybgcolor, + 'sc7' => $csstodaybold, + + 'p1' => $popupbordercolor, + 'p2' => $popupborderwidth, + 'p3' => $popupbackground, + 'p4' => $popupfont, + 'p5' => $popupfontsize, + ),$cssfile); + + if(strlen($cssfile) > ($cssfilelength - 500)) //to prevent accidental erasure of css-file + { + $css_ok = file_put_contents($pth['folder']['plugins'] . '/calendar/css/stylesheet.css',$cssfile); + + //trying to make the browser read the file without caching + $x = rand (1,100); + $hjs .= ''."\n" + . ''."\n"; + } else $css_ok = FALSE; + + $error .= $css_ok===FALSE? $plugin_tx['calendar']['error_could_not_change_css_file'].', ' : ''; + $error = trim($error, ', '); + if (!$css_ok || !$lang_ok || !$config_ok) { + $notice .= '

    ' . $plugin_tx['calendar']['error_occured'] . ': ' . $error . "

    \n"; + } + +} + +$nowrapchecked = $nowrap ? 'checked="checked"' : ''; +$writetimechecked = $calendar_cf['bigcalendar_write_time'] ? 'checked="checked"' : ''; +$writeeventchecked = $calendar_cf['bigcalendar_write_event'] ? 'checked="checked"' : ''; +$writeentry3checked = $calendar_cf['bigcalendar_write_entry3'] ? 'checked="checked"' : ''; +$writeentry1checked = $calendar_cf['bigcalendar_write_entry1'] ? 'checked="checked"' : ''; +$birthdayentry3checked = $calendar_cf['bigcalendar_anniversary_write_entry3'] ? 'checked="checked"' : ''; +$birthdayagechecked = $calendar_cf['bigcalendar_anniversary_write_age']? 'checked="checked"' : ''; +$linebetweenchecked = $calendar_cf['bigcalendar_line_between_entries']? 'checked="checked"' : ''; +$smallcalpopupchecked = $calendar_cf['calendar-popup_big']? 'checked="checked"' : ''; +$entry3popupchecked = $calendar_cf['titleattributepopup_entry3']? 'checked="checked"' : ''; +$underlongeventchecked = $calendar_cf['dont_underline_longevents']? 'checked="checked"' : ''; +$eventdayboldchecked = $eventdaybold? 'checked="checked"' : ''; +$todayboldchecked = $todaybold? 'checked="checked"' : ''; + + +// set choosen template for bigcalendar view +if ($calendar_cf['test_calendar_template']) { + $cf['site']['template'] = $calendar_cf['test_calendar_template']; + $pth['folder']['template'] = $pth['folder']['templates'].$cf['site']['template'].'/'; + $pth['file']['template'] = $pth['folder']['template'].'template.htm'; + $pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css'; + $pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/'; + $pth['folder']['templateimages'] = $pth['folder']['template'].'images/'; +} else { + include ($pth['file']['config']); +} + +//============================= +// start producing html data +//============================= + +// js file for color picker +$hjs .= ''; + +//calling toggle function +$hjs .= ''."\n"; + +$o .= $notice; + +$o .= "
    \n"; +$o .= tag('input type="hidden" value="calendarconfig" name="calendarconfig"') . "\n"; + + + +//==================================== +//************************************ +// +// big calendar settings +// +//************************************ +//==================================== + +$hide = $calendar_cf['show_bigcalendar_config']? '':' style="display:none;"'; +$o .= '
    '; +$o .= '
    '; + +$o .= '

    ' + . $plugin_tx['calendar']['config_bigcalendar'] + . '

    '."\n"; + + +//select a template +$o .= '
    ' + . templateSelect($calendar_cf['test_calendar_template'],'calendartemplate') + . $plugin_tx['calendar']['config_template'] + . "
    \n"; + + +//background +//================== +//find the path (code from php.net/manual/en/function.realpath.php User Contributions) +$relativePath = $pth['folder']['plugins'].'calendar/css/'.$plugin_cf['calendar']['filepath_calendar_background_images']; +$pattern = '/\w+\/\.\.\//'; +while(preg_match($pattern,$relativePath)){ + $relativePath = preg_replace($pattern, '', $relativePath); +} + +$handle=opendir($relativePath); +$images = array(); +while (false !== ($file = readdir($handle))) { + if($file != "." && $file != ".." && substr($file,-3)!='gif') { + $images[] = $file; + } + } +closedir($handle); +natcasesort($images); +$images_select = ''; +foreach($images as $file){ + $selected = ''; + if($backgroundimage == $file) {$selected = ' selected';} + $images_select .= "\n"; +} +$o .= '
    ' + . "' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $backgroundcolor . '" name="backgroundcolor"') + . $plugin_tx['calendar']['config_background_or_color'] + . "
    \n"; + + + +//border +$j=0; +$values_select = ''; +for ($i = 0;$i <=15 ;$i++ ) { + $selected = ''; + if($i.'px' == $borderwidth) {$selected = ' selected'; $j = 1;} + $values_select .= "\n".''; +} +// in case the css file contains a value outside the given range, this value will be shown +$preselect = $j? '' : ''; + +$o .= '
    ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $bordercolor . '" name="bordercolor"') + . '' + . $plugin_tx['calendar']['config_border_color_width'] + . "
    \n"; + + + +$o .= '
    '; + + +// month-year headline styling + color +$j=0; +$values_select = ''; +for ($i = 1;$i <=6 ;$i++ ) { + $selected = ''; + if('h'.$i == $headline) {$selected = ' selected'; $j = 1;} + $values_select .= "\n"; +} +$preselect = ''; +if(!$j) $preselect .= ''; +if($headline) $preselect .= ''; +$o .= '
    ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $headlinecolor . '" name="headlinecolor"') + . '' + . $plugin_tx['calendar']['config_headline_style'] + . "
    \n"; + +// margin top +$o .= '
    ' + . tag('input type="text" value="' + . $topmargin . '" name="topmargin" style="width:4em"') + . '' + . $plugin_tx['calendar']['config_margin-top'] + . '' + . "
    \n"; + +// more headline css +$o .= '
    ' + . $plugin_tx['calendar']['config_headline_more_css']; +$o .= tag('input type="button" value="+" class="calendar_edit_off" id="headlineconfig_button" style="margin-left:0;" + onclick=\'openedit("headlineconfig_button","headlineconfig","–","+","block");\''); +$o .= "
    \n"; + +$o .= '
    '; +$o .= ''; +$o .= "
    \n"; + + + +$o .= '
    '; + + + +//color of weekday names +$o .= '
    ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $daynames . '" name="daynames"') + . $plugin_tx['calendar']['config_day_name_color'] + . "
    \n"; + +//padding around weekend names +$o .= '
    ' + . tag('input type="text" value="' + . $daynamespadtop . '" name="daynamespadtop" style="width:3em"') + . tag('input type="text" value="' + . $daynamespadbot . '" name="daynamespadbot" style="width:3em"') + . '' + . $plugin_tx['calendar']['config_weekdaynames_padding'] + . '' + . "
    \n"; + + +// more weekday names css +$o .= '
    ' + . $plugin_tx['calendar']['config_day_names_more_css']; +$o .= tag('input type="button" value="+" class="calendar_edit_off" id="daynameconfig_button" style="margin-left:0;" + onclick=\'openedit("daynameconfig_button","daynameconfig","–","+","block");\''); +$o .= "
    \n"; + +$o .= '
    '; +$o .= '' +// . '
    ' . $plugin_tx['calendar']['config_more'] . '
    ' + . ''; +$o .= "
    \n"; + + + +$o .= '
    '; + + + +// day box height +$o .= '
    ' + . tag('input type="text" value="' + . $dayheight . '" name="dayheight" style="width:4em"') + . $plugin_tx['calendar']['config_day_field_height'] + . "
    \n" ; + + + +// day field border +list($dfbwidth,$dfbstyle,$dfbcolor)=explode(' ',$dayfieldborder); + +$j=0; +$values_select = ''; +for ($i = 0;$i <=4 ;$i++ ) { + $selected = ''; + if($i.'px' == $dfbwidth) {$selected = ' selected'; $j = 1;} + $values_select .= "\n".''; +} +$preselect = $j? '' : ''; + +$o .= '
    ' + . ''; + +$dottedselect = $dfbstyle=='dotted'? ' selected':''; +$solidselect = $dfbstyle=='solid'? ' selected':''; +$dashedselect = $dfbstyle=='dashed'? ' selected':''; + +$o .= '' + . $preselect . $values_select + . '' + . $plugin_tx['calendar']['config_dayfield_padding'] + . "
    \n"; + + +//day border spacing + day border collapse Combination +$j=0; +$spacingvalues_select = ''; +for ($i = 0;$i <=50 ;$i++ ) { + $selected = ''; + if($i.'px' == $dayspacing) {$selected = ' selected'; $j = 1;} + $spacingvalues_select .= "\n"; +} +$preselect = $j? '' : ''; +if($bordercollapse=='collapse' || !$dayspacing) $preselect = "\n"; +$o .= '
    ' + . "\n" . '' + . $plugin_tx['calendar']['config_day_border_spacing'] + . "
    \n"; + + +//round corners of day boxes +$o .= '
    ' + . tag('input type="text" value="' + . $roundcorners . '" name="roundcorners" style="width:8em"') + . ''.$plugin_tx['calendar']['config_roundcorners'] .'' + . "
    \n"; + +//shadow of day boxes +$o .= '
    ' + . tag('input type="text" value="' + . $shadow . '" name="shadow" style="width:10em"') + . ''.$plugin_tx['calendar']['config_shadow'] .'' + . "
    \n"; + +//opacity for day without event +$j=0; +$opacity_select = ''; +for ($i = 0;$i < 1 ;$i = $i + 0.1 ) { + $selected = ''; + if($i == $opacitynoevent) {$selected = ' selected'; $j = 1;} + $opacity_select .= "\n\t".''; +} +// in case the css file contains a value outside the given range, this value will be shown +$preselect = $j? '' : ''; + +$o .= '
    ' + . "\n" . '' + . $plugin_tx['calendar']['config_opacity_no_event'] + . "
    \n"; + + +//birthday background +$o .= '
    ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $birthdayfield . '" name="birthdayfield"') + . $plugin_tx['calendar']['config_birthday_in_dayfield'] + . "
    \n"; + + + + +$o .= '
    '; + + +// nowrap of event entry text in date fields +$o .= '
    ' + . tag('input type="checkbox" '.$nowrapchecked.' value="1" name="nowrap"') + . $plugin_tx['calendar']['config_one_line_per_entry'] + . "
    \n"; + +// details to be displayed in the calendar +$o .= '
    ' + . tag('input type="checkbox" '.$linebetweenchecked.' value="1" name="linebetween"') + . $plugin_tx['calendar']['config_line_between_events_in_bigcalendar'] + . "
    \n"; + +$o .= '
    ' + . tag('input type="checkbox" '.$writetimechecked.' value="1" name="writetime"') + . $plugin_tx['calendar']['event_time'] + . "
    \n"; + +// symbol for entries without time when time is supposed to be displayed +$j=0; +$values_select = ''; +foreach (array('','@','–','—','•','·','♠','♣','♥','♦') as $keys=>$value ) { + $selected = ''; + if($value == $calendar_cf['bigcalendar_symbol_if_no_time_given']) {$selected = ' selected'; $j = 1;} + $values_select .= "\n".''; +} +$o .= '
    ' + . '' + . $plugin_tx['calendar']['config_symbol_when_no_time_is_given'] + . "
    \n"; + + +$o .= '
    ' + . tag('input type="checkbox" '.$writeentry1checked.' value="1" name="writeentry1"') + . $plugin_tx['calendar']['event_entry1'] + . "
    \n"; + +$o .= '
    ' + . tag('input type="checkbox" '.$writeeventchecked.' value="1" name="writeevent"') + . $plugin_tx['calendar']['event_main_entry'] + . "
    \n"; + +$o .= '
    ' + . tag('input type="checkbox" '.$writeentry3checked.' value="1" name="writeentry3"') + . $plugin_tx['calendar']['event_entry3'] + . "
    \n"; + +$o .= '
    ' + . tag('input type="checkbox" '.$birthdayentry3checked.' value="1" name="birthdayentry3"') + . $plugin_tx['calendar']['event_entry3'] . ' ('. $plugin_tx['calendar']['config_birthday'] . ')' + . "
    \n"; + +$o .= '
    ' + . tag('input type="checkbox" '.$birthdayagechecked.' value="1" name="birthdayage"') + . $plugin_tx['calendar']['config_birthday_age'] + . "
    \n"; + +// font +$o .= '
    '.selectFont('bigcalfont',$bigcalfont,'bigcalfontsize',$bigcalfontsize)."
    \n";; + +// mouse over hint +$o .= '
    ' + . $plugin_tx['calendar']['config_hint'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['hint_mouseover_in_calendar'] . '" name="hintmouseover" style="width:28em"') + . "
    \n"; + +$o .= '
    '; + + +//==================================== +//************************************ +// +// small calendar settings +// +//************************************ +//==================================== + +$hide = $calendar_cf['show_smallcalendar_config']? '':' style="display:none;"'; +$o .= "
    \n"; +$o .= '
    '; + +// headline "small calendar" +$o .= '

    ' + . $plugin_tx['calendar']['config_small_calendar'] + . '

    '; + +// font +$o .= '
    '.selectFont('smallcalfont',$smallcalfont,'smallcalfontsize',$smallcalfontsize,'smallcallineheight',$smallcallineheight) + . $plugin_tx['calendar']['config_lineheight'] . "
    \n";; + +// normal day +$o .= '
    1) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $normaldaycolor . '" name="normaldaycolor"') + . $plugin_tx['calendar']['config_normalday'] + . "
    \n"; + +// weekend +$o .= '
    2) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $weekendcolor . '" name="weekendcolor"') + . $plugin_tx['calendar']['config_weekend'] + . "
    \n"; + +// holiday +$o .= '
    3) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $holidaycolor . '" name="holidaycolor"') + . $plugin_tx['calendar']['config_holiday'] + . "
    \n"; + + +// event day +$o .= '
    4) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $eventdaycolor . '" name="eventdaycolor"') + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $eventdaybgcolor . '" name="eventdaybgcolor"') + . $plugin_tx['calendar']['config_eventday'] + . ' ' + . tag('input type="checkbox" '.$eventdayboldchecked.' value="1" name="eventdaybold"') + . $plugin_tx['calendar']['config_bold'] . ' ' + . "
    \n"; + + +// longevent underline +$j=0; +$values_select = ''; +for ($i = 0;$i <=4 ;$i++ ) { + $selected = ''; + if($i.'px' == $underlongwidth) {$selected = ' selected'; $j = 1;} + $values_select .= "\n\t".''; +} +// in case the css file contains a value outside the given range, this value will be shown +$preselect = $j? '' : ''; + +$o .= '
    6) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $underlongcolor . '" name="underlongcolor"') + . '' + . sprintf($plugin_tx['calendar']['config_underline_longevent'] + , tag('input type="checkbox" '.$underlongeventchecked.' value="1" name="underlongevent"')) + . "
    \n"; + + +// alternative marking "mark2" +$j=0; +$values_select = ''; +for ($i = 0;$i <=4 ;$i++ ) { + $selected = ''; + if($i.'px' == $mark2width) {$selected = ' selected'; $j = 1;} + $values_select .= "\n\t".''; +} +// in case the css file contains a value outside the given range, this value will be shown +$preselect = $j? '' : ''; + +$o .= '
    5) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $mark2color . '" name="mark2color"') + . '' + . $plugin_tx['calendar']['config_mark2'] + . "
    \n"; + + +// birthday +$handle=opendir($relativePath); +$images = array(); +while (false !== ($file = readdir($handle))) { + if(substr($file,-3) == 'gif') { + $images[] = $file; + } + } +closedir($handle); +natcasesort($images); +$images_select = ''; +foreach($images as $file){ + $selected = ''; + if($birthdayimage == $file) {$selected = ' selected';} + $images_select .= "\n"; +} +$o .= '
    7) ' + . "' + . $plugin_tx['calendar']['config_birthday_image'] + . "
    \n"; + + + +// today +$o .= '
    8) ' + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $todaycolor . '" name="todaycolor"') + . tag('input type="text" class="color {pickerPosition:\'left\'}" value="' + . $todaybgcolor . '" name="todaybgcolor"') + . $plugin_tx['calendar']['config_today_background'] + . ' ' + . tag('input type="checkbox" '.$todayboldchecked.' value="1" name="todaybold"') + . $plugin_tx['calendar']['config_bold'] . ' ' + . "
    \n"; + + + + + + + +$o .= '
    '; + + + +//==================================== +//************************************ +// +// pop-up settings +// +//************************************ +//==================================== + +$hide = $calendar_cf['show_popup_config']? '':' style="display:none;"'; +$o .= "'; + + + + +//============== +// save +//============== +if($calendar_cf['show_popup_config'] || $calendar_cf['show_smallcalendar_config'] || $calendar_cf['show_bigcalendar_config']) { + $o .= '
    ' + . tag('input type="submit" value="'.$plugin_tx['calendar']['menu_save_config'].'"') + . "
    \n"; +} + + +$o .= "
    "; diff --git a/includes/editevents.php b/includes/editevents.php new file mode 100644 index 0000000..578439b --- /dev/null +++ b/includes/editevents.php @@ -0,0 +1,380 @@ +" + . $plugin_tx['calendar']['error_file_name_wrong'] + . ''; + } else { + $saving_notice = saveEventFile($events,$file,$standardmode); + } + $o .= listFiles() + . closeFileViewButton() + . eventForm($events,$saving_notice,$file,$standardmode,$calendar2); + +} elseif($delete) { + array_splice($events,($dataset-1),1); + $saving_notice = '' + . $plugin_tx['calendar']['notice_deleted'] + . '' + . saveEventFile($events,$file,$standardmode); + + $o .= eventForm($events,$saving_notice,$file,$standardmode,$calendar2); + +} elseif($add) { + + $entry = array( + 'no_marquee' => FALSE, + 'datestart' => '', + 'starttime' => '', + 'dateend' => '', + 'endtime' => '', + 'dailytimes' => FALSE, + 'event' => '', + 'event_entry3'=> '', + 'event_entry1'=> '', + 'multievent' => FALSE, + 'additional' => '', + 'weekly' => FALSE, + 'weekday' => 0, + 'exceptions' => '', + 'yearly' => FALSE, + 'yearly2' => FALSE, + 'linkicon' => TRUE, + 'linkint' => '', + 'linkadd' => '', + 'linktxt' => '', + 'infoicon' => 1, + 'infotxt' => '', + 'description' => '', + 'bookedout' => FALSE, + 'mark2' => FALSE + ); + array_splice($events,$dataset,0,array($entry)); + $saving_notice = '' + . $plugin_tx['calendar']['notice_added'] + . '' + . saveEventFile($events,$file,$standardmode); + + $o .= eventForm($events,$saving_notice,$file,$standardmode,$calendar2); + +} elseif($change || $add || $copy) { + + $newevent = array(); + $weekday = array(); + $linkadd = array(); + + $j = $dataset; + + // filling missing indices + if (!isset($no_marquee[$j])) $no_marquee[$j] = ''; + if (!isset($datestart[$j])) $datestart[$j] = ''; + if (!isset($dateend[$j])) $dateend[$j] = ''; + if (!isset($starttime[$j])) $starttime[$j] = ''; + if (!isset($endtime[$j])) $endtime[$j] = ''; + if (!isset($dailytimes[$j])) $dailytimes[$j] = ''; + if (!isset($event[$j])) $event[$j] = ''; + if (!isset($event_entry3[$j])) $event_entry3[$j] = ''; + if (!isset($event_entry1[$j])) $event_entry1[$j] = ''; + if (!isset($weekly[$j])) $weekly[$j] = ''; + if (!isset($exceptions[$j])) $exceptions[$j] = ''; + if (!isset($additional[$j])) $additional[$j] = ''; + if (!isset($yearly[$j])) $yearly[$j] = ''; + if (!isset($yearly2[$j])) $yearly2[$j] = ''; + if (!isset($linkicon[$j])) $linkicon[$j] = ''; + if (!isset($linkint[$j])) $linkint[$j] = ''; + if (!isset($linkadr[$j])) $linkadr[$j] = ''; + if (!isset($linktxt[$j])) $linktxt[$j] = ''; + if (!isset($infoicon[$j])) $infoicon[$j] = ''; + if (!isset($infotxt[$j])) $infotxt[$i] = ''; + if (!isset($description[$j])) $description[$j] = ''; + if (!isset($bookedout[$j])) $bookedout[$j] = ''; + if (!isset($mark2[$j])) $mark2[$j] = ''; + if (!isset($test[$j])) $test[$j] = ''; + + + //expanding single digit day, months and double digit years (in case datepicker is off) + $datestart[$j] = preg_replace(array( + '/([\.|\-|\/])(\d)[\.|\-|\/]/e', //single digit months + '/([\.|\-|\/])(\d\d)$/e', //double digit years + '/^(\d)([\.|\-|\/])/e' //single digit days + ), + array( + "dpSeperator().'0$2'. dpSeperator()", + "dpSeperator().'20$2'", + "'0$1'.dpSeperator()" + ), + $datestart[$j]); + $dateend[$j] = preg_replace(array( + '/([\.|\-|\/])(\d)[\.|\-|\/]/e', //single digit months + '/([\.|\-|\/])(\d\d)$/e', //double digit years + '/^(\d)([\.|\-|\/])/e' //single digit days + ), + array( + "dpSeperator().'0$2'. dpSeperator()", + "dpSeperator().'20$2'", + "'0$1'.dpSeperator()" + ), + $dateend[$j]); + //Checking the date format. Entering ?, ??, -, -- is permitted. Some impossible dates can be given, but don't crash the plugin. + $pattern = '/[\d\d\|\?{1-2}|\-{1-2}]\\'.dpSeperator().'\d\d\\'.dpSeperator().'\d*$/'; + if (!preg_match($pattern,$datestart[$j])) $datestart[$j] = ""; + if (!preg_match($pattern,$dateend[$j])) $dateend[$j] = ""; + + + // check exception dates + if($exceptions[$j]) { + $dates = explode(",",$exceptions[$j]); + foreach ($dates as $key => $value) { + $dates[$key] = trim($value); + list($day,$month,$year) = explode(dpSeperator(),$dates[$key]); + $timestamp = mktime(null,null,null,$month,$day,$year); + //exceptions must be later than the event start + if($timestamp > $event_start_timestamp) { + $dates[$key] = date('d' .dpSeperator(). 'm' .dpSeperator() . 'y', $timestamp) ; + } else $dates[$key] =false; + } + //taking out not accepted values + $dates = array_filter($dates); + $exceptions[$j] = implode(", ",$dates); + //$exceptions = 'test'; + } + + // check additional dates + if($additional[$j]) { + $dates = explode(",",$additional[$j]); + foreach ($dates as $key => $value) { + $addeventfull = ''; + $dates[$key] = trim($value); + list($day,$month,$year) = explode(dpSeperator(),$dates[$key]); + if (substr($year,-1)=='*') { + $addeventfull = '*'; + $year = trim($year,'*'); + } + $timestamp = mktime(null,null,null,$month,$day,$year); + //exceptions must be later than the event start + if($timestamp > $event_start_timestamp) { + $dates[$key] = date('d' .dpSeperator(). 'm' .dpSeperator() . 'y', $timestamp).$addeventfull ; + } else $dates[$key] =false; + } + //taking out not accepted values + $dates = array_filter($dates); + $additional[$j] = implode(", ",$dates); + //$exceptions = 'test'; + } + + + + //If the same date is entered as beginning and as end, the end date is superfluous and will be erased + if ($datestart[$j]==$dateend[$j]) $dateend[$j] = ""; + + //events are limited to 10 years in order to make a stop somewhere + if ((substr($dateend[$j],-4,4) - substr($datestart[$j],-4,4))>10) $dateend[$j] = ''; + + //if weekly and yearly are both checked, one has to be unchecked + if ($weekly[$j] && ($yearly[$j] || $yearly2[$j]) && $dateend[$j]) {$yearly[$j] = FALSE; $yearly2[$j] = FALSE;} + if ($weekly[$j] && ($yearly[$j] || $yearly2[$j]) && !$dateend[$j]) $weekly[$j] = FALSE; + + //dailytimes allowed only in multiday events + if ($dailytimes[$j] && $weekly[$j]) $dailytimes[$j] = FALSE; + if ($dailytimes[$j] && ($yearly[$j] || $yearly2[$j])) $dailytimes[$j] = FALSE; + + // yearly events can last only 1 day (could be changed but needs more changes elsewhere) + if (($yearly[$j] || $yearly2[$j]) && $dateend[$j]) $dateend[$j] = ''; + // yearly either with age calculation or without, file encoding doesn't allow both + if ($yearly[$j] && $yearly2[$j]) $yearly2[$j] = ''; + + + //in case the user gave a link without link text nor icon, icon will be set as "on" + if ($linkadr[$j] && !$linktxt[$j]) $linkicon[$j]= TRUE; + + //eliminating superfluous http:// + $linkadr[$j] = str_replace ('http://','',$linkadr[$j]); + + // converting $linkadr, which may be just page names or file names to $linkadd ready for saving + $linkadd[$j] = ''; + if ($linkadr[$j]) { + $links = explode('|', $linkadr[$j]); + foreach ($links as $key=>$value) { + $linkadd[$j] .= $linkadd[$j]? '|':''; + $linktype = findLinkType($value); + if($linktype=='in?:' || $linktype=='int:') $value = pagenameToUrl($value); + // urlencode only the filename, not the address + if($linktype=='pdf:' || $linktype=='pfx:' || $linktype=='doc:') { + if(strpos($value,'/')) { + $value = substr($value, 0, strrpos($value,'/')+1) . rawurlencode(substr($value,strrpos($value,'/')+1)); + } else $value = rawurlencode($value); + } + $linkadd[$j] .= $linktype . $value; + } + } + + + //Converting time data xx.xx to xx:xx and x:xx to 0x:00 + $starttime[$j] = preg_replace('#(\d?\d)\.(\d{2})#','\1:\2',$starttime[$j]); + $starttime[$j] = preg_replace('#^(\d)\:(\d{2})#','0\1:\2', $starttime[$j]); + $endtime[$j] = preg_replace('#(\d?\d)\.(\d{2})#','\1:\2',$endtime[$j]); + $endtime[$j] = preg_replace('#^(\d)\:(\d{2})#','0\1:\2', $endtime[$j]); + + // deleating linebreaks + $description[$j] = str_replace(array(chr(10),chr(13)),'',$description[$j]); + // cleaning a bit the output of ckeditor + $description[$j] = preg_replace('#>\s+#','> ',$description[$j]); + + //deleating empty lines at the end of an entry (spaces in the regex are  ) + if($plugin_cf['calendar']['editor_deletes_empty_lines_at_the_end']) { + $description[$j] = preg_replace( + array( + '!( )*

    $!', + '!(

     <\/p>)*$!', + '!(( )?)*(

    ( )?<\/p>)*(( )?)*$!', + '!(\s*

     <\/p>\s*)+$!', + '! *$!', + ), + array( + '

    ', + '', + '', + '', + '', + ), + $description[$j] + ); + } + + //filling the array, deleting "," and ";" which would break the file structure + $entry = array( + 'no_marquee' => $no_marquee[$j], + 'datestart' => str_replace(';',' ',$datestart[$j]), + 'starttime' => str_replace(array(';',','),' ',$starttime[$j]), + 'dateend' => str_replace(';',' ',$dateend[$j]), + 'endtime' => str_replace(array(';',','),' ',$endtime[$j]), + 'dailytimes' => $dailytimes[$j], + 'event_entry1'=> stsl(str_replace(';',' ',$event_entry1[$j])), + 'event' => stsl(str_replace(';',' ',$event[$j])), + 'event_entry3'=> stsl(str_replace(';',' ',$event_entry3[$j])), + 'weekly' => $weekly[$j], + 'exceptions' => str_replace(';',' ',$exceptions[$j]), + 'additional' => str_replace(';',' ',$additional[$j]), + 'yearly' => $yearly[$j], + 'yearly2' => $yearly2[$j], + 'linkicon' => $linkicon[$j], + 'linkint' => $linkint[$j], + 'linkadd' => str_replace(array(';',','),' ',$linkadd[$j]), + 'linktxt' => stsl(str_replace(array(';',','),' ',$linktxt[$j])), + 'infoicon' => $infoicon[$j], + 'infotxt' => stsl(str_replace(';',' ',$infotxt[$j])), + 'description' => stsl($description[$j]), + 'bookedout' => $bookedout[$j], + 'mark2' => $mark2[$j] + ); + + array_splice($events,($dataset-1),1,array($entry)); + if($copy) array_splice($events,$dataset,0,array($entry)); + + foreach($events as $j => $i){ + + // finding out on which day of the week a weekly event starts + // used for SORTING ALL events according to $weekday + + if (!isset($events[$j]['datestart'])) $events[$j]['datestart'] = ''.dpSeperator().''.dpSeperator().''; + if (!isset($events[$j]['weekly'])) $events[$j]['weekly'] = ''; + if (!isset($events[$j]['additional'])) $events[$j]['additional'] = ''; + if (!isset($events[$j]['yearly'])) $events[$j]['yearly'] = ''; + if (!isset($events[$j]['yearly2'])) $events[$j]['yearly2'] = ''; + + @list($day,$month,$year) = explode( dpSeperator(), $events[$j]['datestart']); + $event_start_timestamp = mktime(null,null,null,(int)$month,(int)$day,(int)$year); + if ($events[$j]['weekly']) { + $events[$j]['weekday'] = date('w',$event_start_timestamp); + //sort first weekly events on sundays + + } elseif ($events[$j]['yearly'] || $events[$j]['yearly2']) { + $events[$j]['weekday']=7; + // sort next yearly events + + } elseif ($events[$j]['additional']) { + $events[$j]['weekday']=8; + // sort next multiple events + + } else $events[$j]['weekday']=9; + // sort last single one off events according to start time + + } + + + // sorting new event inputs, an idea of manu, communicated in the CMSimple forum + // sorting will be done only on saving the event file + + usort($events,'dateSort'); + + $change_notice = $copy? $plugin_tx['calendar']['notice_copied']:$plugin_tx['calendar']['notice_changed']; + $saving_notice = '' + . $change_notice + . '' + . saveEventFile($events,$file,$standardmode); + + $o .= eventForm($events,$saving_notice,$file,$standardmode,$calendar2); +} + diff --git a/includes/eventform.php b/includes/eventform.php new file mode 100644 index 0000000..528f619 --- /dev/null +++ b/includes/eventform.php @@ -0,0 +1,1041 @@ +\n\n"; + +// Security check +if ((!function_exists('sv')))die('Access denied'); + + +// which editor? +//if html is set in plugin config, don't use any editor +$calendareditor = $plugin_cf['calendar']['editor']=='html'? '':$calendareditor; +//otherwise prepare the use of either fckeditor, ckeditor, tinymce +if ($calendareditor == 'fckeditor'){ + include_once ($pth['folder']['plugins'].'calendar/fckeditor/fckeditor_for_calendar.php'); + // is called at the end of this file just after the "description"-field +} elseif ($calendareditor == 'ckeditor') { + include_once($pth['folder']['plugins'].'calendar/editorconfigs/ckeditorconfig_for_calendar.php'); + init_editor(array('description'),$ckconfig); +// this is for any other editor except tinymce. Depending on the editor it may not work, therefore plugin config can override this +} elseif ($calendareditor && $calendareditor != 'tinymce') { + init_editor(array('description'),'minimal'); +} + +// calling tinyMCE, if set. (coding idea from cmb) +// Part of the initialization already done in index.php outside this function +if ($calendareditor == 'tinymce'){ + include_tinymce(); + include_once($pth['folder']['plugins'].'calendar/editorconfigs/tinymceconfig_for_calendar.php'); + $hjs .= ''."\n"; + +// calling the date picker, if set in config +if ($plugin_cf['calendar']['date_picker']){ + $hjs .= ''."\n"; + $hjs .= tag('link rel="stylesheet" type="text/css" href="' . $pth['folder']['plugins'] . $plugin . '/dp/datepicker.css"')."\n"; +} + +// getting the button-images +$imageFolder = $pth['folder']['plugins'] . $plugin . "/images"; + +// links to downloads folder from secondary language: filepaths must start from the main language +$root = $sl!=$cf['language']['default']? 'http://'.$_SERVER['SERVER_NAME'].CMSIMPLE_ROOT : '' ; + + + +// now information is prepared for the user +//================================================= + +// number of events not necessary when $saving_notice is given as this also gives the number of events +$number_of_events = $saving_notice? '' : count($events) . ' ' .$plugin_tx['calendar']['notice_event_entries']; + +// Informing the user in which fields simple markup works +$formatfields = "\n" + . $plugin_tx['calendar']['hint_formattable_fields'] + . "\n". tag('br') + . $plugin_tx['calendar']['event_entry1'] . ', ' + . $plugin_tx['calendar']['event_main_entry'] . ', ' + . $plugin_tx['calendar']['event_entry3'] . ', ' + . $plugin_tx['calendar']['event_info_text'] . ', ' + . $plugin_tx['calendar']['event_link_text'] . tag('br') . tag('br') ; + +//writing this informtion using a pop-up icon +$formatting_help_button = "   " + . $plugin_tx['calendar']['hint_event_formatting'] + . "" + . tag('img src="' + . $imageFolder + . '/help_icon.png" width="16" height="16" alt="Help"') . "\n" + . $formatfields . $formatting_hints . "\n"; + +// instructions on how to enter links +$link_help = $link_help_button = ''; +if($standardmode){ + $link_help = "\n" + . $plugin_tx['calendar']['hint_how_to_enter_links'] + . '' + . tag('br') . tag('br') + . $plugin_tx['calendar']['hint_internal_links'] + . tag('br') . tag('br') + . $plugin_tx['calendar']['hint_external_links']. tag('br') + . icon('ext') . ' www.cmsimple-xh.com' + . tag('br') . tag('br') + . $plugin_tx['calendar']['hint_blog_links']. tag('br') + . icon('int') . ' ?Start&action=view' + . tag('br') . tag('br') + . $plugin_tx['calendar']['hint_subsite_links']. tag('br') + . icon('int') . ' /nl/?Start:Page ... etc.' + . tag('br') . tag('br') + . $plugin_tx['calendar']['hint_file_links']. tag('br') + . icon('pdf'). '   Abcdefg.pdf'. tag('br') + . icon('doc'). '   Abcdefg.doc(x)'. tag('br'). tag('br') + . $plugin_tx['calendar']['hint_external_pdf_links']; + + $link_help_button = '   ' + . $plugin_tx['calendar']['hint_links'] + . '' + . tag('input type="image" src="' + . $imageFolder + . '/help_icon.png" style="width:16;height:16;vertical-align:baseline;" alt="Help"') . "\n" + . $link_help + . "\n"; +} + +// informing the user about event page setting +$eventpage_error_notice = $eventpage_notice = ''; +$eventpage = $calendar2? $plugin_cf['calendar']['second-calendar_eventpage'] : $plugin_tx['calendar']['_event_page']; +if($standardmode){ + // event page not set/not found + if(!$eventpage) { + $eventpage_notice = $calendar2? + '  ' . $plugin_tx['calendar']['notice_no_eventlist2_page']: + '  ' . $plugin_tx['calendar']['notice_no_eventlist_page']; + } elseif(pagenameToUrl($eventpage)===0) { + $eventpage_notice = '   "' . $eventpage . '" ' + . $plugin_tx['calendar']['error_event_page_not_found'] . ''; + + // event page set, but more than one page with the same name exists + } elseif(pagenameToUrl($eventpage)===FALSE) { + $eventpage_notice = '   "' + . $eventpage . '" ' + . $plugin_tx['calendar']['error_event_page_occurs_more_than_once'] + . ''; + } +} + +// link errors +$link_error_notice = ''; +$unclear = 0; +$name_double = 0; +foreach($events as $entry) { + if(strpos($entry['linkadd'],'err:')!==FALSE) $unclear++; + if(strpos($entry['linkadd'],'er2:')!==FALSE) $name_double++; +} +if($unclear==1) $link_error_notice .= $unclear . " " . $plugin_tx['calendar']['error_link_unclear']; +if($unclear>1) $link_error_notice .= $unclear . " " . $plugin_tx['calendar']['error_links_unclear']; +if($unclear>0 && $name_double>0) $link_error_notice .= ", "; +if($name_double==1) $link_error_notice .= $name_double . " " . $plugin_tx['calendar']['error_pagename_double']; +if($name_double>1) $link_error_notice .= $name_double . " " . $plugin_tx['calendar']['error_pagenames_double']; +if($link_error_notice) $link_error_notice = "   " . $link_error_notice . "\n"; + + +// giving out all the info +$notice = $saving_notice + . $number_of_events + . $formatting_help_button + . $link_help_button + . $eventpage_notice + . $link_error_notice; + +// same event calendar for all subsites means relative addresses won't work when entered from a subsite +if($plugin_cf['calendar']['same-event-calendar_for_all_subsites'] && $cf['language']['default']!=$sl) { + $notice .= '   ' . $plugin_tx['calendar']['error_do_not_edit_from_subsite'] . "\n"; +} + +// end of preparing information =============================================================== +//print_r($events); + + + +// begin with a general information field +//======================================= +$o .= "\n\n"; +if (!$standardmode) { + $o .= '' + . "\n"; +} + +$o .= "\n"; +$o .= '\n\n"; +$o .= '
    ' + . '
    ' + . tag('input type="text" class="filename" value="'.$file.'" name="file"') + . tag('input type="image" src="' + . $imageFolder + . '/ok.png" style="width:16;height:16" name="newfilename[0]" title="' + . $plugin_tx['calendar']['hint_icon_save_new_name'] . '"') + . '
    ' + . '
    ' + . '$notice' + +// FORM: add new event on top of list +//===================================== + . '
    '."\n" + . tag('input type="image" src="'.$imageFolder + . '/add.png" style="width:16;height:16;" name="add[0]" title="' + . $plugin_tx['calendar']['hint_icon_add'] . '"') . "\n" + . tag('input type="hidden" value="0" name="dataset"') . "\n" + . '
    ' +// end form +//================ + + . "\n
    '; + + +// headline at the beginning of the event list, giving the period of events displayed +$past_month = ($calendar_cf['show_past_months'] && !$calendar_cf['show_no_past_event'])? $calendar_cf['show_past_months'] : '0'; +$future_month = $calendar_cf['show_future_months']? $calendar_cf['show_future_months']: '1'; +$future_month--; //subtraction necessary so that present month is also taken into account +$display_start_month = date("m",strtotime("-$past_month month")); +$display_start_year = date("Y",strtotime("-$past_month month")); +$display_end_month = date("m",strtotime("+$future_month month")); +$display_end_year = date("Y",strtotime("+$future_month month")); + +$monthnames = explode(",", $plugin_tx['calendar']['names_of_months']); + +if ($calendar_cf['show_period_of_events'] && $standardmode){ + $o .= "

    " + . $plugin_tx['calendar']['notice_telling_period_of_events'] + . " " + . $monthnames[$display_start_month - 1]." ".$display_start_year + . " " + . $plugin_tx['calendar']['event_date_till_date'] + . " " + . $monthnames[$display_end_month - 1]." ".$display_end_year + . "

    \n"; +} + + + +// the number of tablecolumns is calculated +// starting with minimum number of columns (date + main entry) +$tablecols = 2; +// adding columns according to config settings +if ($calendar_cf['show_event_time']) $tablecols++; +if ($calendar_cf['show_event_entry3']) $tablecols++; +if ($calendar_cf['show_event_entry1']) $tablecols++; +if ($calendar_cf['show_event_link']) $tablecols++; + + +// preparing eventdata display +$oldheading = ''; +$event_day = ''; +$event_month = ''; +$event_year = ''; +$make_headline_weeklyevents = 0; +$make_headline_yearlyevents = 0; +$make_headline_multievents = 0; +$make_headline_singleevents = 0; +$extrasubhead = 0; +$i = 1; + + +$subhead = "\n"; +$subhead .= "".$plugin_tx['calendar']['event_date']."\n"; +if ($calendar_cf['show_event_time']){ + $subhead .= "".$plugin_tx['calendar']['event_time']."\n"; +} +if ($calendar_cf['show_event_entry1']){ + $subhead .= "".$plugin_tx['calendar']['event_entry1']."\n"; +} +$subhead .= "".$plugin_tx['calendar']['event_main_entry']."\n"; +if ($calendar_cf['show_event_entry3']){ + $subhead .= "".$plugin_tx['calendar']['event_entry3']."\n"; +} +if ($calendar_cf['show_event_link']){ + $subhead .= "".$plugin_tx['calendar']['event_link_etc']."\n"; +} +$subhead .= "\n"; + + +// processing all event entries +foreach($events as $entry) { + + //Headlines to separate different entry types from one another + if($entry['weekly']){ + $make_headline_weeklyevents++; + $make_headline_yearlyevents = 0; + $make_headline_multievents = 0; + $make_headline_singleevents = 0; + } elseif ($entry['yearly'] || $entry['yearly2']) { + $make_headline_yearlyevents++; + $make_headline_multievents = 0; + $make_headline_singleevents = 0; + } elseif ($entry['additional']) { + $make_headline_multievents++; + $make_headline_singleevents = 0; + } else { + $make_headline_singleevents++; + } + + if($make_headline_weeklyevents == 1) { + $o .= sprintf($plugin_cf['calendar']['style_headline_eventtype'],$plugin_tx['calendar']['headline_weekly_events']) ."\n"; + $make_headline_weeklyevents++; + } + if($make_headline_yearlyevents == 1) { + $o .= sprintf($plugin_cf['calendar']['style_headline_eventtype'],$plugin_tx['calendar']['headline_yearly_events']) ."\n"; + $make_headline_yearlyevents++; + } + if($make_headline_multievents == 1) { + $o .= sprintf($plugin_cf['calendar']['style_headline_eventtype'],$plugin_tx['calendar']['headline_multiple_events']) ."\n"; + $make_headline_multievents++; + } + if($make_headline_singleevents == 1 && ($make_headline_weeklyevents+$make_headline_yearlyevents+$make_headline_multievents)) { + $o .= sprintf($plugin_cf['calendar']['style_headline_eventtype'],$plugin_tx['calendar']['headline_single_events']) ."\n"; + $make_headline_singleevents++; + $oldheading = 'x'; //comparision with possible heading decides if heading is necessary + } + + + //finding day of the week and month of an event + if($entry['datestart']) list($event_day,$event_month,$event_year) = explode( dpSeperator(), $entry['datestart']); + $timestamp = mktime(null,null,null,(int)$event_month,(int)$event_day,(int)$event_year); + $longdayname_array = explode(",", $plugin_tx['calendar']['names_of_days_longform']); + $longdayname[$i] = $longdayname_array[date('w',$timestamp)]; + $shortdayname_array = explode(",", $plugin_tx['calendar']['names_of_days']); + $shortdayname = $shortdayname_array[date('w',$timestamp)]; + $monthname_array = explode(",", $plugin_tx['calendar']['names_of_months']); + if($event_month)$monthname[$i] = $monthname_array[ltrim($event_month,0)-1]; else $monthname[$i]=''; + + + +//=========================================================== +//*********************************************************** +// +// building a table visually similar to the event list +// no entries here, J U S T for S H O W :-) +// +//*********************************************************** +//=========================================================== + + //start the table + $o .="\n"; + + //headlines for weekly events in form of daynames, avoiding repetitive headings + if($entry['weekly'] && ($i == 1 || $longdayname[$i] != $longdayname[$i-1])){ + $o .= "\n"; + $o .= "\n"; + $o .= "\n"; + $o .= $subhead; + $oldheading = $longdayname[$i]; + $extrasubhead = 0; + } + + //headlines for all other events in form of monthnames, avoiding repetitive headings + if(!$entry['weekly'] && ($i == 1 || $monthname[$i] != $oldheading)){ + $o .="\n"; + $o .="\n"; + $o .="\n"; + $o .= $subhead; + $oldheading = $monthname[$i]; + $extrasubhead = 0; + } + + $o .= $extrasubhead? $subhead : ''; + + if($entry['bookedout']) { + $eventfull = ' eventfull'; + $noticefull = ''; + } else $eventfull = $noticefull = ''; + + //data row + if($entry['yearly']) { + $o .="$noticefull\n"; + } else { + $o .="$noticefull\n"; + } + //date field + $o .="\n"; + + //time field + // find the weekdays of start and end of an event + $startday = ''; + $endday = ''; + if ($entry['dateend'] && $entry['endtime'] && !$entry['dailytimes'] && !$entry['weekly']) { + + $startdaynr = date('w',mktime(0,0,0,$event_month,(int)$event_day,$event_year)); + $startday = ' ' . $shortdayname_array[$startdaynr]; + $enddaynr = date('w',mktime(0,0,0,$event_end_month,(int)$event_end_day,$event_end_year)); + $endday = ' ' . $shortdayname_array[$enddaynr]; + } + + if ($calendar_cf['show_event_time']){ + $o .='\n"; + } + + $event_entry1 = simpleMarkupToHtml ($entry['event_entry1']); + $event = simpleMarkupToHtml ($entry['event']); + $event_entry3 = simpleMarkupToHtml ($entry['event_entry3']); + + /*event_entry1 field*/ + if ($calendar_cf['show_event_entry1']){ + $o .="\n"; + } + + //event field + $o .="\n"; + + /*event_entry3 field*/ + if ($calendar_cf['show_event_entry3']){ + $o .="\n"; + } + + /*link, link-text and info-text field*/ + if ($calendar_cf['show_event_link']){ + $o .= "\n\n"; + } + + // description field + if ($calendar_cf['show_event_description']) { + + $event_description = $entry['description']; + + // how much indented is the description going to start? + $indentation = $calendar_cf['show_description_nr_of_cells_indented']; + if(!$indentation) $indentation=0; + // preventing that $indentation gets too big + if ($indentation >= $tablecols) $indentation = $tablecols - 1; + + if (strlen($event_description) > 1) { + $extrasubhead = 1; + $o .= "\n"; + // if indentation is wanted, here it comes + if ($indentation) $o .= "\n"; + $o .= "\n\n"; + } else $extrasubhead = 0; + } + //end the event list table + $o .= '
    $longdayname[$i]
    $monthname[$i] $event_year

    ' + . $plugin_tx['calendar']['event_booked_out'] + . '

    "; + + + //button to open the editing table + //================================ + // mark link errors by coloring the background of the button as well as the link field in the input table + $link_error_marking = ''; + if (strpos($entry['linkadd'],'err:')!==FALSE) $link_error_marking = 'style="background:#faa;"'; + if (strpos($entry['linkadd'],'er2:')!==FALSE) $link_error_marking = 'style="background:#faf;"'; + //make a button + $o .= ""; + + + // if beginning and end dates are there, these should be put nicely one under another as in the event list + if ($entry['dateend'] ) { + + list($event_day,$event_month,$event_year) = explode( dpSeperator(), $entry['datestart']); + list($event_end_day,$event_end_month,$event_end_year) = explode( dpSeperator(), $entry['dateend']); + + $o .= $event_day; + if ($event_month!=$event_end_month || $event_year!=$event_end_year) {$o .= dpSeperator().$event_month ;} + if ($event_year!=$event_end_year) {$o .= dpSeperator().$event_year ;} + if ($event_year==$event_end_year && dpSeperator()=='.') {$o.= '.';} + $o .= ' ' . $plugin_tx['calendar']['event_date_till_date'] . ' '; + $o .= $event_end_day.dpSeperator().$event_end_month.dpSeperator().$event_end_year; + + } elseif ($entry['weekly']){ + $o .= $plugin_tx['calendar']['event_weekly_starting_on'] . ' ' . $entry['datestart']; + + } else { + $o .= $entry['datestart']; + } + if ($entry['exceptions']) { + $o .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' + . $entry['exceptions']; + } + if ($entry['additional']) { + $o .= ' ' . $plugin_tx['calendar']['event_additional'] . ' ' + . $entry['additional']; + } + $o .= "'; + $o .= $entry['dailytimes']? $plugin_tx['calendar']['event_daily'].' ' : ''; + $o .= $entry['starttime'] . $startday; + if ($entry['endtime']) { + $o .= ' ' . $plugin_tx['calendar']['event_time_till_time'] . ' ' . $entry['endtime'] . $endday; + } + $o .="$event_entry1$event$event_entry3
     " . $event_description . "
    '; + + + +//=================================================== +//*************************************************** +// +// start the input table for the same event +// (which can be switched on or off) +// -- here the input takes place +// +//*************************************************** +//=================================================== + + $no_marqueechecked = $entry['no_marquee'] ? 'checked="checked"' : ''; + $bookedoutchecked = $entry['bookedout'] ? 'checked="checked"' : ''; + $dailytimes_checked = $entry['dailytimes'] ? 'checked="checked"' : ''; + $linkiconchecked = $entry['linkicon'] ? 'checked="checked"' : ''; + $weeklychecked = $entry['weekly'] ? 'checked="checked"' : ''; + $yearlychecked = $entry['yearly'] ? 'checked="checked"' : ''; + $yearly2checked = $entry['yearly2'] ? 'checked="checked"' : ''; + $infoiconchecked = $entry['infoicon']==1 ? 'checked="checked"' : ''; + $widepopupchecked = $entry['infoicon']==2 ? 'checked="checked"' : ''; + $mark2checked = $entry['mark2'] ? 'checked="checked"' : ''; + + +// Start FORM +//=================== + $o .= '
    '."\n" + . ''."\n"; + + //first row (just labels + buttons) + //============================= + $o .= ''."\n" + . '\n"; + if($calendar_cf['show_event_time']){ + $o .= '\n" + . '\n"; + } else { + $o .= ''."\n" + . ''."\n"; + } + $o .= '\n"; + + $o .= '\n"; + + //delete, copy, add and save buttons + //=================================== + $o .= '\n" + . "\n"; + + //2nd row; here data input starts + //================================ + //column 1 + $o .= "\n" + . '\n" ; + + //column 2+3 + if ($calendar_cf['show_event_time']){ + $o .= '\n\n"; + } else { + $o .= tag('input type="hidden" value="'.$entry['starttime'].'"') + . '' + . tag('input type="hidden" value="'.$entry['endtime'].'"') + . ''; + } + + //column 4 + $o .= '\n"; + + //column 5 -- main entry can be textarea or input line + if($plugin_cf['calendar']['input-field_mainentry_as_textarea']) { + $o .= '\n\n"; + $o .= "\n"; + + } else { + $o .= '\n\n"; + } + + + // 3rd row L E F T S I D E + //=========================== + $o .= "\n"; + //determine the rowspan + $height_3rd_row = 6; + if(!$calendar_cf['show_event_link']) $height_3rd_row -=4; + if(!$calendar_cf['show_event_entry3']) $height_3rd_row--; + if(!($calendar_cf['show_event_entry1'] || + $plugin_cf['calendar']['input-field_entry1_show_in_input_always'])) $height_3rd_row--; + $height_3rd_row = $height_3rd_row? "rowspan='$height_3rd_row'" : ''; + + $o .= "\n"; + + + + + // 3 row R I G H T S I D E + //========================== + // field entry1 (could be used as location) + if ($calendar_cf['show_event_entry1'] || $plugin_cf['calendar']['input-field_entry1_show_in_input_always']) { + $o .= '\n" + . '\n\n"; + } else { + $o .= tag('input type="hidden" value="'.$entry['event_entry1'] . '" name="event_entry1[' . $i.']"'); + } + + // field entry3 (was location in former versions) + if ($calendar_cf['show_event_entry3']) { + $o .= '\n" + . '\n\n"; + } else { + $o .= tag('input type="hidden" value="'.$entry['event_entry3'] . '" name="event_entry3[' . $i.']"'); + } + + + // converting the linkdata which has been saved as $linkadd to the simplified form $linkadr + // which may be just pagenames or filenames + $links = explode('|', $entry['linkadd']); + $link = ''; + $linkadr = ''; + foreach ($links as $key=>$value) { + $linkadr .= $link? '|':''; + $link = substr($value, 4); + $linktype = substr($value, 0, 4); + if($linktype == 'in?:' || $linktype == 'int:') $link = urlToPagename($link); + // urlencode only the filename, not the address + if($linktype=='pdf:' || $linktype=='pfx:' || $linktype=='doc:') $link = rawurldecode($link); + $linkadr .= $link; + } + + // link field turned on + if ($calendar_cf['show_event_link']) { + + //link icon checkbox + $o .= '\n"; + + $pages_select = ''; + for ($x=0;$x<$cl;$x++) { + $levelindicator = ''; + for ($y = 1; $y < $l[$x]; $y++) {$levelindicator .= '–   ';} + $page = $levelindicator.$h[$x]; + $selected = ''; + if($entry['linkint'] == $u[$x]) {$selected = ' selected';} + $pages_select .= "\n".''; + } + //internal link field + $o .= "\n\n"; + + // other link caption + $o .= '\n" + // other link field + . "\n\n"; + + // "link-text" label + $o .= '\n" + // "link-text" field + . '\n\n"; + + //checkbox info icon + info text label + $o .= "\n" + . '\n"; + // info text field + $o .= "\n" + . "\n"; + } else { + //hidden fields to save link and info data + $o .= tag('input type="hidden" value="'.$entry['linkicon'] .'" name="linkicon['.$i.']"') + . tag('input type="hidden" value="'.$entry['linkint'] .'" name="linkint['. $i.']"') + . tag('input type="hidden" value="'.$linkadr .'" name="linkadr['. $i.']"') + . tag('input type="hidden" value="'.$entry['linktxt'] .'" name="linktxt['. $i.']"') + . tag('input type="hidden" value="'.$entry['infoicon'] .'" name="infoicon['.$i.']"') + . tag('input type="hidden" value="'.$entry['infotxt'] .'" name="infotxt['. $i.']"'); + } + + //make event description field + if ($calendar_cf['show_event_description']) { + + if(!$calendareditor) { + $description = preg_replace(array('!(<\/[h|p|li|ul|ol]?\d?>)!U','!()!U'),"$1\n", $entry['description']); + $o .= "\n" + . '\n\n\n" + . '\n" + . "\n"; + } elseif($calendareditor == 'fckeditor') { + $o .= "\n" + . '\n\n\n" + . '\n" + . "\n"; + $o .= fckeditor(); + } else { + $o .= "\n" + . '\n\n\n" + . "\n" + . "\n"; + } + } else { + //hidden field to save description data. Hm, hidden field seems not to work here. So a work around: + $o .= '
    ' + . "
    \n"; + } + + //end input table + $o .= ''."\n" + +// end FORM +//=================== + . '
    '."\n"; + + $i++; +} + +//prevent wrong alert from ckeditor on save via calendar save button +if ($calendareditor == 'ckeditor') { + $o .= ''; +} diff --git a/includes/eventlist.php b/includes/eventlist.php new file mode 100644 index 0000000..25bfd91 --- /dev/null +++ b/includes/eventlist.php @@ -0,0 +1,1282 @@ +\n\n"; +$today = date("Ymd"); +$day = substr($today, 6); +$presentmonth = substr($today, 4,2); +$presentyear = substr($today, 0,4); +if($month == '') $month = $presentmonth; +if($year == '') $year = $presentyear; + +//decide how to treat past events +$show_no_past_event = FALSE; +$markpast = TRUE; +if(!$pastevents && !$calendar_cf['show_grey_past_events']) $markpast = FALSE; +if(!$pastevents && $calendar_cf['show_no_past_event']) $show_no_past_event = $markpast = TRUE; +if($pastevents==3) $show_no_past_event= $markpast = TRUE; +if($pastevents==1) $markpast = FALSE; + +// links to downloads folder from secondary language: filepaths must start from the main language +$root = $sl!=$cf['language']['default']? 'http://'.$_SERVER['SERVER_NAME'].CMSIMPLE_ROOT : '' ; + +// spreadsheet table style or template driven style? +if($style == 1) { + $tablestyle = true; + $templatefile = ''; +} +elseif($style) { + $tablestyle = false; + $templatefile = $style; +} +else { + $tablestyle = $plugin_cf['calendar']['eventlist_template']? false : true; + $templatefile = $plugin_cf['calendar']['eventlist_template']; + $templatefile = strpos($templatefile,'.tpl')? $templatefile : $templatefile.'.tpl'; +} +if(!$tablestyle && is_file($pth['folder']['plugins'].'calendar/templates/'.$templatefile)) { + $template = file_get_contents($pth['folder']['plugins'].'calendar/templates/'.$templatefile); + $template = explode('===',$template); +} else { + $template = array('','','','','','','','','','','','',''); + $tablestyle = true; + $templatefile = ''; +} + + + +//find out the period to display +//=============================== +// first the start +if($past_month == '') {$past_month = $calendar_cf['show_past_months'];} +if(!$past_month || $show_no_past_event) {$past_month = 0;} +$month = $month - $past_month; +while ($month < 1) { + $year = $year - 1; + $month = 12 + $month; +} +// Now $month and $year give the dates for the start of the event list + +// in case events are clicked in a calendar that is not the present month, +// the event list either is (1) adjusted to that month or, (2) is enlarged if necessary +// to prevent XSS injection htmlspecialchars is used by advice of cmb +$new_start = FALSE; +$new_end_month = 0; +$showlinktopresentmonth = FALSE; +if(!$file) { + $month_input = isset($_GET['month']) ? htmlspecialchars($_GET['month']) : ''; + $month_input .= isset($_POST['month']) ? htmlspecialchars($_POST['month']) : ''; + $year_input = isset($_GET['year']) ? htmlspecialchars($_GET['year']) : ''; + $year_input .= isset($_POST['year']) ? htmlspecialchars($_POST['year']) : ''; + $date_input = $year_input * 100 + $month_input; + + if ( $plugin_cf['calendar']['eventlist_start_moves_with_clicked_event'] + && ($month_input || $year_input)) { + $year = $year_input; + $month = $month_input; + $show_no_past_events = FALSE; + $markpast = FALSE; + $showlinktopresentmonth = TRUE; + } + if( !$plugin_cf['calendar']['eventlist_start_moves_with_clicked_event'] + && $month_input && $year_input && $date_input < $year * 100 + $month) { + $new_end_month = $month + ($year-$year_input)*12 - $month_input; + $year = $year_input; + $month = $month_input; + $show_no_past_events = FALSE; + $markpast = FALSE; + $new_start = TRUE; + } +} + +//find out the end month of the displayed event list +if($end_month == ''){ + if($calendar_cf['show_future_months']){ + $end_month = $calendar_cf['show_future_months']; + } else $end_month = "1"; +} +// in case earlier events are requested the displqaed period is enlarged to the past +If($new_start) $end_month = $new_end_month + $end_month; + +$display_end_month = $month + $end_month -1 + $past_month; +$display_end_year = $year; +while ($display_end_month > 12){ + $display_end_year = $display_end_year + 1; + $display_end_month = $display_end_month - 12; +} +$end_month = $end_month + $past_month; + + +//in case events later are clicked the displayed period is enlarged to the future +if( !$plugin_cf['calendar']['eventlist_start_moves_with_clicked_event'] + && !$file && $month_input && $year_input && $date_input > $display_end_year * 100 + $display_end_month) { + $end_month = ($year_input-$year)*12 - $month + 1 + $month_input; + $display_end_year = $year_input; + $display_end_month = $month_input; +} + + + +$event_time_array = array(); +$event_end_time_array = array(); +$event_dailytimes_array = array(); +$event_day_array = array(); +$event_day_time_array = array(); +$event_end_day_array = array(); +$event_month_array = array(); +$event_end_month_array = array(); +$event_year_array = array(); +$event_end_year_array = array(); +$event_yearmonth_array = array(); +$event_notpast_array = array(); +$event_time2_array = array(); +$event_weekly_array = array(); +$event_exceptions_array = array(); +$event_weekday_array = array(); +$event_yearly_array = array(); +$event_yearly2_array = array(); +$event_entry1_array = array(); +$event_array = array(); +$event_entry3_array = array(); +$event_link_icon_array = array(); +$event_link_adr_array = array(); +$event_link_txt_array = array(); +$event_info_icon_array = array(); +$event_info_txt_array = array(); +$event_description_array = array(); +$event_bookedout_array = array(); +$oldlong_array = array(); +$exceptions = ''; + + +// determining which file to read +if ($file) { + $eventfile = $datapath.$file; +}else { + $eventfile = $datapath."eventcalendar$lang.txt"; +} + +if(is_file($eventfile)){ + + $file_array = file($eventfile); + if($addfile && is_file($datapath.$addfile)) { + $addfile_array = file($datapath.$addfile); + $file_array = array_merge($file_array,$addfile_array); + } + + // processing the data file line by line + //========================================== + foreach ( $file_array as $line) { + + $oldlongevent = 0; + + if (strpos($line,';')) { + // var_dump($line); + + // dividing the lines into fields (explode limit necessary to make ";" in description possible) + list($eventdates,$event,$event_entry3,$link,$event_time,$description) = explode( ";", $line,6); + + //for sorting + $event_time2 = $event_time? str_pad(substr($event_time,0,5),5,'0',STR_PAD_LEFT):'20:00'; + + // dividing the remaining data + list($event_date_start,$event_date_end,$event_end_time,$event_entry1) = explode(",",$eventdates,4); + + // eliminating any * before the date (this being the mark of "don't show on marquee") + if (substr($event_date_start,0,1)=="*") $event_date_start = substr($event_date_start,1); + + // eliminating any * before the end date (this being the mark of "event booked out") + if (substr($event_date_end,0,1)=="*") { + $event_date_end = substr($event_date_end,1); + $bookedout = TRUE; + } else $bookedout = FALSE; + + // checking if there is an * before the endtime, meaning given times of multi day events are daily times + if (substr($event_end_time,0,1)=="*") { + $event_end_time = substr($event_end_time,1); // eliminating any * + $dailytimes = TRUE; + } else $dailytimes = FALSE; + + // checking if there is an * before the event_entry1, which means alternative marking in calendar + if (substr($event_entry1,0,1)=="*") { + $event_entry1 = substr($event_entry1,1); // eliminating any * + } + + if($event_date_start) { + list($event_day,$event_month,$event_year) = explode( dpSeperator(), $event_date_start); + $event_year = str_pad($event_year,4,'0',STR_PAD_LEFT); // for dates bevore the year 1000 + $notpast = $event_year.$event_month.$event_day < $today ? 0 : 1; + } else { + $event_day = ''; + $event_month = ''; + $event_year = ''; + $notpast = 0; + } + + if($event_date_end) { + list($event_end_day,$event_end_month,$event_end_year) = explode( dpSeperator(), $event_date_end); + + $notpast = $event_end_year.$event_end_month.$event_end_day < $today ? 0 : 1; + $not_outside_period = $event_end_year*100 + $event_end_month < $year*100 + $month ? 0 : 1; + + //old long lasting events which started before the considered period and reach into it are marked + $condition = $show_no_past_event? $notpast : $not_outside_period; + $oldlongevent = ($event_year*100 + $event_month < $year*100 + $month && $condition)? 1 : 0; + + + } else { + $event_end_day = ''; + $event_end_month = ''; + $event_end_year = ''; + } + + $yearly = FALSE; + $yearly2 = FALSE; + $weekly = FALSE; + $exceptions = ''; + $additional = ''; + $additionaldatesarray = array(); + + //checking for birthday events + if (substr($event_entry3,0,3)=='###') { + $event_entry3 = substr($event_entry3,3); // eliminating any ### + $yearly = TRUE; + } + //checking for other yearly events where age shout not be calculated + if (substr($event_entry3,0,3)=='#*#') { + $event_entry3 = substr($event_entry3,3); // eliminating any ### + $yearly2 = TRUE; + } + + // legacy code, checking for multiple events, not used any more + if (substr($event_entry3,0,3)=="*#*") { + $event_entry3 = substr($event_entry3,3); // eliminating any #*# + } + + //checking for weekly events (coded in such a way as to keep the old file structure) + if (substr($event_entry3,0,3)=="***") { + $event_entry3 = substr($event_entry3,3); // eliminating any *** + $oldlongevent = 0; //only one off oldlongevents are considered + + //in case no end date has been given, 10 years duration is supposed. It must fall within the display period + if (!$event_date_end) { + $supposed_end = ($event_year + 10) . str_pad($event_month,2,"0",STR_PAD_LEFT); + if($supposed_end > $presentyear . str_pad($presentmonth,2,"0",STR_PAD_LEFT)) { + $endofweeklyevents = $supposed_end; + } else $endofweeklyevents = ''; + } + else { + $endofweeklyevents=$event_end_year . str_pad($event_end_month,2,"0",STR_PAD_LEFT); + } + $startofweeklyevents = $event_year . str_pad($event_month,2,"0",STR_PAD_LEFT); + if ( $endofweeklyevents >= $year . str_pad($month,2,"0",STR_PAD_LEFT) + && $startofweeklyevents <= $display_end_year . str_pad($display_end_month,2,"0",STR_PAD_LEFT)) + { + $weekly = TRUE; + } + else + //eleminating all weekly events not fitting in the time window + { + $event_day = $event_month = $event_year = ''; + } + if($show_no_past_event && $weekly + && $endofweeklyevents.str_pad($event_end_day,2,"0",STR_PAD_LEFT) < $today) { + $weekly = FALSE; + $event_day = $event_month = $event_year = ''; + } + } + + // exceptions + if(strpos($event_entry3,'|')){ + $exceptions = substr($event_entry3,0,strpos($event_entry3,'|')); + $event_entry3 = substr($event_entry3,(strpos($event_entry3,'|')+1)); // eliminating exception data + } + + // additions + if(strpos($event,'|')){ + $additional = substr($event,0,strpos($event,'|')); + $additionaldates = explode(",",$additional); + foreach ($additionaldates as $value) { + //deleting empty spaces + $value = ltrim($value); + $additionaldatesarray[] = explode(dpSeperator(),$value); + } + // eliminating additional dates from entry1 + $event = substr($event,(strpos($event,'|')+1)); + } + + // dividing the new subfunctions of $link into its elements + list($event_link_adr,$event_link_txt,$event_info_txt) = explode(",",$link,3); + + // Now further refining the subfunctions... keeping compatibility to the age old event file structure + + // detecting icon for links + if (substr($event_link_adr,0,1)=="*") { + $event_link_icon = TRUE; + $event_link_adr = substr($event_link_adr,1); + } else $event_link_icon = FALSE; + + // detecting icon for info text + if (substr($event_info_txt,0,1)=="*") { + $event_info_icon = 1; + } elseif (substr($event_info_txt,0,1)=="+") { + $event_info_icon = 2; + } else $event_info_icon = 0; + + // deleting icon marking + if ($event_info_icon) $event_info_txt = substr($event_info_txt,1); + + // for sorting algorithm that puts weekly events orderd by weekday first + $event_time_stamp = mktime(null,null,null,(int)$event_month,(int)$event_day,(int)$event_year); + if($weekly) $weekday = 1 + date('w',$event_time_stamp); else $weekday = ''; + // 1 was added to avoid "0" + + // special case: same event calendar for all languages = on, plus list is shown on secondary language page + // now image addresses have to be adjusted + if($plugin_cf['calendar']['same-event-calendar_for_all_subsites'] && $cf['language']['default']!=$sl) { + $description = str_replace('src="./images','src="../images', $description); + } + + array_push($event_year_array, $event_year); + array_push($event_end_year_array, $event_end_year); + array_push($event_month_array, $event_month); + array_push($event_end_month_array, $event_end_month); + if (!$weekly) { + array_push($event_yearmonth_array,($event_month.".".$event_year)); + } else { + array_push($event_yearmonth_array,''); + } + array_push($event_notpast_array, $event_year.$event_month.$notpast); + array_push($event_weekday_array, $weekday); + array_push($event_day_array, $event_day); + array_push($event_day_time_array, $event_day.$event_time); + array_push($event_end_day_array, $event_end_day); + array_push($event_entry1_array, $event_entry1); + array_push($event_array, $event); + array_push($event_entry3_array, $event_entry3); + array_push($event_weekly_array, $weekly); + array_push($event_exceptions_array, $exceptions); + array_push($event_yearly_array, $yearly); + array_push($event_yearly2_array, $yearly2); + array_push($event_link_icon_array, $event_link_icon); + array_push($event_link_adr_array, $event_link_adr); + array_push($event_link_txt_array, $event_link_txt); + array_push($event_info_icon_array, $event_info_icon); + array_push($event_info_txt_array, $event_info_txt); + array_push($event_time_array, $event_time); + array_push($event_end_time_array, $event_end_time); + array_push($event_dailytimes_array, $dailytimes); + array_push($event_time2_array, $event_time2); + array_push($event_description_array,$description); + array_push($event_bookedout_array, $bookedout); + array_push($oldlong_array, $oldlongevent); + + if($additional) { + foreach ($additionaldatesarray as $value) { + $addbookedout = substr($value[2],-1)=='*'? TRUE : FALSE; + $value[2] = rtrim($value[2],'*'); + $notpast = 20 . $value[2].$value[1].$value[0] < $today ? 0 : 1; + + array_push($event_year_array, 20 . $value[2]); + array_push($event_end_year_array, ''); + array_push($event_month_array, $value[1]); + array_push($event_end_month_array, ''); + array_push($event_yearmonth_array, ($value[1] .'.20' . $value[2])); + array_push($event_notpast_array, $value[2].$value[1].$notpast); + array_push($event_weekday_array, ''); + array_push($event_day_array, $value[0]); + array_push($event_day_time_array, $event_day.$event_time); + array_push($event_end_day_array, ''); + array_push($event_entry1_array, $event_entry1); + array_push($event_array, $event); + array_push($event_entry3_array, $event_entry3); + array_push($event_weekly_array, ''); + array_push($event_exceptions_array, ''); + array_push($event_yearly_array, ''); + array_push($event_yearly2_array, ''); + array_push($event_link_icon_array, $event_link_icon); + array_push($event_link_adr_array, $event_link_adr); + array_push($event_link_txt_array, $event_link_txt); + array_push($event_info_icon_array, $event_info_icon); + array_push($event_info_txt_array, $event_info_txt); + array_push($event_time_array, $event_time); + array_push($event_end_time_array, $event_end_time); + array_push($event_dailytimes_array, ''); + array_push($event_time2_array, $event_time2); + array_push($event_description_array,$description); + array_push($event_bookedout_array, $addbookedout); + array_push($oldlong_array, ''); + } + } + + } + } +} + +// print_r($oldlong_array); +// print_r($event_array); + + +// headline at the beginning of the event list, giving the period of events displayed +// =================================================================================== +$textmonth = date("F",mktime(1,1,1,$month,1,$year)); +$monthnames = explode(",", $plugin_tx['calendar']['names_of_months']); + +//text annoucing the shown period +if(!$calendar_cf['show_future_months'] && !$calendar_cf['show_past_months']) { + $periodtext1 = $plugin_tx['calendar']['notice_telling_month_of_events']; + $startperiod = $monthnames[$month - 1]." ".$year; + $periodtext2 = ''; + $endperiod = ''; +} else { + $periodtext1 = $plugin_tx['calendar']['notice_telling_period_of_events']; + $startperiod = $monthnames[$month - 1]." ".$year; + $periodtext2 = $plugin_tx['calendar']['event_date_till_date']; + $endperiod = $monthnames[$display_end_month-1]." ".$display_end_year; +} +$gotopresentmonth = $showlinktopresentmonth ? + ''.$plugin_tx['calendar']['link_to_present_month'].'' : ''; + +if(!$tablestyle) { + //template driven display + $o .=$gotopresentmonth? '

    '.$gotopresentmonth."

    \n" : ''; + $o .= str_replace( + array( + '%start%', + '%end%', + '%till%', + '%period%' + ), + array( + $startperiod, + $endperiod, + $periodtext2, + $periodtext1, + ),$template[1]); +} elseif ($calendar_cf['show_period_of_events']){ + // spreadsheet table style + $o .="

    $periodtext1 $startperiod $periodtext2 $endperiod".tag('br')."$gotopresentmonth

    \n"; +} else $o .=$gotopresentmonth? '

    '.$gotopresentmonth."

    \n" : ''; + +// the number of table columns is calculated +// starting with minimum number of columns (date + main entry) +$tablecols = 2; +// adding columns according to config settings +if ($calendar_cf['show_event_time']) $tablecols++; +if ($calendar_cf['show_event_entry3']) $tablecols++; +if ($calendar_cf['show_event_entry1']) $tablecols++; +if ($calendar_cf['show_event_link']) $tablecols++; + + + +//======================================================== +// +// making the table for weekly events ordered by weekdays +// +//======================================================== +if($tablestyle) {$o .="\n";} else {$o .= "
    \n";} + +$longdayname_array = explode(",", $plugin_tx['calendar']['names_of_days_longform']); +$shortdayname_array = explode(",", $plugin_tx['calendar']['names_of_days']); + +// if description has extra text, the subhead (= Date, Time, Event etc.) is repeated again, +// normally it appears only after the month of the events is displayed +$extrasubhead = 0; + +// subhead (= Date, Time, Event etc.) comes after the month/weekday as headline +$subhead = "
    \n"; +$subhead .= "\n"; +if ($calendar_cf['show_event_time']){ + $subhead .= "\n"; +} +if ($calendar_cf['show_event_entry1']){ + $subhead .= "\n"; +} +$subhead .= "\n"; +if ($calendar_cf['show_event_entry3']){ + $subhead .= "\n"; +} +if ($calendar_cf['show_event_link']){ + $subhead .= "\n"; +} +$subhead .= "\n"; + + +//preparing headline single events +$headline_singleevents = ''; +$print_headline_singleevents = 0; //counter to make sure this headline is printed only once, when counter == 1 + +//headline annoncing weekly section, will be shown always when there are weekly events, even if no other events are there +if(in_array(TRUE,$event_weekly_array)) { + if($tablestyle) { + $o .= sprintf($plugin_cf['calendar']['style_headline_eventtype'],$plugin_tx['calendar']['headline_weekly_events']); + } else { + //template driven display + $o .= str_replace('%weekly%',$plugin_tx['calendar']['headline_weekly_events'],$template[2]); + } +} else $print_headline_singleevents = 2; //2 meaning, the headline for singleevents will not be printed, as no weekly events are there + +$x = 1; +while($x<=7){ + + $longweekday = ''; + $shortweekday = ''; + $weekdayheader = $template[3]; + + // false is default value, as there may be no weekly event on the considered weekday + $table=false; + + // checking if weekly events happen on the considered day + // the decision, if a weekly event is past or not, has already been taken + if (in_array($x,$event_weekday_array)){ + $table=true; + } + // building headings starting with dayname + $y = $x-1; //subtraction to get [0] for sundays + if($table && $tablestyle){ + $o .="\n"; + $o .="\n"; + $o .="\n"; + $o .= $subhead; + $extrasubhead = 0; + } elseif($table) { + // template driven display + $longweekday = $longdayname_array[$y]; + $shortweekday = $shortdayname_array[$y]; + $weekdayheader = str_replace(array('%longweekday%','%shortweekday%'), + array($longweekday,$shortweekday), $weekdayheader); + $o .= $weekdayheader; + } + + + + foreach($event_weekday_array as $keys=>$temp){ + + // template driven display + $date = ''; + $time = ''; + $field1 = ''; + $mainfield = ''; + $field3 = ''; + $field4 = ''; + $weeklyevents = $template[4]; + $pastweeklyevents = $template[5]; + + if($event_weekday_array[$keys]==$x){ + + // enddate determines if an event is past or not + If($event_end_day_array[$keys]) { + $eventenddate = $event_end_year_array[$keys].$event_end_month_array[$keys].$event_end_day_array[$keys]; + $past = ($eventenddate < $today && $markpast)? ' past_event' : ''; + } else $past = ''; + + + if($extrasubhead) { + $o .= $subhead; + $extrasubhead = 0; + } + + // separate Data and design, 1st: create the Data + // ============================================== + // if beginning and end dates are there, these are put one under the other + if ($event_end_day_array[$keys]) { + $date .= $event_day_array[$keys]; + if ( $event_month_array[$keys] != $event_end_month_array[$keys] + || $event_year_array[$keys] != $event_end_year_array[$keys]) $date .= dpSeperator().$event_month_array[$keys] ; + if ($event_year_array[$keys]!=$event_end_year_array[$keys]) $date .= dpSeperator().$event_year_array[$keys] ; + if ($event_year_array[$keys]==$event_end_year_array[$keys] && dpSeperator()=='.') $date.= "."; + $date .= " ".$plugin_tx['calendar']['event_date_till_date'] . ' '; + $date .= $event_end_day_array[$keys].dpSeperator().$event_end_month_array[$keys].dpSeperator().$event_end_year_array[$keys]; + } elseif ($today < $event_year_array[$keys].$event_month_array[$keys].$event_day_array[$keys]) { + $date .= $plugin_tx['calendar']['event_weekly_starting_on'] + . ' ' . $event_day_array[$keys].dpSeperator().$event_month_array[$keys].dpSeperator().$event_year_array[$keys]; + } else { + $date .= $plugin_tx['calendar']['event_weekly_ongoing']; + } + if ($event_exceptions_array[$keys]) { + $date .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' + . $event_exceptions_array[$keys]; + } + + // create time field + $time = $event_time_array[$keys]; + if ($event_end_time_array[$keys]) { + $time .= ' ' . $plugin_tx['calendar']['event_time_till_time'] . ' ' . $event_end_time_array[$keys]; + } + + // create field1 = event_entry1 field + $field1 = $event_entry1_array[$keys]; + + + // create $mainfield = event field + $mainfield = $event_array[$keys]; + + // create $field3 = event_entry3 field + $field3 = $event_entry3_array[$keys]; + + // create $field4 = link and link-text or info-text field + $spacer = ($event_link_txt_array[$keys]) ? ' ' : ''; + + // if a link address has been given, there are different cases + $field4 = ''; + if ($event_link_adr_array[$keys]) { + $links = explode('|', $event_link_adr_array[$keys]); + $linktexts = explode('|', $event_link_txt_array[$keys]); + foreach ($links as $key=>$value) { + $addr = substr($value,4); + $type = substr($value, 0,4); + $icon = $event_link_icon_array[$keys]? icon($type,$past) . $spacer : ''; + if(!isset($linktexts[$key])) $linktexts[$key] = ''; + + switch ($type) { + case 'pfx:': + case 'ext:': $field4 .= "". $icon . $linktexts[$key] .''; + break; + + case 'int:': $field4 .= ''. $icon . $linktexts[$key] . "\n"; + break; + + case 'in?:': $field4 .= ''. $icon . $linktexts[$key] . "\n"; + break; + + case 'doc:': + case 'pdf:': $field4 .= ''. $icon . $linktexts[$key] ."\n"; + break; + } + } + } + $spacer = ($event_link_icon_array[$keys]) ? ' ' : $spacer; + if($event_info_icon_array[$keys] && $event_info_txt_array[$keys]) { + $wider = $event_info_icon_array[$keys]==2? ' wider':''; + $field4 .= "$spacer" + . icon("info",$past) . "" . $event_info_txt_array[$keys] . ""; + } + if(!$event_info_icon_array[$keys] && $event_info_txt_array[$keys]) { + $field4 .= $spacer . $event_info_txt_array[$keys]; + } + + + $field5 = $event_description_array[$keys]; + + if($event_bookedout_array[$keys] && !$past) { + $eventfull = ' eventfull'; + $noticefull = ''; + $noticefull2 = $plugin_tx['calendar']['event_booked_out']; + } else $eventfull = $noticefull = $noticefull2 = ''; + + + // Now put the data into the design, i.e. the table or the template + // ================================================================ + if($tablestyle) { + + // use date field data + $o .="$noticefull\n"; + $o .="\n"; + + // use time field + if ($calendar_cf['show_event_time'] && $tablestyle){ + $o .="\n"; + } + + // field 1, the extra field + if ($calendar_cf['show_event_entry1']) { + $o .="\n"; + } + + // main entry field + $o .="\n"; + + // $field3 secondary entry field + if ($calendar_cf['show_event_entry3']) { + $o .="\n"; + } + + // use $field4, the event link etc field + if ($calendar_cf['show_event_link']) { + $o .="\n\n"; + } + + // use $field 5, the additional description field + if ($calendar_cf['show_event_description']) { + // how much indented is the description going to start? + $indentation = $calendar_cf['show_description_nr_of_cells_indented']; + if(!$indentation) $indentation=0; + // preventing that $indentation gets too big + if ($indentation >= $tablecols) $indentation = $tablecols - 1; + + if (strlen($event_description_array[$keys]) > 1) { + if(!$past) $extrasubhead = 1; + $o .= "\n"; + // if indentation is wanted, here it comes + if ($indentation) $o .= "\n"; + $o .= "\n\n"; + } + } + + //template driven display + } elseif($past) { + $o .= str_replace(array('%longweekday%','%shortweekday%','%date%','%time%','%field1%', + '%mainfield%','%field3%','%infolink%','%description%','%ended%'), + array($longweekday,$shortweekday,$date,$time,$field1, + $mainfield,$field3,$field4,$field5,$plugin_tx['calendar']['event_has_ended']), + $pastweeklyevents); + } else { + $o .= str_replace(array('%bookedout%','%longweekday%','%shortweekday%','%date%','%time%','%field1%','%mainfield%','%field3%','%infolink%','%description%'), + array($noticefull2,$longweekday,$shortweekday,$date,$time,$field1,$mainfield,$field3,$field4,$field5), $weeklyevents); + } + } + } + $x++; +} + +if($tablestyle) {$o .="
    ".$plugin_tx['calendar']['event_date']."".$plugin_tx['calendar']['event_time']."".$plugin_tx['calendar']['event_entry1']."".$plugin_tx['calendar']['event_main_entry']."".$plugin_tx['calendar']['event_entry3']."
    $longdayname_array[$y]

    ' + . $plugin_tx['calendar']['event_booked_out'] + . '

    "; + $o .= $date; + $o .= "$time$field1$mainfield$field3
     $field5
    \n";} else {$o .= "
    \n";} + + +//============================================================== +// +// making the table for single one-off events listed by month +// +//============================================================== + +// sorting all events according to date and time +asort($event_day_time_array); + +//print_r($event_time2_array); +//print_r($event_array); + + +// headline single events section +// to separate these events from weekly events, in case there are weekly and also other events +if(in_array(TRUE,$event_weekly_array) && in_array(FALSE,$event_weekly_array)) { + if($tablestyle) { + $headline_singleevents = sprintf($plugin_cf['calendar']['style_headline_eventtype'],$plugin_tx['calendar']['headline_single_events']); + } else { + //template driven display + $headline_singleevents = str_replace('%single%',$plugin_tx['calendar']['headline_single_events'],$template[6]); + } +} + +if($tablestyle) {$o .="\n";} else {$o .= "
    \n";} + +// Now all months of the considered period will be gone through one by one +// first run ($x=0) is for old long lasting events started before the considered period and still going on +$x=0; +while($x<=$end_month){ + + // initializing template values + $monthheader = $template[7]; + + $textmonth = $monthnames[$month - 1]; + + // false is default value, as there may be no event in the considered month + $table=false; + + // checking if an event is in the considered month + // 1st case no past events. Past event will be eliminated later, now the headlines + // have to be checked. Special care is taken for the present month, here the array with + // comparision of the event day against the present day is used + if($x && $show_no_past_event) { + if($month == $presentmonth && in_array($year.$month.'1',$event_notpast_array)) { + $table=true; + } elseif($month != $presentmonth && in_array(($month.".".$year),$event_yearmonth_array)) { + $table=true; + } + } + // 2nd case, all events, even if past, of the month in calculation will tigger the header + if ($x && !$show_no_past_event && in_array(($month.".".$year),$event_yearmonth_array)){ + $table=true; + } + if (!$x && in_array('1',$oldlong_array)) $table=true; + + // headline single events? + if($table) { + $print_headline_singleevents++; + $o .= $print_headline_singleevents==1? $headline_singleevents : ''; + } + + // month header + // ------------ + $printtextmonth = $x? $textmonth:$plugin_tx['calendar']['headline_started_earlier']; + $printyear = $x? $year:''; + + if($table && $tablestyle){ + $o .= "
    \n"; + $o .= "\n"; + $o .= "\n"; + $o .= $subhead; + $extrasubhead = 0; + + } elseif($table && !$tablestyle) { + // for template driven display + $monthheader = str_replace(array('%month%','%year%'), + array($printtextmonth,$printyear), $monthheader); + $o .= $monthheader; + } + + + foreach($event_day_array as $keys=>$temp){ + + // initializing values for template driven display + $date = ''; + $time = ''; + $field1 = ''; + $mainfield = ''; + $field3 = ''; + $field4 = ''; + $yearlyevents = $template[8]; + $yearly2events = $template[9]; + $pastyearlyevents = $template[10]; + $singleevents = $template[11]; + $pastsingleevents = $template[12]; + + + //=====================================================================================// + // Y E A R L Y E V E N T S with (=yearly) or without (=yearly2) ) age calculation // + //=====================================================================================// + $extracondition = ($show_no_past_event && $year.$event_month_array[$keys].$event_day_array[$keys]<$today)? FALSE:TRUE; + if( $x + && ($event_yearly_array[$keys] || $event_yearly2_array[$keys]) + && ($event_month_array[$keys] == $month) + && $extracondition) { + + $month = str_pad($month,2,'0',STR_PAD_LEFT); + + $age = $year - $event_year_array[$keys]; + if ($age >= 0){ + + // headline single events? + if($table) { + $print_headline_singleevents++; + $o .= $print_headline_singleevents==1? $headline_singleevents : ''; + } + + + if (!$table && $tablestyle){ + + // headline with month has to be generated in case it has not yet been done + $table=true; + $print_headline_singleevents++; + $o .= $print_headline_singleevents==1? $headline_singleevents : ''; + + $o .= "\n"; + $o .= "\n"; + $o .= "\n"; + $o .= $subhead; + $extrasubhead = 0; + + } elseif (!$table && !$tablestyle) { + // same for template driven display + $o .= str_replace(array('%month%','%year%'),array($textmonth,$year), $monthheader); + } + + // checking if the birthday-event to be shown is in the past + $eventdate = $year.$event_month_array[$keys].$event_day_array[$keys]; + + $pastbirthday = ($eventdate < $today && $markpast)? " past_event" : ''; + + + $date = $event_day_array[$keys].dpSeperator().$month.dpSeperator().$year; + + $time = $event_time_array[$keys]; + if ($event_end_time_array[$keys]) { + $time .= ' '.$plugin_tx['calendar']['event_time_till_time'].' '. $event_end_time_array[$keys]; + } + + $field1 = $event_entry1_array[$keys]; + + $mainfield = $event_array[$keys]; + + //preparing the age output + if($event_yearly_array[$keys]) { + $agefield = ''; + if ($age >= 5){ + $agefield .= "$age ".$plugin_tx['calendar']['age_5_and_more_years_old']; + } + elseif ($age >= 2 and $age < 5){ + $agefield .= "$age ".$plugin_tx['calendar']['age_2-4_years_old']; + } + else { + $agefield .= "$age ".$plugin_tx['calendar']['age_1_year_old']; + } + $agefield .= ''; + } else $agefield = ''; + + $field3 = $event_entry3_array[$keys]; + + // link and link-text or info-text field + + $spacer = ($event_link_txt_array[$keys]) ? ' ' : ''; + + // if a link address has been given, there are different cases + $field4 = ''; + if ($event_link_adr_array[$keys]) { + $links = explode('|', $event_link_adr_array[$keys]); + $linktexts = explode('|', $event_link_txt_array[$keys]); + foreach ($links as $key=>$value) { + $addr = substr($value,4); + $type = substr($value, 0,4); + $icon = $event_link_icon_array[$keys]? icon($type,$pastbirthday) . $spacer : ''; + if(!isset($linktexts[$key])) $linktexts[$key] = ''; + + switch ($type) { + case 'pfx:': + case 'ext:': $field4 .= "". $icon . $linktexts[$key] .''; + break; + + case 'int:': $field4 .= ''. $icon . $linktexts[$key] . "\n"; + break; + + case 'in?:': $field4 .= ''. $icon . $linktexts[$key] . "\n"; + break; + + case 'doc:': + case 'pdf:': $field4 .= ''. $icon . $linktexts[$key] ."\n"; + break; + } + } + } + + $spacer = ($event_link_icon_array[$keys]) ? ' ' : $spacer; + if($event_info_icon_array[$keys] && $event_info_txt_array[$keys]) { + $wider = $event_info_icon_array[$keys]==2? ' wider':''; + $field4 .= "$spacer" + . icon("info",$pastbirthday) . "" . $event_info_txt_array[$keys] . ""; + } + if(!$event_info_icon_array[$keys] && $event_info_txt_array[$keys]) { + $field4 .= $spacer . $event_info_txt_array[$keys]; + } + + $field5 = $event_description_array[$keys] ; + + if($event_bookedout_array[$keys] && !$pastbirthday) { + $eventfull = ' eventfull'; + $noticefull = ''; + $noticefull2 = $plugin_tx['calendar']['event_booked_out']; + } else $eventfull = $noticefull = $noticefull2 = ''; + + + // Now put the data into the design, i.e. the table or the template + // ================================================================ + if($tablestyle) { + + if($extrasubhead) { + $o .= $subhead; + $extrasubhead = 0; + } + + // use date field data + if($event_yearly_array[$keys]) {$o .= "$noticefull\n";} + else {$o .= "$noticefull\n";} + + $o .= '\n"; + + // use time field + if ($calendar_cf['show_event_time']){ + $o .= "\n"; + } + + // field 1, the extra field + if ($calendar_cf['show_event_entry1']) { + $o .= "\n"; + } + + // main entry field + $o .= "\n"; + + // $field3 secondary entry field + if ($calendar_cf['show_event_entry3']) { + $o .="\n"; + } + + // use $field4, the event link etc field + if ($calendar_cf['show_event_link']) { + $o .="\n\n"; + } + + // use $field 5, the additional description field + if ($calendar_cf['show_event_description']) { + // how much indented is the description going to start? + $indentation = $calendar_cf['show_description_nr_of_cells_indented']; + if(!$indentation) $indentation=0; + // preventing that $indentation gets too big + if ($indentation >= $tablecols) $indentation = $tablecols - 1; + + if (strlen($event_description_array[$keys]) > 2) { + if(!$pastbirthday) $extrasubhead = 1; + $o .= "\n"; + // if indentation is wanted, here it comes + if ($indentation) $o .= "\n"; + $o .= "\n\n"; + } + } + + + //template driven display + } elseif($pastbirthday) { + $o .= str_replace(array('%date%','%time%','%field1%','%mainfield%','%field3%','%infolink%','%description%','%age%','%ended%'), + array($date,$time,$field1,$mainfield,$field3,$field4,$field5,$agefield,$plugin_tx['calendar']['event_has_ended']), $pastyearlyevents); + } elseif($event_yearly_array[$keys]) { + $o .= str_replace(array('%bookedout%','%date%','%time%','%field1%','%mainfield%','%field3%','%infolink%','%description%','%age%'), + array($noticefull2,$date,$time,$field1,$mainfield,$field3,$field4,$field5,$agefield), $yearlyevents); + } else { + $o .= str_replace(array('%bookedout%','%date%','%time%','%field1%','%mainfield%','%field3%','%infolink%','%description%'), + array($noticefull2,$date,$time,$field1,$mainfield,$field3,$field4,$field5), $yearly2events); + } + + } // end of at least 0 years age conditon + } // end of yearly events condition + + //===============================// + // now N O R M A L events // + //===============================// + + // checking if the event is past to display it in gray + // in long events the enddate is considered + If($event_end_day_array[$keys] && !$event_yearly_array[$keys]) { + $eventdate = $event_end_year_array[$keys].$event_end_month_array[$keys].$event_end_day_array[$keys]; + } else { + $eventdate = $event_year_array[$keys].$event_month_array[$keys].$event_day_array[$keys]; + } + $reallypast = ($eventdate < $today)? " past_event" : ''; + $past = $markpast? $reallypast : ''; + + // checking if a long event started before the shown period and continues into the shown period (would be forgotten if not specially considered!) + //if($x == 0 && $event_year_array[$keys] * 100 + $event_month_array[$keys] < $year * 100 + $month && !$reallypast) $oldlonglastingevent = 1; + + // define the conditions for an event to be selected under a specific month heading + //---------------------------------------------------------------------------------- + $addcondition = $show_no_past_event? !$past : TRUE; + if(!$event_yearly_array[$keys] + && !$event_yearly2_array[$keys] + && !$event_weekly_array[$keys] + && ( + ($x && $event_year_array[$keys] == $year && $event_month_array[$keys] == $month && $addcondition) + || (!$x && $oldlong_array[$keys]) + ) + ) + + { + $month = str_pad($month,2,'0',STR_PAD_LEFT); + + // separate Data and design, 1st: create the Data + // ============================================== + + //date field + $date = $event_day_array[$keys]; + // if beginning and end dates are there, these are put one under the other + if ($event_end_day_array[$keys]) { + + if ($month!=$event_end_month_array[$keys] + || $year!=$event_end_year_array[$keys] + || $oldlong_array[$keys]) $date .= dpSeperator().$event_month_array[$keys] ; + if ($year!=$event_end_year_array[$keys] + || ($oldlong_array[$keys] + && $event_year_array[$keys]!=$event_end_year_array[$keys])) { + $date .= dpSeperator().$event_year_array[$keys] ; + } elseif (dpSeperator()=='.') $date.= "."; + $date .= ' '.$plugin_tx['calendar']['event_date_till_date'] . ' '; + $date .= $event_end_day_array[$keys].dpSeperator().$event_end_month_array[$keys].dpSeperator().$event_end_year_array[$keys]; + + } else $date .= dpSeperator()."$month".dpSeperator().$year; + if ($event_exceptions_array[$keys]) { + $date .= ' ' . $plugin_tx['calendar']['event_except'] . ' ' + . $event_exceptions_array[$keys]; + } + + + //time field + $startday = ''; + $endday = ''; + if ($event_end_day_array[$keys] && $event_end_time_array[$keys] && !$event_dailytimes_array[$keys]) { + + $startdaynr = date('w',mktime(0,0,0,$event_month_array[$keys],(int)$event_day_array[$keys],$event_year_array[$keys])); + $startday = ' ' . $shortdayname_array[$startdaynr]; + $enddaynr = date('w',mktime(0,0,0,$event_end_month_array[$keys],(int)$event_end_day_array[$keys],$event_end_year_array[$keys])); + $endday = ' ' . $shortdayname_array[$enddaynr]; + } + if ($calendar_cf['show_event_time']){ + $time .= $event_dailytimes_array[$keys]? $plugin_tx['calendar']['event_daily'].' ' : ''; + $time .= $event_time_array[$keys]; + $time .= $startday; + if ($event_end_time_array[$keys]) { + $time .= ' ' . $plugin_tx['calendar']['event_time_till_time'] . ' ' . $event_end_time_array[$keys] . $endday; + } + } + + // create field1 = event_entry1 field + $field1 = $event_entry1_array[$keys]; + + // create $mainfield = event field + $mainfield = $event_array[$keys]; + + // create $field3 = event_entry3 field + $field3 = $event_entry3_array[$keys]; + + // create $field4 = link and link-text or info-text field + $spacer = ($event_link_txt_array[$keys]) ? ' ' : ''; + + // if a link address has been given, there are different cases + $field4 = ''; + if ($event_link_adr_array[$keys]) { + $links = explode('|', $event_link_adr_array[$keys]); + $linktexts = explode('|', $event_link_txt_array[$keys]); + foreach ($links as $key=>$value) { + $addr = substr($value,4); + $type = substr($value, 0,4); + $icon = $event_link_icon_array[$keys]? icon($type,$past) . $spacer : ''; + if(!isset($linktexts[$key])) $linktexts[$key] = ''; + + + switch ($type) { + case 'pfx:': + case 'ext:': $field4 .= "". $icon . $linktexts[$key] .''; + break; + + case 'int:': $field4 .= ''. $icon . $linktexts[$key] . "\n"; + break; + + case 'in?:': $field4 .= ''. $icon . $linktexts[$key] . "\n"; + break; + + case 'doc:': + case 'pdf:': $field4 .= ''. $icon . $linktexts[$key] ."\n"; + break; + } + } + } + $spacer = ($event_link_icon_array[$keys]) ? " " : $spacer; + if($event_info_icon_array[$keys] && $event_info_txt_array[$keys]) { + $wider = $event_info_icon_array[$keys]==2? ' wider':''; + $field4 .= "$spacer" + . icon("info",$past) . "" . $event_info_txt_array[$keys] . ""; + } + if(!$event_info_icon_array[$keys] && $event_info_txt_array[$keys]) { + $field4 .= $spacer . $event_info_txt_array[$keys]; + } + + + $field5 = $event_description_array[$keys]; + + if($event_bookedout_array[$keys] && !$past) { + $eventfull = ' eventfull'; + $noticefull = ''; + $noticefull2 = $plugin_tx['calendar']['event_booked_out']; + } else $eventfull = $noticefull = $noticefull2 = ''; + + + // Now put the data into the design, i.e. the table or the template + // ================================================================ + if($tablestyle) { + + if($extrasubhead) { + $o .= $subhead; + $extrasubhead = 0; + } + + // use date field data + $o .="$noticefull\n"; + $o .="\n"; + + // use time field + if ($calendar_cf['show_event_time'] && $tablestyle){ + $o .="\n"; + } + + // field 1, the extra field + if ($calendar_cf['show_event_entry1']) { + $o .="\n"; + } + + // main entry field + $o .="\n"; + + // $field3 secondary entry field + if ($calendar_cf['show_event_entry3']) { + $o .="\n"; + } + + // use $field4, the event link etc field + if ($calendar_cf['show_event_link']) { + $o .="\n\n"; + } + + // use $field 5, the additional description field + if ($calendar_cf['show_event_description']) { + // how much indented is the description going to start? + $indentation = $calendar_cf['show_description_nr_of_cells_indented']; + if(!$indentation) $indentation=0; + // preventing that $indentation gets too big + if ($indentation >= $tablecols) $indentation = $tablecols - 1; + + if (strlen($event_description_array[$keys]) > 2) { + if(!$past) $extrasubhead = 1; + $o .= "\n"; + // if indentation is wanted, here it comes + if ($indentation) $o .= "\n"; + $o .= "\n\n"; + } + } + + //template driven display + } elseif($past) { + $o .= str_replace(array('%date%','%time%','%field1%','%mainfield%','%field3%','%infolink%','%description%','%ended%'), + array($date,$time,$field1,$mainfield,$field3,$field4,$field5,$plugin_tx['calendar']['event_has_ended']), $pastsingleevents); + } else { + $o .= str_replace(array('%bookedout%','%date%','%time%','%field1%','%mainfield%','%field3%','%infolink%','%description%'), + array($noticefull2,$date,$time,$field1,$mainfield,$field3,$field4,$field5), $singleevents); + } + + } // end of conditions to use an event under a specific month + } // end of foreach loop, looping through all event and selecting the ones from the currend month + + if($x) { + if($month==12) { + $year++;$month=1; + } else { + $month++; + } + } + $x++; + +} // end of while loop, looping through the months +if($tablestyle) {$o .= "
    $printtextmonth $printyear".tag('br')."
    $textmonth $year".tag('br')."

    ' + . $plugin_tx['calendar']['event_booked_out'] + . '

    '; + $o .= $date; + $o .= "$time$field1$mainfield $agefield$field3
     $field5

    ' + . $plugin_tx['calendar']['event_booked_out'] + . '

    "; + $o .= $date; + $o .= "$time$field1$mainfield$field3
     $field5
    \n";} else {$o .= "\n";} diff --git a/includes/eventlistconfig.php b/includes/eventlistconfig.php new file mode 100644 index 0000000..452cdf3 --- /dev/null +++ b/includes/eventlistconfig.php @@ -0,0 +1,549 @@ + $iconset, + 'show_event_time' => $time, + 'show_event_entry3' => $entry3, + 'show_event_entry1' => $entry1, + 'show_event_link' => $link, + 'show_event_description' => $description, + 'nr_of_cells_indented' => $indented, + 'show_field_no_marquee' => $nomarquee, + 'show_field_booked_out' => $showbookedout, + 'show_future_months' => $futuremonths, + 'show_past_months' => $pastmonths, + 'show_period_of_events' => $showperiod, + 'show_field_daily_times' => $showdailytimes, + 'show_field_weekly' => $showweekly, + 'show_field_yearly' => $showyearly, + 'test_event_list_template' => $listtemplate, + 'mastercolor' => $mastercolor, + 'show_field_exceptions' => $showexceptions, + 'show_field_multievent' => $showmultievent, + 'show_no_past_event' => $nopastevent, + 'show_grey_past_events' => $greypastevents, + 'show_field_mark2' => $showmark2, + ), + $configfile,1); + //save the values + file_put_contents($pth['folder']['plugins'] . $plugin . '/config/config2.php',$configfile); + //and get the changed config values again + include ($pth['folder']['plugins'] . $plugin .'/config/config2.php'); + + //same with language file + $languagefile = file_get_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php"); + $languagefile = changevalue( + array( + '_event_page' => $eventlistpage, + 'event_date' => $datename, + 'event_time' => $timename, + 'event_main_entry' => $eventname, + 'event_entry3' => $entry3name, + 'event_entry1' => $entry1name, + 'event_link_etc' => $linkname, + ), + $languagefile,2); + file_put_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php",$languagefile); + include ($pth['folder']['plugins'] . $plugin ."/languages/$sl.php"); + + //prepare some css values + $csseventfontweight = $eventfontweight? 'bold':'normal'; + + //change the css-values + $cssfile = changevalue(array( + 'b1' => $datewidth, + 'b2' => $timewidth, + 'b3' => $eventwidth, + 'b4' => $eventcolor, + 'b5' => $entry3width, + 'b6' => $entry3color, + 'b7' => $linkwidth, + 'b8' => $linkcolor, + 'b9' => $datecolor, + 'b10' => $timecolor, + 'b11' => $birthdaycolor, + 'b12' => $csseventfontweight, + 'b13' => $entry1width, + 'b14' => $entry1color, + 'b15' => $listfont, + 'b16' => $listfontsize, + 'b17' => $subheadfontsize, + 'b18' => $monthfontsize, + ),$cssfile); + + if(strlen($cssfile) > ($cssfilelength - 150)) //to prevent accidental erasure of css-file + { + file_put_contents($pth['folder']['plugins'] . '/calendar/css/stylesheet.css',$cssfile); + $hjs .= ''."\n"; + } +} + +// change the template +if ($calendar_cf['test_event_list_template']) { + $cf['site']['template'] = $calendar_cf['test_event_list_template']; + $pth['folder']['template'] = $pth['folder']['templates'].$cf['site']['template'].'/'; + $pth['file']['template'] = $pth['folder']['template'].'template.htm'; + $pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css'; + $pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/'; + $pth['folder']['templateimages'] = $pth['folder']['template'].'images/'; +} + + +$timechecked = $calendar_cf['show_event_time'] ? 'checked="checked"' : ''; +$entry3checked = $calendar_cf['show_event_entry3'] ? 'checked="checked"' : ''; +$entry1checked = $calendar_cf['show_event_entry1'] ? 'checked="checked"' : ''; +$linkchecked = $calendar_cf['show_event_link'] ? 'checked="checked"' : ''; +$descriptionchecked = $calendar_cf['show_event_description'] ? 'checked="checked"' : ''; +$nomarqueechecked = $calendar_cf['show_field_no_marquee'] ? 'checked="checked"' : ''; +$showmark2checked = $calendar_cf['show_field_mark2'] ? 'checked="checked"' : ''; +$showbookedoutchecked = $calendar_cf['show_field_booked_out'] ? 'checked="checked"' : ''; +$nopasteventchecked = $calendar_cf['show_no_past_event'] ? 'checked="checked"' : ''; +$greypasteventschecked = $calendar_cf['show_grey_past_events'] ? 'checked="checked"' : ''; +$showperiodchecked = $calendar_cf['show_period_of_events'] ? 'checked="checked"' : ''; +$showdailytimeschecked = $calendar_cf['show_field_daily_times'] ? 'checked="checked"' : ''; +$showweeklychecked = $calendar_cf['show_field_weekly'] ? 'checked="checked"' : ''; +$showyearlychecked = $calendar_cf['show_field_yearly'] ? 'checked="checked"' : ''; +$showexceptionschecked = $calendar_cf['show_field_exceptions'] ? 'checked="checked"' : ''; +$showmultieventchecked = $calendar_cf['show_field_multievent'] ? 'checked="checked"' : ''; +$eventfontweightchecked = $eventfontweight ? 'checked="checked"' : ''; + +// js file for color picker +$hjs .= ''; + +$o .= "\n\n\n\n"; +$o .= "
    \n"; +$o .= tag('input type="hidden" value="config" name="config"') . "\n"; + + + +// icon set +$handle = opendir($pth['folder']['plugins'].'calendar/images/'); +$iconfolders = array(); +while(false !== ($folder = readdir($handle))) { + if(strpos($folder,'past')===FALSE && strpos($folder,'.')===FALSE){ + $iconfolders[] = $folder; + } +} +natcasesort($iconfolders); +$iconlist = ''; +$iconfolder_select = ''; +foreach($iconfolders as $folder){ + $selected = ''; + if($folder == $calendar_cf['icon-set']) {$selected = ' selected';} + $iconfolder_select .= "\n\t".''; +} +$o .= '
    '; + +$o .= '' + . tag('input type="image" src="' + . $imageFolder + . '/help_icon.png" style="width:16;height:16;" alt="Help"') + . ''.showIcons().' Icon set nº: '; + +$o .= ""; + +$o .= " \n" . icon("int") . " \n" . icon("info") . " \n" . icon("ext") ."\n\n"; + + +/* +// select event-list style template +$handle=opendir($datapath); +$templates = array(); +while (false !== ($file = readdir($handle))) { + if(strpos($file, '.tpl')) { + $templates[$file] = $file; + } +} +closedir($handle); +natcasesort($templates); +$styles_select = ''; +foreach($templates as $file=>$eventliststyle){ + $selected = ''; + if($eventliststyle == $plugin_cf['calendar']['eventlist_style']) {$selected = ' selected';} + $styles_select .= "\n"; +} +$o .= '   ' . $plugin_tx['calendar']['config_eventlist_style'] . ': ' + . "\n\n"; +*/ + + +// font +$o .= '   ' . $plugin_tx['calendar']['config_fontfamily'] . ': '; +$o .= selectFont('listfont',$listfont,'listfontsize',$listfontsize)."\n\n"; + +// font-size subhead +$o .= '' . $plugin_tx['calendar']['config_subhead_fontsize'] . ': '; +$o .= selectFont('','','subheadfontsize',$subheadfontsize)."\n\n"; + +// font-size month etc +$o .= '' . $plugin_tx['calendar']['config_month_fontsize'] . ': '; +$o .= selectFont('','','monthfontsize',$monthfontsize)."\n\n"; + +$o .= "
    \n"; + + + + +$o .= '
    '; + +// date +$o .= '
    ' + . $plugin_tx['calendar']['config_date'] + . '
    ' + . $plugin_tx['calendar']['config_name'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['event_date'] . '" name="datename" style="width:9em"') + . ' ' + . $plugin_tx['calendar']['config_width'] . ': ' + . tag('input type="text" value="' + . $datewidth . '" name="datewidth" style="width:4em"') + . ' ' + . $plugin_tx['calendar']['config_color'] . ': ' + . tag('input type="text" class="color" id="date" value="' + . $datecolor . '" name="datecolor" id="datecolor"') + . "
    \n"; + +// time +$o .= '
    ' + . $plugin_tx['calendar']['config_time_on'] . ' ' + . tag('input type="checkbox" '.$timechecked.' value="1" name="time"') + . '
    ' + . $plugin_tx['calendar']['config_name'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['event_time'] . '" name="timename" style="width:9em"') + . ' ' + . $plugin_tx['calendar']['config_width'] . ': ' + . tag('input type="text" value="' + . $timewidth . '" name="timewidth" style="width:4em"') + . ' ' + . $plugin_tx['calendar']['config_color'] . ': ' + . tag('input type="text" class="color" id="time" value="' + . $timecolor . '" name="timecolor" id="timecolor"') + . "
    \n"; + +// entry 1 +$o .= '
    ' + . $plugin_tx['calendar']['config_on'] . ' ' + . tag('input type="checkbox" '.$entry1checked.' value="1" name="entry1"') + . '
    ' + . $plugin_tx['calendar']['config_name'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['event_entry1'] . '" name="entry1name" style="width:9em"') + . ' ' + . $plugin_tx['calendar']['config_width'] . ': ' + . tag('input type="text" value="' + . $entry1width . '" name="entry1width" style="width:4em"') + . ' ' + . $plugin_tx['calendar']['config_color'] . ': ' + . tag('input type="text" class="color" id="entry1" value="' + . $entry1color . '" name="entry1color" id="entry1color"') + . "
    \n"; + +// main event entry +$o .= '
    ' + . $plugin_tx['calendar']['config_event'] + . '
    ' + . $plugin_tx['calendar']['config_name'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['event_main_entry'] . '" name="eventname" style="width:9em"') + . ' ' + . $plugin_tx['calendar']['config_width'] . ': ' + . tag('input type="text" value="' + . $eventwidth . '" name="eventwidth" style="width:4em"') + . ' ' + . $plugin_tx['calendar']['config_color'] . ': ' + . tag('input type="text" class="color" id="mainentry" value="' + . $eventcolor . '" name="eventcolor" id="eventcolor"') + . ' ' + . tag('input type="checkbox" '.$eventfontweightchecked.' value="1" name="eventfontweight"') + . $plugin_tx['calendar']['config_bold'] . ' ' + + . "
    \n"; + +// entry 3 +$o .= '
    ' + . $plugin_tx['calendar']['config_on'] . ' ' + . tag('input type="checkbox" '.$entry3checked.' value="1" name="entry3"') + . '
    ' + . $plugin_tx['calendar']['config_name'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['event_entry3'] . '" name="entry3name" style="width:9em"') + . ' ' + . $plugin_tx['calendar']['config_width'] . ': ' + . tag('input type="text" value="' + . $entry3width . '" name="entry3width" style="width:4em"') + . ' ' + . $plugin_tx['calendar']['config_color'] . ': ' + . tag('input type="text" class="color" id="entry3" value="' + . $entry3color . '" name="entry3color" id="entry3color"') + . "
    \n"; + +// link etc +$o .= '
    ' + . $plugin_tx['calendar']['config_on'] . ' ' + . tag('input type="checkbox" '.$linkchecked.' value="1" name="link"') + . '
    ' + . $plugin_tx['calendar']['config_name'] . ': ' + . tag('input type="text" value="' + . $plugin_tx['calendar']['event_link_etc'] . '" name="linkname" style="width:9em"') + . ' ' + . $plugin_tx['calendar']['config_width'] . ': ' + . tag('input type="text" value="' + . $linkwidth . '" name="linkwidth" style="width:4em"') + . ' ' + . $plugin_tx['calendar']['config_color'] . ': ' + . tag('input type="text" class="color" id="link" value="' + . $linkcolor . '" name="linkcolor" id="linkcolor"') + . "
    \n"; + +// additional description +$j=0; +$values_select = ''; +for ($i = 0;$i <=3 ;$i++ ) { + $selected = ''; + if($i == $indented) {$selected = ' selected'; $j = 1;} + $values_select .= "\n\t"; +} + +$o .= '
    ' + . $plugin_tx['calendar']['config_on'] . ' ' + . tag('input type="checkbox" '.$descriptionchecked.' value="1" name="description"') + . '
    ' + . '"' . $plugin_tx['calendar']['event_description'] . '"' + . '    ' + . sprintf($plugin_tx['calendar']['config_indented'], + + + "\n") + . "
    \n"; + +$o .= '
    '; + + + +// birthday special color +$o .= '
    ' + . '
    ' + . ' 
    ' + . $plugin_tx['calendar']['config_birthday_color'] + . ': ' + . tag('input type="text" class="color" value="' + . $birthdaycolor . '" name="birthdaycolor"'); +$o .= "
    \n"; + + +// give all fields the same color through a master color picker +// this code was specially made by Jan Odvarko jscolor.com on request, many thanx, Jan +$o .= '
    ' + . '
    ' + . ' 
    ' + . $plugin_tx['calendar']['config_all_same_color'] + . ': ' + . tag('input id="master-picker" value="'.$mastercolor.'" name="mastercolor" ') + . ''; + + +$o .= "
    \n"; + + +$o .= '
    '; + + +// number of future and past months in event list and treatment of past events +$o .= '
    ' + . sprintf($plugin_tx['calendar']['config_event_list_period'] + , tag('input type="checkbox" '.$showperiodchecked.' value="1" name="showperiod"') + , tag('input type="text" value="' + . $calendar_cf['show_future_months'] . '" name="futuremonths" style="width:1.5em"') + , tag('input type="text" value="' + . $calendar_cf['show_past_months'] . '" name="pastmonths" style="width:1.5em"') + , tag('input type="checkbox" '.$greypasteventschecked.' value="1" name="greypastevents"') + , tag('input type="checkbox" '.$nopasteventchecked.' value="1" name="nopastevent"')) + . "
    \n"; + + +$o .= '
    '; + + +// input fields +$o .= '
    ' + . ''.$plugin_tx['calendar']['config_input_fields'] . ':  ' + . tag('input type="checkbox" '.$showmark2checked.' value="1" name="showmark2"') + . $plugin_tx['calendar']['event_mark2'] + . '   ' + . tag('input type="checkbox" '.$nomarqueechecked.' value="1" name="nomarquee"') + . $plugin_tx['calendar']['event_not_on_marquee'] + . '   ' + . tag('input type="checkbox" '.$showbookedoutchecked.' value="1" name="showbookedout"') + . $plugin_tx['calendar']['event_booked_out'] . '' + . '   ' + . tag('input type="checkbox" '.$showdailytimeschecked.' value="1" name="showdailytimes"') + . $plugin_tx['calendar']['event_times_are_daily'] . '' + . '   ' + . tag('input type="checkbox" '.$showweeklychecked.' value="1" name="showweekly"') + . $plugin_tx['calendar']['event_weekly'] . '' + . '   ' + . tag('input type="checkbox" '.$showyearlychecked.' value="1" name="showyearly"') + . $plugin_tx['calendar']['event_yearly'] . '' + . '   ' + . tag('input type="checkbox" '.$showexceptionschecked.' value="1" name="showexceptions"') + . $plugin_tx['calendar']['config_exceptions'] . '' + . '   ' + . tag('input type="checkbox" '.$showmultieventchecked.' value="1" name="showmultievent"') + . $plugin_tx['calendar']['config_additional'] . '' +// . '   ' +// . '"' . $plugin_tx['calendar']['event_entry3'] . '"= ' +// . tag('input type="checkbox" '.$entry3areachecked.' value="1" name="entry3area"') +// . $plugin_tx['calendar']['config_textarea'] . '' + . "
    \n"; + + +// event list page +$pages_select = ''; +$x = 0; +for ($i=0;$i<$cl;$i++) { + + $levelindicator = ''; + for ($j=1;$j<$l[$i];$j++) {$levelindicator .= '– ';} + $page = $levelindicator.$h[$i]; + $selected = ''; + if($plugin_tx['calendar']['_event_page'] == '?'.$u[$i]) {$selected = ' selected'; $x++;} + $pages_select .= "\n".''; +} +// in case just the name of a page was entered in the language-file +$preselect = (!$x && $plugin_tx['calendar']['_event_page'])? '' : ''; + +$o .= '
    ' + . $plugin_tx['calendar']['config_list_page'] . ': ' + . "\n" . '"; + +$o .= templateSelect($calendar_cf['test_event_list_template'],'listtemplate') + . $plugin_tx['calendar']['config_template'] . "
    \n"; + + + + +// save basic config +$o .= '
    ' + . tag('input type="submit" value="'.$plugin_tx['calendar']['menu_save_config'].'"') + . "
    \n"; + +$o .= "
    "; + diff --git a/includes/holidayconfig.php b/includes/holidayconfig.php new file mode 100644 index 0000000..a2b7d4c --- /dev/null +++ b/includes/holidayconfig.php @@ -0,0 +1,106 @@ +$value) { + if(!isset($holiday_delete[$key])) { + $newkey = $key; + if(isset($holiday_up[$key+1])) $newkey = $key + 1; + if(isset($holiday_up[$key])) $newkey = $key - 1; + $holidayarray[$newkey] = $holiday_date[$key] . ',' .$holiday_name[$key]; + } + } + if(isset($holiday_add[0])) $holidayarray[] = ','; + ksort($holidayarray); + $holidays = implode(';',$holidayarray); + + $languagefile = file_get_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php"); + + // create language file entries if not there + if(!preg_match('!holydays\'\]="(.*)";!' ,$languagefile)) { + $languagefile = str_replace('?>',"\t".'$plugin_tx[\'calendar\'][\'holydays\']="";'."\n?>" ,$languagefile); + } + + $pattern = '!holydays\'\]="(.*)";!'; + $replacement = "holydays']=\"$holidays\";"; + $languagefile = preg_replace($pattern,$replacement,$languagefile); + + file_put_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php",$languagefile); + include ($pth['folder']['plugins'] . $plugin ."/languages/$sl.php"); + +} + +$o .= "
    "; +$o .= ''; +// headline +$o .= ''; + +$o .= '\n"; + +$holidayarray = explode(';',$plugin_tx['calendar']['holydays']); + +foreach ($holidayarray as $key=>$value) { + list($holiday_date,$holiday_name) = explode(",",$value); + + $o .= "\n" + + // up-button + . '' + + // Holiday name + . '' + // Holiday date calculation + . '' + + // delete button + . '' + + // end of line + . "\n"; + +} + +$o .= "
    ' + . $plugin_tx['calendar']['holiday_name'] + . '' + . $plugin_tx['calendar']['holiday_date_calculation'] + . '' + . tag("input type='image' src='".$imageFolder + . "/add.png' style='width:16;height:16' name='holiday_add[0]' value=TRUE alt='+'") + . "
    ' . tag("input type='image' src='" . $imageFolder + . "/up.gif' style='width:16;height:16' name='holiday_up[$key]' value=TRUE alt='^'") + . '' . tag("input type='text' style='width: 96%;' value='".$holiday_name."' name='holiday_name[$key]'") . '' . tag("input type='text' style='width: 96%;' value='".$holiday_date."' name='holiday_date[$key]'") . '' . tag("input type='image' src='" . $imageFolder + . "/delete.png' style='width:16;height:16' name='holiday_delete[$key]' value='delete' alt='-'") + . '
    \n" + . tag("input type='hidden' value=TRUE name='holidaylist'") + . tag('input type="submit" class="submit" value="'.ucfirst($tx['action']['save']).'"') + . "
    \n"; + +$o .= '

    '.$plugin_tx['calendar']['holiday_date_calculation'].'

    ' + . $plugin_tx['calendar']['help_holiday_date_calculation']; + + +?> diff --git a/includes/jquery.marquee.js b/includes/jquery.marquee.js new file mode 100644 index 0000000..d214d58 --- /dev/null +++ b/includes/jquery.marquee.js @@ -0,0 +1,168 @@ +/** +* author Remy Sharp +* url http://remysharp.com/tag/marquee +* edited for Calendar-Plugin for CMSimple (right/left marquee disabled, var timingfactor added) +*/ + +(function ($) { +$(function () { + //added for Calendar-Plugin to stop the marquee on mouse over, code also by Remy Sharp + $('div.calendar_marquee marquee').marquee('pointer').mouseover(function () { + $(this).trigger('stop'); + }).mouseout(function () { + $(this).trigger('start'); + }); +}); + $.fn.marquee = function (klass) { + var newMarquee = [], + last = this.length; + + var $marquee = $(this), + timingfactor = $marquee.attr('scrollamount'); + timing = 90 / timingfactor; + + // works out the left or right hand reset position, based on scroll + // behavior, current direction and new direction + function getReset(newDir, marqueeRedux, marqueeState) { + var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir; + var r = 0; + if (behavior == 'alternate') { + r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : width; + } else if (behavior == 'slide') { + if (newDir == -1) { + r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width; + } else { + r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : 0; + } + } else { + r = newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0; + } + return r; + } + + // single "thread" animation + function animateMarquee() { + var i = newMarquee.length, + marqueeRedux = null, + $marqueeRedux = null, + marqueeState = {}, + newMarqueeList = [], + hitedge = false; + + while (i--) { + marqueeRedux = newMarquee[i]; + $marqueeRedux = $(marqueeRedux); + marqueeState = $marqueeRedux.data('marqueeState'); + + if ($marqueeRedux.data('paused') !== true) { + // TODO read scrollamount, dir, behavior, loops and last from data + marqueeRedux[marqueeState.axis] += (marqueeState.scrollamount * marqueeState.dir); + + // only true if it's hit the end + hitedge = marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] <= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] >= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState); + + if ((marqueeState.behavior == 'scroll' && marqueeState.last == marqueeRedux[marqueeState.axis]) || (marqueeState.behavior == 'alternate' && hitedge && marqueeState.last != -1) || (marqueeState.behavior == 'slide' && hitedge && marqueeState.last != -1)) { + if (marqueeState.behavior == 'alternate') { + marqueeState.dir *= -1; // flip + } + marqueeState.last = -1; + + $marqueeRedux.trigger('stop'); + + marqueeState.loops--; + if (marqueeState.loops === 0) { + if (marqueeState.behavior != 'slide') { + marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState); + } else { + // corrects the position + marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState); + } + + $marqueeRedux.trigger('end'); + } else { + // keep this marquee going + newMarqueeList.push(marqueeRedux); + $marqueeRedux.trigger('start'); + marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState); + } + } else { + newMarqueeList.push(marqueeRedux); + } + marqueeState.last = marqueeRedux[marqueeState.axis]; + + // store updated state only if we ran an animation + $marqueeRedux.data('marqueeState', marqueeState); + } else { + // even though it's paused, keep it in the list + newMarqueeList.push(marqueeRedux); + } + } + + newMarquee = newMarqueeList; + + if (newMarquee.length) { + setTimeout(animateMarquee, timing); + } + } + + // TODO consider whether using .html() in the wrapping process could lead to loosing predefined events... + this.each(function (i) { + var $marquee = $(this), + width = $marquee.attr('width') || $marquee.width(), + height = $marquee.attr('height') || $marquee.height(), + $marqueeRedux = $marquee.after('
    ' + $marquee.html() + '
    ').next(), + marqueeRedux = $marqueeRedux.get(0), + hitedge = 0, + direction = ($marquee.attr('direction') || 'left').toLowerCase(), + marqueeState = { + dir : /down|right/.test(direction) ? -1 : 1, + axis : /left|right/.test(direction) ? 'scrollLeft' : 'scrollTop', + widthAxis : /left|right/.test(direction) ? 'scrollWidth' : 'scrollHeight', + last : -1, + loops : $marquee.attr('loop') || -1, + scrollamount : $marquee.attr('scrollamount') || this.scrollAmount || 2, + behavior : ($marquee.attr('behavior') || 'scroll').toLowerCase(), + width : /left|right/.test(direction) ? width : height + }; + + // corrects a bug in Firefox - the default loops for slide is -1 + if ($marquee.attr('loop') == -1 && marqueeState.behavior == 'slide') { + marqueeState.loops = 1; + } + + $marquee.remove(); + + // add padding + if (/left|right/.test(direction)) { + $marqueeRedux.find('> div').css('padding', '0 ' + width + 'px'); + } else { + $marqueeRedux.find('> div').css('padding', height + 'px 0'); + } + + // events + $marqueeRedux.bind('stop', function () { + $marqueeRedux.data('paused', true); + }).bind('pause', function () { + $marqueeRedux.data('paused', true); + }).bind('start', function () { + $marqueeRedux.data('paused', false); + }).bind('unpause', function () { + $marqueeRedux.data('paused', false); + }).data('marqueeState', marqueeState); // finally: store the state + + // todo - rerender event allowing us to do an ajax hit and redraw the marquee + + newMarquee.push(marqueeRedux); + + marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState); + $marqueeRedux.trigger('start'); + + // on the very last marquee, trigger the animation + if (i+1 == last) { + animateMarquee(); + } + }); + + return $(newMarquee); + }; +}(jQuery)); diff --git a/includes/loadeventfile.php b/includes/loadeventfile.php new file mode 100644 index 0000000..d9507a4 --- /dev/null +++ b/includes/loadeventfile.php @@ -0,0 +1,183 @@ + $no_marquee, + 'datestart' => $event_date_start, + 'dateend' => $event_end_date, + 'starttime' => $event_time_start, + 'endtime' => $event_end_time, + 'dailytimes' => $dailytimes, + 'event_entry1' => $event_entry1, + 'event' => $event, + 'event_entry3' => $event_entry3, + 'weekly' => $weekly, + 'exceptions' => $exceptions, + 'additional' => $additional, + 'yearly' => $yearly, + 'yearly2' => $yearly2, + 'linkicon' => $event_link_icon, + 'linkint' => $event_link_int, + 'linkadd' => $event_link_adr, + 'linktxt' => $event_link_txt, + 'infoicon' => $event_info_icon, + 'infotxt' => $event_info_txt, + 'description' => $description, + 'bookedout' => $bookedout, + 'mark2' => $mark2); + $event_array[] = $entry; + } +} + diff --git a/includes/marqueeconfig.php b/includes/marqueeconfig.php new file mode 100644 index 0000000..d36100b --- /dev/null +++ b/includes/marqueeconfig.php @@ -0,0 +1,225 @@ +' . $plugin_tx['calendar']['error_occured'] . ': ' . $error . "

    \n"; + } +} + + +//============================= +// start producing html data +//============================= + +$o .= $notice; +$marquee_jquerychecked = $calendar_cf['marquee_in_jquery'] ? 'checked="checked"' : ''; + +$o .= "
    \n"; +$o .= tag('input type="hidden" value="marquee_config" name="marquee_config"') . "\n"; + + +$o .= ''; + +// marquee with jQuery? +$o .= '\n"; + + +$event_1stline = $calendar_cf['marquee_1stline']=='event'? ' selected':''; +$entry1_1stline = $calendar_cf['marquee_1stline']=='event_entry1'? ' selected':''; +$entry3_1stline = $calendar_cf['marquee_1stline']=='event_entry3'? ' selected':''; +$event_2ndline = $calendar_cf['marquee_2ndline']=='event'? ' selected':''; +$entry1_2ndline = $calendar_cf['marquee_2ndline']=='event_entry1'? ' selected':''; +$entry3_2ndline = $calendar_cf['marquee_2ndline']=='event_entry3'? ' selected':''; +$empty_2ndline = $calendar_cf['marquee_2ndline']=='empty'? ' selected':''; +$age_date = $calendar_cf['marquee_age'] =='date'? ' selected':''; +$age_1 = $calendar_cf['marquee_age'] =='1'? ' selected':''; +$age_2 = $calendar_cf['marquee_age'] =='2'? ' selected':''; +$age_not = $calendar_cf['marquee_age'] =='not'? ' selected':''; + +$o .= '\n"; + + +// number of events in marquee +$j=0; +$number_select = ''; +for ($i = 1;$i <=10 ;$i++ ) { + $selected = ''; + if($i == $calendar_cf['marquee_number_of_events_shown']) {$selected = ' selected'; $j = 1;} + $number_select .= "\n"; +} +$o .= "\n" . '\n"; + + +// speed of marquee +$j=0; +$number_select = ''; +for ($i = 1;$i <=4 ;$i += .2 ) { + $selected = ''; + if("$i" == $calendar_cf['marquee_speed']) {$selected = ' selected'; $j = 1;} + $number_select .= "\n'; +} +$o .= "\n" . '\n"; + + +// height of marquee +$o .= "\n" . '\n"; + + +// height of headline with date +$o .= "\n" . '\n"; + + +// units of the heights +$values = array('px','pt','em','%'); +$values_select = ''; +$j = 0; +foreach ($values as $option) { + $selected = ''; + if($option == $calendar_cf['marquee_height_unit']) {$selected = ' selected'; $j = 1;} + $values_select .= "\n"; +} +$o .= "\n" . '\n"; + +$o .= '
    ' + . $plugin_tx['calendar']['marquee_use_jquery'] . ': ' + . '' + . tag('input type="checkbox" '.$marquee_jquerychecked.' value="1" name="marquee_jquery"') + . '  ' + . tag('input type="image" src="' + . $pth['folder']['plugins'] . $plugin . '/images' + . '/help_icon.png" style="width:16;height:16;"') . '' + . $plugin_tx['calendar']['help_config_jquery_marquee'] + . '' + . "' + + . $plugin_tx['calendar']['marquee_1stline'] . tag('br') + . "\n" . '". tag('br') + + . $plugin_tx['calendar']['marquee_2ndline'] . tag('br') + . "\n" . '". tag('br'). tag('br') + + . $plugin_tx['calendar']['marquee_age'] . tag('br') + . "\n" . '" + + . "
    ' + . $plugin_tx['calendar']['marquee_number_of_events_shown'] . ':   ' + . '' + . "\n" . '" + . "
    ' + . $plugin_tx['calendar']['marquee_speed'] . ':   ' + . '' + . "\n" . '" + . "
    ' + . $plugin_tx['calendar']['marquee_height'] . ':   ' + . '' + . tag('input type="text" value="' + . $calendar_cf['marquee_height'] . '" name="marquee_height" style="width:3em"') + . "
    ' + . $plugin_tx['calendar']['marquee_dateline_height'] . ': ' + . '' + . tag('input type="text" value="' + . $calendar_cf['marquee_headline_height'] . '" name="marquee_headline_height" style="width:3em"') + . "
    ' + . $plugin_tx['calendar']['marquee_height_unit'] . ': ' + . '' + . "\n" + . "
    '; + + +//============== +// save +//============== +$o .= '
    ' + . tag('input type="submit" value="'.$plugin_tx['calendar']['menu_save_config'].'"') + . "
    \n"; + +$o .= "
    "; diff --git a/includes/nextevent.php b/includes/nextevent.php new file mode 100644 index 0000000..d525f53 --- /dev/null +++ b/includes/nextevent.php @@ -0,0 +1,351 @@ +\n\n"; +$remember_event = ''; + +// determining which file to read +if ($file) { + $eventfile = $datapath.$file; +}else { + $eventfile = $datapath."eventcalendar$lang.txt"; +} + +if(is_file($eventfile)) +{ + $file_array = file($eventfile); + if($addfile && is_file($datapath.$addfile)) { + $addfile_array = file($datapath.$addfile); + $file_array = array_merge($file_array,$addfile_array); + } + + // processing the data file line by line + //========================================== + foreach ( $file_array as $line) { + + if (strpos($line,';') && substr($line,0,1)!="*") { + + $yearly = FALSE; + $yearly2 = FALSE; + $weekly = FALSE; + $exceptions = ''; + $additional = ''; + $exceptionsarray = array(); + $additionaldatesarray = array(); + $txt = ''; + + $line = str_replace(array('
    ','
    '),', ',$line); + $line = strip_tags($line); + list($eventdates,$event,$event_entry3,,$eventtime) = explode( ";", $line); + list($event_date_start,$event_end_date,$event_end_time,$event_entry1) = explode(",",$eventdates,4); + + // checking if there is an * before the endtime, meaning given times of multi day events are daily times + if (substr($event_end_time,0,1)=="*") { + $event_end_time = substr($event_end_time,1); // eliminating any * + $dailytimes = TRUE; + } else $dailytimes = FALSE; + + // checking if there is an * before the enddate, which means event is overbooked + if (substr($event_end_date,0,1)=="*") { + $event_end_date = substr($event_end_date,1); // eliminating any * + } + // checking if there is an * before the event_entry1, which means alternative marking in calendar + if (substr($event_entry1,0,1)=="*") { + $event_entry1 = substr($event_entry1,1); // eliminating any * + } + + //extracting the dates + list($event_day,$event_month,$event_year) = explode( dpSeperator(), $event_date_start); + if($event_end_date) { + list($event_end_day,$event_end_month,$event_end_year) = explode( dpSeperator(), $event_end_date); + } else { + $event_end_day = $event_end_month = $event_end_year = ''; + } + + if(strpos($event,'|')){ + $additional = substr($event,0,strpos($event,'|')); + $dates = explode(",",$additional); + foreach ($dates as $value) { + $trimmeddates = trim($value); + list($d,$m,$y) = explode(dpSeperator(),$trimmeddates); + $y = rtrim($y,'*'); + $timestamp = mktime(null,null,null,$m,$d,$y); + $additionaldatesarray[] = $timestamp; + } + // eliminating additional dates from $event + $event = substr($event,(strpos($event,'|')+1)); + } + + //getting the timestamps + $time = $eventtime; + if(!preg_match('![012]\d:[0-5]\d!',$time)) $time = '20:00'; + $startmidnight = strtotime("$event_month/$event_day/$event_year"); + $start = strtotime("$event_month/$event_day/$event_year $time"); + + $time = $event_end_time; + if(!preg_match('![012]\d:[0-5]\d!',$time)) $time = '20:00'; + $end = strtotime("$event_end_month/$event_end_day/$event_end_year $time"); + + //checking for yearly or weekly events (coded in such a way as to keep the old file structure) + if (substr($event_entry3,0,3)=="###") { + $event_entry3 = substr($event_entry3,3); // erasing the ### + $yearly = TRUE; + } + if (substr($event_entry3,0,3)=="#*#") { + $event_entry3 = substr($event_entry3,3); // erasing the #*# + $yearly2 = TRUE; + } + if (substr($event_entry3,0,3)=="***") { + $event_entry3 = substr($event_entry3,3); // erasing the *** + $weekly = TRUE; + } + //legacy code (was used to indicate that there are additional days) + if (substr($event_entry3,0,3)=="*#*") { + $event_entry3 = substr($event_entry3,3); // eliminating any #*# + } + + //checking for exceptions + if(strpos($event_entry3,'|')){ + $exceptions = substr($event_entry3,0,strpos($event_entry3,'|')); + $dates = explode(",",$exceptions); + foreach ($dates as $value) { + $trimmed_dates = trim($value); + list($d,$m,$y) = explode(dpSeperator(),$trimmed_dates); + $timestamp = mktime(null,null,null,$m,$d,$y); + $exceptionsarray[] = $timestamp; + } + // eliminating exception dates from entry3 + $event_entry3 = substr($event_entry3,(strpos($event_entry3,'|')+1)); + } + + //yearly events + //============= + if ($yearly || $yearly2) { + + $anniversary = $thisyear = date("Y"); + $age = $thisyear - $event_year; + + // check present and following year + while ($anniversary < ($thisyear + 2)) { + if ($age < 2) {$age_txt = ' ' . $age . ' ' . $plugin_tx['calendar']['age_1_year_old'];} + elseif($age > 1 && $age < 5) {$age_txt = ' ' . $age . ' ' . $plugin_tx['calendar']['age_2-4_years_old'];} + else {$age_txt = ' ' . $age . ' ' . $plugin_tx['calendar']['age_5_and_more_years_old'];} + + //in which line to put the date + $age_txt_date = $calendar_cf['marquee_age']=='date'? ' —'.$age_txt:''; + $age_txt_1 = $calendar_cf['marquee_age']=='1' ? $age_txt:''; + $age_txt_2 = $calendar_cf['marquee_age']=='2' ? $age_txt:''; + + array_push($event_sorting_array, strtotime("$event_month/$event_day/$anniversary 23:59")); + array_push($event_1stline_array, $$calendar_cf['marquee_1stline'] . $age_txt_1); + array_push($event_headline_array, $event_day . dpSeperator() . $event_month . dpSeperator() . $anniversary . $age_txt_date); + if($yearly) { + array_push($event_2ndline_array, $$calendar_cf['marquee_2ndline'] . ' ' . $age_txt_2); + } else { + array_push($event_2ndline_array, $$calendar_cf['marquee_2ndline']); + } + $anniversary++; + $age++; + } + + + //weekly events + //============= + } elseif ($weekly) { + + if(!$event_end_date) $end = strtotime("+10 years", $startmidnight); + $weekly_event = $startmidnight; + + //don't calculate, if events are over + if ($end > $now) { + + //look only 2 month ahead + while($weekly_event < $end && $weekly_event < strtotime("+2 month")) { + $exception = FALSE; + if($exceptions){ + foreach ($exceptionsarray as $value) { + if($value == $weekly_event) {$exception = TRUE; break;} + } + } + if(!$exception){ + $headline = date("d",$weekly_event) . dpSeperator() . date("m",$weekly_event) . dpSeperator() . date("Y",$weekly_event); + if($eventtime) {$headline .= " — " . $eventtime;} + + array_push($event_sorting_array, $weekly_event); + array_push($event_1stline_array, $$calendar_cf['marquee_1stline']); + array_push($event_headline_array, $headline); + array_push($event_2ndline_array, $$calendar_cf['marquee_2ndline']); + } + $weekly_event = strtotime("+1 week", $weekly_event); + } + if($additional) { + foreach ($additionaldatesarray as $value) { + $headline = date("d",$value) . dpSeperator() . date("m",$value) . dpSeperator() . date("Y",$value); + if($eventtime) {$headline .= " — " . $eventtime;} + + array_push($event_sorting_array, $value); + array_push($event_1stline_array, $$calendar_cf['marquee_1stline']); + array_push($event_headline_array, $headline); + array_push($event_2ndline_array, $$calendar_cf['marquee_2ndline']); + } + } + } + + //Normal events + //============= + } elseif (!$weekly && !$yearly && !$yearly2) { + + if($event_end_date) { + $txt = $event_day; + if ($event_month!=$event_end_month || $event_year!=$event_end_year) $txt .= dpSeperator(). $event_month; + if ($event_year!=$event_end_year) $txt .= dpSeperator(). $event_year; + if (dpSeperator()=='.' && $event_year==$event_end_year) $txt .= "."; + $txt .= " ". $plugin_tx['calendar']['event_date_till_date'] . " " .$event_end_date ; + }else{ + $txt = $event_date_start; + if($eventtime) $txt .= " — " . $eventtime ; + } + + if($event_end_date && $start < $now && $end > $now) { + array_push($event_sorting_array, ($now + $spacer)); + } else { + array_push($event_sorting_array, $start); + } + array_push($event_1stline_array, $$calendar_cf['marquee_1stline']); + array_push($event_headline_array, /*'normal' .*/ $txt); + array_push($event_2ndline_array, $$calendar_cf['marquee_2ndline']); + + if($additional) { + foreach ($additionaldatesarray as $value) { + $headline = date("d",$value) . dpSeperator() . date("m",$value) . dpSeperator() . date("Y",$value); + if($eventtime) {$headline .= " — " . $eventtime;} + + array_push($event_sorting_array, $value); + array_push($event_1stline_array, $$calendar_cf['marquee_1stline']); + array_push($event_headline_array, $headline); + array_push($event_2ndline_array, $$calendar_cf['marquee_2ndline']); + } + } + + $spacer += 60; + } + } + } +} + +//suggestion from cmb +array_multisort($event_sorting_array,$event_headline_array,$event_1stline_array,$event_2ndline_array); + +foreach($event_sorting_array as $event_date){ + if($event_date > $now){ + if($remember_event == '') $remember_event = $event_date; + } +} + +//test +//$o .= '
    $remember_event: ' . $remember_event . ' ' . date("d.m.Y, H:i", $remember_event) . '
    '; + + +if($remember_event > $now){ + + //check how many events should be shown + if(!$number) $number = $calendar_cf['marquee_number_of_events_shown']; + + //if nothing is specified, default is 1 event. However 0 can be specified in config + if($number==="") $number = 1; + + //find the array number of the first event to be shown + $i = array_search($remember_event, $event_sorting_array); + + //limit the number of events to be on marquee to events that are available. + $max_next_events = (count($event_sorting_array)) - $i; + If($max_next_events < $number) $number = $max_next_events; + + //height unit default is px + $height_unit = ($calendar_cf['marquee_height_unit'])? $calendar_cf['marquee_height_unit'] : "px"; + + + if ($number == 1) { + $height = $calendar_cf['marquee_height'] - $calendar_cf['marquee_headline_height']; + $o .= "
    \n"; + $o .= "\n"; + if(!$checkcontents) { + $o .= "\n"; + } + $o .= "

    ".$event_1stline_array[$i]."

    \n"; + $o .= "

    ".$event_2ndline_array[$i]."

    \n"; + $o .= "
    \n
    "; + } + elseif ($number > 1) { + $height = $calendar_cf['marquee_height']; + + $o .= "
    "; + if(!$checkcontents) { + $o .= "\n"; + } + + //substract "1" as in the end one event will be added anyway + $number --; + + for ( $count = 0 ; $count < $number ; $count++) { + $o .= "\n"; + $o .= "

    " . $event_1stline_array[$i + $count]."

    \n"; + $o .= "

    " . $event_2ndline_array[$i + $count]."

    \n"; + + //add space betwenn the different event announcements + $o .= "
     
    \n"; + } + //last line without added space (the marquee function adds space) + $o .= "\n"; + $o .= "

    " . $event_1stline_array[$i + $number]."

    \n"; + $o .= "

    " . $event_2ndline_array[$i + $number]."

    \n"; + //now the marquee row is finished. The marquee function adds space automatically + //betwenn the event announcements + $o .= "
    \n
    \n"; + } +} + +// if there are no events planned, one can give a notice to that effect (bug correction by cmb) +elseif ($plugin_tx['calendar']['notice_no_next_event_scheduled']) { + $o .= "
    \n" + . "\n
    \n"; +} + diff --git a/includes/presets.php b/includes/presets.php new file mode 100644 index 0000000..319a460 --- /dev/null +++ b/includes/presets.php @@ -0,0 +1,382 @@ + 'writetime', + 'bigcalendar_write_event' => 'writeevent', + 'bigcalendar_write_entry3' => 'writeentry3', + 'bigcalendar_write_entry1' => 'writeentry1', + 'bigcalendar_anniversary_write_entry3' => 'birthdayentry3', + 'bigcalendar_anniversary_write_age' => 'birthdayage', + 'bigcalendar_month_year_headline_style' => 'headline', + 'bigcalendar_line_between_entries' => 'linebetween', + 'bigcalendar_symbol_if_no_time_given' => 'notimesymbol', + + 'calendar-popup_big' => 'smallcalpopup', + + 'dont_underline_longevents' => 'underlongevent', + + 'icon-set' => 'iconset', + + 'show_description_nr_of_cells_indented' => 'indented', + 'show_event_description' => 'description', + 'show_event_entry3' => 'entry3', + 'show_event_entry1' => 'entry1', + 'show_event_link' => 'link', + 'show_event_time' => 'time', + 'show_field_booked_out' => 'showbookedout', + 'show_field_daily_times' => 'showdailytimes', + 'show_field_exceptions' => 'showexceptions', + 'show_field_multievent' => 'showmultievent', + 'show_field_no_marquee' => 'nomarquee', + 'show_field_weekly' => 'showweekly', + 'show_field_yearly' => 'showyearly', + 'show_future_months' => 'futuremonths', + 'show_past_months' => 'pastmonths', + 'show_grey_past_events' => 'greypastevents', + 'show_no_past_event' => 'nopastevent', + 'show_field_mark2' => 'showmark2', + 'show_period_of_events' => 'showperiod', + + 'test_event_list_template' => 'listtemplate', + 'test_calendar_template' => 'calendartemplate', + + 'titleattributepopup_entry3' => 'entry3popup', + ); + //delete variables not used + foreach ($values as $key=>$value) if(isset($$value)) $values[$key] = $$value; else unset($values[$key]); + //change values + $configfile = changevalue($values,$configfile,1); + + //save the changed values + $config_ok = file_put_contents($pth['folder']['plugins'] . $plugin . '/config/config2.php',$configfile); + $error .= $config_ok? '' : $plugin_tx['calendar']['error_could_not_change_config_file'].', '; + //and let the changed config values take effect + include ($pth['folder']['plugins'] . $plugin .'/config/config2.php'); + + + //read the language file + //====================== + $languagefile = file_get_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php"); + + //collect possible language variables + $values=array( + '_event_page' => 'eventlistpage', + 'event_date' => 'datename', + 'event_time' => 'timename', + 'event_main_entry' => 'eventname', + 'event_entry3' => 'entry3name', + 'event_entry1' => 'entry1name', + 'event_link_etc' => 'linkname', + 'hint_mouseover_in_calendar' => 'hintmouseover', + ); + //delete variables not used + foreach ($values as $key=>$value) if(isset($$value)) $values[$key] = $$value; else unset($values[$key]); + //change values + $languagefile = changevalue($values,$languagefile,1); + + $lang_ok = file_put_contents($pth['folder']['plugins'] . $plugin . "/languages/$sl.php",$languagefile); + $error .= $lang_ok? '' : $plugin_tx['calendar']['error_could_not_change_language_file'].', '; + + include ($pth['folder']['plugins'] . $plugin ."/languages/$sl.php"); + + //get the css-data + //================ + $cssfile = file_get_contents($pth['folder']['plugins'] . $plugin . '/css/stylesheet.css'); + $cssfilelength = strlen($cssfile); //just for security, to prevent accidential deletion of the file later + + //collect possible language variables + $values=array( + 'a1' => 'normaldaycolor', + 'a2' => 'weekendcolor', + 'a3' => 'holidaycolor', + 'a4' => 'eventdaycolor', + 'a5,!im' => 'eventdaybgcolor', + 'a6' => 'underlongcolor', + 'a7' => 'underlongwidth', + 'a8' => 'mark2color', + 'a9' => 'mark2width', + 'a10' => 'eventdaybold', + + 'c1' => 'headlinecolor', + 'c2' => 'backgroundcolor', + 'c3,url' => 'backgroundimage', + 'c4' => 'bordercolor', + 'c5' => 'borderwidth', + 'c6' => 'dayspacing', + 'c7' => 'nowrapdata', + 'c10' => 'daynamespadtop', + 'c11' => 'daynamespadbot', + 'c13' => 'dayheight', + 'c14' => 'topmargin', + 'c18' => 'daynames', + 'c19,!im' => 'cssbirthdayfield', + 'c20' => 'roundcorners', + 'c21' => 'shadow', + 'c22' => 'opacitynoevent', + 'c31,sU' => 'headlineconfig', + 'c32,sU' => 'daynameconfig', + 'c33,sU' => 'todaynameconfig', + 'c34' => 'bigcalfont', + 'c35' => 'bigcalfontsize', + 'c36' => 'dayfieldborder', + 'c37' => 'bordercollapse', + 'c38' => 'dayfieldpadding', + + 'sc1' => 'smallcallineheight', + 'sc2' => 'smallcalfont', + 'sc3' => 'smallcalfontsize', + 'sc4,url!' => 'birthdayimage', + 'sc5' => 'todaycolor', + 'sc6,!im' => 'csstodaybgcolor', + 'sc7' => 'csstodaybold', + + 'p1' => 'popupbordercolor', + 'p2' => 'popupborderwidth', + 'p3' => 'popupbackground', + 'p4' => 'popupfont', + 'p5' => 'popupfontsize', + + 'b1' => 'datewidth', + 'b2' => 'timewidth', + 'b3' => 'eventwidth', + 'b4' => 'eventcolor', + 'b5' => 'entry3width', + 'b6' => 'entry3color', + 'b7' => 'linkwidth', + 'b8' => 'linkcolor', + 'b9' => 'datecolor', + 'b10' => 'timecolor', + 'b11' => 'birthdaycolor', + 'b12' => 'eventfontweight', + 'b13' => 'entry1width', + 'b14' => 'entry1color', + 'b15' => 'listfont', + 'b16' => 'listfontsize', + 'b17' => 'subheadfontsize', + 'b18' => 'monthfontsize', + ); + //delete variables not used + foreach ($values as $key=>$value) if(isset($$value)) $values[$key] = $$value; else unset($values[$key]); + //change values + $cssfile = changevalue($values,$cssfile); + + if(strlen($cssfile) > ($cssfilelength - 500)) //to prevent accidental deletion of css-file + { + $css_ok = file_put_contents($pth['folder']['plugins'] . '/calendar/css/stylesheet.css',$cssfile); + //to ensure the browser of the user is reading the changed file + $hjs .= ''; + } else $error .= 'Too many css-changes,';//$css_ok = FALSE; + + $error .= $css_ok===FALSE? $plugin_tx['calendar']['error_could_not_change_css_file'].', ' : ''; + $error = trim($error, ', '); + + //trying to force reloading of the css-file + $x = rand (1,100); + $hjs .= ''."\n" + . ''."\n"; + + if ($css_ok && $lang_ok && $config_ok) { + $notice .= sprintf('

    ' . $plugin_tx['calendar']['notice_preset_applied'] + . "

    \n",substr($preset, 0, strpos($preset,'.'))); + } else { + $notice .= '

    ' . $plugin_tx['calendar']['error_occured'] . ': ' . $error . "

    \n"; + } +} + + +if ($backup) { + + if(preg_match('/[^(\w)]/',$settingsname)) { + $notice = '

    ' . $plugin_tx['calendar']['error_settings_name_wrong'] . "

    \n"; + } else { + + include($pth['folder']['plugins'].'calendar/includes/readcss.php'); + + $settingsfile = '$value) { + $settingsfile .= "\t$key = '$value';\n"; + } + + // config2 data + include ($pth['folder']['plugins'] . $plugin .'/config/config2.php'); + if($filetype=='calendar') { + + $values = array( + 'bigcalendar_write_time' => 'writetime', + 'bigcalendar_write_event' => 'writeevent', + 'bigcalendar_write_entry3' => 'writeentry3', + 'bigcalendar_write_entry1' => 'writeentry1', + 'bigcalendar_anniversary_write_entry3' => 'birthdayentry3', + 'bigcalendar_anniversary_write_age' => 'birthdayage', + 'bigcalendar_month_year_headline_style' => 'headline', + 'bigcalendar_line_between_entries' => 'linebetween', + 'bigcalendar_symbol_if_no_time_given' => 'notimesymbol', + + 'calendar-popup_big' => 'smallcalpopup', + + 'dont_underline_longevents' => 'underlongevent', + + 'test_calendar_template' => 'calendartemplate', + + 'titleattributepopup_entry3' => 'entry3popup', + ); + + $settingsfile .= "\n" + . '//Config2 Calendar Settings'."\n" + . '//========================='."\n"; + + foreach ($values as $key=>$value) { + $settingsfile .= "\t".'$'.$value.' = \''.$calendar_cf[$key]."';\n"; + } + $settingsfile .= "\n" + . '//Language-Values of Big Calendar'."\n" + . '//==============================='."\n" + . "\t".'$hintmouseover = \'' .$plugin_tx['calendar']['hint_mouseover_in_calendar']."';\n" + ; + } else { + + $settingsfile .= "\n" + . '//Config2 Event-List Settings'."\n" + . '//==========================='."\n"; + $values = array( + 'icon-set' => 'iconset', + + 'show_description_nr_of_cells_indented' => 'indented', + 'show_event_description' => 'description', + 'show_event_entry3' => 'entry3', + 'show_event_entry1' => 'entry1', + 'show_event_link' => 'link', + 'show_event_time' => 'time', + 'show_field_booked_out' => 'showbookedout', + 'show_field_daily_times' => 'showdailytimes', + 'show_field_exceptions' => 'showexceptions', + 'show_field_multievent' => 'showmultievent', + 'show_field_no_marquee' => 'nomarquee', + 'show_field_weekly' => 'showweekly', + 'show_field_yearly' => 'showyearly', + 'show_future_months' => 'futuremonths', + 'show_past_months' => 'pastmonths', + 'show_grey_past_events' => 'greypastevents', + 'show_no_past_event' => 'nopastevent', + 'show_field_mark2' => 'showmark2', + 'show_period_of_events' => 'showperiod', + + 'test_event_list_template' => 'listtemplate', + ); + + foreach ($values as $key=>$value) { + $settingsfile .= "\t".'$'.$value.' = \''.$calendar_cf[$key]."';\n"; + } + + + $settingsfile .= "\n" + . '//Language-Values of Event-List'."\n" + . '//============================='."\n"; + $values=array( + '_event_page' => 'eventlistpage', + 'event_date' => 'datename', + 'event_time' => 'timename', + 'event_main_entry' => 'eventname', + 'event_entry3' => 'entry3name', + 'event_entry1' => 'entry1name', + 'event_link_etc' => 'linkname', + ); + + foreach ($values as $key=>$value) { + $settingsfile .= "\t".'$'.$value.' = \''.$plugin_tx['calendar'][$key]."';\n"; + } + } + + $settingsfile .= "\n?>\n"; + + if(file_put_contents($pth['folder']['plugins'].'/calendar/templates/' .$settingsname . '.' . $filetype . '.php', $settingsfile)) { + $notice = sprintf('

    ' . $plugin_tx['calendar']['notice_settings_data_saved'] + . "

    \n", $settingsname); + } else { + $notice = '

    \n"; + } + } +} + +$o .= '

    ' . "\n"; +$o .= tag('input type="hidden" value="preset" name="preset"') . "\n"; + + +$handle=opendir($pth['folder']['plugins'].'/calendar/templates/'); +$settings = array(); +while (false !== ($file = readdir($handle))) { + if(strpos($file, $filetype.'.php')) { + $settings[$file] = substr($file, 0, (strlen($file)-strlen($filetype)-5)); + } +} +closedir($handle); +natcasesort($settings); +$preset_select = ''; +foreach($settings as $file=>$settingsname){ + $preset_select .= "\n'; +} + + +$o .= ''.$plugin_tx['calendar']['config_presets'] .': ' + . ""; + +//============== +// apply presets +//============== +//$o .= tag('input type="submit" value="'.$plugin_tx['calendar']['menu_apply_preset'].'"'); + +$o .= "
    "; + + +//========================== +// create settings back up +//========================== +$o .= '
    ' . "\n"; +$o .= tag('input type="hidden" value="backup" name="backup"') . "\n"; + +$o .= tag('input type="submit" value="'.$plugin_tx['calendar']['menu_preset_backup'].'"') + . tag('input type="text" value="'.$plugin_tx['calendar']['menu_settings_backupname'].'" name="settingsname" style="width:9em"'); + +//$o .= "\n"; + + +$o .= "
    "; + +//if($notice) +$o .= $notice; + +$o .= '
    '; + diff --git a/includes/readcss.php b/includes/readcss.php new file mode 100644 index 0000000..2ce5dfb --- /dev/null +++ b/includes/readcss.php @@ -0,0 +1,235 @@ +0 ; $i-- ) { + if(is_file($eventfile. ".bak".$i)) rename($eventfile. ".bak".$i , $eventfile. ".bak" . ($i+1)); + } + if(is_file($eventfile)) { + if($backups>0) rename($eventfile, $eventfile. ".bak1"); + } +} + +// only for backup admin file handling +if(!$standardmode) { + if(preg_match('/[^(\w|.)]/',$file)) { + $notice = "" . $plugin_tx['calendar']['error_file_name_wrong'] . ""; + } +} + +if(!$notice) { + // no obstacle encountered, so proceed with saving the file + + // now convert the event entries to usable format and enter them line by line into the eventfile + $newfile = array(); + foreach($array as $entry) { + + $no_marquee = $entry['no_marquee']? '*' : ''; + $dailytimes = $entry['dailytimes']? '*' : ''; + $bookedout = $entry['bookedout']? '*' : ''; + $mark2 = $entry['mark2']? '*' : ''; + + // Converting text marked up with "Simple Formatting" + $event_entry1 = simpleMarkupToHtml ($entry['event_entry1']); + $event = simpleMarkupToHtml ($entry['event']); + $event_entry3 = simpleMarkupToHtml ($entry['event_entry3']); + $infotxt = simpleMarkupToHtml ($entry['infotxt']); + $linktxt = simpleMarkupToHtml ($entry['linktxt']); + + $eventdates = $entry['datestart'] . "," . $bookedout . $entry['dateend'] . "," . $dailytimes . $entry['endtime']; + $event_time_start = $entry['starttime']; + + $repeating_event = ''; + if($entry['yearly2']) $repeating_event = '#*#'; + if($entry['yearly']) $repeating_event = '###'; + if($entry['weekly']) $repeating_event = "***"; + + $exceptions = $entry['exceptions'] ? $entry['exceptions'] . '|' : ''; + $additional = $entry['additional'] ? $entry['additional'] . '|' : ''; + + if ($entry['linkint'] || $entry['linkadd']) { + $linkicon = $entry['linkicon']? '*' : ''; + } else { + $linkicon = ''; + } + $linkadd = $entry['linkadd']; + $linkint = $entry['linkint']? 'int:'.$entry['linkint'] : ''; + $linkint = ($linkint && $linkadd)? $linkint.'|' : $linkint; + + if($entry['infotxt'] && $entry['infoicon']==1) {$infoicon = '*';} + elseif ($entry['infotxt'] && $entry['infoicon']==2) {$infoicon = '+';} + else $infoicon = ''; + + $description = $entry['description']; + $line = $no_marquee + . $eventdates + . ',' + . $mark2 + . $event_entry1 + . ';' + . $additional + . $event + . ';' + . $repeating_event + . $exceptions + . $event_entry3 + . ';' + . $linkicon + . $linkint + . $linkadd + . ',' + . $linktxt + . ',' + . $infoicon + . $infotxt + . ';' + . $event_time_start + . ';' + . $description + . "\n"; + array_push($newfile,$line); + } + + // write the version nr at the beginning of the array + $version = "Calendar eventfile 1.3\n"; + array_unshift($newfile,$version); + + // save the file + $result = file_put_contents($eventfile, $newfile); + + if($result ===FALSE) + { + $notice = "" . $plugin_tx['calendar']['error_file_not_writable'] . ""; + // $notice = "". $plugin_tx['calendar']['error_file_not_saved'].""; + } + else + { + $filename = $file? $file : "eventcalendar".$lang.".txt"; + $notice = "" . count($array) . " " + . $plugin_tx['calendar']['notice_number_of_events_saved_in_file'] . " \"" . $filename . "\""; + //Now change time/date of last edit of content, so that this date can be displayed on the website (many thanx to cmb for this line of code) + touch($pth['file']['content']); + } + + +} diff --git a/includes/simplemarkup.php b/includes/simplemarkup.php new file mode 100644 index 0000000..c9d9647 --- /dev/null +++ b/includes/simplemarkup.php @@ -0,0 +1,156 @@ +-type popups) + + for CMSimple calendar plugin + Transforms multiline simple text marked up with + "*","_","~" to HTML without

    + for use in table fields and pop-ups and vici versa + + 2/2012 by svasti www.svasti.de -- +****************************************************/ + + +$formatting_hints = '' + + . '' + . '' + . '' + . "\n" + + . '' + + . '' + . '' + . '' + . "\n" + + . '' + . '' + . '' + . "\n" + + . '' + . '' + . '' + . "\n" + + . '' + . '' + . '' + . "\n" + + . '' + . '' + . '' + . "\n" + + . '' + . '' + . '' + . "\n" + + . '' + . '' + . '' + . '
    abc\-def→' . tag('br') + . '→ abcdef' . tag('br') + . '      abc-' . tag('br') + . 'def
     
    ==abc== →     abc
    **abc**abc
    *abc*abc
    ++abc++abc
    _abc_abc
    __abc__abc
    \\**
    '; + + + +//converts text (formatted with *,_,#.~ and \n) to html for table data cells without paragraphs +function simpleMarkupToHtml($text) +{ + + // soft hyphens + $text = str_replace('\-','­',$text); + + $pattern = array( + '/==([^=]+)==/', //1 - ==big== + '/\*\*([^\*]+)\*\*/', //2 - **bold** + '/(? + ); + + $replacement = array( + '\1', //1 - big + '\1', //2 - bold + '\1', //3 - italic + '$1', //4 - red + '\1', //5 - underlined + '\1', //6 - small + '*', //7 - * + + '', //12- no empty lines at the end + "tag('br')" //13- replace line breaks by
    + ); + + $text = preg_replace($pattern, $replacement, $text); + + $text = str_replace(array(chr(10),chr(13),'\\\'','\\"','\\*'),array('','','\'','"','*'), $text); + +return $text; +} + +//converts simple html without linebreaks+paragraphs to plain text formatted with *,_,# and linebreaks +function htmlToSimpleMarkup($text) +{ + $text = str_replace( + array( + '

    ', + 'strong>', + 'em>', + '­', //soft hyphen + '', + '' + ), + array( + '
    ', + 'b>', + 'i>', + '\-', + '', + '' + ), + $text + ); + + $text = preg_replace( + array( + '/\*/', //1 - * + '/([\S+|\S+\s]+)<\/span>/U', //2 - big + '/([\S+|\S+\s]+)<\/b>/U', //3 - bold + '/([^_]+)<\/i>/U', //4 - italic + '/([\S+|\S+\s]+)<\/span>/U', //5 - red + '/([\S+|\S+\s]+)<\/u>/U', //6 - underlined + '/([^_]+)<\/small>/U', //7 - small + '//' //8 - line break + ), + array( + '\\*', //1 - escaped * + '==\1==', //2 - ==big== + '**\1**', //3 - **bold** + '*\1*', //4 - *italic* + '++\1++', //5 - ++red++ + '_\1_', //6 - _underlined_ + '__\1__', //7 - __small__ + chr(10), //8 - new line + ), + $text + ); + +return $text; +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..04e1fc4 --- /dev/null +++ b/index.php @@ -0,0 +1,423 @@ + +// /* */ +// \n"; +} +// CMB END //erased calls which caused problems for the addition "stop on mouse over", svasti for calendar 1.4 + +function nextevent($number='',$file='',$addfile='',$checkcontents=''){ + global $pth,$plugin; + $plugin=basename(dirname(__FILE__),"/"); + include ($pth['folder']['plugins'].'calendar/includes/nextevent.php'); + return $o; +} +function nextevent12() { + global $plugin_cf; + return nextevent('','',$plugin_cf['calendar']['second-calendar_filename']); +} + +//================================================================================================// +// ********************************************************************************************** // +// * * // +// * B A C K E N D, editing the event file * // +// * * // +// ********************************************************************************************** // +//================================================================================================// + + +function eventForm($events,$saving_notice='',$file='',$standardmode,$calendar2='') +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/eventform.php'); + return $o; +} +function editevents($file='',$standardmode=1,$calendar2='') +{ + global $pth; include_once ($pth['folder']['plugins'].'calendar/includes/editevents.php'); + return $o; +} +function editevents2() +{ + global $plugin_cf; + return editevents($plugin_cf['calendar']['second-calendar_filename'],1,1); +} +function loadEventFile($file='') +{ + global $pth,$plugin; + $plugin=basename(dirname(__FILE__),"/"); + include_once ($pth['folder']['plugins'].'calendar/includes/loadeventfile.php'); + return $event_array; +} +function saveEventFile($array,$file,$standardmode) +{ + global $pth,$plugin; + $plugin=basename(dirname(__FILE__),"/"); + include_once ($pth['folder']['plugins'].'calendar/includes/saveeventfile.php'); + return $notice; +} + +// preloading files for tinymce +if ($calendareditor =='tinymce'){ + include_once($pth['folder']['plugins'].'tinymce/links.php'); + include_once($pth['folder']['plugins'].'tinymce/init.php'); +} + +// preloading simple markup +include_once ($pth['folder']['plugins'].'calendar/includes/simplemarkup.php'); + + +//===================================== +// finds internal URL of site pagenames +//===================================== +function pagenameToUrl($pagename) +{ + global $u, $cf; + $urlarray = array(); + if(substr($pagename, 0,1)=='?' || substr($pagename, 0,1)=='/' || substr($pagename, 0,1)=='.') { + if (!strpos($pagename,'%') && !preg_match('!&.+=!', $pagename)) { + + list($start,$end) = explode('?',$pagename,2); + $end = str_replace('&', '&',$end); + $endarray = explode($cf['uri']['seperator'],$end); + foreach ($endarray as $key=>$value) { + $endarray[$key] = uenc($value); + } + $end = implode($cf['uri']['seperator'],$endarray); + $pagename = $start.'?'.$end; + } + return $pagename; + } + + $pagename = preg_replace('#&(?!amp;)#', '&',$pagename); + $pagename = uenc($pagename); + for ($i = 0; $i < count ($u); $i++) { + $name = ''; + $divider = strrpos($u[$i],$cf['uri']['seperator']) ? strrpos($u[$i],$cf['uri']['seperator'])+1 : 0; + $name = substr($u[$i],$divider); + // checking all pagenames in case a name occurs more than once + if ($name == $pagename) array_push($urlarray, $u[$i]); + } + + if (count($urlarray)==1) $url = $urlarray[0]; + // if the name occurs more than once, FALSE is returned + if (count($urlarray)>1) $url = FALSE; + // if the name doesn't occur, 0 is returned + if (count($urlarray)==0) $url = 0; + + return $url; +} + + +//========================================= +// converts internal URL to simple pagename +//========================================= +function urlToPagename($url) +{ + global $cf; + if(substr($url, 0,1)=='?' || substr($url, 0,1)=='/') { + if (strpos($url,'%')!==false) { + list($start,$end) = explode('?',$url,2); + $end = urldecode($end); + $url = $start.'?'.$end; + } + } else { + $url = urldecode($url); + $divider = strrpos($url,$cf['uri']['seperator']) ? strrpos($url,$cf['uri']['seperator'])+1 : 0; + $url = substr($url,$divider); + } + $pagename = str_replace('_',' ',$url); + return $pagename; +} + + +//=============================================== +// Determines the link type: www, page, pdf, doc +//=============================================== +function findLinkType($url) +{ + // checking does the name end in .pdf? -> external or internal downloads pdf link + if(preg_match('!.+\..+\/.+\.pdf$!',$url)) return "pfx:"; elseif(preg_match('!\.pdf$!',$url)) return "pdf:"; + + // checking does the name end in .doc or .docx? + if(preg_match('!\.doc(x?)$!',$url)) return "doc:"; + + // does the name start with "?" + if(substr($url,0,1)=='?' || substr($url,0,1)=='/') return "in?:"; + + // checking is the name a pagename? + if(pagenameToUrl($url)) { + $result = 'int:'; + // checking is the name a pagenam which occurs twice + } elseif (pagenameToUrl($url)===FALSE) { + $result = 'er2:' ; + // checing if the name has characteristics of external URL + } elseif (strstr($url,'.') && !strstr($url,' ')){ + $result = 'ext:' ; + } else $result = 'err:'; + + return $result; +} + + +//======================================================================================= +// Chronological sorting of events, function by manu, given via posting in CMSimple Forum +//======================================================================================= +function dateSort($a, $b){ + $pattern = '!(.*)\\'.dpSeperator().'(.*)\\'.dpSeperator().'(.*)!'; + $replace = '\3\2\1'; + $a_i = $a['weekday'] . preg_replace($pattern,$replace,$a['datestart']).$a['starttime']; + $b_i = $b['weekday'] . preg_replace($pattern,$replace,$b['datestart']).$b['starttime']; + if ($a_i == $b_i) return 0; + return ($a_i < $b_i) ? -1 : 1; +} + + +?> diff --git a/jscolor/arrow.gif b/jscolor/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..246478a864f812d93d4cd0e0d0ad1c8e2d09c825 GIT binary patch literal 66 zcmZ?wbhEHbWM|-JSjfZx1poj4Utv=LM2bII7`Ygj7<53QAbAERVV@R>f}L*~a`L;Z PKCZl?^}@uHk--`OML81Y literal 0 HcmV?d00001 diff --git a/jscolor/calendarcolor.js b/jscolor/calendarcolor.js new file mode 100644 index 0000000..4e8a0f7 --- /dev/null +++ b/jscolor/calendarcolor.js @@ -0,0 +1,926 @@ +/** + * jscolor, JavaScript Color Picker + * + * @version 1.3.11 + * @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html + * @author Jan Odvarko, http://odvarko.cz + * @created 2008-06-15 + * @updated 2011-11-07 + * @link http://jscolor.com + */ + + +var jscolor = { + + + dir : '', // location of jscolor directory (leave empty to autodetect) + bindClass : 'calcolor', // class name + binding : true, // automatic binding via + preloading : true, // use image preloading? + + + install : function() { + jscolor.addEvent(window, 'load', jscolor.init); + }, + + + init : function() { + if(jscolor.binding) { + jscolor.bind(); + } + if(jscolor.preloading) { + jscolor.preload(); + } + }, + + + getDir : function() { + if(!jscolor.dir) { + var detected = jscolor.detectDir(); + jscolor.dir = detected!==false ? detected : 'jscolor/'; + } + return jscolor.dir; + }, + + + detectDir : function() { + var base = location.href; + + var e = document.getElementsByTagName('base'); + for(var i=0; i vs[a] ? + (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) : + tp[a], + -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ? + (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) : + (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c) + ]; + } + drawPicker(pp[a], pp[b]); + } + }; + + + this.importColor = function() { + if(!valueElement) { + this.exportColor(); + } else { + if(!this.adjust) { + if(!this.fromString(valueElement.value, leaveValue)) { + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + } + } else if(!this.required && /^\s*$/.test(valueElement.value)) { + valueElement.value = ''; + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + + } else if(this.fromString(valueElement.value)) { + // OK + } else { + this.exportColor(); + } + } + }; + + + this.exportColor = function(flags) { + if(!(flags & leaveValue) && valueElement) { + var value = this.toString(); + if(this.caps) { value = value.toUpperCase(); } + if(this.hash) { value = '#'+value; } + valueElement.value = value; + } + if(!(flags & leaveStyle) && styleElement) { + styleElement.style.backgroundColor = + '#'+this.toString(); + styleElement.style.color = + 0.213 * this.rgb[0] + + 0.715 * this.rgb[1] + + 0.072 * this.rgb[2] + < 0.5 ? '#FFF' : '#000'; + } + if(!(flags & leavePad) && isPickerOwner()) { + redrawPad(); + } + if(!(flags & leaveSld) && isPickerOwner()) { + redrawSld(); + } + }; + + + this.fromHSV = function(h, s, v, flags) { // null = don't change + h<0 && (h=0) || h>6 && (h=6); + s<0 && (s=0) || s>1 && (s=1); + v<0 && (v=0) || v>1 && (v=1); + this.rgb = HSV_RGB( + h===null ? this.hsv[0] : (this.hsv[0]=h), + s===null ? this.hsv[1] : (this.hsv[1]=s), + v===null ? this.hsv[2] : (this.hsv[2]=v) + ); + this.exportColor(flags); + }; + + + this.fromRGB = function(r, g, b, flags) { // null = don't change + r<0 && (r=0) || r>1 && (r=1); + g<0 && (g=0) || g>1 && (g=1); + b<0 && (b=0) || b>1 && (b=1); + var hsv = RGB_HSV( + r===null ? this.rgb[0] : (this.rgb[0]=r), + g===null ? this.rgb[1] : (this.rgb[1]=g), + b===null ? this.rgb[2] : (this.rgb[2]=b) + ); + if(hsv[0] !== null) { + this.hsv[0] = hsv[0]; + } + if(hsv[2] !== 0) { + this.hsv[1] = hsv[1]; + } + this.hsv[2] = hsv[2]; + this.exportColor(flags); + }; + + + this.fromString = function(hex, flags) { + var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i); + if(!m) { + return false; + } else { + if(m[1].length === 6) { // 6-char notation + this.fromRGB( + parseInt(m[1].substr(0,2),16) / 255, + parseInt(m[1].substr(2,2),16) / 255, + parseInt(m[1].substr(4,2),16) / 255, + flags + ); + } else { // 3-char notation + this.fromRGB( + parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255, + parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255, + parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255, + flags + ); + } + return true; + } + }; + + + this.toString = function() { + return ( + (0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) + + (0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) + + (0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1) + ); + }; + + + function RGB_HSV(r, g, b) { + var n = Math.min(Math.min(r,g),b); + var v = Math.max(Math.max(r,g),b); + var m = v - n; + if(m === 0) { return [ null, 0, v ]; } + var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m); + return [ h===6?0:h, m/v, v ]; + } + + + function HSV_RGB(h, s, v) { + if(h === null) { return [ v, v, v ]; } + var i = Math.floor(h); + var f = i%2 ? h-i : 1-(h-i); + var m = v * (1 - s); + var n = v * (1 - s*f); + switch(i) { + case 6: + case 0: return [v,n,m]; + case 1: return [n,v,m]; + case 2: return [m,v,n]; + case 3: return [m,n,v]; + case 4: return [n,m,v]; + case 5: return [v,m,n]; + } + } + + + function removePicker() { + delete jscolor.picker.owner; + document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB); + } + + + function drawPicker(x, y) { + if(!jscolor.picker) { + jscolor.picker = { + box : document.createElement('div'), + boxB : document.createElement('div'), + pad : document.createElement('div'), + padB : document.createElement('div'), + padM : document.createElement('div'), + sld : document.createElement('div'), + sldB : document.createElement('div'), + sldM : document.createElement('div'), + btn : document.createElement('div'), + btnS : document.createElement('span'), + btnT : document.createTextNode(THIS.pickerCloseText) + }; + for(var i=0,segSize=4; i3k<8jPQJQ=fuv5eVo^ZVob{r>y?yxzz6n|{I3RuQNUl#q~6w6{Y!i_W*AbzM$M zv?qg)_ee+pt?W@2m!pR{B_p?CM-{APX1sq0k!v%Dx?=2xC6f&jlZz_Dn#dT_Y>InI z6zGP*0qIZBM5F|EZW=wONLxZCI;oxx8efxF<=55NtkzwRuA@S|$OSZUS~0 zbSDgzxPwEAll?BgdT}XWOAZOcMD`pUO+CGfB}rVxe|WEK0gw_Tz-cDmNG4L+O1BG& zsF@TK6o0+-x8xsR`X2n=3~i7e()sQ8nbs7jD=(px9H|qDd%c<@)UuI(EKt5ngFHjS zh|qTPjol+wD*VrOrP2AHgU&lZ7-h-S-Ry`OC^$7+KSF!aG?mu&pn3IaR(#Gf!EQP! zqeS?o6nx*@RWD5RUuQ+fDEvFrgK2PwV_AaZi_nFD)fY6UXpc#9)D{%+=WH ztBRU(0-f)NSeD3_)#+p<)n=t7Y1EDi=wXXR?Z#vSuGOPoT|XQYUp$jeW`dW9Q1kjz#P#FKJ!aH3zn{59p6;=yx%D9tmqxQwiPk>^XJ#hnQPa&UStGb;zpzVAA13RQ2C{(WQtPtlHN+xES>Qyk?T{p)3L zKdG1CZ}noWtWb#qCxunq6cmKZkSp8AJFQzC5VAmliNf$>rVM$2Q1P|$>9btrJLz|{ zSEp42us*S@mNJKs{J(s20WSGheRHFfo!iS!%VR(!BLtg%5&G73YBwnQiPTC@yb!(mV=4^=hMGc{L0KQ&GaYT41_sNl0+=?tU1#T8=w<5Hp>qu7gwyz zwLL3bXQ5-%%-%`x@Pre{8xpv$>VeI=t#(~rx$b&PV(x))i0v`~VbW)#SQBCXq2{3C z4AjaS!bRt4Q?8=ly@6M=+29nh0d(fs{K~%zNbr`+-cFUZNG!0O= ztBy>FTi+F8DTC6pr<-QLfNg0`0~OrWJ{oz=)6L|D%a{=NsYO5|-NfUp7Y1+9*lFRJ z5eJQ!*^GZ@s9{T9oBa_K8|h+p-X6RjZg2E_MT>zCjV(~r*6%7Sij>(`t)O^DQ?5kw z*5IZ}6Yl9oCX2J~K~(ouR!YtW!n|s+M;#USu3QS5lI+Z7T#@>eP@xM!TPE-?u=Htd z49Zqbfk!YI?d;mMp}J=|f0P<;(10YFMR-D=9)aeZ@G{Ezv(9sw5v++8tRHhq6NB;- zH2vx(PU1qD_8+#|>&xHm)UbkK4M?w_%wFEr_E+5T%vx9E!xmutZiFRIq28_H5VovP z_lMzL{cKdx%a2HTauX~RSRYm)64<0F_{Nbco!|_?rpPw_J}NA-umuds1iE=$J7Q`F zd!s(MKF>pom>+ITdp;<{lMnDf4uN>z#SiECQt#jM)8rIa7;kozw6%A3yMEz5P%>>m zP^aP@mh`^eyybD<|3=Fv?u;ybH7RFB;|YJx_d1J;6wJ4KGeT+E44^QNm!_X5b@{by z^qAAkM5!d@0aKxHZ8pbuQ7dm3CvtBsZV5_Hgs2II9V+0N-jO z<7fC^Ce~l|mVr*^!BrfL2MdrqJ@FI)L|?pK(7K}a393z0of$38A-e)82RKKU@XM+GiX?Y$A|=p{IK)2ld$R?8M=wUPAOfgq5a^ zjXY_~fw7l{P`h&ljSQ;F(xYQzv?H8HuM}KNO-j0-M-5?t<^wZ3n@*m2ebd~#%i(;jkY@`es^)?`9scc%tlnlUq+;7p=^6Tm`D0W}i)}TQA0bY8fVJ@Ykj4dfDYvd{ zjmUxdb}M2@x@URp28`;9B~+Ps7g`6cP9NO%S~Zm#UzG*YLiaT_OPTB(e#8W+bIJtG zHSn{{R7Ah+{aGq1u=3L$M3#B`zC!tx`wk~q^gwlhT41Cwgft#({kId%-IMMflvHxU{(d)BqpTjk&WEXSBpAD;%Rb zpPV1>?v#`9OCL@2@8?GllEy7V6uP>x>Ajs}Hm)}I8R(EtQ*KD5B(Y*OBNM)%$`!A2 zv+I7!11vu%pSE=1PZ>w~XKP*NFI`|o?X0yNT(?y(-ta%=LQ4K;p%&07YKL*_5P7rr zR9kKx+y`tt(7_svRuxC8;j)miAfSX?M|9Ladf4zeO?n&EMM2JE0Q6A5#?^TU3!~Vl zs4+YvJ!u|5x*cR;3M`2ol(60+K1QomP+|c!3SOBpo`2I4Al%NaA;URpKsgTQ`um*) z$$0jzaM_tG3$^<%+IquqoA<(IXZhE{tm>@gJUP5p{A3J6+&@8B1Ab`k#pS#XQGLsb z!I1N@6}*sK$&^j&E9UfVBsE3Cy09vRRbP@j2V8RUyS}$EzQISB8Wob;L&@gXJ0-qG zN5LYq5L0xS_C~Y5ieq)J$^evnrYxC3DF5rA^JvXg$)Z@TW4d~?c5Fm1;n8+WV9n3A zREIvTfx}B&q+1AP^S|orTG__8w)t@5vGN(1#THk!CKLHp`#)!zH7z`x^Y2abdkC%N zVpo9#I|*N>2gAEStK;2nH>2-d8UgV}Ce62}O-VSnpIx1GP7~)f>xpwmI^Gq>t9ccs zdo47kYWW=g+WUVuK=)o4jL>*SZet8NcRq)42(#4#7K&?jfMC8bH5#uho9aCC9Sc8| z&eN*3Xr9L%twp11piU_UMd7cxt!d0dy(tNJ+3&*_^j;1X9gV|DYj@pg2={0^wT+T5 z?Xw4UzW(|>jIRGsKJaB+PUaLZQP!rJ26J1VGh%$e>x-WKf|{S*YSJH@EETJjsGMoT zZ6{6eiS3#V@YL5Z@Hgy9@bEpRGI;>Z_}tQa8IhV#m14ak_?Dm8Rb(N8c>8!Bbg8nV z@Fnflx2C1NJLL_>Z|O7~CV@n+T&C@vpgqh~t(`X)qaj=ypFdgdNZsNlmAwU7;S#iO z`J>RxSlI>*l1c;-I(BztG~ID9hmZHLX}mTDprkNW`2*nM`NCrG^K)aoYd*>U5=8}T zz<8Trh(5#1==-ntBY@u7k%!+X7o>B<{Wf^*@YzUESz$bKtAufemd7|St0063A+%|% YzFqsNg>|5V=vOIWZ|#VBZRvIQe;Bk#LI3~& literal 0 HcmV?d00001 diff --git a/jscolor/hv.png b/jscolor/hv.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5e01f8bcecc4cf835e8eeeaa43ef2c06789022 GIT binary patch literal 2865 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 E0LKozl>h($ literal 0 HcmV?d00001 diff --git a/jscolor/jscolor.js b/jscolor/jscolor.js new file mode 100644 index 0000000..2012b51 --- /dev/null +++ b/jscolor/jscolor.js @@ -0,0 +1,926 @@ +/** + * jscolor, JavaScript Color Picker + * + * @version 1.3.11 + * @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html + * @author Jan Odvarko, http://odvarko.cz + * @created 2008-06-15 + * @updated 2011-11-07 + * @link http://jscolor.com + */ + + +var jscolor = { + + + dir : '', // location of jscolor directory (leave empty to autodetect) + bindClass : 'color', // class name + binding : true, // automatic binding via + preloading : true, // use image preloading? + + + install : function() { + jscolor.addEvent(window, 'load', jscolor.init); + }, + + + init : function() { + if(jscolor.binding) { + jscolor.bind(); + } + if(jscolor.preloading) { + jscolor.preload(); + } + }, + + + getDir : function() { + if(!jscolor.dir) { + var detected = jscolor.detectDir(); + jscolor.dir = detected!==false ? detected : 'jscolor/'; + } + return jscolor.dir; + }, + + + detectDir : function() { + var base = location.href; + + var e = document.getElementsByTagName('base'); + for(var i=0; i vs[a] ? + (-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) : + tp[a], + -vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ? + (-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) : + (tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c) + ]; + } + drawPicker(pp[a], pp[b]); + } + }; + + + this.importColor = function() { + if(!valueElement) { + this.exportColor(); + } else { + if(!this.adjust) { + if(!this.fromString(valueElement.value, leaveValue)) { + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + } + } else if(!this.required && /^\s*$/.test(valueElement.value)) { + valueElement.value = ''; + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + + } else if(this.fromString(valueElement.value)) { + // OK + } else { + this.exportColor(); + } + } + }; + + + this.exportColor = function(flags) { + if(!(flags & leaveValue) && valueElement) { + var value = this.toString(); + if(this.caps) { value = value.toUpperCase(); } + if(this.hash) { value = '#'+value; } + valueElement.value = value; + } + if(!(flags & leaveStyle) && styleElement) { + styleElement.style.backgroundColor = + '#'+this.toString(); + styleElement.style.color = + 0.213 * this.rgb[0] + + 0.715 * this.rgb[1] + + 0.072 * this.rgb[2] + < 0.5 ? '#FFF' : '#000'; + } + if(!(flags & leavePad) && isPickerOwner()) { + redrawPad(); + } + if(!(flags & leaveSld) && isPickerOwner()) { + redrawSld(); + } + }; + + + this.fromHSV = function(h, s, v, flags) { // null = don't change + h<0 && (h=0) || h>6 && (h=6); + s<0 && (s=0) || s>1 && (s=1); + v<0 && (v=0) || v>1 && (v=1); + this.rgb = HSV_RGB( + h===null ? this.hsv[0] : (this.hsv[0]=h), + s===null ? this.hsv[1] : (this.hsv[1]=s), + v===null ? this.hsv[2] : (this.hsv[2]=v) + ); + this.exportColor(flags); + }; + + + this.fromRGB = function(r, g, b, flags) { // null = don't change + r<0 && (r=0) || r>1 && (r=1); + g<0 && (g=0) || g>1 && (g=1); + b<0 && (b=0) || b>1 && (b=1); + var hsv = RGB_HSV( + r===null ? this.rgb[0] : (this.rgb[0]=r), + g===null ? this.rgb[1] : (this.rgb[1]=g), + b===null ? this.rgb[2] : (this.rgb[2]=b) + ); + if(hsv[0] !== null) { + this.hsv[0] = hsv[0]; + } + if(hsv[2] !== 0) { + this.hsv[1] = hsv[1]; + } + this.hsv[2] = hsv[2]; + this.exportColor(flags); + }; + + + this.fromString = function(hex, flags) { + var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i); + if(!m) { + return false; + } else { + if(m[1].length === 6) { // 6-char notation + this.fromRGB( + parseInt(m[1].substr(0,2),16) / 255, + parseInt(m[1].substr(2,2),16) / 255, + parseInt(m[1].substr(4,2),16) / 255, + flags + ); + } else { // 3-char notation + this.fromRGB( + parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255, + parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255, + parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255, + flags + ); + } + return true; + } + }; + + + this.toString = function() { + return ( + (0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) + + (0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) + + (0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1) + ); + }; + + + function RGB_HSV(r, g, b) { + var n = Math.min(Math.min(r,g),b); + var v = Math.max(Math.max(r,g),b); + var m = v - n; + if(m === 0) { return [ null, 0, v ]; } + var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m); + return [ h===6?0:h, m/v, v ]; + } + + + function HSV_RGB(h, s, v) { + if(h === null) { return [ v, v, v ]; } + var i = Math.floor(h); + var f = i%2 ? h-i : 1-(h-i); + var m = v * (1 - s); + var n = v * (1 - s*f); + switch(i) { + case 6: + case 0: return [v,n,m]; + case 1: return [n,v,m]; + case 2: return [m,v,n]; + case 3: return [m,n,v]; + case 4: return [n,m,v]; + case 5: return [v,m,n]; + } + } + + + function removePicker() { + delete jscolor.picker.owner; + document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB); + } + + + function drawPicker(x, y) { + if(!jscolor.picker) { + jscolor.picker = { + box : document.createElement('div'), + boxB : document.createElement('div'), + pad : document.createElement('div'), + padB : document.createElement('div'), + padM : document.createElement('div'), + sld : document.createElement('div'), + sldB : document.createElement('div'), + sldM : document.createElement('div'), + btn : document.createElement('div'), + btnS : document.createElement('span'), + btnT : document.createTextNode(THIS.pickerCloseText) + }; + for(var i=0,segSize=4; ifckeditor\" or \"html\" (for plain HTML)."; + $plugin_tx['calendar']['cf_editor_deletes_empty_lines_at_the_end']="\"1\" means yes. Useful setting, as in the editors it is invisible, if one has added involuntarily an empty line at the end of one's text."; + $plugin_tx['calendar']['cf_editor_height']="The height of the editor area in px. Enter only the number, not px."; + + $plugin_tx['calendar']['cf_eventlist_template']="Left empty the event list will be in spreadsheet table style. If you enter the name of an event-list template here, this template will be used to style the event list."; + + $plugin_tx['calendar']['cf_filepath_calendar_background_images']="The path to the calendar background images. Relative starting address is the calendar stylesheet.css, since this path will be written into it. E.g. using the normal image folder would need the following address: \"../../../images/\"."; + $plugin_tx['calendar']['cf_filepath_data']="The path to the calendar event files. Without entry it will be set to \"./plugins/calendar/content/\". If you enter a different path, start the path with dot and slash."; + + $plugin_tx['calendar']['cf_same-event-calendar_for_all_subsites']="Setting for multi language sites! By default every language has its own calendarevent-file. Entering \"1\" makes Calendar use the same event file calendarevent.txt for all languages.  I M P O R T A N T  if set to \"1\": Add Images to your Calendar only in your main language as the image path is different in secondary languages."; + + $plugin_tx['calendar']['cf_second-calendar_filename']="If you enter a file name of your choice here (file doesn't have to exist!), under which you want a second independent calendar to save event dates, a second calendar will be activated and additional menu options will appear."; + $plugin_tx['calendar']['cf_second-calendar_eventpage']="Enter here the pagename of the page to which the second calendar should link. Without entry there will be no links. Pagename can be entered as simple name (the name should not occur twice) or as URL starting with \"?\", e.g.\"?Start:News\"."; + + $plugin_tx['calendar']['cf_style_headline_eventtype']="If there are weekly events, a headline will announce them and a similar headline will announce the other events. Here the styling of these headlines can be entered. The headline text is represented by the placeholder \"%s\"."; + $plugin_tx['calendar']['cf_style_headline_year']="If left empty, the month/year headline of year and multiple months in columns will be styled as h4. Alternatively you can enter h1 up to h6 or p as style, or enter HTML-code with %s as placeholder for the year/month, e.g. ‹h5»%s‹/h5»"; + + $plugin_tx['calendar']['cf_z-index']="If other plugins obscure the pop-ups of calendar, you can enter a number (e.g.: from 5 - 100000) to raise calendar in the staking order."; + + $plugin_tx['calendar']['cf_input-field_entry1_as_textarea']="Enter a height value like \"2.6em\" to have field 1 as textarea instead of as simple input line."; + $plugin_tx['calendar']['cf_input-field_entry3_as_textarea']="Enter a height value like \"2.6em\" to have field 3 as textarea instead of as simple input line."; + $plugin_tx['calendar']['cf_input-field_entry1_show_in_input_always']="\"1\" will show field 1 -- even when switched off in eventlist config -- still in the input. Thus entry 1 can be used specially for marquee without appearing in the event list."; + $plugin_tx['calendar']['cf_input-field_additional_days_as_textarea']="Enter a height value like \"2.6em\" to have the field for the additional dates as textarea. Practical if you have many additional dates."; + $plugin_tx['calendar']['cf_input-field_mainentry_as_textarea']="Enter a height value like \"2.6em\" to have the input for the main field as textarea instead of as simple line."; + + + $plugin_tx['calendar']['error_event_page_occurs_more_than_once']="occurs as page name more than once. Therefore it is unclear which page should serve as event-list page."; + $plugin_tx['calendar']['error_event_page_not_found']="event-list page doesn't exist"; + $plugin_tx['calendar']['error_file_name_wrong']="Error: file name contains spaces or not allowed characters"; + $plugin_tx['calendar']['error_settings_name_wrong']="Error: settings name contains spaces or not allowed characters"; + $plugin_tx['calendar']['error_file_not_saved']="Error: could not save event data"; + $plugin_tx['calendar']['error_file_not_writable']="Error: file not writable, probably protected"; + $plugin_tx['calendar']['error_link_unclear']="link not found"; + $plugin_tx['calendar']['error_links_unclear']="links not found"; + $plugin_tx['calendar']['error_pagename_double']="linked pagename occurs more than once"; + $plugin_tx['calendar']['error_pagenames_double']="linked pagenames occur more than once"; + $plugin_tx['calendar']['error_settings_not_saved']="Error: could not save settings data"; + $plugin_tx['calendar']['error_occured']="Some error occured"; + $plugin_tx['calendar']['error_could_not_change_css_file']="Couldn't change css file"; + $plugin_tx['calendar']['error_could_not_change_config_file']="Couldn't change config file"; + $plugin_tx['calendar']['error_could_not_change_language_file']="Couldn't change language file"; + $plugin_tx['calendar']['error_do_not_edit_from_subsite']="WARNING: You are on a subsite and have enabled same calendar on all subsites. Images and internal links entered from here will not work on the main site. Enter images and internal links from the main site. For internal Links to subsite pages use the URL beginning with \"/\"."; + $plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions']="ERROR: cannot combine event files from different Calendar versions"; + + $plugin_tx['calendar']['event_date']="Date"; + $plugin_tx['calendar']['event_date_till_date']="till"; + $plugin_tx['calendar']['event_daily']="daily"; + $plugin_tx['calendar']['event_description']="Additional description"; + $plugin_tx['calendar']['event_end_date']="End date"; + $plugin_tx['calendar']['event_end']="End"; + $plugin_tx['calendar']['event_info_icon']="Info tooltip icon"; + $plugin_tx['calendar']['event_info_text']="Info text"; + $plugin_tx['calendar']['event_other_link']="Other Link"; + $plugin_tx['calendar']['event_widepopup']="+ wide popup"; + $plugin_tx['calendar']['event_link_etc']="Info"; + $plugin_tx['calendar']['event_link_icon']="Link icon"; + $plugin_tx['calendar']['event_icon']="Icon"; + $plugin_tx['calendar']['event_link_text']="Link text"; + $plugin_tx['calendar']['event_main_entry']="Speaker"; + $plugin_tx['calendar']['event_entry3']="Subject"; + $plugin_tx['calendar']['event_entry1']="Location"; + $plugin_tx['calendar']['event_not_on_marquee']="not in marquee"; + $plugin_tx['calendar']['event_start']="Beginning"; + $plugin_tx['calendar']['event_start_date']="Start date"; + $plugin_tx['calendar']['event_time']="Time"; + $plugin_tx['calendar']['event_time_till_time']="-"; + $plugin_tx['calendar']['event_times_are_daily']="daily times"; + $plugin_tx['calendar']['event_same_on_other_days']="same short event on above days"; + $plugin_tx['calendar']['event_additional_days']="additional days"; + $plugin_tx['calendar']['event_weekly']="weekly"; + $plugin_tx['calendar']['event_additional']="additionally"; + $plugin_tx['calendar']['event_except']="except"; + $plugin_tx['calendar']['event_exceptions']="weekly/ long event exceptions"; + $plugin_tx['calendar']['event_weekly_starting_on']="starting"; + $plugin_tx['calendar']['event_weekly_ongoing']="every week"; + $plugin_tx['calendar']['event_yearly_with_age_calculation']="yearly + age calc."; + $plugin_tx['calendar']['event_yearly']="yearly"; + $plugin_tx['calendar']['event_booked_out']="Booked out"; + $plugin_tx['calendar']['event_has_ended']="Has ended"; + $plugin_tx['calendar']['event_multiple']="multiple"; + $plugin_tx['calendar']['event_border_marked']="marked with border in calendar"; + $plugin_tx['calendar']['event_mark2']="border marked"; + + $plugin_tx['calendar']['headline_weekly_events']="Weekly Events"; + $plugin_tx['calendar']['headline_single_events']="Single Events"; + $plugin_tx['calendar']['headline_yearly_events']="Yearly Events"; + $plugin_tx['calendar']['headline_multiple_events']="Multiple Events"; + $plugin_tx['calendar']['headline_started_earlier']="Started before the listed period"; + + $plugin_tx['calendar']['hint_event_formatting']="Formatting"; + $plugin_tx['calendar']['hint_external_links']="External links: site name"; + $plugin_tx['calendar']['hint_formattable_fields']="Simple markup works in:"; + $plugin_tx['calendar']['hint_how_to_enter_links']="How to enter links:"; + $plugin_tx['calendar']['hint_icon_add']="Add new event under this entry"; + $plugin_tx['calendar']['hint_icon_copy']="Copy this event"; + $plugin_tx['calendar']['hint_icon_delete']="Delete this event"; + $plugin_tx['calendar']['hint_icon_ok']="Save all events"; + $plugin_tx['calendar']['hint_internal_links']="Internal links: options list. Other links: next line. Separate multiple links with |. Separate link texts for multiple links also with |."; + $plugin_tx['calendar']['hint_blog_links']="Links to blogentries: URL starting with ?"; + $plugin_tx['calendar']['hint_subsite_links']="Links to subsite pages: URL starting with /"; + $plugin_tx['calendar']['hint_file_links']="PDF/ Word-files in download folder: just the file name (case-sensitive)"; + $plugin_tx['calendar']['hint_links']="Links"; + $plugin_tx['calendar']['hint_mouseover_in_calendar']="(Mouse over date => details, click => event list)"; + + $plugin_tx['calendar']['holiday_name']="Holiday name"; + $plugin_tx['calendar']['holiday_date_calculation']="Date calculation"; + + $plugin_tx['calendar']['holydays']="1.1,New Year's Day;easter -2 day,Good Friday;easter,Easter;easter + 1 day,Easter Monday;24.12,Christmas Eve;25.12,Christmas Day;26.12,Boxing Day"; + + $plugin_tx['calendar']['link-button_next_month']="Next Month"; + $plugin_tx['calendar']['link-button_prev_month']="Previous Month"; + $plugin_tx['calendar']['link-button_prev_year']="Previous Year"; + $plugin_tx['calendar']['link-button_next_year']="Next Year"; + $plugin_tx['calendar']['link_to_present_month']="reset list to present month"; + + $plugin_tx['calendar']['menu_apply_preset']="apply preset"; + $plugin_tx['calendar']['menu_preset_backup']="backup"; + $plugin_tx['calendar']['menu_backup']="Backup"; + $plugin_tx['calendar']['menu_credits']="Credits"; + $plugin_tx['calendar']['menu_css']="CSS"; + $plugin_tx['calendar']['menu_eventlistconfig']="Event-List Config"; + $plugin_tx['calendar']['menu_marquee']="Marquee"; + $plugin_tx['calendar']['menu_holidays']="Holidays"; + $plugin_tx['calendar']['menu_settings_backupname']="backupname"; + $plugin_tx['calendar']['menu_test']="test"; + $plugin_tx['calendar']['menu_config']="Config"; + $plugin_tx['calendar']['menu_help']="Help"; + $plugin_tx['calendar']['menu_language']="Language"; + $plugin_tx['calendar']['menu_main']="Edit Events"; + $plugin_tx['calendar']['menu_save_config']="apply settings"; + $plugin_tx['calendar']['menu_show_calendar']="Calendar"; + $plugin_tx['calendar']['menu_test_event_list']="Event List"; + + $plugin_tx['calendar']['names_of_days']="Su,Mo,Tu,We,Th,Fr,Sa"; + $plugin_tx['calendar']['names_of_months']="January,February,March,April,May,June,July,August,September,Oktober,November,December"; + $plugin_tx['calendar']['names_of_days_longform']="Sundays,Mondays,Tuesdays,Wednesdays,Thursdays,Fridays,Saturdays"; + + $plugin_tx['calendar']['notice_backup_setting']="Backups"; + $plugin_tx['calendar']['notice_event_entries']="entries"; + $plugin_tx['calendar']['notice_file_not_yet_saved']="Changes not yet saved"; + $plugin_tx['calendar']['notice_no_eventlist_page']="event-list page not set"; + $plugin_tx['calendar']['notice_no_eventlist2_page']="Calendar2 event-list page not set"; + $plugin_tx['calendar']['notice_no_next_event_scheduled']="Presently no events scheduled"; + $plugin_tx['calendar']['notice_number_of_events_saved_in_file']="event entries saved in"; + $plugin_tx['calendar']['notice_preset_applied']="Preset \"%s\" has been loaded"; + $plugin_tx['calendar']['notice_settings_data_saved']="settings saved as \"%s\" in calendar/templates/"; + $plugin_tx['calendar']['notice_telling_period_of_events']="Events in the period from"; + $plugin_tx['calendar']['notice_telling_month_of_events']="Events in"; + $plugin_tx['calendar']['notice_today']="today"; + + $plugin_tx['calendar']['config_additional']="additional"; + $plugin_tx['calendar']['config_additional_dates_bookedout']="(year + * = booked out)"; + $plugin_tx['calendar']['config_all_same_color']="color picker acting on all fields"; + $plugin_tx['calendar']['config_articlestyle']="template"; + $plugin_tx['calendar']['config_background']="background"; + $plugin_tx['calendar']['config_background_or_color']="background or color"; + $plugin_tx['calendar']['config_background_color']="background color"; + $plugin_tx['calendar']['config_background_image']="background image"; + $plugin_tx['calendar']['config_bigcalendar']="Big Calendar"; + $plugin_tx['calendar']['config_birthday']="birthday"; + $plugin_tx['calendar']['config_birthday_image']="birthday background image"; + $plugin_tx['calendar']['config_birthday_age']="Age (birthday)"; + $plugin_tx['calendar']['config_birthday_color']="birthday special color"; + $plugin_tx['calendar']['config_birthday_in_dayfield']="birthdaycolor inside dayfield"; + $plugin_tx['calendar']['config_border_color_width']="border color + width"; + $plugin_tx['calendar']['config_border_color']="border color"; + $plugin_tx['calendar']['config_border_width']="border width"; + $plugin_tx['calendar']['config_calendar_template']="test template"; + $plugin_tx['calendar']['config_color']="color"; + $plugin_tx['calendar']['config_day_border_spacing']="space between days"; + $plugin_tx['calendar']['config_day_field_height']="day field height"; + $plugin_tx['calendar']['config_day_name_color']="color of weekday names"; + $plugin_tx['calendar']['config_day_names_more_css']="more weekday name css"; + $plugin_tx['calendar']['config_event_on_holidays']="event on holidays"; + $plugin_tx['calendar']['config_event_on_workdays']="event on workdays"; + $plugin_tx['calendar']['config_eventlist_standard']="standard style"; + $plugin_tx['calendar']['config_eventlist_table_selected']="table-style display"; + $plugin_tx['calendar']['config_fontfamily']="font"; + $plugin_tx['calendar']['config_fontsize']="size"; + $plugin_tx['calendar']['config_headline_style']="headline color + style"; + $plugin_tx['calendar']['config_headline_more_css']="more headline css"; + $plugin_tx['calendar']['config_in_title_label']="if tiny pop-ups, include"; + $plugin_tx['calendar']['config_input_fields']="input fields"; + $plugin_tx['calendar']['config_long_event']="long event"; + $plugin_tx['calendar']['config_margin-top']="margin-top"; + $plugin_tx['calendar']['config_month']="month view"; + $plugin_tx['calendar']['config_month_fontsize']="month etc."; + $plugin_tx['calendar']['config_more']="more"; + $plugin_tx['calendar']['config_no_image']="no image"; + $plugin_tx['calendar']['config_no_special_font']="no special font"; + $plugin_tx['calendar']['config_one_line_per_entry']="1 line per event"; + $plugin_tx['calendar']['config_opacity_no_event']="opacity no event day"; + $plugin_tx['calendar']['config_popup']="Pop-up"; + $plugin_tx['calendar']['config_popup_in_small_calendar']="big pop-ups instead of tiny"; + $plugin_tx['calendar']['config_small_calendar']="Small Calendar"; + $plugin_tx['calendar']['config_subhead_fontsize']="subhead"; + $plugin_tx['calendar']['config_tablestyle']="table"; + $plugin_tx['calendar']['config_template']="template"; + $plugin_tx['calendar']['config_textarea']="big input area"; + $plugin_tx['calendar']['config_today']="today"; + $plugin_tx['calendar']['config_today_background']="today color/background"; + $plugin_tx['calendar']['config_use_default_template']="standard template"; + $plugin_tx['calendar']['config_year']="year view"; + $plugin_tx['calendar']['config_bold']="bold"; + $plugin_tx['calendar']['config_date']="date field"; + $plugin_tx['calendar']['config_event']="event field"; + $plugin_tx['calendar']['config_event_list_period']="%sAnnounce event-list period.   Show %smonths + %spast months  %spast events in grey  %sno past events"; + $plugin_tx['calendar']['config_exceptions']="exceptions"; + $plugin_tx['calendar']['config_hint']="hint under calendar"; + $plugin_tx['calendar']['config_indented']="indented: %scell(s)"; + $plugin_tx['calendar']['config_list_page']="event-list page"; + $plugin_tx['calendar']['config_name']="name"; + $plugin_tx['calendar']['config_no_event_list_page']="No event-list page"; + $plugin_tx['calendar']['config_on']="field on?"; + $plugin_tx['calendar']['config_presets']="Presets"; + $plugin_tx['calendar']['config_roundcorners']="round corners"; + $plugin_tx['calendar']['config_select']="Please select"; + $plugin_tx['calendar']['config_shadow']="shadow"; + $plugin_tx['calendar']['config_time_on']="time on?"; + $plugin_tx['calendar']['config_width']="width"; + $plugin_tx['calendar']['config_lineheight']="line hight"; + $plugin_tx['calendar']['config_normalday']="normal day"; + $plugin_tx['calendar']['config_weekend']="weekend"; + $plugin_tx['calendar']['config_holiday']="holiday"; + $plugin_tx['calendar']['config_eventday']="event 1st day/background"; + $plugin_tx['calendar']['config_underline_longevent']="underline long events or %ssame as 1st day"; + $plugin_tx['calendar']['config_mark2']="border for border marked entries"; + $plugin_tx['calendar']['config_weekdaynames_padding']="top/bottom padding weekday names"; + $plugin_tx['calendar']['config_dayfield_border']="day field border"; + $plugin_tx['calendar']['config_dayfield_padding']="left padding"; + $plugin_tx['calendar']['config_line_between_events_in_bigcalendar']="line between events"; + $plugin_tx['calendar']['config_symbol_when_no_time_is_given']="Symbol for entries without time data"; + $plugin_tx['calendar']['config_select_internal_link']="Select internal link"; + + + $plugin_tx['calendar']['marquee_1stline']="1st line below date"; + $plugin_tx['calendar']['marquee_2ndline']="2nd line below date"; + $plugin_tx['calendar']['marquee_age']="Age is displayed in"; + $plugin_tx['calendar']['marquee_contents']="Contents of the marquee"; + $plugin_tx['calendar']['marquee_dateline']="Dateline"; + $plugin_tx['calendar']['marquee_dateline_height']="marquee dateline height (number)"; + $plugin_tx['calendar']['marquee_emptyline']="Nothing"; + $plugin_tx['calendar']['marquee_height']="marquee height (just a number)"; + $plugin_tx['calendar']['marquee_height_unit']="unit for marquee heights"; + $plugin_tx['calendar']['marquee_not_in_marquee']="Not displayed"; + $plugin_tx['calendar']['marquee_number_of_events_shown']="number of events shown in marquee"; + $plugin_tx['calendar']['marquee_speed']="speed of marquee (px per 0.01 sec)"; + $plugin_tx['calendar']['marquee_use_jquery']="use jQuery to run marquee"; + + $plugin_tx['calendar']['help_config_jquery_marquee']="The Effect of changing the jQuery setting shows only after clicking \"apply settings\" and reselecting \"Marquee\" in the plugin's menu. (The complete plug-in has to be reloaded.)

    Without jQuery the standard Microsoft Marquee funktion is used.
    If you don't use marquee, you may want to deselect \"jQuery\" to avoid loading unnecessary jQuery Calendar Marquee files."; + $plugin_tx['calendar']['help_config_roundcorners']="Enter 4 values of corner radius in px: left-top-corner   right-top right-buttom left-buttom"; + $plugin_tx['calendar']['help_config_shadow']="Enter 3 values in px + 1 color-code: right-displacement bottom-displacement diffusion color"; + $plugin_tx['calendar']['help_config_presets']="Presets contain some values for event list or for calendar (month view). You can save your own settings as presets. Preset-files can be edited in menu «Backup etc.»"; + $plugin_tx['calendar']['help_config_topmargin']="Enter number + unit of measurement, e.g. 50px or 10em, to get more space above the headline for the background image."; + $plugin_tx['calendar']['help_config_padweekdaynames']="Enter number + unit of measurement, for padding space above and below the row of weekday names."; + $plugin_tx['calendar']['help_holiday_date_calculation']="

      +
    • Fixed holidays => day.month (Instead of dot use hyphen or slash if your date delimiter is set to this.)
    • +
    • Movable holidays depending on the Easter date => easter + x day or - x day e.g. Good Friday: easter - 2 day
    • +
    • Movable holidays on a fixed weekday: +
        +
      • First Monday in May: monday 1.5
      • +
      • Last Monday in May (= Monday before 1st of June): -1 monday 1.6
      • +
      • 11 days before the 1st sunday after 26.11: -11 days 1 sunday 26.11
      • +
      • 4th sunday after 26.11: 4 sunday 26.11
      • +
      +
    • +
    " +?> diff --git a/languages/cs.php b/languages/cs.php new file mode 100644 index 0000000..4dc857d --- /dev/null +++ b/languages/cs.php @@ -0,0 +1,281 @@ +\"tinymce\" = uses TinyMCE which comes with CMSimple_XH 1.5 onward.
    \"ckeditor\" = uses CKeditor when this editor is also selected as main editor in CMSimple_XH 1.5 onward.
    \"fckeditor\" = this editor is included in Calendar. Useful setting for older CMSimple_XH Versions.
    No entry means plain HTML will be shown in the input field."; +$plugin_tx['calendar']['cf_editor_deletes_empty_lines_at_the_end']="\"1\" značí ano. Užitečné nastavení, pokud editor přidal nedobrovolně prázdný řádek na konec textu, řádek bude odstraněn."; +$plugin_tx['calendar']['cf_editor_height']="Výška pole editoru v pixelech. Zadávejte pouze číslo, ne px."; +$plugin_tx['calendar']['cf_eventlist_template']="Pokud nebude zadán název šablony, seznam událostí bude ve stylu tabulky. Pokud zadáte název šablony, události se zobrazí v této šabloně.."; +$plugin_tx['calendar']['cf_filepath_calendar_background_images']="Cesta k obrázkům kalendářních pozadí. Relativní počáteční adresa je kalendářní stylesheet.css, tato cesta bude nastavena do něj. Např. v porovnání s běžnou složku obrazu bude potřebovat následující adresu: \"../../../images/\"."; +$plugin_tx['calendar']['cf_filepath_data']="Cesta k souborům kalendářních událostí. Bez zadání bude nastaven na \"./plugins/calendar/content/\". Zadáte-li jinou cestu, cestu začněte s tečkou a lomítkem."; +$plugin_tx['calendar']['cf_same-event-calendar_for_all_subsites']="\"1\" bude používat stejný soubor pro všechny jazyky kalendáře událostí. Ve výchozím nastavení má každý jazyk svůj vlastní kalendář akcí. DŮLEŽITÉ: je-li nastaveno \"1\": přidá obrázky do kalendáře jen v hlavním jazyce, cesta k obrázkům se liší v sekundárních jazycích."; +$plugin_tx['calendar']['cf_second-calendar_filename']="Pokud zadáte název souboru vlastního výběru zde (soubor nemusí existovat!), kterým definujete druhý nezávislý kalendář událostí pro uložení dat, bude druhý kalendářní aktivován a objeví se nabídka nastavení."; +$plugin_tx['calendar']['cf_second-calendar_eventpage']="Zde zadejte \"pagename\", na které se zobrazí druhý kalendář. Bez názvu nebude nic zobrazeno. Pagenamemůže být jen jako jako jednoduchý název (jméno by nemělo být 2x), nebo jako URL začínající \"?\", např. \"?Start:News\"."; +$plugin_tx['calendar']['cf_style_headline_eventtype']="Pokud existují akce, bude titulek je anoncuje a podobným titulkem uvede další akce. Styl je zde možno definovat. Titulek je reprezentován proměnnou \"%s\"."; +$plugin_tx['calendar']['cf_style_headline_year']="Nadpis úrovně H1 ... H6 měsíc/rok. Titulek sloupcového kalendáře."; +$plugin_tx['calendar']['cf_z-index']="Pokud ostatní pluginy přikryjou pop-up okna kalendáře, můžete nastavit (např. 100000) a tím změnit pořadí překrývání."; +$plugin_tx['calendar']['cf_input-field_entry1_as_textarea']="Enter \"1\" or a height value like \"2.6em\" to have field 1 as textarea instead of as simple input line."; +$plugin_tx['calendar']['cf_input-field_entry3_as_textarea']="Same as for the other textarea options \"1\" transforms the input field into a textarea with hight as defined in calendar stylesheet.css. If you enter a hight value instead, e.g. 8em, this hight will be applied to the text-area."; +$plugin_tx['calendar']['cf_input-field_entry1_show_in_input_always']="\"1\" will show field 1 -- even when switched off in eventlist config -- still in the input. Thus entry 1 can be used specially for marquee without appearing in the event list."; +$plugin_tx['calendar']['cf_input-field_additional_days_as_textarea']="Enter \"1\" or a height value like \"2.6em\" to have the field for the additional dates as textarea, if you have many additional dates, instead of as simple input line."; +$plugin_tx['calendar']['cf_input-field_mainentry_as_textarea']="Enter \"1\" or a height value like \"2.6em\" to have the input for the main field as textarea instead of as simple line."; +$plugin_tx['calendar']['error_event_page_occurs_more_than_once']="se vyskytuje jako název stránky více než jednou. Proto není zřejmé, která strana by měla sloužit jako seznam událostí na stránce."; +$plugin_tx['calendar']['error_event_page_not_found']="stránka událostí není definována"; +$plugin_tx['calendar']['error_file_name_wrong']="Chyba: název souboru obsahuje mezery nebo znaky které nejsou povoleny"; +$plugin_tx['calendar']['error_settings_name_wrong']="Chyba: Název nastavení obsahuje mezery nebo znaky které nejsou povoleny"; +$plugin_tx['calendar']['error_file_not_saved']="Chyba: nelze uložit datový soubor událostí"; +$plugin_tx['calendar']['error_file_not_writable']="Chyba: soubor není zapisovatelný, pravděpodobně je chráněn"; +$plugin_tx['calendar']['error_link_unclear']="odkaz nenalezen"; +$plugin_tx['calendar']['error_links_unclear']="odkazy nenalezeny"; +$plugin_tx['calendar']['error_pagename_double']="odlazovaný název stránky se vyskytuje vícekrát"; +$plugin_tx['calendar']['error_pagenames_double']="odlazované názevy stránek se vyskytuje vícekrát"; +$plugin_tx['calendar']['error_settings_not_saved']="Chyba: nelze uložit nastavení"; +$plugin_tx['calendar']['error_occured']="Nějaká chyba"; +$plugin_tx['calendar']['error_could_not_change_css_file']="Nemohu změnit soubor css"; +$plugin_tx['calendar']['error_could_not_change_config_file']="Nemohu změnit konfigurační soubor"; +$plugin_tx['calendar']['error_could_not_change_language_file']="Nemohu změnit jazykový soubor"; +$plugin_tx['calendar']['error_do_not_edit_from_subsite']="VAROVÁNÍ: Nyní jste na podřízeném webu a umožnili jste stejný kalendář na všech podřízených webech. Obrázky a vnitřní odkazy zadané zde nebude fungovat na hlavní stránce. Zadejte obrazy a interní odkazy z hlavní stránky."; +$plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions']="CHYBA: nelze ckombinovat soubory událostí z různých verzí kalendáře"; +$plugin_tx['calendar']['event_date']="Datum"; +$plugin_tx['calendar']['event_date_till_date']="až"; +$plugin_tx['calendar']['event_daily']="denně"; +$plugin_tx['calendar']['event_description']="Přídavný popis"; +$plugin_tx['calendar']['event_end_date']="Koncové datum"; +$plugin_tx['calendar']['event_end']="Konec"; +$plugin_tx['calendar']['event_info_icon']="Ikona vyskakovací informace"; +$plugin_tx['calendar']['event_info_text']="Info text"; +$plugin_tx['calendar']['event_other_link']="Ostatní odkazy"; +$plugin_tx['calendar']['event_widepopup']="+ široký popup"; +$plugin_tx['calendar']['event_link_etc']="Info"; +$plugin_tx['calendar']['event_link_icon']="Ikona odkazu"; +$plugin_tx['calendar']['event_icon']="Ikona"; +$plugin_tx['calendar']['event_link_text']="Text odkazu"; +$plugin_tx['calendar']['event_main_entry']="Událost"; +$plugin_tx['calendar']['event_entry3']="Popis události"; +$plugin_tx['calendar']['event_entry1']="Lokace"; +$plugin_tx['calendar']['event_not_on_marquee']="Nezobrazovat v boxu marquee"; +$plugin_tx['calendar']['event_start']="Začátek"; +$plugin_tx['calendar']['event_start_date']="Počáteční datum"; +$plugin_tx['calendar']['event_time']="Čas"; +$plugin_tx['calendar']['event_time_till_time']="-"; +$plugin_tx['calendar']['event_times_are_daily']="v denní době"; +$plugin_tx['calendar']['event_same_on_other_days']="stejný (1 den) akce na více dní"; +$plugin_tx['calendar']['event_additional_days']="další dny"; +$plugin_tx['calendar']['event_weekly']="týdně"; +$plugin_tx['calendar']['event_additional']="další"; +$plugin_tx['calendar']['event_except']="mimo"; +$plugin_tx['calendar']['event_exceptions']="týdně/ vyjímky dlouhých událostí"; +$plugin_tx['calendar']['event_weekly_starting_on']="start"; +$plugin_tx['calendar']['event_weekly_ongoing']="každý týden"; +$plugin_tx['calendar']['event_yearly_with_age_calculation']="ročně + výpočet věku"; +$plugin_tx['calendar']['event_yearly']="ročně"; +$plugin_tx['calendar']['event_booked_out']="Obsazeno"; +$plugin_tx['calendar']['event_has_ended']="Bylo ukončeno"; +$plugin_tx['calendar']['event_multiple']="násobek"; +$plugin_tx['calendar']['event_border_marked']="orámovat událost v kalendáři"; +$plugin_tx['calendar']['event_mark2']="ohraničení v kalendáři"; +$plugin_tx['calendar']['headline_weekly_events']="Týdenní události"; +$plugin_tx['calendar']['headline_single_events']="Jednorázové události"; +$plugin_tx['calendar']['headline_yearly_events']="Roční události"; +$plugin_tx['calendar']['headline_multiple_events']="Ostatní opakující se události"; +$plugin_tx['calendar']['headline_started_earlier']="Právě probíhající událost"; +$plugin_tx['calendar']['hint_event_formatting']="Formátování"; +$plugin_tx['calendar']['hint_external_links']="Externí odkaz: adresa stránky"; +$plugin_tx['calendar']['hint_formattable_fields']="Tyto položky mohou být formátovány takto"; +$plugin_tx['calendar']['hint_how_to_enter_links']="Jak používat odkazy:"; +$plugin_tx['calendar']['hint_icon_add']="Přidat novou událost"; +$plugin_tx['calendar']['hint_icon_copy']="Kopírovat událost"; +$plugin_tx['calendar']['hint_icon_delete']="Vymazat událost"; +$plugin_tx['calendar']['hint_icon_ok']="Uložit událost"; +$plugin_tx['calendar']['hint_internal_links']="Interní odkazy: seznam možností. Další odkazy: další řádek. Oddělte více odkazů znakem |. Samostatné odkazy pro více linků také znakem |"; +$plugin_tx['calendar']['hint_blog_links']="Odkazy do blogu: URL začínající ?"; +$plugin_tx['calendar']['hint_subsite_links']="Odkaz na podstránky: URL začíná /"; +$plugin_tx['calendar']['hint_file_links']="PDF/Word soubory ve složce download: pouze název (rozliují se malá a velká písmena)"; +$plugin_tx['calendar']['hint_links']="Odkazy"; +$plugin_tx['calendar']['hint_mouseover_in_calendar']="Myší na datum => detaily"; +$plugin_tx['calendar']['holiday_name']="Nazev svátku"; +$plugin_tx['calendar']['holiday_date_calculation']="Výpočet datumu"; +$plugin_tx['calendar']['holydays']="1.1,Nový rok;easter -2 day,Velký Pátek;easter,Velikonoční neděle;easter + 1 day,Velikonoční pondělí;24.12,Štědrý den;25.12,Boží hod;26.12,Druhý svátek vánoční"; +$plugin_tx['calendar']['link-button_next_month']=">>"; +$plugin_tx['calendar']['link-button_prev_month']="<<"; +$plugin_tx['calendar']['link-button_prev_year']="Předchozí rok"; +$plugin_tx['calendar']['link-button_next_year']="Další rok"; +$plugin_tx['calendar']['link_to_present_month']="do měsíce"; +$plugin_tx['calendar']['menu_apply_preset']="použít nastavení"; +$plugin_tx['calendar']['menu_preset_backup']="záloha"; +$plugin_tx['calendar']['menu_backup']="Záloha"; +$plugin_tx['calendar']['menu_credits']="O pluginu"; +$plugin_tx['calendar']['menu_css']="Styl"; +$plugin_tx['calendar']['menu_eventlistconfig']="Konfigurace eventlistu"; +$plugin_tx['calendar']['menu_marquee']="Marquee"; +$plugin_tx['calendar']['menu_holidays']="Svátky "; +$plugin_tx['calendar']['menu_settings_backupname']="název nastavení"; +$plugin_tx['calendar']['menu_test']="test"; +$plugin_tx['calendar']['menu_config']="Konfigurace"; +$plugin_tx['calendar']['menu_help']="Pomoc"; +$plugin_tx['calendar']['menu_language']="Jazyk"; +$plugin_tx['calendar']['menu_main']="Události"; +$plugin_tx['calendar']['menu_save_config']="použít nastavení"; +$plugin_tx['calendar']['menu_show_calendar']="Kalendář"; +$plugin_tx['calendar']['menu_test_event_list']="Kalendáře"; +$plugin_tx['calendar']['names_of_days']="Ne,Po,Út,St,Čt,Pá,So"; +$plugin_tx['calendar']['names_of_months']="Leden,Únor,Březen,Duben,Květen,Červen,Červenec,Srpen,Září,Říjen,Listopad,Prosinec"; +$plugin_tx['calendar']['names_of_days_longform']="Neděle,Pondělí,Úterý,Středa,Čtvrtek,Pátek,Sobota"; +$plugin_tx['calendar']['notice_backup_setting']="Zálohy"; +$plugin_tx['calendar']['notice_event_entries']="záznamů"; +$plugin_tx['calendar']['notice_file_not_yet_saved']="Změny neuloženy"; +$plugin_tx['calendar']['notice_no_eventlist_page']="stránka událostí není nastavena"; +$plugin_tx['calendar']['notice_no_eventlist2_page']="Kalendář2 nemá nastavenu stránku událostí"; +$plugin_tx['calendar']['notice_no_next_event_scheduled']="V současnosti se žádná akce nekoná"; +$plugin_tx['calendar']['notice_number_of_events_saved_in_file']="položky událostí uloženy v"; +$plugin_tx['calendar']['notice_preset_applied']="Nastavení \"%s\" je nyní načteno"; +$plugin_tx['calendar']['notice_settings_data_saved']="nastavení \"%s\" uloženo v adresáři plugin content"; +$plugin_tx['calendar']['notice_telling_period_of_events']="Události v období"; +$plugin_tx['calendar']['notice_telling_month_of_events']="Události v"; +$plugin_tx['calendar']['notice_today']="dnes"; +$plugin_tx['calendar']['notice_commercial']="Komerční použití?"; +$plugin_tx['calendar']['notice_commercial_licence']="This plugin is free for private and commercial use.
    You can however buy a licence at a price of your choice to support the programmer. Simply send an e-mail to the programmer for a licence plus invoice."; +$plugin_tx['calendar']['config_additional']="další"; +$plugin_tx['calendar']['config_additional_dates_bookedout']="(rok + * = obsazeno)"; +$plugin_tx['calendar']['config_all_same_color']="všechna pole v této barvě"; +$plugin_tx['calendar']['config_articlestyle']="šablona"; +$plugin_tx['calendar']['config_background']="pozadí"; +$plugin_tx['calendar']['config_background_or_color']="pozadí nebo barva"; +$plugin_tx['calendar']['config_background_color']="barva pozadí"; +$plugin_tx['calendar']['config_background_image']="obrázek na pozadí"; +$plugin_tx['calendar']['config_bigcalendar']="Velký kalendář"; +$plugin_tx['calendar']['config_birthday']="narozeniny"; +$plugin_tx['calendar']['config_birthday_image']="birthday background image"; +$plugin_tx['calendar']['config_birthday_age']="Věk (narozeniny)"; +$plugin_tx['calendar']['config_birthday_color']="speciální barva pro narozeniny"; +$plugin_tx['calendar']['config_birthday_in_dayfield']="barva narozenin uvnitř pole dne"; +$plugin_tx['calendar']['config_border_color_width']="barva orámování + šířka"; +$plugin_tx['calendar']['config_border_color']="barva okraje"; +$plugin_tx['calendar']['config_border_width']="šířka okraje"; +$plugin_tx['calendar']['config_calendar_template']="test template"; +$plugin_tx['calendar']['config_color']="barva"; +$plugin_tx['calendar']['config_day_border_spacing']="mezera mezi dny"; +$plugin_tx['calendar']['config_day_field_height']="výška pole den"; +$plugin_tx['calendar']['config_day_name_color']="barva weekday names"; +$plugin_tx['calendar']['config_day_names_more_css']="more weekday name css"; +$plugin_tx['calendar']['config_event_on_holidays']="události ve dnech volna"; +$plugin_tx['calendar']['config_event_on_workdays']="události v pracovních dnech"; +$plugin_tx['calendar']['config_eventlist_standard']="standardní styl"; +$plugin_tx['calendar']['config_eventlist_table_selected']="styl zobrazení tabulky"; +$plugin_tx['calendar']['config_fontfamily']="font"; +$plugin_tx['calendar']['config_fontsize']="velikost"; +$plugin_tx['calendar']['config_headline_style']="titulek barva + styl"; +$plugin_tx['calendar']['config_headline_more_css']="více titulkového css"; +$plugin_tx['calendar']['config_in_title_label']="pokud malé popup okno, vložit"; +$plugin_tx['calendar']['config_input_fields']="vstupní pole"; +$plugin_tx['calendar']['config_long_event']="dlouhá událost"; +$plugin_tx['calendar']['config_margin-top']="margin-top (horní okraj)"; +$plugin_tx['calendar']['config_month']="zobrazit měsíce"; +$plugin_tx['calendar']['config_month_fontsize']="měsíc apod."; +$plugin_tx['calendar']['config_more']="více"; +$plugin_tx['calendar']['config_no_image']="žádný obrázek"; +$plugin_tx['calendar']['config_no_special_font']="žádný specialní font"; +$plugin_tx['calendar']['config_one_line_per_entry']="1 řádek pro událost"; +$plugin_tx['calendar']['config_opacity_no_event']="průhlednost nedefinovaných událostí"; +$plugin_tx['calendar']['config_popup']="Pop-up"; +$plugin_tx['calendar']['config_popup_in_small_calendar']="velké popup okno"; +$plugin_tx['calendar']['config_small_calendar']="Malý kalendář"; +$plugin_tx['calendar']['config_subhead_fontsize']="podtitulek"; +$plugin_tx['calendar']['config_tablestyle']="tabulka"; +$plugin_tx['calendar']['config_template']="šablona"; +$plugin_tx['calendar']['config_textarea']="velké vstupní pole"; +$plugin_tx['calendar']['config_today']="dnes"; +$plugin_tx['calendar']['config_today_background']="barva dneška/pozadí"; +$plugin_tx['calendar']['config_use_default_template']="standardní template"; +$plugin_tx['calendar']['config_year']="roční zobrazení"; +$plugin_tx['calendar']['config_bold']="bold"; +$plugin_tx['calendar']['config_date']="pole datum"; +$plugin_tx['calendar']['config_event']="pole událostí"; +$plugin_tx['calendar']['config_event_list_period']="%sZobrazení událostí.   Zobrazit%směsíců + %suplynulých měsíců  %suplynulé šedě  %snezobrazovat uplynulé"; +$plugin_tx['calendar']['config_exceptions']="vyjímky"; +$plugin_tx['calendar']['config_hint']="hint under calendar"; +$plugin_tx['calendar']['config_indented']="odsadit: %sbuněk"; +$plugin_tx['calendar']['config_list_page']="stránka událostí"; +$plugin_tx['calendar']['config_name']="název"; +$plugin_tx['calendar']['config_no_event_list_page']="Žádná stránka událostí"; +$plugin_tx['calendar']['config_on']="pole zapnout?"; +$plugin_tx['calendar']['config_presets']="zobrazení"; +$plugin_tx['calendar']['config_roundcorners']="zaoblení rohů"; +$plugin_tx['calendar']['config_select']="Vyberte prosím"; +$plugin_tx['calendar']['config_shadow']="stínování"; +$plugin_tx['calendar']['config_time_on']="nastavit čas?"; +$plugin_tx['calendar']['config_width']="šířka"; +$plugin_tx['calendar']['config_lineheight']="výška linky"; +$plugin_tx['calendar']['config_normalday']="normal day"; +$plugin_tx['calendar']['config_weekend']="víkend"; +$plugin_tx['calendar']['config_holiday']="prázdniny"; +$plugin_tx['calendar']['config_eventday']="1 den události/pozadí"; +$plugin_tx['calendar']['config_underline_longevent']="underline long events or %ssame as 1st day"; +$plugin_tx['calendar']['config_mark2']="border for border marked entries"; +$plugin_tx['calendar']['config_weekdaynames_padding']="top/bottom padding weekday names"; +$plugin_tx['calendar']['config_dayfield_border']="ohraničení pole dnů"; +$plugin_tx['calendar']['config_dayfield_padding']="levé odsazení"; +$plugin_tx['calendar']['config_line_between_events_in_bigcalendar']="linka mezi událostmi"; +$plugin_tx['calendar']['config_symbol_when_no_time_is_given']="Symbol pro položky bez časových údajů"; +$plugin_tx['calendar']['config_select_internal_link']="Vyberte interní odkaz"; +$plugin_tx['calendar']['marquee_1stline']="První řádek zobrazení"; +$plugin_tx['calendar']['marquee_2ndline']="Druhý řádek zobrazení"; +$plugin_tx['calendar']['marquee_age']="Věk zobrazit v"; +$plugin_tx['calendar']['marquee_contents']="Obsah v marquee"; +$plugin_tx['calendar']['marquee_dateline']="Řádek s datem"; +$plugin_tx['calendar']['marquee_dateline_height']="marquee výška titulku (pouze číslo)"; +$plugin_tx['calendar']['marquee_emptyline']="Nic"; +$plugin_tx['calendar']['marquee_height']="výška marquee (pouze číslo)"; +$plugin_tx['calendar']['marquee_height_unit']="výška marquee v jednotkách"; +$plugin_tx['calendar']['marquee_not_in_marquee']="Nezobrazit"; +$plugin_tx['calendar']['marquee_number_of_events_shown']="počet zobrazovaných událostí v marquee"; +$plugin_tx['calendar']['marquee_speed']="rychlost marquee (px za 0.01 sec)"; +$plugin_tx['calendar']['marquee_use_jquery']="použít jQuery pro zobrazení marquee"; +$plugin_tx['calendar']['help_config_jquery_marquee']="Vliv změny jQuery nastavení zobrazí pouze po kliknutí na \"použít nastavení\" a reselecting Marquee in the plugin's menu.

    Bez jQuery bude použit standardní Microsoft Marquee funkce."; +$plugin_tx['calendar']['help_config_roundcorners']="vlož 4 hodnoty v pixelech pro zaoblené rohy: levý-horní-roh   pravý-horní pravý-dolní levý-dolní"; +$plugin_tx['calendar']['help_config_shadow']="vlož 3 hodnoty v pixelech + 1 kód barvy: pravý-posun dolní-posun pro definici stínu"; +$plugin_tx['calendar']['help_config_presets']="Předvolby obsahují některé hodnoty pro zobrazení seznamu událostí nebo kalendáře v zobrazení měsíce). Můžete si uložit vlastní nastavení jako přednastavení. Přednastavené soubory je možné upravovat v nabídce menu«Zálohy atd.»"; +$plugin_tx['calendar']['help_config_topmargin']="Zadej číslo + jednotky pro nastavení, např. 50px nebo 10em, pro více místa nad titulkem na pozadí obrázku."; +$plugin_tx['calendar']['help_config_padweekdaynames']="Zadej číslo + jednotky pro definování prostoru nad a pod názvem dnů."; +$plugin_tx['calendar']['help_holiday_date_calculation']="
      \r\n
    • Pevné svátky => day.month (Můžete použít tečku nebo lomítko, pokud podle nvašeho nastavení data.)
    • \r\n
    • Pohyblivé svátky v závislosti na datu Velikonoc => velikonoce + x dní nebo - x dní např. Velký pátek: velikonoce - 2 dny
    • \r\n
    • Pohyblivé svátky závislé na víkendech:\r\n
        \r\n
      • První pondělí v květnu: pondělí 1.5
      • \r\n
      • Poslední pondělí v květnu (= Pondělí do 1. června): -1 pondělí 1.6
      • \r\n
      • 11 dnů před 1. nedělí po 26.11: -11 dní 1 neděle 26.11
      • \r\n
      • 4. neděle po 26.11: 4 neděle 26.11
      • \r\n
      \r\n
    • \r\n
    "; + +?> diff --git a/languages/da.php b/languages/da.php new file mode 100644 index 0000000..eb786a5 --- /dev/null +++ b/languages/da.php @@ -0,0 +1,63 @@ + diff --git a/languages/de.php b/languages/de.php new file mode 100644 index 0000000..d677a28 --- /dev/null +++ b/languages/de.php @@ -0,0 +1,285 @@ +fckeditor
    \" or \"html\" (for plain HTML)."; + $plugin_tx['calendar']['cf_editor_deletes_empty_lines_at_the_end']="\"1\" means yes. Useful setting, as in the editors it is invisible, if one has added involuntarily an empty line at the end of one's text."; + $plugin_tx['calendar']['cf_editor_height']="The height of the editor area in px. Enter only the number, not px."; + + $plugin_tx['calendar']['cf_eventlist_template']="Left empty the event list will be in spreadsheet table style. If you enter the name of an event-list template here, this template will be used to style the event list."; + + $plugin_tx['calendar']['cf_filepath_calendar_background_images']="The path to the calendar background images. Relative starting address is the calendar stylesheet.css, since this path will be written into it. E.g. using the normal image folder would need the following address: \"../../../images/\"."; + $plugin_tx['calendar']['cf_filepath_data']="The path to the calendar event files. Without entry it will be set to \"./plugins/calendar/content/\". If you enter a different path, start the path with dot and slash."; + + $plugin_tx['calendar']['cf_same-event-calendar_for_all_subsites']="Setting for multi language sites! By default every language has its own calendarevent-file. Entering \"1\" makes Calendar use the same event file calendarevent.txt for all languages.  I M P O R T A N T  if set to \"1\": Add Images to your Calendar only in your main language as the image path is different in secondary languages."; + + $plugin_tx['calendar']['cf_second-calendar_filename']="If you enter a file name of your choice here (file doesn't have to exist!), under which you want a second independent calendar to save event dates, a second calendar will be activated and additional menu options will appear."; + $plugin_tx['calendar']['cf_second-calendar_eventpage']="Enter here the pagename of the page to which the second calendar should link. Without entry there will be no links. Pagename can be entered as simple name (the name should not occur twice) or as URL starting with \"?\", e.g.\"?Start:News\"."; + + $plugin_tx['calendar']['cf_style_headline_eventtype']="If there are weekly events, a headline will announce them and a similar headline will announce the other events. Here the styling of these headlines can be entered. The headline text is represented by the placeholder \"%s\"."; + $plugin_tx['calendar']['cf_style_headline_year']="If left empty, the month/year headline of year and multiple months in columns will be styled as h4. Alternatively you can enter h1 up to h6 or p as style, or enter HTML-code with %s as placeholder for the year/month, e.g. ‹h5»%s‹/h5»"; + + $plugin_tx['calendar']['cf_z-index']="If other plugins obscure the pop-ups of calendar, you can enter a number (e.g.: from 5 - 100000) to raise calendar in the staking order."; + + $plugin_tx['calendar']['cf_input-field_entry1_as_textarea']="Enter a height value like \"2.6em\" to have field 1 as textarea instead of as simple input line."; + $plugin_tx['calendar']['cf_input-field_entry3_as_textarea']="Enter a height value like \"2.6em\" to have field 3 as textarea instead of as simple input line."; + $plugin_tx['calendar']['cf_input-field_entry1_show_in_input_always']="\"1\" will show field 1 -- even when switched off in eventlist config -- still in the input. Thus entry 1 can be used specially for marquee without appearing in the event list."; + $plugin_tx['calendar']['cf_input-field_additional_days_as_textarea']="Enter a height value like \"2.6em\" to have the field for the additional dates as textarea. Practical if you have many additional dates."; + $plugin_tx['calendar']['cf_input-field_mainentry_as_textarea']="Enter a height value like \"2.6em\" to have the input for the main field as textarea instead of as simple line."; + + + $plugin_tx['calendar']['error_event_page_occurs_more_than_once']="occurs as page name more than once. Therefore it is unclear which page should serve as event-list page."; + $plugin_tx['calendar']['error_event_page_not_found']="event-list page doesn't exist"; + $plugin_tx['calendar']['error_file_name_wrong']="Error: file name contains spaces or not allowed characters"; + $plugin_tx['calendar']['error_settings_name_wrong']="Error: settings name contains spaces or not allowed characters"; + $plugin_tx['calendar']['error_file_not_saved']="Error: could not save event data"; + $plugin_tx['calendar']['error_file_not_writable']="Error: file not writable, probably protected"; + $plugin_tx['calendar']['error_link_unclear']="link not found"; + $plugin_tx['calendar']['error_links_unclear']="links not found"; + $plugin_tx['calendar']['error_pagename_double']="linked pagename occurs more than once"; + $plugin_tx['calendar']['error_pagenames_double']="linked pagenames occur more than once"; + $plugin_tx['calendar']['error_settings_not_saved']="Error: could not save settings data"; + $plugin_tx['calendar']['error_occured']="Some error occured"; + $plugin_tx['calendar']['error_could_not_change_css_file']="Couldn't change css file"; + $plugin_tx['calendar']['error_could_not_change_config_file']="Couldn't change config file"; + $plugin_tx['calendar']['error_could_not_change_language_file']="Couldn't change language file"; + $plugin_tx['calendar']['error_do_not_edit_from_subsite']="WARNING: You are on a subsite and have enabled same calendar on all subsites. Images and internal links entered from here will not work on the main site. Enter images and internal links from the main site. For internal Links to subsite pages use the URL beginning with \"/\"."; + $plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions']="ERROR: cannot combine event files from different Calendar versions"; + + $plugin_tx['calendar']['event_date']="Date"; + $plugin_tx['calendar']['event_date_till_date']="till"; + $plugin_tx['calendar']['event_daily']="daily"; + $plugin_tx['calendar']['event_description']="Additional description"; + $plugin_tx['calendar']['event_end_date']="End date"; + $plugin_tx['calendar']['event_end']="End"; + $plugin_tx['calendar']['event_info_icon']="Info tooltip icon"; + $plugin_tx['calendar']['event_info_text']="Info text"; + $plugin_tx['calendar']['event_other_link']="Other Link"; + $plugin_tx['calendar']['event_widepopup']="+ wide popup"; + $plugin_tx['calendar']['event_link_etc']="Info"; + $plugin_tx['calendar']['event_link_icon']="Link icon"; + $plugin_tx['calendar']['event_icon']="Icon"; + $plugin_tx['calendar']['event_link_text']="Link text"; + $plugin_tx['calendar']['event_main_entry']="Speaker"; + $plugin_tx['calendar']['event_entry3']="Subject"; + $plugin_tx['calendar']['event_entry1']="Location"; + $plugin_tx['calendar']['event_not_on_marquee']="not in marquee"; + $plugin_tx['calendar']['event_start']="Beginning"; + $plugin_tx['calendar']['event_start_date']="Start date"; + $plugin_tx['calendar']['event_time']="Time"; + $plugin_tx['calendar']['event_time_till_time']="-"; + $plugin_tx['calendar']['event_times_are_daily']="daily times"; + $plugin_tx['calendar']['event_same_on_other_days']="same short event on above days"; + $plugin_tx['calendar']['event_additional_days']="additional days"; + $plugin_tx['calendar']['event_weekly']="weekly"; + $plugin_tx['calendar']['event_additional']="additionally"; + $plugin_tx['calendar']['event_except']="except"; + $plugin_tx['calendar']['event_exceptions']="weekly/ long event exceptions"; + $plugin_tx['calendar']['event_weekly_starting_on']="starting"; + $plugin_tx['calendar']['event_weekly_ongoing']="every week"; + $plugin_tx['calendar']['event_yearly_with_age_calculation']="yearly + age calc."; + $plugin_tx['calendar']['event_yearly']="yearly"; + $plugin_tx['calendar']['event_booked_out']="Booked out"; + $plugin_tx['calendar']['event_has_ended']="Has ended"; + $plugin_tx['calendar']['event_multiple']="multiple"; + $plugin_tx['calendar']['event_border_marked']="marked with border in calendar"; + $plugin_tx['calendar']['event_mark2']="border marked"; + + $plugin_tx['calendar']['headline_weekly_events']="Weekly Events"; + $plugin_tx['calendar']['headline_single_events']="Single Events"; + $plugin_tx['calendar']['headline_yearly_events']="Yearly Events"; + $plugin_tx['calendar']['headline_multiple_events']="Multiple Events"; + $plugin_tx['calendar']['headline_started_earlier']="Started before the listed period"; + + $plugin_tx['calendar']['hint_event_formatting']="Formatting"; + $plugin_tx['calendar']['hint_external_links']="External links: site name"; + $plugin_tx['calendar']['hint_formattable_fields']="Simple markup works in:"; + $plugin_tx['calendar']['hint_how_to_enter_links']="How to enter links:"; + $plugin_tx['calendar']['hint_icon_add']="Add new event under this entry"; + $plugin_tx['calendar']['hint_icon_copy']="Copy this event"; + $plugin_tx['calendar']['hint_icon_delete']="Delete this event"; + $plugin_tx['calendar']['hint_icon_ok']="Save only this event"; + $plugin_tx['calendar']['hint_icon_save_new_name']="Save under new name"; + $plugin_tx['calendar']['hint_internal_links']="Internal links: options list. Other links: next line. Separate multiple links with |. Separate link texts for multiple links also with |."; + $plugin_tx['calendar']['hint_blog_links']="Links to blogentries: URL starting with ?"; + $plugin_tx['calendar']['hint_subsite_links']="Links to subsite pages: URL starting with /"; + $plugin_tx['calendar']['hint_file_links']="PDF/ Word-files in download folder: just the file name (case-sensitive)"; + $plugin_tx['calendar']['hint_external_pdf_links']="External PDF: [www.]website.xx/.../x.pdf"; + $plugin_tx['calendar']['hint_links']="Links"; + $plugin_tx['calendar']['hint_mouseover_in_calendar']="(Mouse over date => details, click => event list)"; + + $plugin_tx['calendar']['holiday_name']="Holiday name"; + $plugin_tx['calendar']['holiday_date_calculation']="Date calculation"; + + $plugin_tx['calendar']['holydays']="1.1,New Year's Day;easter -2 day,Good Friday;easter,Easter;easter + 1 day,Easter Monday;24.12,Christmas Eve;25.12,Christmas Day;26.12,Boxing Day"; + + $plugin_tx['calendar']['link-button_next_month']="Next Month"; + $plugin_tx['calendar']['link-button_prev_month']="Previous Month"; + $plugin_tx['calendar']['link-button_prev_year']="Previous Year"; + $plugin_tx['calendar']['link-button_next_year']="Next Year"; + $plugin_tx['calendar']['link_to_present_month']="reset list to present month"; + + $plugin_tx['calendar']['menu_apply_preset']="apply preset"; + $plugin_tx['calendar']['menu_preset_backup']="backup"; + $plugin_tx['calendar']['menu_backup']="Backup"; + $plugin_tx['calendar']['menu_credits']="Credits"; + $plugin_tx['calendar']['menu_css']="CSS"; + $plugin_tx['calendar']['menu_eventlistconfig']="Event-List Config"; + $plugin_tx['calendar']['menu_marquee']="Marquee"; + $plugin_tx['calendar']['menu_holidays']="Holidays"; + $plugin_tx['calendar']['menu_settings_backupname']="backupname"; + $plugin_tx['calendar']['menu_test']="test"; + $plugin_tx['calendar']['menu_config']="Config"; + $plugin_tx['calendar']['menu_help']="Help"; + $plugin_tx['calendar']['menu_language']="Language"; + $plugin_tx['calendar']['menu_main']="Edit Events"; + $plugin_tx['calendar']['menu_save_config']="apply settings"; + $plugin_tx['calendar']['menu_show_calendar']="Calendar"; + $plugin_tx['calendar']['menu_test_event_list']="Event List"; + + $plugin_tx['calendar']['names_of_days']="Su,Mo,Tu,We,Th,Fr,Sa"; + $plugin_tx['calendar']['names_of_months']="January,February,March,April,May,June,July,August,September,Oktober,November,December"; + $plugin_tx['calendar']['names_of_days_longform']="Sundays,Mondays,Tuesdays,Wednesdays,Thursdays,Fridays,Saturdays"; + + $plugin_tx['calendar']['notice_backup_setting']="Backups"; + $plugin_tx['calendar']['notice_event_entries']="entries"; + $plugin_tx['calendar']['notice_file_not_yet_saved']="Changes not yet saved"; + $plugin_tx['calendar']['notice_no_eventlist_page']="event-list page not set"; + $plugin_tx['calendar']['notice_no_eventlist2_page']="Calendar2 event-list page not set"; + $plugin_tx['calendar']['notice_no_next_event_scheduled']="Presently no events scheduled"; + $plugin_tx['calendar']['notice_number_of_events_saved_in_file']="events in"; + $plugin_tx['calendar']['notice_preset_applied']="Preset \"%s\" has been loaded"; + $plugin_tx['calendar']['notice_settings_data_saved']="settings saved as \"%s\" in calendar/templates/"; + $plugin_tx['calendar']['notice_telling_period_of_events']="Events in the period from"; + $plugin_tx['calendar']['notice_telling_month_of_events']="Events in"; + $plugin_tx['calendar']['notice_today']="today"; + $plugin_tx['calendar']['notice_copied']="1 event copied, "; + $plugin_tx['calendar']['notice_changed']="1 event saved/changed, "; + $plugin_tx['calendar']['notice_added']="1 empty event added, "; + $plugin_tx['calendar']['notice_deleted']="1 event deleted, "; + + $plugin_tx['calendar']['config_additional']="additional"; + $plugin_tx['calendar']['config_additional_dates_bookedout']="(year + * = booked out)"; + $plugin_tx['calendar']['config_all_same_color']="color picker acting on all fields"; + $plugin_tx['calendar']['config_articlestyle']="template"; + $plugin_tx['calendar']['config_background']="background"; + $plugin_tx['calendar']['config_background_or_color']="background or color"; + $plugin_tx['calendar']['config_background_color']="background color"; + $plugin_tx['calendar']['config_background_image']="background image"; + $plugin_tx['calendar']['config_bigcalendar']="Big Calendar"; + $plugin_tx['calendar']['config_birthday']="birthday"; + $plugin_tx['calendar']['config_birthday_image']="birthday background image"; + $plugin_tx['calendar']['config_birthday_age']="Age (birthday)"; + $plugin_tx['calendar']['config_birthday_color']="birthday special color"; + $plugin_tx['calendar']['config_birthday_in_dayfield']="birthdaycolor inside dayfield"; + $plugin_tx['calendar']['config_border_color_width']="border color + width"; + $plugin_tx['calendar']['config_border_color']="border color"; + $plugin_tx['calendar']['config_border_width']="border width"; + $plugin_tx['calendar']['config_calendar_template']="test template"; + $plugin_tx['calendar']['config_color']="color"; + $plugin_tx['calendar']['config_day_border_spacing']="space between days"; + $plugin_tx['calendar']['config_day_field_height']="day field height"; + $plugin_tx['calendar']['config_day_name_color']="color of weekday names"; + $plugin_tx['calendar']['config_day_names_more_css']="more weekday name css"; + $plugin_tx['calendar']['config_event_on_holidays']="event on holidays"; + $plugin_tx['calendar']['config_event_on_workdays']="event on workdays"; + $plugin_tx['calendar']['config_eventlist_standard']="standard style"; + $plugin_tx['calendar']['config_eventlist_table_selected']="table-style display"; + $plugin_tx['calendar']['config_fontfamily']="font"; + $plugin_tx['calendar']['config_fontsize']="size"; + $plugin_tx['calendar']['config_headline_style']="headline color + style"; + $plugin_tx['calendar']['config_headline_more_css']="more headline css"; + $plugin_tx['calendar']['config_in_title_label']="if tiny pop-ups, include"; + $plugin_tx['calendar']['config_input_fields']="input fields"; + $plugin_tx['calendar']['config_long_event']="long event"; + $plugin_tx['calendar']['config_margin-top']="margin-top"; + $plugin_tx['calendar']['config_month']="month view"; + $plugin_tx['calendar']['config_month_fontsize']="month etc."; + $plugin_tx['calendar']['config_more']="more"; + $plugin_tx['calendar']['config_no_image']="no image"; + $plugin_tx['calendar']['config_no_special_font']="no special font"; + $plugin_tx['calendar']['config_one_line_per_entry']="1 line per event"; + $plugin_tx['calendar']['config_opacity_no_event']="opacity no event day"; + $plugin_tx['calendar']['config_popup']="Pop-up"; + $plugin_tx['calendar']['config_popup_in_small_calendar']="big pop-ups instead of tiny"; + $plugin_tx['calendar']['config_small_calendar']="Small Calendar"; + $plugin_tx['calendar']['config_subhead_fontsize']="subhead"; + $plugin_tx['calendar']['config_tablestyle']="table"; + $plugin_tx['calendar']['config_template']="template"; + $plugin_tx['calendar']['config_textarea']="big input area"; + $plugin_tx['calendar']['config_today']="today"; + $plugin_tx['calendar']['config_today_background']="today color/background"; + $plugin_tx['calendar']['config_use_default_template']="standard template"; + $plugin_tx['calendar']['config_year']="year view"; + $plugin_tx['calendar']['config_bold']="bold"; + $plugin_tx['calendar']['config_date']="date field"; + $plugin_tx['calendar']['config_event']="event field"; + $plugin_tx['calendar']['config_event_list_period']="%sAnnounce event-list period.   Show %smonths + %spast months  %spast events in grey  %sno past events"; + $plugin_tx['calendar']['config_exceptions']="exceptions"; + $plugin_tx['calendar']['config_hint']="hint under calendar"; + $plugin_tx['calendar']['config_indented']="indented: %scell(s)"; + $plugin_tx['calendar']['config_list_page']="event-list page"; + $plugin_tx['calendar']['config_name']="name"; + $plugin_tx['calendar']['config_no_event_list_page']="No event-list page"; + $plugin_tx['calendar']['config_on']="field on?"; + $plugin_tx['calendar']['config_presets']="Presets"; + $plugin_tx['calendar']['config_roundcorners']="round corners"; + $plugin_tx['calendar']['config_select']="Please select"; + $plugin_tx['calendar']['config_shadow']="shadow"; + $plugin_tx['calendar']['config_time_on']="time on?"; + $plugin_tx['calendar']['config_width']="width"; + $plugin_tx['calendar']['config_lineheight']="line hight"; + $plugin_tx['calendar']['config_normalday']="normal day"; + $plugin_tx['calendar']['config_weekend']="weekend"; + $plugin_tx['calendar']['config_holiday']="holiday"; + $plugin_tx['calendar']['config_eventday']="event 1st day/background"; + $plugin_tx['calendar']['config_underline_longevent']="underline long events or %ssame as 1st day"; + $plugin_tx['calendar']['config_mark2']="border for border marked entries"; + $plugin_tx['calendar']['config_weekdaynames_padding']="top/bottom padding weekday names"; + $plugin_tx['calendar']['config_dayfield_border']="day field border"; + $plugin_tx['calendar']['config_dayfield_padding']="left padding"; + $plugin_tx['calendar']['config_line_between_events_in_bigcalendar']="line between events"; + $plugin_tx['calendar']['config_symbol_when_no_time_is_given']="Symbol for entries without time data"; + $plugin_tx['calendar']['config_select_internal_link']="Select internal link"; + + + $plugin_tx['calendar']['marquee_1stline']="1st line below date"; + $plugin_tx['calendar']['marquee_2ndline']="2nd line below date"; + $plugin_tx['calendar']['marquee_age']="Age is displayed in"; + $plugin_tx['calendar']['marquee_contents']="Contents of the marquee"; + $plugin_tx['calendar']['marquee_dateline']="Dateline"; + $plugin_tx['calendar']['marquee_dateline_height']="marquee dateline height (number)"; + $plugin_tx['calendar']['marquee_emptyline']="Nothing"; + $plugin_tx['calendar']['marquee_height']="marquee height (just a number)"; + $plugin_tx['calendar']['marquee_height_unit']="unit for marquee heights"; + $plugin_tx['calendar']['marquee_not_in_marquee']="Not displayed"; + $plugin_tx['calendar']['marquee_number_of_events_shown']="number of events shown in marquee"; + $plugin_tx['calendar']['marquee_speed']="speed of marquee (px per 0.01 sec)"; + $plugin_tx['calendar']['marquee_use_jquery']="use jQuery to run marquee"; + + $plugin_tx['calendar']['help_config_jquery_marquee']="The Effect of changing the jQuery setting shows only after clicking \"apply settings\" and reselecting \"Marquee\" in the plugin's menu. (The complete plug-in has to be reloaded.)

    Without jQuery the standard Microsoft Marquee funktion is used.
    If you don't use marquee, you may want to deselect \"jQuery\" to avoid loading unnecessary jQuery Calendar Marquee files."; + $plugin_tx['calendar']['help_config_roundcorners']="Enter 4 values of corner radius in px: left-top-corner   right-top right-buttom left-buttom"; + $plugin_tx['calendar']['help_config_shadow']="Enter 3 values in px + 1 color-code: right-displacement bottom-displacement diffusion color"; + $plugin_tx['calendar']['help_config_presets']="Presets contain some values for event list or for calendar (month view). You can save your own settings as presets. Preset-files can be edited in menu «Backup etc.»"; + $plugin_tx['calendar']['help_config_topmargin']="Enter number + unit of measurement, e.g. 50px or 10em, to get more space above the headline for the background image."; + $plugin_tx['calendar']['help_config_padweekdaynames']="Enter number + unit of measurement, for padding space above and below the row of weekday names."; + $plugin_tx['calendar']['help_holiday_date_calculation']="
      +
    • Fixed holidays => day.month (Instead of dot use hyphen or slash if your date delimiter is set to this.)
    • +
    • Movable holidays depending on the Easter date => easter + x day or - x day e.g. Good Friday: easter - 2 day
    • +
    • Movable holidays on a fixed weekday: +
        +
      • First Monday in May: monday 1.5
      • +
      • Last Monday in May (= Monday before 1st of June): -1 monday 1.6
      • +
      • 11 days before the 1st sunday after 26.11: -11 days 1 sunday 26.11
      • +
      • 4th sunday after 26.11: 4 sunday 26.11
      • +
      +
    • +
    " +?> diff --git a/languages/en.php b/languages/en.php new file mode 100644 index 0000000..393d02f --- /dev/null +++ b/languages/en.php @@ -0,0 +1,11 @@ + diff --git a/languages/fr.php b/languages/fr.php new file mode 100644 index 0000000..3e25f88 --- /dev/null +++ b/languages/fr.php @@ -0,0 +1,41 @@ + diff --git a/languages/it.php b/languages/it.php new file mode 100644 index 0000000..09cd144 --- /dev/null +++ b/languages/it.php @@ -0,0 +1,37 @@ + diff --git a/languages/nl.php b/languages/nl.php new file mode 100644 index 0000000..3a99b58 --- /dev/null +++ b/languages/nl.php @@ -0,0 +1,39 @@ + diff --git a/languages/sk.php b/languages/sk.php new file mode 100644 index 0000000..a3a61c1 --- /dev/null +++ b/languages/sk.php @@ -0,0 +1,37 @@ + + diff --git a/languages/yogaschool.php b/languages/yogaschool.php new file mode 100644 index 0000000..8165033 --- /dev/null +++ b/languages/yogaschool.php @@ -0,0 +1,322 @@ +fckeditor
    \" or \"html\" (for plain HTML)."; + $plugin_tx['calendar']['cf_editor_deletes_empty_lines_at_the_end']="\"1\" means yes. Useful setting, as in the editors it is invisible, if one has added involuntarily an empty line at the end of one's text."; + $plugin_tx['calendar']['cf_editor_height']="The height of the editor area in px. Enter only the number, not px."; + + $plugin_tx['calendar']['cf_eventlist_template']="Left empty the event list will be in spreadsheet table style. If you enter the name of an event-list template here, this template will be used to style the event list."; + + $plugin_tx['calendar']['cf_filepath_calendar_background_images']="The path to the calendar background images. Relative starting address is the calendar stylesheet.css, since this path will be written into it. E.g. using the normal image folder would need the following address: \"../../../images/\"."; + $plugin_tx['calendar']['cf_filepath_data']="The path to the calendar event files. Without entry it will be set to \"./plugins/calendar/content/\". If you enter a different path, start the path with dot and slash."; + + $plugin_tx['calendar']['cf_same-event-calendar_for_all_subsites']="Setting for multi language sites! By default every language has its own calendarevent-file. Entering \"1\" makes Calendar use the same event file calendarevent.txt for all languages.  I M P O R T A N T  if set to \"1\": Add Images to your Calendar only in your main language as the image path is different in secondary languages."; + + $plugin_tx['calendar']['cf_second-calendar_filename']="If you enter a file name of your choice here (file doesn't have to exist!), under which you want a second independent calendar to save event dates, a second calendar will be activated and additional menu options will appear."; + $plugin_tx['calendar']['cf_second-calendar_eventpage']="Enter here the pagename of the page to which the second calendar should link. Without entry there will be no links. Pagename can be entered as simple name (the name should not occur twice) or as URL starting with \"?\", e.g.\"?Start:News\"."; + + $plugin_tx['calendar']['cf_style_headline_eventtype']="If there are weekly events, a headline will announce them and a similar headline will announce the other events. Here the styling of these headlines can be entered. The headline text is represented by the placeholder \"%s\"."; + $plugin_tx['calendar']['cf_style_headline_year']="If left empty, the month/year headline of year and multiple months in columns will be styled as h4. Alternatively you can enter h1 up to h6 or p as style, or enter HTML-code with %s as placeholder for the year/month, e.g. ‹h5»%s‹/h5»"; + + $plugin_tx['calendar']['cf_z-index']="If other plugins obscure the pop-ups of calendar, you can enter a number (e.g.: from 5 - 100000) to raise calendar in the staking order."; + + $plugin_tx['calendar']['cf_input-field_entry1_as_textarea']="Enter a height value like \"2.6em\" to have field 1 as textarea instead of as simple input line."; + $plugin_tx['calendar']['cf_input-field_entry3_as_textarea']="Enter a height value like \"2.6em\" to have field 3 as textarea instead of as simple input line."; + $plugin_tx['calendar']['cf_input-field_entry1_show_in_input_always']="\"1\" will show field 1 -- even when switched off in eventlist config -- still in the input. Thus entry 1 can be used specially for marquee without appearing in the event list."; + $plugin_tx['calendar']['cf_input-field_additional_days_as_textarea']="Enter a height value like \"2.6em\" to have the field for the additional dates as textarea. Practical if you have many additional dates."; + $plugin_tx['calendar']['cf_input-field_mainentry_as_textarea']="Enter a height value like \"2.6em\" to have the input for the main field as textarea instead of as simple line."; + + + $plugin_tx['calendar']['error_event_page_occurs_more_than_once']="occurs as page name more than once. Therefore it is unclear which page should serve as event-list page."; + $plugin_tx['calendar']['error_event_page_not_found']="event-list page doesn't exist"; + $plugin_tx['calendar']['error_file_name_wrong']="Error: file name contains spaces or not allowed characters"; + $plugin_tx['calendar']['error_settings_name_wrong']="Error: settings name contains spaces or not allowed characters"; + $plugin_tx['calendar']['error_file_not_saved']="Error: could not save event data"; + $plugin_tx['calendar']['error_file_not_writable']="Error: file not writable, probably protected"; + $plugin_tx['calendar']['error_link_unclear']="link not found"; + $plugin_tx['calendar']['error_links_unclear']="links not found"; + $plugin_tx['calendar']['error_pagename_double']="linked pagename occurs more than once"; + $plugin_tx['calendar']['error_pagenames_double']="linked pagenames occur more than once"; + $plugin_tx['calendar']['error_settings_not_saved']="Error: could not save settings data"; + $plugin_tx['calendar']['error_occured']="Some error occured"; + $plugin_tx['calendar']['error_could_not_change_css_file']="Couldn't change css file"; + $plugin_tx['calendar']['error_could_not_change_config_file']="Couldn't change config file"; + $plugin_tx['calendar']['error_could_not_change_language_file']="Couldn't change language file"; + $plugin_tx['calendar']['error_do_not_edit_from_subsite']="WARNING: You are on a subsite and have enabled same calendar on all subsites. Images and internal links entered from here will not work on the main site. Enter images and internal links from the main site. For internal Links to subsite pages use the URL beginning with \"/\"."; + $plugin_tx['calendar']['error_cant_combine_eventfiles_of_different_versions']="ERROR: cannot combine event files from different Calendar versions"; + + $plugin_tx['calendar']['event_date']="Date"; + $plugin_tx['calendar']['event_date_till_date']="till"; + $plugin_tx['calendar']['event_daily']="daily"; + $plugin_tx['calendar']['event_description']="Additional description"; + $plugin_tx['calendar']['event_end_date']="End date"; + $plugin_tx['calendar']['event_end']="End"; + $plugin_tx['calendar']['event_info_icon']="Info tooltip icon"; + $plugin_tx['calendar']['event_info_text']="Info text"; + $plugin_tx['calendar']['event_other_link']="Other Link"; + $plugin_tx['calendar']['event_widepopup']="+ wide popup"; + $plugin_tx['calendar']['event_link_etc']="Info"; + $plugin_tx['calendar']['event_link_icon']="Link icon"; + $plugin_tx['calendar']['event_icon']="Icon"; + $plugin_tx['calendar']['event_link_text']="Link text"; + $plugin_tx['calendar']['event_main_entry']="Speaker"; + $plugin_tx['calendar']['event_entry3']="Subject"; + $plugin_tx['calendar']['event_entry1']="Location"; + $plugin_tx['calendar']['event_not_on_marquee']="not in marquee"; + $plugin_tx['calendar']['event_start']="Beginning"; + $plugin_tx['calendar']['event_start_date']="Start date"; + $plugin_tx['calendar']['event_time']="Time"; + $plugin_tx['calendar']['event_time_till_time']="-"; + $plugin_tx['calendar']['event_times_are_daily']="daily times"; + $plugin_tx['calendar']['event_same_on_other_days']="same short event on above days"; + $plugin_tx['calendar']['event_additional_days']="additional days"; + $plugin_tx['calendar']['event_weekly']="weekly"; + $plugin_tx['calendar']['event_additional']="additionally"; + $plugin_tx['calendar']['event_except']="except"; + $plugin_tx['calendar']['event_exceptions']="weekly/ long event exceptions"; + $plugin_tx['calendar']['event_weekly_starting_on']="starting"; + $plugin_tx['calendar']['event_weekly_ongoing']="every week"; + $plugin_tx['calendar']['event_yearly_with_age_calculation']="yearly + age calc."; + $plugin_tx['calendar']['event_yearly']="yearly"; + $plugin_tx['calendar']['event_booked_out']="Booked out"; + $plugin_tx['calendar']['event_has_ended']="Has ended"; + $plugin_tx['calendar']['event_multiple']="multiple"; + $plugin_tx['calendar']['event_border_marked']="marked with border in calendar"; + $plugin_tx['calendar']['event_mark2']="border marked"; + + $plugin_tx['calendar']['headline_weekly_events']="Weekly Events"; + $plugin_tx['calendar']['headline_single_events']="Single Events"; + $plugin_tx['calendar']['headline_yearly_events']="Yearly Events"; + $plugin_tx['calendar']['headline_multiple_events']="Multiple Events"; + $plugin_tx['calendar']['headline_started_earlier']="Started before the listed period"; + + $plugin_tx['calendar']['hint_event_formatting']="Formatting"; + $plugin_tx['calendar']['hint_external_links']="External links: site name"; + $plugin_tx['calendar']['hint_formattable_fields']="Simple markup works in:"; + $plugin_tx['calendar']['hint_how_to_enter_links']="How to enter links:"; + $plugin_tx['calendar']['hint_icon_add']="Add new event under this entry"; + $plugin_tx['calendar']['hint_icon_copy']="Copy this event"; + $plugin_tx['calendar']['hint_icon_delete']="Delete this event"; + $plugin_tx['calendar']['hint_icon_ok']="Save all events"; + $plugin_tx['calendar']['hint_internal_links']="Internal links: options list. Other links: next line. Separate multiple links with |. Separate link texts for multiple links also with |."; + $plugin_tx['calendar']['hint_blog_links']="Links to blogentries: URL starting with ?"; + $plugin_tx['calendar']['hint_subsite_links']="Links to subsite pages: URL starting with /"; + $plugin_tx['calendar']['hint_file_links']="PDF/ Word-files in download folder: just the file name (case-sensitive)"; + $plugin_tx['calendar']['hint_links']="Links"; + $plugin_tx['calendar']['hint_mouseover_in_calendar']="(Mouse over date => details, click => event list)"; + + $plugin_tx['calendar']['holiday_name']="Holiday name"; + $plugin_tx['calendar']['holiday_date_calculation']="Date calculation"; + + $plugin_tx['calendar']['holydays']="1.1,New Year's Day;easter -2 day,Good Friday;easter,Easter;easter + 1 day,Easter Monday;24.12,Christmas Eve;25.12,Christmas Day;26.12,Boxing Day"; + + $plugin_tx['calendar']['link-button_next_month']="Next Month"; + $plugin_tx['calendar']['link-button_prev_month']="Previous Month"; + $plugin_tx['calendar']['link-button_prev_year']="Previous Year"; + $plugin_tx['calendar']['link-button_next_year']="Next Year"; + $plugin_tx['calendar']['link_to_present_month']="reset list to present month"; + + $plugin_tx['calendar']['menu_apply_preset']="apply preset"; + $plugin_tx['calendar']['menu_preset_backup']="backup"; + $plugin_tx['calendar']['menu_backup']="Backup"; + $plugin_tx['calendar']['menu_credits']="Credits"; + $plugin_tx['calendar']['menu_css']="CSS"; + $plugin_tx['calendar']['menu_eventlistconfig']="Event-List Config"; + $plugin_tx['calendar']['menu_marquee']="Marquee"; + $plugin_tx['calendar']['menu_holidays']="Holidays"; + $plugin_tx['calendar']['menu_settings_backupname']="backupname"; + $plugin_tx['calendar']['menu_test']="test"; + $plugin_tx['calendar']['menu_config']="Config"; + $plugin_tx['calendar']['menu_help']="Help"; + $plugin_tx['calendar']['menu_language']="Language"; + $plugin_tx['calendar']['menu_main']="Edit Events"; + $plugin_tx['calendar']['menu_save_config']="apply settings"; + $plugin_tx['calendar']['menu_show_calendar']="Calendar"; + $plugin_tx['calendar']['menu_test_event_list']="Event List"; + + $plugin_tx['calendar']['names_of_days']="Su,Mo,Tu,We,Th,Fr,Sa"; + $plugin_tx['calendar']['names_of_months']="January,February,March,April,May,June,July,August,September,Oktober,November,December"; + $plugin_tx['calendar']['names_of_days_longform']="Sundays,Mondays,Tuesdays,Wednesdays,Thursdays,Fridays,Saturdays"; + + $plugin_tx['calendar']['notice_backup_setting']="Backups"; + $plugin_tx['calendar']['notice_event_entries']="entries"; + $plugin_tx['calendar']['notice_file_not_yet_saved']="Changes not yet saved"; + $plugin_tx['calendar']['notice_no_eventlist_page']="event-list page not set"; + $plugin_tx['calendar']['notice_no_eventlist2_page']="Calendar2 event-list page not set"; + $plugin_tx['calendar']['notice_no_next_event_scheduled']="Presently no events scheduled"; + $plugin_tx['calendar']['notice_number_of_events_saved_in_file']="event entries saved in"; + $plugin_tx['calendar']['notice_preset_applied']="Preset \"%s\" has been loaded"; + $plugin_tx['calendar']['notice_settings_data_saved']="settings saved as \"%s\" in calendar/templates/"; + $plugin_tx['calendar']['notice_telling_period_of_events']="Events in the period from"; + $plugin_tx['calendar']['notice_telling_month_of_events']="Events in"; + $plugin_tx['calendar']['notice_today']="today"; + + $plugin_tx['calendar']['config_additional']="additional"; + $plugin_tx['calendar']['config_additional_dates_bookedout']="(year + * = booked out)"; + $plugin_tx['calendar']['config_all_same_color']="color picker acting on all fields"; + $plugin_tx['calendar']['config_articlestyle']="template"; + $plugin_tx['calendar']['config_background']="background"; + $plugin_tx['calendar']['config_background_or_color']="background or color"; + $plugin_tx['calendar']['config_background_color']="background color"; + $plugin_tx['calendar']['config_background_image']="background image"; + $plugin_tx['calendar']['config_bigcalendar']="Big Calendar"; + $plugin_tx['calendar']['config_birthday']="birthday"; + $plugin_tx['calendar']['config_birthday_image']="birthday background image"; + $plugin_tx['calendar']['config_birthday_age']="Age (birthday)"; + $plugin_tx['calendar']['config_birthday_color']="birthday special color"; + $plugin_tx['calendar']['config_birthday_in_dayfield']="birthdaycolor inside dayfield"; + $plugin_tx['calendar']['config_border_color_width']="border color + width"; + $plugin_tx['calendar']['config_border_color']="border color"; + $plugin_tx['calendar']['config_border_width']="border width"; + $plugin_tx['calendar']['config_calendar_template']="test template"; + $plugin_tx['calendar']['config_color']="color"; + $plugin_tx['calendar']['config_day_border_spacing']="space between days"; + $plugin_tx['calendar']['config_day_field_height']="day field height"; + $plugin_tx['calendar']['config_day_name_color']="color of weekday names"; + $plugin_tx['calendar']['config_day_names_more_css']="more weekday name css"; + $plugin_tx['calendar']['config_event_on_holidays']="event on holidays"; + $plugin_tx['calendar']['config_event_on_workdays']="event on workdays"; + $plugin_tx['calendar']['config_eventlist_standard']="standard style"; + $plugin_tx['calendar']['config_eventlist_table_selected']="table-style display"; + $plugin_tx['calendar']['config_fontfamily']="font"; + $plugin_tx['calendar']['config_fontsize']="size"; + $plugin_tx['calendar']['config_headline_style']="headline color + style"; + $plugin_tx['calendar']['config_headline_more_css']="more headline css"; + $plugin_tx['calendar']['config_in_title_label']="if tiny pop-ups, include"; + $plugin_tx['calendar']['config_input_fields']="input fields"; + $plugin_tx['calendar']['config_long_event']="long event"; + $plugin_tx['calendar']['config_margin-top']="margin-top"; + $plugin_tx['calendar']['config_month']="month view"; + $plugin_tx['calendar']['config_month_fontsize']="month etc."; + $plugin_tx['calendar']['config_more']="more"; + $plugin_tx['calendar']['config_no_image']="no image"; + $plugin_tx['calendar']['config_no_special_font']="no special font"; + $plugin_tx['calendar']['config_one_line_per_entry']="1 line per event"; + $plugin_tx['calendar']['config_opacity_no_event']="opacity no event day"; + $plugin_tx['calendar']['config_popup']="Pop-up"; + $plugin_tx['calendar']['config_popup_in_small_calendar']="big pop-ups instead of tiny"; + $plugin_tx['calendar']['config_small_calendar']="Small Calendar"; + $plugin_tx['calendar']['config_subhead_fontsize']="subhead"; + $plugin_tx['calendar']['config_tablestyle']="table"; + $plugin_tx['calendar']['config_template']="template"; + $plugin_tx['calendar']['config_textarea']="big input area"; + $plugin_tx['calendar']['config_today']="today"; + $plugin_tx['calendar']['config_today_background']="today color/background"; + $plugin_tx['calendar']['config_use_default_template']="standard template"; + $plugin_tx['calendar']['config_year']="year view"; + $plugin_tx['calendar']['config_bold']="bold"; + $plugin_tx['calendar']['config_date']="date field"; + $plugin_tx['calendar']['config_event']="event field"; + $plugin_tx['calendar']['config_event_list_period']="%sAnnounce event-list period.   Show %smonths + %spast months  %spast events in grey  %sno past events"; + $plugin_tx['calendar']['config_exceptions']="exceptions"; + $plugin_tx['calendar']['config_hint']="hint under calendar"; + $plugin_tx['calendar']['config_indented']="indented: %scell(s)"; + $plugin_tx['calendar']['config_list_page']="event-list page"; + $plugin_tx['calendar']['config_name']="name"; + $plugin_tx['calendar']['config_no_event_list_page']="No event-list page"; + $plugin_tx['calendar']['config_on']="field on?"; + $plugin_tx['calendar']['config_presets']="Presets"; + $plugin_tx['calendar']['config_roundcorners']="round corners"; + $plugin_tx['calendar']['config_select']="Please select"; + $plugin_tx['calendar']['config_shadow']="shadow"; + $plugin_tx['calendar']['config_time_on']="time on?"; + $plugin_tx['calendar']['config_width']="width"; + $plugin_tx['calendar']['config_lineheight']="line hight"; + $plugin_tx['calendar']['config_normalday']="normal day"; + $plugin_tx['calendar']['config_weekend']="weekend"; + $plugin_tx['calendar']['config_holiday']="holiday"; + $plugin_tx['calendar']['config_eventday']="event 1st day/background"; + $plugin_tx['calendar']['config_underline_longevent']="underline long events or %ssame as 1st day"; + $plugin_tx['calendar']['config_mark2']="border for border marked entries"; + $plugin_tx['calendar']['config_weekdaynames_padding']="top/bottom padding weekday names"; + $plugin_tx['calendar']['config_dayfield_border']="day field border"; + $plugin_tx['calendar']['config_dayfield_padding']="left padding"; + $plugin_tx['calendar']['config_line_between_events_in_bigcalendar']="line between events"; + $plugin_tx['calendar']['config_symbol_when_no_time_is_given']="Symbol for entries without time data"; + $plugin_tx['calendar']['config_select_internal_link']="Select internal link"; + + + $plugin_tx['calendar']['marquee_1stline']="1st line below date"; + $plugin_tx['calendar']['marquee_2ndline']="2nd line below date"; + $plugin_tx['calendar']['marquee_age']="Age is displayed in"; + $plugin_tx['calendar']['marquee_contents']="Contents of the marquee"; + $plugin_tx['calendar']['marquee_dateline']="Dateline"; + $plugin_tx['calendar']['marquee_dateline_height']="marquee dateline height (number)"; + $plugin_tx['calendar']['marquee_emptyline']="Nothing"; + $plugin_tx['calendar']['marquee_height']="marquee height (just a number)"; + $plugin_tx['calendar']['marquee_height_unit']="unit for marquee heights"; + $plugin_tx['calendar']['marquee_not_in_marquee']="Not displayed"; + $plugin_tx['calendar']['marquee_number_of_events_shown']="number of events shown in marquee"; + $plugin_tx['calendar']['marquee_speed']="speed of marquee (px per 0.01 sec)"; + $plugin_tx['calendar']['marquee_use_jquery']="use jQuery to run marquee"; + + $plugin_tx['calendar']['help_config_jquery_marquee']="The Effect of changing the jQuery setting shows only after clicking \"apply settings\" and reselecting \"Marquee\" in the plugin's menu. (The complete plug-in has to be reloaded.)

    Without jQuery the standard Microsoft Marquee funktion is used.
    If you don't use marquee, you may want to deselect \"jQuery\" to avoid loading unnecessary jQuery Calendar Marquee files."; + $plugin_tx['calendar']['help_config_roundcorners']="Enter 4 values of corner radius in px: left-top-corner   right-top right-buttom left-buttom"; + $plugin_tx['calendar']['help_config_shadow']="Enter 3 values in px + 1 color-code: right-displacement bottom-displacement diffusion color"; + $plugin_tx['calendar']['help_config_presets']="Presets contain some values for event list or for calendar (month view). You can save your own settings as presets. Preset-files can be edited in menu «Backup etc.»"; + $plugin_tx['calendar']['help_config_topmargin']="Enter number + unit of measurement, e.g. 50px or 10em, to get more space above the headline for the background image."; + $plugin_tx['calendar']['help_config_padweekdaynames']="Enter number + unit of measurement, for padding space above and below the row of weekday names."; + $plugin_tx['calendar']['help_holiday_date_calculation']="
      +
    • Fixed holidays => day.month (Instead of dot use hyphen or slash if your date delimiter is set to this.)
    • +
    • Movable holidays depending on the Easter date => easter + x day or - x day e.g. Good Friday: easter - 2 day
    • +
    • Movable holidays on a fixed weekday: +
        +
      • First Monday in May: monday 1.5
      • +
      • Last Monday in May (= Monday before 1st of June): -1 monday 1.6
      • +
      • 11 days before the 1st sunday after 26.11: -11 days 1 sunday 26.11
      • +
      • 4th sunday after 26.11: 4 sunday 26.11
      • +
      +
    • +
    " +?> diff --git a/licence.txt b/licence.txt new file mode 100644 index 0000000..9233ad2 --- /dev/null +++ b/licence.txt @@ -0,0 +1,20 @@ +Licence for Calendar_XH for CMSimple_XH + +No licence conditions were found from the programmers of the old Calendar for CMSimple plugin, which inspired this work. +The code has been completely rewritten by svasti (Frank Ziesing) and Holger (Holger Irmler). +Although the original idea is still followed and the old function calls and content files still work, no code lines from the old plugin remain. + +In line with the work of the former authors the present code is released under a creative commons Attribution-Share Alike 3.0 Unported license (http://creativecommons.org/licenses/by-sa/3.0/) + +You must credit Calendar_XH in any derivative work. You are not allowed to delete or ommit the changelog file nor this licence file. You may however state your own contribution in these files. + +You are free: + +* to Share — to copy, distribute and transmit the work +* to Remix — to adapt the work + +Under the following conditions: + +* Attribution — You must attribute the work in the manner specified by the authors (but not in any way that suggests that they endorse you or your use of the work). +* Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible licence. + diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..0168925 --- /dev/null +++ b/readme.txt @@ -0,0 +1,92 @@ +Instructions: help/help_en.htm + + +Updating +=============== +1.4.4 –> 1.4.5 +Exchange: + + admin.php + includes/... + + version.nfo + changelog.txt + help/... + readme.txt + + +1.4.0 –> 1.4.5 +Exchange: + + admin.php + index.php + includes/... + editorconfigs/... + languages/... + + version.nfo + readme.txt + changelog.txt + help/... + + +1.4 beta –> 1.4.5 +- Save old settings through Presets>backup for Event-list config and also Calendar config. +- Keep your calendar/content folder, the calendar/templates/ folder + and your config file (calendar/config/config.php) in case you have changed some config settings. +- Replace the remaining files. +- Activate your old presets by choosing Presets>backupname for the event-list and the calendar. +- If you have kept your old config file, you need to add the line: + $plugin_cf['calendar']['eventlist_start_moves_with_clicked_event']="1"; + +1.3.9 –> 1.4.5 +- Re-use old content files +- Old function calls should still work. +- Link-entry of internal pages has changed: enter the page name and nothing else. +- Birthday-entry has changed: check the "yearly" check box. + +================= + + +v 1.4 (2012) by svasti +v 1.3 (05-11/2011) by svasti +v 1.2 (04/2011) by Holger +v 1.1 (03/2011) by svasti +v 0.6-1.0 by Tory +unnamed by Bob +v 0.1-0.5 by Michael Svarrer + +================= + +Depending on server configuration you may have +to give writing permissions (chmod 646) + +CMSimple root ++ cmsimple ++ content ++ downloads ++ images ++ plugins + + pluginloader + + calendar + + backgroundimages + + config + - config.php (chmod 646) + - config2.php (chmod 646) + + content (chmod 646) + - *.* (chmod 646) + + css + - stylesheet.css (chmod 646) + + dp + * fckeditor + + help + + images + + includes + + jscolor + + languages + - *.php (chmod 646) + - admin.php + - index.php + + templates (chmod 646) + ++ templates diff --git a/templates/blue_nebula.calendar.php b/templates/blue_nebula.calendar.php new file mode 100644 index 0000000..35637f1 --- /dev/null +++ b/templates/blue_nebula.calendar.php @@ -0,0 +1,79 @@ + diff --git a/templates/boxes.tpl b/templates/boxes.tpl new file mode 100644 index 0000000..b23d3ba --- /dev/null +++ b/templates/boxes.tpl @@ -0,0 +1,93 @@ +CMSimple Calendar 1.4 Event-List Template + +=== + +

    %period% %start% %till% %end%

    + +=== + +

    %weekly%

    + +=== + +

    %longweekday%

    + +=== + +
    +
    %bookedout%
    +

    %mainfield%

    +

    %field3%

    +

    %shortweekday% %time%
    %date% %field1% %infolink%

    +
    %description%
    +
    +
    + +=== + +
    +

    %ended%

    +

    %mainfield%

    +

    %field3%

    +

    %shortweekday% %time% %date% %field1% %infolink%

    +
    + +=== + +

    %single%

    + +=== + +



    %month% %year%

    + +=== + +
    +
    %bookedout%
    +

    %mainfield%

    +
    %age%
    +

    %field3%

    +

    %date%
    %time% %field1% %infolink%

    +
    %description%
    +
    +
    + +=== + +
    +
    %bookedout%
    +

    %mainfield%

    +

    %field3%

    +

    %date%
    %time% %field1% %infolink%

    +
    %description%
    +
    +
    + +=== + +
    +

    %ended%

    +

    %mainfield%

    +

    %field3% %age%

    +

    %date% %time% %field1% %infolink%

    +
    + +=== + +
    +
    %bookedout%
    +

    %mainfield%

    +

    %field3%

    +

    %date%
    %time% %field1% %infolink%

    +
    %description%
    +
    +
    + +=== + +
    +

    %ended%

    +

    %mainfield%

    +

    %field3%

    +

    %date% %time% %field1% %infolink%

    +
    diff --git a/templates/brown_nebula.calendar.php b/templates/brown_nebula.calendar.php new file mode 100644 index 0000000..b38e824 --- /dev/null +++ b/templates/brown_nebula.calendar.php @@ -0,0 +1,79 @@ + diff --git a/templates/clean.calendar.php b/templates/clean.calendar.php new file mode 100644 index 0000000..b9ee8ca --- /dev/null +++ b/templates/clean.calendar.php @@ -0,0 +1,66 @@ + diff --git a/templates/colorful.eventlist.php b/templates/colorful.eventlist.php new file mode 100644 index 0000000..b8d3fb7 --- /dev/null +++ b/templates/colorful.eventlist.php @@ -0,0 +1,43 @@ + diff --git a/templates/flower.calendar.php b/templates/flower.calendar.php new file mode 100644 index 0000000..4fc4e1e --- /dev/null +++ b/templates/flower.calendar.php @@ -0,0 +1,83 @@ + details'; + +?> diff --git a/templates/green.eventlist.php b/templates/green.eventlist.php new file mode 100644 index 0000000..48d2fb9 --- /dev/null +++ b/templates/green.eventlist.php @@ -0,0 +1,42 @@ + diff --git a/templates/minimum.eventlist.php b/templates/minimum.eventlist.php new file mode 100644 index 0000000..6e36e9d --- /dev/null +++ b/templates/minimum.eventlist.php @@ -0,0 +1,46 @@ + diff --git a/templates/oldnema.tpl b/templates/oldnema.tpl new file mode 100644 index 0000000..08823fe --- /dev/null +++ b/templates/oldnema.tpl @@ -0,0 +1,89 @@ +CMSimple Calendar 1.4 Event-List Template +=== +

    %start%  %till%  %end%

    +=== +
    %weekly%
    +=== +

    %longweekday%

    +=== +
    +

    %infolink% %field1%

    +

    %shortweekday% %time%     %date%

    +

    %mainfield%

    +
    %bookedout%
    +

    %field3%

    +
    %description%
    +
    +
    +=== +
    +

    %ended%

    +

    %mainfield%

    +

    %field3%

    +

    %shortweekday% %time% %date% %field1% %infolink%

    +
    +=== +
    %single%
    +=== +

    %month% %year%

    +=== +
    +

    %age%

    +

    %infolink% %field1%

    +

    %date%   %time%

    +

    %mainfield%

    +
    %bookedout%
    +

    %field3%

    +
    %description%
    +
    +
    +=== +
    +

    %infolink% %field1%

    +

    %date%   %time%

    +

    %mainfield%

    +
    %bookedout%
    +

    %field3%

    +
    %description%
    +
    +
    +=== +

    %ended%: %date%, %time%, %mainfield% %field3% %field1% %infolink%

    +

    ––––––––––––––––––

    +=== +
    +

    %infolink% %field1%

    +

    %date%   %time%

    +

    %mainfield%

    +
    %bookedout%
    +

    %field3%

    +
    %description%
    +
    +
    +=== +

    %ended%: %date%, %time%, %mainfield% %field3% %field1% %infolink%

    +

    ––––––––––––––––––

    diff --git a/templates/oldstylecolors.eventlist.php b/templates/oldstylecolors.eventlist.php new file mode 100644 index 0000000..31b9b14 --- /dev/null +++ b/templates/oldstylecolors.eventlist.php @@ -0,0 +1,42 @@ + diff --git a/templates/simple.tpl b/templates/simple.tpl new file mode 100644 index 0000000..cd4967d --- /dev/null +++ b/templates/simple.tpl @@ -0,0 +1,47 @@ +CMSimple Calendar 1.4 Event-List Template +=== +

    %start%  %till%  %end%

    +=== +
    %weekly%
    +=== +

    %longweekday%

    +=== +
    %mainfield% %field3% +%bookedout%
    +

    %longweekday% %time% %infolink%
    %date% %field1%

    +
    %description%
    +

    ––––––––––––––––––

    +=== +

    %ended%: %shortweekday% %time%, %date% %mainfield% %field3% %field1% %infolink%

    +

    ––––––––––––––––––

    +=== +
    %single%
    +=== +

    %month% %year%

    +=== +
    %mainfield% %field3% %age% +%bookedout%
    +

    %date% %time% %infolink% %field1%

    +
    %description%
    +
    +

    ––––––––––––––––––

    +=== +
    %mainfield% %field3% +%bookedout%
    +

    %date% %time% %infolink% %field1%

    +
    %description%
    +
    +

    ––––––––––––––––––

    +=== +

    %ended%: %date%, %time%, %mainfield% %field3% %field1% %infolink%

    +

    ––––––––––––––––––

    +=== +
    %mainfield% %field3% +%bookedout%
    +

    %date% %time% %infolink% %field1%

    +
    %description%
    +
    +

    ––––––––––––––––––

    +=== +

    %ended%: %date%, %time%, %mainfield% %field3% %field1% %infolink%

    +

    ––––––––––––––––––

    diff --git a/version.nfo b/version.nfo new file mode 100644 index 0000000..3c1bf88 --- /dev/null +++ b/version.nfo @@ -0,0 +1 @@ +Calendar,1.4.6,1.4.6,,,http://frankziesing.de/cmsimple/?Start:Calendar,http://frankziesing.de/cmsimple/downloads/versioninfo/calendar_version.nfo