OSDN Git Service

original file
authorshizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Mon, 2 Oct 2006 05:37:20 +0000 (05:37 +0000)
committershizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Mon, 2 Oct 2006 05:37:20 +0000 (05:37 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@394 1ca29b6e-896d-4ea0-84a5-967f57386b96

799 files changed:
trunk/NP_Blogpeople/NP_Blogpeople.php [new file with mode: 0644]
trunk/NP_Board/NP_Board.php [new file with mode: 0644]
trunk/NP_Board/fancytext/bbs_css.template [new file with mode: 0644]
trunk/NP_Board/fancytext/bbs_delete.template [new file with mode: 0644]
trunk/NP_Board/fancytext/bbs_search.template [new file with mode: 0644]
trunk/NP_Board/fancytext/bbsform.template [new file with mode: 0644]
trunk/NP_Board/fancytext/bbslog.template [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_arrow.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_biggrin.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_confused.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_cool.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_cry.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_eek.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_evil.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_exclaim.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_frown.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_idea.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_lol.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_mad.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_mrgreen.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_neutral.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_question.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_razz.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_redface.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_rolleyes.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_sad.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_smile.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_surprised.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_twisted.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles/icon_wink.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/biglaugh.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/eek.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/frown.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/redface.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/rolleyes.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/smile.gif [new file with mode: 0644]
trunk/NP_Board/fancytext/smiles21/wink.gif [new file with mode: 0644]
trunk/NP_ChoppedDisc/NP_ChoppedDisc.php [new file with mode: 0644]
trunk/NP_CommentEdit/NP_CommentEdit.php [new file with mode: 0644]
trunk/NP_DateLink/NP_DateLink.php [new file with mode: 0644]
trunk/NP_Douga/NP_Douga.php [new file with mode: 0644]
trunk/NP_Dtree/NP_Dtree.php [new file with mode: 0644]
trunk/NP_Dtree/dtree/dtree.php [new file with mode: 0644]
trunk/NP_Dtree/dtree/dtreedata.php [new file with mode: 0644]
trunk/NP_Dtree/dtree/dtreedata.php.org [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/base.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/cd.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/empty.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/folder.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/folderopen.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/globe.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/imgfolder.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/join.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/joinbottom.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/line.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/minus.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/minusbottom.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/musicfolder.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/nolines_minus.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/nolines_plus.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/page.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/plus.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/plusbottom.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/question.gif [new file with mode: 0644]
trunk/NP_Dtree/dtree/img/trash.gif [new file with mode: 0644]
trunk/NP_ExtractImage/NP_ExtractImage.php [new file with mode: 0644]
trunk/NP_FootNote/NP_FootNote.php [new file with mode: 0644]
trunk/NP_GoogleHistory/NP_GoogleHistory.php [new file with mode: 0644]
trunk/NP_GoogleHistory/googlehistory/dummy.txt [new file with mode: 0644]
trunk/NP_GoogleRank/NP_GoogleRank.php [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/0.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/1.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/10.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/2.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/3.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/4.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/5.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/6.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/7.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/8.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/9.gif [new file with mode: 0644]
trunk/NP_GoogleRank/googlerank/imgs/n.gif [new file with mode: 0644]
trunk/NP_HighlightSource/NP_HighlightSource.php [new file with mode: 0644]
trunk/NP_ImageCalendar/NP_ImageCalendar.php [new file with mode: 0644]
trunk/NP_Milionic/NP_Milionic.php [new file with mode: 0644]
trunk/NP_Milionic/milionic/1st_readme.txt [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/arrow.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/bcode_vert_grey.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/bcode_vert_red.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/black_9x7right.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/grey-bar-select.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/grey-bar.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/grey_13x13_tb.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/grey_9x7right.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/white_13x13_tb.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/icons/white_arrow.gif [new file with mode: 0644]
trunk/NP_Milionic/milionic/index.html [new file with mode: 0644]
trunk/NP_OtherblogEX/NP_OtherblogEX.php [new file with mode: 0644]
trunk/NP_Pholiot/NP_Pholiot052/NP_Pholiot.php [new file with mode: 0644]
trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.js [new file with mode: 0644]
trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.swf [new file with mode: 0644]
trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.xml [new file with mode: 0644]
trunk/NP_RecentItems/NP_RecentItems.php [new file with mode: 0644]
trunk/NP_SkinSwitcher/NP_SkinSwitcher.php [new file with mode: 0644]
trunk/NP_SkinSwitcher/skinswitcher/index.php [new file with mode: 0644]
trunk/NP_SkinSwitcher/skinswitcher/language/english.php [new file with mode: 0644]
trunk/NP_SkinSwitcher/skinswitcher/language/japanese-euc.php [new file with mode: 0644]
trunk/NP_SkinSwitcher/skinswitcher/language/japanese-utf8.php [new file with mode: 0644]
trunk/NP_SkinSwitcher/skinswitcher/plus.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/NP_TinyMCE2j.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/blank.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ar.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ca.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/cs.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/cy.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/da.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/de.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/el.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/es.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/fa.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/fi.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/fr.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/fr_ca.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/he.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/hu.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/is.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/it.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ja.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ja_euc.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ja_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ko.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/nb.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/nl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/nn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/pl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/pt.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/pt_br.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ru.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ru_KOI8-R.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/ru_UTF-8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/sk.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/sv.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/th.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/zh_cn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/zh_tw.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/langs/zh_tw_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/license.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/editor_plugin.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/editor_plugin_src.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/emotions.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/emotions.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cool.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cry.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-embarassed.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-foot-in-mouth.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-frown.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-innocent.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-kiss.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-laughing.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-money-mouth.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-sealed.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-smile.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-surprised.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-tongue-out.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-undecided.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-wink.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-yell.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/jscripts/functions.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/config.inc.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/selectableelements.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/selectabletablerows.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/sortabletable.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/files.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/functions.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/binary_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/def_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/doc_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/folder_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gif_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gz_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/html_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/image_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/jpg_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/mov_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/no_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/pdf_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/png_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/ppt_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/rar_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/script_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/sound_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/txt_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/xls_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/zip_small.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/blank.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_Corner.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_create.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_delete.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_move.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_open.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_rename.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_up.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/downsimple.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/unlocked.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/upsimple.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/insert_file.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/dialog.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/functions.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/popup.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/selectableelements.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/selectabletablerows.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/sortabletable.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-de.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-en.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-nl.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/move.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/editor_plugin.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/images/filemanager.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/config/config.inc.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/config/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/css/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/css/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/changelog.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/license.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/editor_plugin.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/editor_plugin.js2 [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/ibrowser.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/ibrowser.php2 [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar_gs.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/defaultIcon.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/favicon.ico [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ib.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ibrowser.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/index.html [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/paypal.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/spacer.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/textflow.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/thbCrop.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg_off.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/da.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/de.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/en.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/es.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/fr.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/ja_euc.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/ja_utf8.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/lang.class.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/nl.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/index.html [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/loadmsg.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/cache/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/cache/source/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.cacheconvert2.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo1.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo2.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.object.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.random.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.showpic.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/readme.demos.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.changelog.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.faq.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.license.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/fonts/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.config.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.config.php.default [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.bmp.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.class.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.filters.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.functions.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.gif.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.unsharp.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/popup.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/random.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/rdirs.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/resizeDialog.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/rfiles.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/symbols.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/validateForm.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/temp/index.php [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/blank.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/css/blank.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/css/pasteword.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/editor_plugin.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pastetext.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pasteword.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/selectall.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/jscripts/pastetext.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/jscripts/pasteword.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/cs.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/cy.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/da.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/de.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/es.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fi.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fr.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fr_ca.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/he.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/hu.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/is.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ja_euc.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ja_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nb.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/pl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/pt_br.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru_KOI8-R.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru_UTF-8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/sk.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/sv.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_cn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_tw.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_tw_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/pastetext.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/pasteword.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/editor_plugin.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/editor_plugin_src.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/replace.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/search.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/jscripts/replace.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/jscripts/search.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/cs.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/cy.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/da.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/de.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/es.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fa.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fi.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fr.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fr_ca.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/he.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/hu.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/is.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ja_euc.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ja_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nb.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/pl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/pt_br.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru_KOI8-R.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru_UTF-8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/sk.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/sv.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_cn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_tw.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_tw_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/replace.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/search.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/cell.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/cell.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/row.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/table.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/editor_plugin.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/buttons.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_cell_props.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_col.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_row.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_after.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_before.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_after.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_before.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_merge_cells.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_row_props.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_split_cells.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/cell.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/merge_cells.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/row.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/table.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/es.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja_euc.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/merge_cells.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/row.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/plugins/table/table.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/anchor.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/charmap.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/color_picker.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_content.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_popup.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_ui.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_image_window.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_link_window.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_table_window.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/create_accessible_content.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/create_accessible_content.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_col.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_row.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_after.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_before.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_after.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_before.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/html_source_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_specchar_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_specchar_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/html_source_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_specchar_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_image_window.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_link_window.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_table_window.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/about.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/common_buttons.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_image_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_link_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_table_window.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/index.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_anchor_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_image_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_link_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_table_button.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/style.css [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/editor_template.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/editor_template_src.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/image.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor_symbol.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/backcolor.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_de_se.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_es.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_fr.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_ru.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_tw.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/browse.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bullist.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/buttons.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cancel_button_bg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/charmap.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cleanup.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/close.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/code.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/color.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/copy.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/custom_1.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cut.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/forecolor.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/help.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/hr.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/image.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/indent.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/insert_button_bg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_de_se.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_es.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_ru.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_tw.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifycenter.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyfull.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyleft.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyright.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/link.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/newdocument.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/numlist.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/opacity.png [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/outdent.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/paste.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/redo.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/removeformat.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/spacer.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/statusbar_resize.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/strikethrough.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sub.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sup.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_col.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_row.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_after.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_before.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_after.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_before.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_es.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_fr.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_ru.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_tw.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/undo.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/unlink.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/visualaid.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_bg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_end.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_bg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_end.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tabs_bg.gif [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/about.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/anchor.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/charmap.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/color_picker.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/image.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/link.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/source_editor.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ar.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ca.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/cs.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/cy.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/da.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/de.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/el.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/en.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/es.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fa.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fi.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fr.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fr_ca.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/he.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/hu.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/is.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/it.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja_euc.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ko.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nb.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pl.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pt.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pt_br.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/readme.txt [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru_KOI8-R.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru_UTF-8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/sk.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/sv.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/tw.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_cn.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_tw.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_tw_utf8.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/link.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/source_editor.htm [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/tiny_mce.js [new file with mode: 0644]
trunk/NP_TinyMCE2j/tinymce2j/tiny_mce_popup.js [new file with mode: 0644]
trunk/NP_ToolbarButtons/NP_ToolbarButtons.php [new file with mode: 0644]
trunk/NP_TreeMenu/NP_TreeMenu.php [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/demoFramelessNodes.js [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/ftiens4.js [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/Thumbs.db [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/diffDoc.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/diffFolder.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2blank.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2doc.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2folderclosed.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2folderopen.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2lastnode.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2link.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2mlastnode.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2mnode.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2node.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2plastnode.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2pnode.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/icons/ftv2vertline.gif [new file with mode: 0644]
trunk/NP_TreeMenu/treemenu/ua.js [new file with mode: 0644]
trunk/NP_TrimImage/NP_TrimImage.php [new file with mode: 0644]
trunk/NP_UpdateTime/NP_UpdateTime.php [new file with mode: 0644]
trunk/NP_Wikistyle/NP_Wikistyle.php [new file with mode: 0644]
trunk/NP_Wtable/NP_Wtable.php [new file with mode: 0644]

diff --git a/trunk/NP_Blogpeople/NP_Blogpeople.php b/trunk/NP_Blogpeople/NP_Blogpeople.php
new file mode 100644 (file)
index 0000000..9363f7b
--- /dev/null
@@ -0,0 +1,178 @@
+<?
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+class NP_Blogpeople extends NucleusPlugin {
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+       function getName()      {return 'Blogpeople feed'; }
+       function getAuthor()  {return 'nakahara21'; }
+       function getURL()        {return 'http://xx.nakahara21.net/'; }
+       function getVersion() {return '0.3'; }
+       function getDescription() {
+               return 'Call this to import a Blogpeople feed. Currently all feeds work with the same defaults.';
+       }
+
+       function install() {
+       }
+
+       function doSkinVar($skintype, $feedURL = '') {
+               global $manager, $blog, $CONF; 
+       global $i, $tname, $bplink, $data;
+
+               if ($blog) { 
+                       $b =& $blog; 
+               } else { 
+                       $b =& $manager->getBlog($CONF['DefaultBlog']); 
+               } 
+
+
+
+       $result = @file($feedURL);
+       
+       if($result){
+       $i = 0;
+       foreach($result as $key => $value){
+               $result[$key] = mb_convert_encoding($value, _CHARSET, "auto");
+       }
+       $data = join( "", $result );
+//     echo $data;
+
+    $parser = xml_parser_create();
+       xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
+    xml_set_element_handler($parser, "startElement", "endElement");
+    xml_set_character_data_handler($parser, "characterData");
+
+    if(!xml_parse($parser, $data)){
+        die(sprintf("XML error %d %d",
+        xml_get_current_line_number($parser),
+        xml_get_current_column_number($parser)));
+    }
+    }
+
+       xml_parser_free($parser);
+
+
+//     print_r($bplink);
+
+//==(ɽ¼¨Éôʬ ¥µ¥ó¥×¥ëA)=======================
+/*
+       echo '<ul class="nobullets">'."\n";
+       foreach($bplink as $out){
+                       $update = '';
+               if($out['description']){        //¹¹¿·Æü»þ¤¬¤¢¤ë¾ì¹ç
+
+//                     ¢­¡Ö2003-11-18 15:40¡×¤Î¤è¤¦¤Ëñ½ãɽ¼¨
+                       $update = date ("Y-m-d H:i", $out['description']);
+
+               }
+
+               echo '<li><a href="'.$out['link'].'" target="_blank">'.$out['title'].'</a> '.$update;
+               echo '</li>'."\n";
+       }
+       echo '<li><a href="http://www.blogpeople.net/" target="_blank"><img src="http://www.blogpeople.net/powered-by.gif" border="0" alt="Powered By BlogPeople"></a></li>';
+       echo '</ul>'."\n";
+
+*/
+//==(ɽ¼¨Éôʬ ¥µ¥ó¥×¥ëB)=======================
+/*
+       echo '<ul class="nobullets">'."\n";
+       foreach($bplink as $out){
+                       $update = '';
+               if($out['description']){        //¹¹¿·Æü»þ¤¬¤¢¤ë¾ì¹ç
+//                     ¹¹¿·¤«¤é¤Î·Ð²á»þ´Ö(ñ°Ì¤Ï»þ´Ö)
+                       $difhours = round(($b->getCorrectTime() - $out['description'])/60/60);
+                       if($difhours < 24){     //24»þ´Ö°ÊÆâ¤Îɽ¼¨
+                               $update = 'Hot!';
+                       }elseif($difhours < 48){        //48»þ´Ö°ÊÆâ¤Îɽ¼¨
+                               $update = $difhours . 'h';
+                       }else{                          //48»þ´Ö°Ê¾å·Ð²á¤·¤¿¾ì¹ç¤ÏÆü¿ôɽ¼¨
+                               $update = round($difhours/24).'d';
+                       }
+               }
+
+               echo '<li><a href="'.$out['link'].'" target="_blank">'.$out['title'].'</a> '.$update;
+               echo '</li>'."\n";
+       }
+       echo '<li><a href="http://www.blogpeople.net/" target="_blank"><img src="http://www.blogpeople.net/powered-by.gif" border="0" alt="Powered By BlogPeople"></a></li>';
+       echo '</ul>'."\n";
+
+*/
+//==(ɽ¼¨Éôʬ ¥µ¥ó¥×¥ëC)=======================
+       echo '<ul class="nobullets">'."\n";
+       foreach($bplink as $out){
+                       $update = '';
+               if($out['description']){        //¹¹¿·Æü»þ¤¬¤¢¤ë¾ì¹ç
+//                     ¹¹¿·¤«¤é¤Î·Ð²á»þ´Ö(ñ°Ì¤Ï»þ´Ö)
+                       $difhours = round(($b->getCorrectTime() - $out['description'])/60/60);
+                       if($difhours < 24){     //24»þ´Ö°ÊÆâ¤Îɽ¼¨
+                               $update = ' style="border-bottom:3px solid red"';
+                       }elseif($difhours < 48){        //48»þ´Ö°ÊÆâ¤Îɽ¼¨
+                               $update = ' style="border-bottom:3px solid orange"';
+                       }else{                          //48»þ´Ö°Ê¾å·Ð²á¤·¤¿¾ì¹ç¤ÏÆü¿ôɽ¼¨
+                               $update = ' style="border-bottom:3px solid silver"';
+                       }
+
+               }
+
+               echo '<li><a href="'.$out['link'].'" target="_blank"'.$update.'>'.$out['title'].'</a> ';
+               echo '</li>'."\n";
+       }
+       echo '<li><a href="http://www.blogpeople.net/" target="_blank"><img src="http://www.blogpeople.net/powered-by.gif" border="0" alt="Powered By BlogPeople"></a></li>';
+       echo '</ul>'."\n";
+//===================================
+
+       echo "<hr />";
+       }
+       }
+
+function startElement($parser, $name, $attrs){
+       global $i, $tname;
+       if($name == 'item'){$i ++;}
+       $tname = $name;
+}
+
+ function endElement($parser, $name){
+}
+
+function characterData($parser, $data){
+       global $i, $tname, $bplink;
+       $data = trim($data);
+       if($data){
+               switch($tname){
+                       case 'title': 
+                               $bplink[$i][title] = $data;
+                               break;
+                       case 'link': 
+                               $bplink[$i][link] = $data;
+                               break;
+                       case 'description': 
+                               $data = explode(" ",$data);
+                               sscanf($data[0],'¹¹¿·Æü:%2cǯ%2c·î%2cÆü',$py,$pm,$pd);
+                               sscanf($data[1],'%2c»þ%2cʬ',$ph,$pi);
+                               $bplink[$i][description] =  mktime ($ph,$pi,0,$pm,$pd,$py);
+                               break;
+                       default: 
+                               break;
+               
+               
+               }
+
+
+       }
+}
+
+
+}
+?>
diff --git a/trunk/NP_Board/NP_Board.php b/trunk/NP_Board/NP_Board.php
new file mode 100644 (file)
index 0000000..f04e949
--- /dev/null
@@ -0,0 +1,818 @@
+<?
+if (!function_exists('sql_table'))
+{
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+class NP_Board extends NucleusPlugin {
+
+       function getName() {return 'Board'; }
+       function getAuthor()  { return 'nakahara21'; }
+       function getURL() { return 'http://xx.nakahara21.net/'; }
+       function getVersion() { return '0.31'; }
+       function getDescription() { 
+               return 'BBS!';
+       }
+       function getTableList() { return array( sql_table('plugin_bbs') ); }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+function install() {
+       $this->createOption("bbstitle", "Title of BBS", "text", "²¿¤Ç¤âBBS");
+       $this->createOption("bbsdesc", "ÀâÌÀʸ", "text", "²¿¤Ç¤â¤´¼«Í³¤Ë<br />¤ª½ñ¤­²¼¤µ¤¤¤Í¡ª");
+       $this->createOption("bbsamount", "1¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ëµ­»ö¿ô", "text", "15");
+//     $this->createOption("name2", "desc2", "yesno", "yes");
+       $this->createOption("smily", "Convert smilies?", "yesno", "no");
+       $this->createOption("adminpass", "BBS admin password", "password", "password");
+//     $this->createOption("name4", "desc4", "textarea", "");
+//     $this->createOption("name5", "desc5", "select", "val1", "Opt1|val1|Opt2|val2|Opt3|val3");
+       $this->createOption("del_uninstall", "Delete tables on uninstall?", "yesno", "no");
+
+       $query = "CREATE TABLE IF NOT EXISTS ".sql_table('plugin_bbs');
+       $query .= "( bbsid int(11) NOT NULL auto_increment,";
+       $query .= " bbs_number int(11) NOT NULL default '0',";
+       $query .= " bbs_baseid VARCHAR(11) NOT NULL default 'B',";
+       $query .= " bbs_name varchar(50) default NULL,";
+       $query .= " bbs_userinfo varchar(100) default NULL,";
+       $query .= " bbs_pass varchar(50) NOT NULL default '',";
+       $query .= " bbs_mes text default NULL,";
+       $query .= " bbs_host varchar(60) default NULL,";
+       $query .= " bbs_ip varchar(15) NOT NULL default '',";
+       $query .= " bbs_date datetime NOT NULL default '0000-00-00 00:00:00',";
+       $query .= " PRIMARY KEY (bbsid))";
+       mysql_query($query);    
+       }
+
+function uninstall() {
+       if ($this->getOption('del_uninstall') == "yes") {
+               mysql_query ("DROP table ".sql_table('plugin_bbs'));
+       }
+}
+
+       function init() {
+               $this->pageamount = $this->getOption('bbsamount');
+               $this->startpos = 0;
+
+               //¶Ø»ßname
+               //ºï½ü¤µ¤ì¤¿¥í¥°¤ËŬÍѤ¹¤ëname¤È¤Ê¤ë
+               $this->deny_name = "-";
+
+               $smileys0 = array(
+                       ':mrgreen:' => 'smiles/icon_mrgreen.gif',                       
+                       ':wink:' => 'smiles/icon_wink.gif',                     
+                       ':lol:' => 'smiles/icon_lol.gif',                       
+                       ':oops:' => 'smiles/icon_redface.gif',                  
+                       ':cry:' => 'smiles/icon_cry.gif',                       
+                       ':roll:' => 'smiles/icon_rolleyes.gif',                 
+                       '8)' => 'smiles/icon_cool.gif',                 
+                       ':?:' => 'smiles/icon_question.gif',                    
+               );
+               $smileys = array(
+                       ':-D' => 'smiles/icon_biggrin.gif',                                             
+                       ':P' => 'smiles/icon_razz.gif',                 
+                       ':-)' => 'smiles/icon_smile.gif',
+                       ':o' => 'smiles/icon_surprised.gif',                                            
+                       ';-)' => 'smiles/icon_wink.gif',                        
+                       ':|' => 'smiles/icon_neutral.gif',                                              
+                       ':?' => 'smiles/icon_confused.gif',                     
+                       ':-(' => 'smiles/icon_sad.gif',
+                       '8O' => 'smiles/icon_eek.gif',                  
+                       ':idea:' => 'smiles/icon_idea.gif',                     
+                       ':arrow:' => 'smiles/icon_arrow.gif',                   
+                       ':!:' => 'smiles/icon_exclaim.gif',                     
+                       ':x' => 'smiles/icon_mad.gif',                  
+               );
+               $smileys21 = array(
+                       ':D' => 'smiles21/biglaugh.gif',
+                       ':r' => 'smiles21/rolleyes.gif',
+                       ':)' => 'smiles21/smile.gif',
+                       ';)' => 'smiles21/wink.gif',                    
+                       ':(' => 'smiles21/frown.gif',
+                       ':n' => 'smiles21/eek.gif',                     
+                       ':O' => 'smiles21/redface.gif',                 
+               );
+
+               $this->smiley = array_merge($smileys, $smileys21);
+       }
+
+       function doSkinVar($skinType, $bbs_number = '0', $show = '') {
+               global $CONF, $manager, $member;
+
+               $temp_params[1] = $bbs_number;
+               $temp_params[2] = $show;
+               if(!is_numeric($temp_params[1])){       $show = $temp_params[1];        }
+               if( is_numeric($temp_params[2])){       $bbs_number = intval($temp_params[2]);  }
+               if(!is_numeric($bbs_number) || (!$temp_params[1] && !$temp_params[1]) ){ $bbs_number = '0';}
+               $data['bbs_number'] = $bbs_number;
+               $data['actionurl'] = $CONF['ActionURL'];
+
+               if($show == 'last'){
+                       $sql = "SELECT * FROM ".sql_table('plugin_bbs');
+                       $sql .= " WHERE bbs_number=".$bbs_number;
+                       $sql .= ' ORDER BY bbsid DESC';
+                       $sql .= ' LIMIT 1';
+                       $res = mysql_query($sql);
+                       while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
+                               echo $row["bbs_name"].'<br />';
+                               echo " (".date("Y-m-d H:i", strtotime($row["bbs_date"])).")<br />";
+//                             echo shorten(strip_tags($row["bbs_mes"]),40,'...');
+                               echo $this->bbsBody(shorten(strip_tags($row["bbs_mes"]),40,'...'));
+                       }
+                       return;
+               }
+
+//======================================
+//uriʬ²ò
+//======================================
+               $uri = sprintf("%s%s%s","http://",$_SERVER["HTTP_HOST"],$_SERVER["REQUEST_URI"]);
+       
+               $bbs_uri = $uri;
+               $bbs_uri = parse_url($bbs_uri);
+               parse_str($bbs_uri['query'],$bbs_uri_query);
+
+               $this->currentpage = $bbs_uri_query['bbsp'];
+               if(intval($this->currentpage)>0){
+                       $this->startpos = (intval($this->currentpage)-1) * $this->pageamount;
+               }else{
+                       $this->currentpage = 1;
+               }
+
+               $bbs_uri['query'] = '';
+               foreach($bbs_uri_query as $q_key => $q_value){
+                       if(!ereg('mode|bbsid|bbsp|bbsq', $q_key)){
+                               $bbs_uri['query'][] = $q_key.'='.$q_value;
+                       }
+               }
+
+
+
+               $bbs_uri['query'] = @join("&",$bbs_uri['query']);
+               if($bbs_uri['query']){
+                       $bbs_uri = 'http://' . $bbs_uri['host'].$bbs_uri['path'].'?'.$bbs_uri['query'];
+                       $this->pagelink = $bbs_uri.'&';
+               }else{
+                       $bbs_uri = 'http://' . $bbs_uri['host'].$bbs_uri['path'];
+                       $this->pagelink = $bbs_uri.'?';
+               }
+       
+
+//======================================
+//¥Ç¡¼¥¿½é´ü²½
+//======================================
+               $data['redirectTo'] = $bbs_uri;
+               $data['pagelink'] = $this->pagelink;;
+               $data['bbs_mes'] = '';
+               $data['type'] = 'add_mess';
+               $data['extrainput'] = '';
+               $data['submit'] = 'Á÷¿®';
+               if ($this->getOption('smily') == "yes") {
+                       $data['smilies'] = $this->insertSmilies();
+               }else{
+                       $data['smilies'] = '';
+               }
+
+//======================================
+//¥¯¥Ã¥­¡¼ÆɤߤȤê (¥Ç¡¼¥¿¤ò¥»¥Ã¥È)
+//======================================
+               if($member->isLoggedIn()){
+                       $data['bbs_name'] = $member->getDisplayName();
+                       $data['bbs_userinfo'] = $member->geturl();
+               }else{
+                       if(cookieVar('comment_user')){
+                               $data['bbs_name'] = htmlspecialchars(cookieVar('comment_user'));
+                       }else{
+                               $data['bbs_name'] = '';
+                       }
+                       if(cookieVar('comment_userid')){
+                               $data['bbs_userinfo'] = htmlspecialchars(cookieVar('comment_userid'));
+                       }else{
+                               $data['bbs_userinfo'] = '';
+                       }
+               }
+               if(cookieVar('bbs_pass')){
+                       $data['bbs_pass'] = htmlspecialchars(cookieVar('bbs_pass'));
+               }else{
+                       $data['bbs_pass'] = '';
+               }
+               if(cookieVar('comment_user')){
+                       $data['check'] = '<input type="checkbox" value="1" name="remember" checked="checked" />cookie ';
+               }else{
+                       $data['check'] = '<input type="checkbox" value="1" name="remember" />cookie ';
+               }
+
+//======================================
+//¸¡º÷·ë²Ìɽ¼¨ (µ­»öɽ¼¨¤Ç½èÍýÃæ»ß)
+//======================================
+               if(getVar('bbsq')){
+                       echo $this->getBBSTemplate(bbs_css);
+                       echo '<h1>Search Results</h1>';
+                       $this->bHighlight = explode(" ", getVar('bbsq'));
+
+                       $sql = "SELECT * FROM ".sql_table('plugin_bbs');
+                       $sql .= " WHERE bbs_number=".$bbs_number;
+                       foreach($this->bHighlight as $s){
+//                             $sql .= " and ((bbs_name LIKE '%" . addslashes($s) . "%') or (bbs_mes LIKE '%" . addslashes($s) . "%') or (bbs_host LIKE '%" . addslashes($s) . "%'))";
+                               $sql .= " and ((bbs_mes LIKE '%" . addslashes($s) . "%'))";
+                       }
+                       $sql .= " ORDER BY bbsid DESC";
+                       $res = mysql_query($sql);
+                       
+                       $num_rows = mysql_num_rows($res); 
+
+                       if(cookieVar('comment_user')){
+                               $data['extrainput'] = '<input type="hidden" value="2" name="remember" />';
+                       }else{
+                               $data['extrainput'] = '<input type="hidden" value="0" name="remember" />';
+                       }
+                       $data['bbsq'] = getVar('bbsq');
+               echo TEMPLATE::fill($this->getBBSTemplate(bbs_search),$data);
+
+                       $pageswitch = $this->parse_pageswitch($bbs_number, $num_rows, urlencode(getVar('bbsq')));
+                       echo $pageswitch;
+
+                       $sql .= ' LIMIT ' . $this->startpos .',' . $this->pageamount;
+
+                       $res = mysql_query($sql);
+                       
+                       while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
+                               $data = $row;
+                               if (isValidMailAddress($row["bbs_userinfo"]))
+                                       $data["bbs_userinfo"]  = '<a href="mailto:'.$row["bbs_userinfo"].'">M</a>';
+                               elseif (strstr($row["bbs_userinfo"],'http://') != false)  
+                                       $data["bbs_userinfo"]  = '<a href="'.$row["bbs_userinfo"].'">W</a>';
+                               else
+                                       $data["bbs_userinfo"] = '';
+
+                               $data['bbs_date'] = date("Y-m-d H:i", strtotime($row["bbs_date"]));
+
+                               if($row["bbs_name"]== $this->deny_name){
+                                       $data["bbs_mes"] .= '¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿';
+                               }
+
+                               $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
+                               $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
+
+                               $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbs_baseid"];
+                               $data['baseid'] = mysql_result(mysql_query($query), 0, ct);
+
+                               $data['editurl'] = $this->pagelink.'mode=edit&bbsid='.$row["bbsid"];
+                               $data['resurl'] = $this->pagelink.'mode=res&bbsid='.$row["bbsid"];
+                               $data['permalinkurl'] = $this->pagelink.'bbsid='.$row["bbsid"];
+                               $data['bbs_mes'] = $this->bbshighlight($row["bbs_mes"]);
+                               $data['bbs_mes'] = $this->bbsBody($data['bbs_mes']);
+                               if($data['baseid'] > 0){
+                                       $data['bbs_mes'] = '[µ­»öNo.'.$data['baseid'].' ¤Ø¤ÎÊÖ¿®]<br />'.$data['bbs_mes'];
+                               }
+                               echo TEMPLATE::fill($this->getBBSTemplate(bbslog),$data);
+                       }
+
+                       echo $pageswitch;
+
+                       return;
+               }
+
+
+//======================================
+//parmalinkɽ¼¨ (µ­»ö1¤Äɽ¼¨¤Ç½èÍýÃæ»ß)
+//======================================
+               if(!postVar('mode') && !getVar('mode') && intGetVar('bbsid')){
+                       echo '<h1>permalink</h1>';
+
+                       echo $this->getBBSTemplate(bbs_css);
+                       $sql = "SELECT * FROM ".sql_table('plugin_bbs');
+                       $sql .= " WHERE bbs_number=".$bbs_number;
+                       $sql .= " AND bbsid=".intGetVar('bbsid');
+                       $sql .= " ORDER BY bbsid DESC";
+                       $sql .= ' LIMIT 1';
+
+                       $res = mysql_query($sql);
+
+                       while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
+                               $data = $row;
+                               if (isValidMailAddress($row["bbs_userinfo"]))
+                                       $data["bbs_userinfo"]  = '<a href="mailto:'.$row["bbs_userinfo"].'">M</a>';
+                               elseif (strstr($row["bbs_userinfo"],'http://') != false)  
+                                       $data["bbs_userinfo"]  = '<a href="'.$row["bbs_userinfo"].'">W</a>';
+                               else
+                                       $data["bbs_userinfo"] = '';
+
+                               $data['bbs_date'] = date("Y-m-d H:i", strtotime($row["bbs_date"]));
+
+                               if($row["bbs_name"]== $this->deny_name){
+                                       $data["bbs_mes"] .= '¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿';
+                               }
+
+                               $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
+                               $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
+
+                               $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbs_baseid"];
+                               $data['baseid'] = mysql_result(mysql_query($query), 0, ct);
+
+                               $data['editurl'] = $this->pagelink.'mode=edit&bbsid='.$row["bbsid"];
+                               $data['resurl'] = $this->pagelink.'mode=res&bbsid='.$row["bbsid"];
+                               $data['permalinkurl'] = $this->pagelink.'bbsid='.$row["bbsid"];
+                               $data['bbs_mes'] = $this->bbsBody($row["bbs_mes"]);
+                               if($data['baseid'] > 0){
+                                       $data['bbs_mes'] = '[µ­»öNo.'.$data['baseid'].' ¤Ø¤ÎÊÖ¿®]<br />'.$data['bbs_mes'];
+                               }
+                               echo TEMPLATE::fill($this->getBBSTemplate(bbslog),$data);
+                       }
+                       return;
+               }
+
+//======================================
+//µ­»ö¤ÎÊÔ½¸¡¢ºï½ü²èÌÌɽ¼¨ (¥Õ¥©¡¼¥àɽ¼¨¤À¤±¤Ç½èÍýÃæ»ß)
+//======================================
+               if(getVar('mode') == 'edit' && intGetVar('bbsid')){
+                       $data['bbsid'] = intGetVar('bbsid');
+                       $data['type'] = 'update';
+                       $data['extrainput'] = '<input type="hidden" name="bbsid" value="'.$data['bbsid'].'" />';
+                       if(cookieVar('comment_user')){
+                               $data['extrainput'] .= '<input type="hidden" value="2" name="remember" />';
+                       }else{
+                               $data['extrainput'] .= '<input type="hidden" value="0" name="remember" />';
+                       }
+                       $data['check'] = '*cookie will NOT be updated';
+                       $data['submit'] = 'ÊÔ½¸ÆâÍƤòÈ¿±Ç';
+
+                       echo 'µ­»ö¤ÎÊÔ½¸';
+                       $check_pass = addslashes(md5(postVar('bbs_pass')));
+
+                       $sql = "SELECT * FROM ".sql_table('plugin_bbs');
+                       $sql .= ' WHERE bbsid='.$data['bbsid'];
+                       $sql .= ' AND bbs_number='.$bbs_number;
+                       $sql .= ' LIMIT 1';
+                       $res = mysql_query($sql);
+
+                       while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
+                               if(postVar('bbs_pass') && $check_pass == $row["bbs_pass"]){
+                                       $data['bbs_name'] = $row["bbs_name"];
+                                       $data['bbs_userinfo'] = $row["bbs_userinfo"];
+                                       $data['bbs_mes'] = $row["bbs_mes"];
+
+                                       $data['bbs_pass'] = postVar('bbs_pass');
+                               }else{
+                                       echo "¥Ñ¥¹¥ï¡¼¥É¤¬°ã¤¤¤Þ¤¹¡£";
+                                       return;
+                               }
+                       }
+
+                       echo $this->getBBSTemplate(bbs_css);
+                       $data['DELETE'] = TEMPLATE::fill($this->getBBSTemplate(bbs_delete),$data);
+                       echo TEMPLATE::fill($this->getBBSTemplate(bbsform),$data);
+                       return;
+               }
+
+//======================================
+//°úÍѤ·¤ÆÊÖ¿® (¥á¥Ã¥»¡¼¥¸¥¨¥ê¥¢¤Ëɽ¼¨¤¹¤ë¥Ç¡¼¥¿¤òÄɲÃ)
+//======================================
+               if(getVar('mode') == 'res' && intGetVar('bbsid')){
+                       
+                       $data['bbs_baseid'] = intGetVar('bbsid');
+                       $data['extrainput'] = '<input type="hidden" name="bbs_baseid" value="'.$data['bbs_baseid'].'" />';
+                       
+                       $sql = "SELECT * FROM ".sql_table('plugin_bbs');
+                       $sql .= ' WHERE bbsid='.$data['bbs_baseid'];
+                       $sql .= ' AND bbs_number='.$bbs_number;
+                       $sql .= ' LIMIT 1';
+                       $res = mysql_query($sql);
+
+                       while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
+                               $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
+                               $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
+                               
+//                             $quote_char = '*'.$row["bbs_number"]."-".$data['current_bbsid']."*&gt;";
+                               $quote_char = "&gt;";
+                               $data['bbs_mes'] = strip_tags($row["bbs_mes"]);
+                               $data['bbs_mes'] = $this->indent($data['bbs_mes'],70,$quote_char);
+                       }
+               }
+
+//======================================
+//Ä̾ïɽ¼¨ (¿·µ¬Åê¹Æ¥Õ¥©¡¼¥à¤Èµ­»ö°ìÍ÷)
+//======================================
+?>
+<script language="JavaScript" type="text/javascript">
+<!--
+function paste_strinL(strinL){ 
+var input=document.forms["postMsg"].elements["bbs_mes"];
+input.value=input.value+strinL; 
+}
+
+//-->
+</script>
+<?php
+               echo $this->getBBSTemplate(bbs_css);
+
+               echo '<h1>'.$this->getOption('bbstitle').'</h1>';
+               echo '<h2>'.$this->getOption('bbsdesc').'</h2>';
+
+               echo TEMPLATE::fill($this->getBBSTemplate(bbsform),$data);
+
+               $sql = "SELECT * FROM ".sql_table('plugin_bbs');
+               $sql .= " WHERE bbs_number=".$bbs_number;
+               $sql .= " ORDER BY bbsid DESC";
+                       $res = mysql_query($sql);
+                       
+                       $num_rows = mysql_num_rows($res); 
+                       if(cookieVar('comment_user')){
+                               $data['extrainput'] = '<input type="hidden" value="2" name="remember" />';
+                       }else{
+                               $data['extrainput'] = '<input type="hidden" value="0" name="remember" />';
+                       }
+               echo TEMPLATE::fill($this->getBBSTemplate(bbs_search),$data);
+                               $data['extrainput'] = '';
+
+                       $pageswitch = $this->parse_pageswitch($bbs_number, $num_rows, '');
+                       echo $pageswitch;
+
+               $sql .= ' LIMIT ' . $this->startpos .',' . $this->pageamount;
+
+               $res = mysql_query($sql);
+
+               while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
+                       $data = $row;
+                       if (isValidMailAddress($row["bbs_userinfo"]))
+                               $data["bbs_userinfo"]  = '<a href="mailto:'.$row["bbs_userinfo"].'">M</a>';
+                       elseif (strstr($row["bbs_userinfo"],'http://') != false)  
+                               $data["bbs_userinfo"]  = '<a href="'.$row["bbs_userinfo"].'">W</a>';
+                       else
+                               $data["bbs_userinfo"] = '';
+
+                       $data['bbs_date'] = date("Y-m-d H:i", strtotime($row["bbs_date"]));
+
+                       if($row["bbs_name"]== $this->deny_name){
+                               $data["bbs_mes"] .= '¤Ëºï½ü¤µ¤ì¤Þ¤·¤¿';
+                       }
+
+                       
+                       $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbsid"];
+                       $data['current_bbsid'] = mysql_result(mysql_query($query), 0, ct);
+
+                       $query = "SELECT count(*) as ct FROM ".sql_table('plugin_bbs')." WHERE bbs_number=".$bbs_number." AND bbsid<=".$row["bbs_baseid"];
+                       $data['baseid'] = mysql_result(mysql_query($query), 0, ct);
+
+                       $data['editurl'] = $this->pagelink.'mode=edit&bbsid='.$row["bbsid"];
+                       $data['resurl'] = $this->pagelink.'mode=res&bbsid='.$row["bbsid"];
+                       $data['permalinkurl'] = $this->pagelink.'bbsid='.$row["bbsid"];
+                       $data['bbs_mes'] = $this->bbsBody($row["bbs_mes"]);
+                       if($data['baseid'] > 0){
+                               $data['bbs_mes'] = '[µ­»öNo.'.$data['baseid'].' ¤Ø¤ÎÊÖ¿®]<br />'.$data['bbs_mes'];
+                       }
+                       echo TEMPLATE::fill($this->getBBSTemplate(bbslog),$data);
+               }
+
+                       echo $pageswitch;
+
+       } //end of function doSkinVar
+
+
+       function doAction($type) {
+               global $manager, $CONF;
+               $blog =& $manager->getBlog($CONF['DefaultBlog']);
+
+               // ¥Õ¥©¡¼¥à¤«¤é¥Ç¡¼¥¿¤ò¼õ¤±¼è¤ë
+               $bbs_number = intval(postVar('bbs_number'));
+               $data['bbs_baseid'] = intval(postVar('bbs_baseid'));
+               $data['bbs_name'] = addslashes(strip_tags(postVar('bbs_name')));
+               if($data['bbs_name'] == $this->deny_name){
+                       $data['bbs_name'] = '';
+               }
+       
+               $data['bbs_userinfo'] = strip_tags(postVar('bbs_userinfo'));
+               $data['bbs_pass'] = addslashes(md5(postVar('bbs_pass')));
+               $data['bbs_mes'] = trim(postVar('bbs_mes'));
+               $data['bbs_mes'] = addslashes(strip_tags($data['bbs_mes']));
+               $data['bbs_host'] = gethostbyaddr(serverVar('REMOTE_ADDR'));
+               $data['bbs_ip'] = serverVar('REMOTE_ADDR');
+               $data['bbs_date'] = date('Y-m-d H:i:s', $blog->getCorrectTime());
+               $data['redirectTo'] = postVar('redirectTo');
+
+               $remember = intPostVar('remember');
+               if ($remember == 1) {
+                       $lifetime = $blog->getCorrectTime()+2592000;
+                       setcookie('comment_user',$data['bbs_name'],$lifetime,'/','',0);
+                       setcookie('comment_userid', $data['bbs_userinfo'],$lifetime,'/','',0);
+                       setcookie('bbs_pass', postVar('bbs_pass'),$lifetime,'/','',0);
+               }elseif($remember == 0){
+                       $lifetime = $blog->getCorrectTime()-1;
+                       setcookie('comment_user','',$lifetime,'/','',0);
+                       setcookie('comment_userid', '',$lifetime,'/','',0);
+                       setcookie('bbs_pass', '',$lifetime,'/','',0);
+               }
+
+               if (isValidMailAddress($data['bbs_userinfo']))
+                       $data['bbs_userinfo']  = $data['bbs_userinfo'];
+               elseif (strstr($data['bbs_userinfo'],'http://') != false)  
+                       $data['bbs_userinfo']  = $data['bbs_userinfo'];
+               elseif (strstr($data['bbs_userinfo'],'www') != false)
+                       $data['bbs_userinfo']  = 'http://'.$data['bbs_userinfo'];
+               else
+                       $data['bbs_userinfo'] = '';
+       
+               switch($type){
+                       case 'add_mess': 
+
+                               if (!empty($data['bbs_name']) and !empty($data['bbs_mes'])) {
+                                       // ¥Ç¡¼¥¿¤òÄɲ乤ë
+                                       $sql = "INSERT INTO ".sql_table('plugin_bbs')."(bbs_number, bbs_baseid, bbs_name, bbs_userinfo, bbs_pass, bbs_mes, bbs_host, bbs_ip, bbs_date) ";
+                                       $sql .= "VALUES(";
+                                       $sql .= "'" . $bbs_number . "',";
+                                       $sql .= "'" . $data['bbs_baseid'] . "',";
+                                       $sql .= "'" . $data['bbs_name'] . "',";
+                                       $sql .= "'" . $data['bbs_userinfo'] . "',";
+                                       $sql .= "'" . $data['bbs_pass'] . "',";
+                                       $sql .= "'" . $data['bbs_mes'] . "',";
+                                       $sql .= "'" . $data['bbs_host'] . "',";
+                                       $sql .= "'" . $data['bbs_ip'] . "',";
+                                       $sql .= "'" . $data['bbs_date'] . "'";
+                                       $sql .= ")";
+                                       $res = mysql_query($sql) or die("¥Ç¡¼¥¿Äɲ娥顼");
+                                       if ($res) {
+//                                             echo "<p>½ñ¤­¹þ¤ß¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿!<br />BBS¤Ë¼«Æ°¤ÇÌá¤ê¤Þ¤¹</p>";
+//                                             echo '<META HTTP-EQUIV="refresh" content="5;URL='.$data['redirectTo'].'">';
+                                               header('Location: ' . $data['redirectTo']);
+                                       }
+                               }else {
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head> 
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET?>">
+<title>¥¨¥é¡¼</title>
+<body>
+       <p align="center"><b>¤ªÌ¾Á°¤È¥á¥Ã¥»¡¼¥¸¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤</b>
+       <p align="center"><b>¤ªÌ¾Á°¤Ë¡Ö<?php echo $this->deny_name?>¡×¤Ï»È¤¨¤Þ¤»¤ó</b>
+       <br /><a href="javascript:history.go(-1);">Ìá¤ë</a></p>
+</body>
+</html>
+<?php
+                               }
+                               break;
+
+                       case 'update': 
+                               $data['bbsid'] = intval(postVar('bbsid'));
+//                             $query =  'UPDATE '.sql_table('plugin_bbs')
+//                                    . " SET bbs_mes='" .addslashes($data['bbs_mes']). "'"
+//                                    . " WHERE bbsid=" . $data['bbsid'];
+                               $query =  'UPDATE '.sql_table('plugin_bbs')
+                                      . " SET bbs_name='" .$data['bbs_name']. "',"
+                                      . " bbs_userinfo='" .$data['bbs_userinfo']. "',"
+                                      . " bbs_pass='" .$data['bbs_pass']. "',"
+                                      . " bbs_mes='" .$data['bbs_mes']. "'"
+                                      . " WHERE bbsid=" . $data['bbsid'];
+                               $res = mysql_query($query) or die("¥Ç¡¼¥¿¹¹¿·¥¨¥é¡¼");
+                               if ($res) {
+//                                     echo "<p>½ñ¤­¹þ¤ß¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿!<br />BBS¤Ë¼«Æ°¤ÇÌá¤ê¤Þ¤¹</p>";
+//                                     echo '<META HTTP-EQUIV="refresh" content="0;URL='.$data['redirectTo'].'">';
+                                       header('Location: ' . $data['redirectTo']);
+                               }
+                               break;
+
+                       case 'delete': 
+                               $data['bbsid'] = intval(postVar('bbsid'));
+                               $data['bbs_name'] = "-";
+                               $data['bbs_userinfo'] = "-";
+                               $query =  'UPDATE '.sql_table('plugin_bbs')
+                                      . " SET bbs_name='" .$data['bbs_name']. "',"
+                                      . " bbs_userinfo='" .$data['bbs_userinfo']. "',"
+                                      . " bbs_mes='" .$data['bbs_date']. "'"
+                                      . " WHERE bbsid=" . $data['bbsid'];
+                               $res = mysql_query($query) or die("¥Ç¡¼¥¿¹¹¿·¥¨¥é¡¼");
+                               if ($res) {
+                                       header('Location: ' . $data['redirectTo']);
+                               }
+                               break;
+
+                       case 'search': 
+                               $bbsq = postVar('bbsq');
+                               $bbsq = preg_replace("/(\xA1{2}|\xe3\x80{2}|\x20)+/"," ",$bbsq);
+                               $bbsq = trim($bbsq);
+                               if($bbsq != ""){
+                                       $bbsq = urlencode($bbsq);
+                                       header('Location: ' . postVar('pagelink') . 'bbsq=' . $bbsq );
+                               }else{
+                                       header('Location: ' . postVar('redirectTo') );
+                               }
+                               break;
+                       default:
+                               break;
+               }       //end of switch
+       }       //end of function doAction
+
+ //////////////////////////////////////
+///.   ÀÞ¤êÊÖ¤·¤È¥¤¥ó¥Ç¥ó¥È
+       function indent( $str, $width, $ind ){
+               ///     $ind ¤¬¿ô»ú¤Î»þ¤ÏÁ´¤Æ¥¤¥ó¥Ç¥ó¥È¡¢Ê¸»ú¤Î»þ¤Ï¤Ö¤é²¼¤¬¤ê
+               if( is_int( $ind ) ){
+                       $spc = str_repeat( ' ', $ind );
+                       $lc = 1;
+               }else{
+//                     $spc = str_repeat( ' ', strlen( $ind ) );
+                       $spc = str_repeat( $ind, 1 );
+                       $lc = 0;        ///     ¤Ö¤é²¼¤¬¤ê¥Õ¥é¥°
+               }
+               $lines = explode( "\n", $str );
+               foreach( $lines as $line ){
+                       if(ereg($ind, $line)){
+                               $width += strlen( $line ) * substr_count($line,$ind);
+                       }
+                       $p = 0;         ///     Ê¬³ä°ÌÃÖ
+                       $len = strlen( $line );
+                       while( $p < $len ){
+                               if (extension_loaded('mbstring')) { 
+                                       $tmp = mb_strcut( $line, $p, $width ,_CHARSET);
+                               }elseif(function_exists('jstrcut') && strtolower (_CHARSET) == 'euc-jp'){
+                                       $tmp = jstrcut( $line, $p, $width );
+                               }else{
+                                       $tmp = $line;
+                               }
+                               ///     ºÇ½é¤Î¹Ô¤À¤±¤Ö¤é²¼¤¬¤ê¥¤¥ó¥Ç¥ó¥È
+                               if( 0 == ($p+$lc) ){
+                                       $newstr .= $ind.$tmp."\n";
+                                       $lc++;
+                               }
+                               else    $newstr .= $spc.$tmp."\n";
+                               $p += strlen( $tmp );
+                       }
+               }
+               return  $newstr;
+       }
+
+ //////////////////////////////////////
+
+       function bbshighlight($data) {
+               if ($this->bHighlight){
+                       $temp = implode($this->bHighlight,'|');
+                       $data = preg_replace("/($temp)/","<span class=\"bbs_search\">\\1</span>",$data);
+               }
+               return $data;
+       }
+
+       function bbsBody($body) {
+       
+               // trim away whitespace and newlines at beginning and end
+               $body = trim($body);
+
+               // add <br /> tags
+               $body = addBreaks($body);
+       
+               // create hyperlinks for http:// addresses
+               // there's a testcase for this in /build/testcases/urllinking.txt
+               $replaceFrom = array(
+                       '/([^:\/\/\w]|^)((https:\/\/)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',           
+                       '/([^:\/\/\w]|^)((http:\/\/|www\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',
+                       '/([^:\/\/\w]|^)((ftp:\/\/|ftp\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',
+                       '/([^:\/\/\w]|^)(mailto:(([a-zA-Z\@\%\.\-\+_])+))/ie'                   
+               );
+               $replaceTo = array(
+                       '$this->bbscreateLinkCode("\\1", "\\2","https")',               
+                       '$this->bbscreateLinkCode("\\1", "\\2","http")',
+                       '$this->bbscreateLinkCode("\\1", "\\2","ftp")',
+                       '$this->bbscreateLinkCode("\\1", "\\3","mailto")'                       
+               );
+               $body = preg_replace($replaceFrom, $replaceTo, $body);
+
+               if ($this->getOption('smily') == "yes") {
+                       $body = $this->doSmilies($body);
+               }
+
+               return $body;
+       }
+       
+       function bbscreateLinkCode($pre, $url, $protocol = 'http') {
+               $post = '';
+       
+               // it's possible that $url ends with an entities 
+               // since htmlspecialchars is applied before URL linking
+               if (preg_match('/(&\w+;)+$/i', $url, $matches)) {
+                       $post = $matches[0];    // found entities (1 or more)
+                       $url = substr($url, 0, strlen($url) - strlen($post));
+               }
+
+               if (!ereg('^'.$protocol.'://',$url))
+                       $linkedUrl = $protocol . (($protocol == 'mailto') ? ':' : '://') . $url;
+               else
+                       $linkedUrl = $url;
+                       
+                       
+               if ($protocol != 'mailto')
+                       $displayedUrl = $linkedUrl;
+               else
+                       $displayedUrl = $url;
+               return $pre . '<a href="'.$linkedUrl.'">'.$displayedUrl.'</a>' . $post;
+       }
+       
+
+       function insertSmilies() {
+               global $CONF;
+
+//             $url = $this->getAdminURL();
+               $url = $CONF['PluginURL'] . 'fancytext/';
+               
+               $i = 0;
+               foreach ($this->smiley as $smile => $img) {
+                       $data .= "<a href=\"JavaScript:paste_strinL('".$smile."')\">";
+                       $data .= '<img src="'.$url.$img.'" align="absmiddle" />';
+                       $data .= '</a>';
+                       $i++;
+                       if($i % 4 == 0){
+                               $data .= "<br />\n";
+                       }
+               }       
+               return $data;
+       }
+       
+       function doSmilies($data) {
+               global $CONF;
+               
+//             $url = $this->getAdminURL();
+               $url = $CONF['PluginURL'] . 'fancytext/';
+               
+               foreach ($this->smiley as $smile => $img) {
+                       $data = str_replace($smile, '<img src="'.$url.$img.'" align="absmiddle" />', $data);
+               }       
+               
+               return $data;
+       }
+       
+
+       function parse_pageswitch($bbs_number, $totalamount = 0, $bbsq = ''){
+               if($bbsq !== ''){
+                       $pagelink = $this->pagelink . 'bbsq=' . $bbsq .'&';
+               }else{
+                       $pagelink = $this->pagelink;
+               }
+
+               $totalpages = ceil($totalamount/$this->pageamount);
+               if($this->startpos > $totalamount){
+                       $this->currentpage = $totalpages;
+                       $this->startpos = $totalamount-$this->pageamount;
+               }
+       
+               $buf = '<div class="pageswitch">'."\n";
+       
+               $this->currentpage > 1 ? $prevpage = $this->currentpage - 1 : $prevpage = 0;
+               $nextpage = $this->currentpage + 1;
+               
+               if($prevpage){
+                       $prevpagelink = $pagelink. 'bbsp=' . $prevpage;
+                       $buf .= "\n".'<a href="'.$prevpagelink.'" title="Á°¤Î¥Ú¡¼¥¸">&laquo;Prev</a>';
+               }
+       
+               $buf .= "\n |";
+       
+               for($i=1; $i<=$totalpages; $i++){
+                       if($i == $this->currentpage){
+                               $buf .= " <strong>{$this->currentpage}</strong> |";
+                       }elseif($totalpages<10 || $i<4 || $i>$totalpages-3){
+                               $buf .= ' <a href="'.$pagelink. 'bbsp=' . $i.'">'.$i.'</a> |';
+                       }else{
+                               if($i<$this->currentpage-1 || $i>$this->currentpage+1){
+                                       if(($i==4 && ($this->currentpage>5 || $this->currentpage==1)) || $i==$this->currentpage+2){
+                                               $buf .= '...|';
+                                       }
+                               }else{
+                                       $buf .= ' <a href="'.$pagelink. 'bbsp=' . $i.'">'.$i.'</a> |';
+                               }
+                       }
+               }
+               
+               if($totalpages >= $nextpage){
+                       $nextpagelink = $pagelink. 'bbsp=' . $nextpage;
+                       $buf .= ' <a href="'.$nextpagelink.'" title="¼¡¤Î¥Ú¡¼¥¸">Next&raquo;</a>'."\n";
+               }
+               $buf .= "</div>\n</form>\n";
+               
+               return $buf;
+               
+       }
+
+       function getBBSTemplate($type) {
+               global $DIR_PLUGINS;
+               
+//             $url = $this->getDirectory() . $type . '.template';
+               $filename = $DIR_PLUGINS . 'fancytext/' . $type . '.template';
+               
+               if (!file_exists($filename)) 
+                       return '';
+                       
+               // read file and return it
+               $fd = fopen ($filename, 'r');
+               $contents = fread ($fd, filesize ($filename));
+               fclose ($fd);
+               
+               return $contents;
+               
+       }
+
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Board/fancytext/bbs_css.template b/trunk/NP_Board/fancytext/bbs_css.template
new file mode 100644 (file)
index 0000000..fde38e6
--- /dev/null
@@ -0,0 +1,48 @@
+
+<style type="text/css">
+<!--
+       table.bbs_form td {
+               font: normal 9px verdana, arial, sans-serif;
+               margin:0 0 0 0;
+               padding:0 0 0 0;
+       }
+       table.bbs_form input{
+               font: normal 10.5px verdana, arial, sans-serif;
+       }
+       .bbs_pass{
+               font: normal 9px verdana, arial, sans-serif;
+               margin:0 0 0 0;
+               padding:0 0 0 0;
+               float:right;
+       }
+       .bbs_title{
+               clear:all;
+               font: normal 9px verdana, arial, sans-serif;
+               padding:2px 2px 2px 2px ;
+               background-color:gray;
+               color:white;
+       }
+       .bbs_title a:link , .bbs_title a:visited {
+               color:white;
+       }
+       .bbs_mes{
+               clear:all;
+               margin-left:5%;
+               padding:3px 3px 7px 3px ;
+               font: normal 11.5px verdana, arial, sans-serif;
+       }
+       .bbs_res{
+               margin:0 0 0 0;
+               padding:2px 2px 2px 2px;
+               float:right;
+               border:1px solid gray;
+               color:white;
+               background-color:red;
+               text-decoration:none;
+       }
+       .bbs_search{
+               background-color:yellow;
+       }
+-->
+</style>
+
diff --git a/trunk/NP_Board/fancytext/bbs_delete.template b/trunk/NP_Board/fancytext/bbs_delete.template
new file mode 100644 (file)
index 0000000..2a2f941
--- /dev/null
@@ -0,0 +1,7 @@
+<form method="post" action="<%actionurl%>">
+<input type="hidden" name="action" value="plugin" />
+<input type="hidden" name="name" value="Board" />
+<input type="hidden" name="type" value="delete" />
+<input type="hidden" name="redirectTo" value="<%redirectTo%>" />
+<input type="hidden" name="bbsid" value="<%bbsid%>" />
+<input type="submit" value="Delete" />
diff --git a/trunk/NP_Board/fancytext/bbs_search.template b/trunk/NP_Board/fancytext/bbs_search.template
new file mode 100644 (file)
index 0000000..86771a4
--- /dev/null
@@ -0,0 +1,13 @@
+<div style="float:left;">
+<form method="post" action="<%actionurl%>">
+<input type="hidden" name="action" value="plugin" />
+<input type="hidden" name="name" value="Board" />
+<input type="hidden" name="type" value="search" />
+<input type="hidden" name="redirectTo" value="<%redirectTo%>" />
+<input type="hidden" name="pagelink" value="<%pagelink%>" />
+<input type="hidden" name="bbs_number" value="<%bbs_number%>" />
+<%extrainput%>
+<input class="" type="text" size="6" name="bbsq" value="<%bbsq%>"/>
+<input class="" type="submit" value="search" />
+</form>
+</div>
diff --git a/trunk/NP_Board/fancytext/bbsform.template b/trunk/NP_Board/fancytext/bbsform.template
new file mode 100644 (file)
index 0000000..939745a
--- /dev/null
@@ -0,0 +1,46 @@
+<form method="post" action="<%actionurl%>" name="postMsg">
+<input type="hidden" name="action" value="plugin" />
+<input type="hidden" name="name" value="Board" />
+<input type="hidden" name="type" value="<%type%>" />
+<input type="hidden" name="redirectTo" value="<%redirectTo%>" />
+<input type="hidden" name="bbs_number" value="<%bbs_number%>" />
+<%extrainput%>
+       <table class="bbs_form" border="0">
+
+       <tr>
+         <td align="right" valign="top">name ::</td>
+         <td><input type="text" name="bbs_name" value="<%bbs_name%>" /> <%check%> 
+       
+       </td>
+       </tr>
+       <tr>
+         <td align="right" valign="top">E-mail or URL ::</td>
+         <td><input type="text" size="60" name="bbs_userinfo" value="<%bbs_userinfo%>" /></td>
+       </tr>
+       <tr>
+         <td align="right" valign="top">password ::</td>
+         <td><input type="text" size="10" name="bbs_pass" value="<%bbs_pass%>" />
+           * required for edit and delete
+         </td>
+       </tr>
+       <tr>
+         <td align="right" valign="top">messege ::
+       <br/ > <br/ >   <%smilies%>
+       </td>
+         <td>
+         <textarea rows="6" cols="40" name="bbs_mes" /><%bbs_mes%></textarea>
+         </td>
+       </tr>
+       <tr>
+         <td> </td>
+         <td>
+               <table><tr><td>
+                 <input type="submit" value="<%submit%>" />
+               </td>
+</form>
+               <td>
+                 <%DELETE%>
+               </td></tr></table>
+         </td>
+       </tr>
+  </table>
diff --git a/trunk/NP_Board/fancytext/bbslog.template b/trunk/NP_Board/fancytext/bbslog.template
new file mode 100644 (file)
index 0000000..f5199cd
--- /dev/null
@@ -0,0 +1,14 @@
+<form method="post" action="<%editurl%>">
+       <div class="bbs_title">
+               <input class="bbs_pass" type="submit" value="edit/del" />
+               <input class="bbs_pass" type="text" size="6" name="bbs_pass" />
+               <a href="<%permalinkurl%>"><b><%current_bbsid%></b></a>
+               <%bbs_name%> <%bbs_userinfo%> (<%bbs_date%>)
+               <!-- <%bbs_host%> -->
+               <!-- <%bbs_ip%> -->
+       </div>
+       <div class="bbs_mes">
+               <a class="bbs_res" href="<%resurl%>">res</a>
+               <%bbs_mes%>
+       </div>
+</form>
diff --git a/trunk/NP_Board/fancytext/smiles/icon_arrow.gif b/trunk/NP_Board/fancytext/smiles/icon_arrow.gif
new file mode 100644 (file)
index 0000000..2880055
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_arrow.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_biggrin.gif b/trunk/NP_Board/fancytext/smiles/icon_biggrin.gif
new file mode 100644 (file)
index 0000000..d352772
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_biggrin.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_confused.gif b/trunk/NP_Board/fancytext/smiles/icon_confused.gif
new file mode 100644 (file)
index 0000000..0c49e06
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_confused.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_cool.gif b/trunk/NP_Board/fancytext/smiles/icon_cool.gif
new file mode 100644 (file)
index 0000000..cead030
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_cool.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_cry.gif b/trunk/NP_Board/fancytext/smiles/icon_cry.gif
new file mode 100644 (file)
index 0000000..7d54b1f
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_cry.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_eek.gif b/trunk/NP_Board/fancytext/smiles/icon_eek.gif
new file mode 100644 (file)
index 0000000..5d39781
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_eek.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_evil.gif b/trunk/NP_Board/fancytext/smiles/icon_evil.gif
new file mode 100644 (file)
index 0000000..ab1aa8e
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_evil.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_exclaim.gif b/trunk/NP_Board/fancytext/smiles/icon_exclaim.gif
new file mode 100644 (file)
index 0000000..6e50e2e
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_exclaim.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_frown.gif b/trunk/NP_Board/fancytext/smiles/icon_frown.gif
new file mode 100644 (file)
index 0000000..d2ac78c
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_frown.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_idea.gif b/trunk/NP_Board/fancytext/smiles/icon_idea.gif
new file mode 100644 (file)
index 0000000..a40ae0d
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_idea.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_lol.gif b/trunk/NP_Board/fancytext/smiles/icon_lol.gif
new file mode 100644 (file)
index 0000000..374ba15
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_lol.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_mad.gif b/trunk/NP_Board/fancytext/smiles/icon_mad.gif
new file mode 100644 (file)
index 0000000..1f6c3c2
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_mad.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_mrgreen.gif b/trunk/NP_Board/fancytext/smiles/icon_mrgreen.gif
new file mode 100644 (file)
index 0000000..b54cd0f
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_mrgreen.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_neutral.gif b/trunk/NP_Board/fancytext/smiles/icon_neutral.gif
new file mode 100644 (file)
index 0000000..4f31156
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_neutral.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_question.gif b/trunk/NP_Board/fancytext/smiles/icon_question.gif
new file mode 100644 (file)
index 0000000..9d07226
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_question.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_razz.gif b/trunk/NP_Board/fancytext/smiles/icon_razz.gif
new file mode 100644 (file)
index 0000000..29da2a2
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_razz.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_redface.gif b/trunk/NP_Board/fancytext/smiles/icon_redface.gif
new file mode 100644 (file)
index 0000000..ad76283
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_redface.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_rolleyes.gif b/trunk/NP_Board/fancytext/smiles/icon_rolleyes.gif
new file mode 100644 (file)
index 0000000..d7f5f2f
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_rolleyes.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_sad.gif b/trunk/NP_Board/fancytext/smiles/icon_sad.gif
new file mode 100644 (file)
index 0000000..d2ac78c
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_sad.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_smile.gif b/trunk/NP_Board/fancytext/smiles/icon_smile.gif
new file mode 100644 (file)
index 0000000..7b1f6d3
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_smile.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_surprised.gif b/trunk/NP_Board/fancytext/smiles/icon_surprised.gif
new file mode 100644 (file)
index 0000000..cb21424
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_surprised.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_twisted.gif b/trunk/NP_Board/fancytext/smiles/icon_twisted.gif
new file mode 100644 (file)
index 0000000..502fe24
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_twisted.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles/icon_wink.gif b/trunk/NP_Board/fancytext/smiles/icon_wink.gif
new file mode 100644 (file)
index 0000000..d148288
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles/icon_wink.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/biglaugh.gif b/trunk/NP_Board/fancytext/smiles21/biglaugh.gif
new file mode 100644 (file)
index 0000000..ef30982
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/biglaugh.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/eek.gif b/trunk/NP_Board/fancytext/smiles21/eek.gif
new file mode 100644 (file)
index 0000000..dc77df4
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/eek.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/frown.gif b/trunk/NP_Board/fancytext/smiles21/frown.gif
new file mode 100644 (file)
index 0000000..d36e05c
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/frown.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/redface.gif b/trunk/NP_Board/fancytext/smiles21/redface.gif
new file mode 100644 (file)
index 0000000..acb97f9
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/redface.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/rolleyes.gif b/trunk/NP_Board/fancytext/smiles21/rolleyes.gif
new file mode 100644 (file)
index 0000000..38362f8
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/rolleyes.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/smile.gif b/trunk/NP_Board/fancytext/smiles21/smile.gif
new file mode 100644 (file)
index 0000000..97a7f6e
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/smile.gif differ
diff --git a/trunk/NP_Board/fancytext/smiles21/wink.gif b/trunk/NP_Board/fancytext/smiles21/wink.gif
new file mode 100644 (file)
index 0000000..671e0e2
Binary files /dev/null and b/trunk/NP_Board/fancytext/smiles21/wink.gif differ
diff --git a/trunk/NP_ChoppedDisc/NP_ChoppedDisc.php b/trunk/NP_ChoppedDisc/NP_ChoppedDisc.php
new file mode 100644 (file)
index 0000000..20cd0f3
--- /dev/null
@@ -0,0 +1,246 @@
+<?
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+class NP_ChoppedDisc extends NucleusPlugin {
+       function getEventList() { return array(); }
+       function getName() { return 'Chopped description'; }
+       function getAuthor() { return 'nakahara21'; }
+       function getURL() { return 'http://nakahara21.com/'; }
+       function getVersion() { return '0.7'; }
+       function getDescription() {
+               return 'Chopped description. &lt;%ChoppedDisc(250,1)%&gt;';
+       }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+       function parseHighlight($query) {
+       
+               // get rid of quotes
+               $query = preg_replace('/\'|"/','',$query);
+       
+               if (!query) return array();
+       
+               $aHighlight = explode(' ', $query);
+       
+               for ($i = 0; $i<count($aHighlight); $i++) {
+                       $aHighlight[$i] = trim($aHighlight[$i]);
+//                     if (strlen($aHighlight[$i]) < 3)
+//                             unset($aHighlight[$i]);
+               }
+       
+//             if (count($aHighlight) == 1)
+//                     return $aHighlight[0];
+//             else
+                       return $aHighlight;
+       }
+
+       function splitLastStr($str, $width=5){
+               $posn = (mb_strwidth($str) > $width)? mb_strwidth($str) - $width: 0;
+               $resArray[0] = ($posn)? mb_strcut($str, 0, $posn, _CHARSET): '';
+               $resArray[1] = ($posn)? mb_strcut($str, $posn, $width + 2, _CHARSET): $str;
+               return $resArray;
+       }
+
+       function chopStr($str, $query, $maxLength){
+               
+               $searchclass =& new SEARCH($query);
+               $highlight        = $searchclass->inclusive;
+               $this->highlights = $this->parseHighlight($highlight);
+
+               if(mb_strwidth($str) <= $maxLength)
+                       return $str;
+               
+               $toated = "...";
+               $tLength = mb_strwidth($toated);
+               $maxLength = $maxLength - $tLength;
+
+               $text = highlight($str, $this->highlights, '<\0>');
+               $text = '< >'.$text;
+               preg_match_all('/(<[^>]+>)([^<>]*)/', $text, $matches);
+               for($i=0;$i<count($matches[1]);$i++){
+                       $matches[1][$i] = ereg_replace("<|>",'',$matches[1][$i]);
+               }
+/*
+               print_r($matches);
+               echo "<hr />";
+*/
+               for($i=0;$i<count($this->highlights);$i++){
+                       for($e=0;$e<count($matches[1]);$e++){
+                               if(eregi($this->highlights[$i], $matches[1][$e])){
+                                       if(!$hitkey[$i]) $hitkey[$i] = $e;
+                               }
+                       }
+               }
+               
+
+               if(!$hitkey){
+                       $tt = mb_strcut($matches[2][0], 0, $maxLength, _CHARSET);
+                       if(mb_strwidth($matches[2][0]) > $maxLength)
+                               $tt .= $toated;
+               }elseif($hitkey[1]){
+                       sort($hitkey);
+                       foreach($hitkey as $keyval){
+                               $hitWordArray[] = $matches[1][$keyval];
+                       }
+
+                       $list[0] = array("qlen"=>0,"q"=>'');
+                       $trimLength = intval(($maxLength - mb_strwidth(join("",$hitWordArray))) / (count($hitWordArray) +1));
+                       
+                       $left = $str;
+                       $i=0;
+                       while($i <= count($hitWordArray)){
+//                             $hitWord = $hitWordArray[$i];
+                               $tempArray = ($hitWord = $hitWordArray[$i])? explode($hitWord, $left, 2): array($left, '');
+                               $preStr = ($hitWord)? $this->splitLastStr($tempArray[0], 5): array($left, '');
+
+                               $left = $preStr[1].$hitWord.$tempArray[1];
+
+                               $list[$i]['str'] = $preStr[0];
+                               $list[$i]['len'] = mb_strwidth($preStr[0]);
+
+                               $tempTrimLen = $trimLength + $list[$i]['qlen'];
+
+                               if($list[$i]['len'] < $tempTrimLen){
+                                       $list[$i]['trimlen'] = 0;
+                                       $addsum += $tempTrimLen - $list[$i]['len'];
+                               }else{
+                                       $list[$i]['trimlen'] = $list[$i]['len'] - $tempTrimLen;
+                               }
+
+                               if(!$hitWord) break;
+                               $i++;
+                               $list[$i]['q'] = $hitWord;
+                               $list[$i]['qlen'] = mb_strwidth($hitWord);
+                       }
+//     print_r($list);
+
+                       for($i=0;$i<count($list);$i++){
+                               if($list[$i]['trimlen'] && ($addsum > 0)){
+                                       $list[$i]['trimlen'] = min($list[$i]['trimlen'], $addsum);
+                                       $addsum -= $list[$i]['trimlen'];
+                                       $list[$i]['trimlen'] = $trimLength + $list[$i]['trimlen'] + $list[$i]['qlen'];
+                               }elseif($list[$i]['trimlen']){
+                                       $list[$i]['trimlen'] = $trimLength + $list[$i]['qlen'];
+                               }else{
+                                       $list[$i]['trimlen'] = $list[$i]['len'];
+                               }
+                       }
+//     print_r($list);
+
+                       $tt = mb_strcut(
+                                $list[0]['str'],
+                                $list[0]['len'] - $list[0]['trimlen'],
+                                $list[0]['trimlen'] + 2,
+                                _CHARSET);
+                       if($list[0]['len'] > $list[0]['trimlen'])
+                               $tt = $toated.$tt;
+
+                       for($i=1;$i<count($list);$i++){
+                               $tt .= mb_strcut($list[$i]['str'], 0, $list[$i]['trimlen'], _CHARSET);
+                               if($list[$i]['len'] > $list[$i]['trimlen'])
+                                       $tt .= $toated;
+                       }
+               }else{
+                       $hitWord = $this->highlights[0];
+                       $keyLength = mb_strwidth($hitWord);
+                       
+                       $splitStr = preg_quote($hitWord);
+                       list($preStr, $hStr) = preg_split("/$splitStr/i",$str,2);
+
+                       $preStrLength = mb_strwidth($preStr);
+                       $hStrLength = mb_strwidth($hStr);
+                       $halfLength = intval(($maxLength - $keyLength) / 2);
+
+                       $hTrimLength = $preTrimLength = $halfLength;
+                       $minLength = min($preStrLength, $hStrLength, $halfLength);
+                       if($preStrLength == $minLength){
+                               $hTrimLength = $maxLength - $keyLength - $preStrLength;
+                               $preTrimLength = $preStrLength;
+                       }
+                       if($hStrLength == $minLength){
+                               $preTrimLength = $maxLength - $keyLength - $hStrLength;
+                               $hTrimLength = $hStrLength;
+                       }
+
+                       $tt = mb_strcut($preStr, $preStrLength - $preTrimLength, $preStrLength, _CHARSET);
+                       $tt .= $matches[1][1];
+                       $tt .= mb_strcut($hStr, 0, $hTrimLength,_CHARSET);
+
+                       if($preTrimLength < $preStrLength)
+                               $tt = $toated . $tt;
+                       if($hTrimLength < $hStrLength)
+                               $tt .= $toated;
+
+               }
+
+               return $tt;
+
+/*
+               $temp_str_array = mb_split($query,$str);
+               $num = count($temp_str_array);
+               foreach($temp_str_array as $key => $temp_str){
+                       $lastp = mb_strwidth($temp_str);
+                       if($key>0)
+                               $temp_s  = mb_strcut($temp_str, 0, 40, _CHARSET); 
+                       if($key>0 || ($key==0 && $lastp>40))
+                               $temp_s .= "..."; 
+                       $temp_s .= mb_strcut($temp_str, $lastp-40, $lastp, _CHARSET); 
+                       $str_array[$key] = $temp_s; 
+//                     if($key>0 && $lastp<83)
+                       if(($key>0 && $lastp<83) || $key == $num-1)
+                               $str_array[$key] = $temp_str; 
+                       
+                       $temp_str_length += mb_strwidth($str_array[$key]);
+                       if($temp_str_length > $maxLength)
+                               $str_array[$key] = $temp_str; 
+               }
+               $str = @join($query,$str_array);
+               return $str;
+*/
+       }
+
+       function doTemplateVar(&$item, $maxLength = 250, $addHighlight = 0){
+               global $CONF, $manager, $member, $catid;
+               global $query;
+
+               if ($manager->pluginInstalled('NP_HighlightSource')) {
+                       $tempPlugin =& $manager->getPlugin('NP_HighlightSource');
+                       preg_replace_callback("#<hs(|:[^>]+?)>(.*?)</hs>#s", array(&$tempPlugin, 'phpHighlight'), $item->body); 
+                       preg_replace_callback("#<hs(|:[^>]+?)>(.*?)</hs>#s", array(&$tempPlugin, 'phpHighlight'), $item->more); 
+               }
+
+               $syndicated = strip_tags($item->body);
+               $syndicated .= strip_tags($item->more);
+               $syndicated = preg_replace("/[\r\n]/","",$syndicated);
+
+               $syndicated = $this->chopStr($syndicated, $query, $maxLength);
+
+/*
+               if ($addHighlight) {
+                       echo highlight(htmlspecialchars($syndicated), $this->highlights, '<span class="highlight">\0</span>');
+               } else {
+                       echo htmlspecialchars($syndicated);
+               }
+       }
+*/
+               if ($addHighlight) {
+                       global $currentTemplateName;
+                       $template =& $manager->getTemplate($currentTemplateName);
+                       echo highlight($syndicated, $this->highlights, $template['SEARCH_HIGHLIGHT']);
+               } else {
+                       echo $syndicated;
+               }
+       }
+
+}
\ No newline at end of file
diff --git a/trunk/NP_CommentEdit/NP_CommentEdit.php b/trunk/NP_CommentEdit/NP_CommentEdit.php
new file mode 100644 (file)
index 0000000..4ca7f70
--- /dev/null
@@ -0,0 +1,109 @@
+<?
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+class NP_CommentEdit extends NucleusPlugin {
+
+       function getName() {    // name of plugin
+               return 'Comment Editable'; 
+       }
+       
+       function getAuthor()  { // author of plugin 
+               return 'nakahara21'; 
+       }
+       
+       function getURL()       {       // an URL to the plugin website
+               return 'http://xx.nakahara21.net/'; 
+       }
+       
+       function getVersion() { // version of the plugin
+               return '0.3'; 
+       }
+       
+       // a description to be shown on the installed plugins listing
+       function getDescription() { 
+               return 'Comment Editable';
+       }
+
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+//__________________________________________
+/*
+       function install() {
+       }
+
+       function uninstall() {
+       }
+
+       function getTableList() {
+               return array(sql_table(plug_QQQQQ),sql_table(plug_QQQQQ_cache));
+       }
+
+//__________________________________________
+
+       function getEventList() {
+               return array('PostAddItem','PreUpdateItem','AddItemFormExtras','EditItemFormExtras');
+       }
+
+       function event_PostAddItem($data) {
+       }
+
+       function event_PreUpdateItem($data) {
+       }
+
+       function event_AddItemFormExtras($data) {
+       }
+
+       function event_EditItemFormExtras($data) {
+       }
+
+//__________________________________________
+
+       function init() {
+
+       }
+*/
+//__________________________________________
+
+       function doTemplateCommentsVar(&$item, &$comment, $type, $param1 = 'QQQQQ') { 
+       global $CONF, $member;
+/*
+       global $manager, $blog;
+       global $catid, $itemid;
+*/     
+
+       if($member->isLoggedIn()){
+       if($member->canAlterComment($comment['commentid'])){
+       echo '<small>';
+       echo '<a href="';
+       echo  $CONF['AdminURL'].'index.php?action=commentedit&commentid='.$comment['commentid'];
+       echo '" target="_blank">[edit]</a>';
+       echo ' <a href="';
+       echo  $CONF['AdminURL'].'index.php?action=commentdelete&commentid='.$comment['commentid'];
+       echo '" target="_blank">[del]</a>';
+       echo '</small>';
+       }
+       }
+
+       }
+       //__________________________________________
+
+/*
+       function doAction($type) {
+               echo 'QQQQQ';
+       }
+*/
+       //__________________________________________
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_DateLink/NP_DateLink.php b/trunk/NP_DateLink/NP_DateLink.php
new file mode 100644 (file)
index 0000000..b5bdbaf
--- /dev/null
@@ -0,0 +1,99 @@
+<?
+
+class NP_DateLink extends NucleusPlugin {
+       function getEventList() { return array(); }
+       function getName() { return 'DateLink'; }
+       function getAuthor()  { return 'nakahara21'; }
+       function getURL()  { return 'http://nakahara21.com'; }
+       function getMinNucleusVersion() {       return 200;     }
+       function getVersion() { return '0.9'; }
+       function getDescription() {
+               return '&lt;%DateLink%&gt; on TEMPLATE displays links to the archives for the same date. ';
+       }
+       
+       function supportsFeature($what) {
+               switch($what)
+               {
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       
+       function install() {
+               $this->createOption('dl_limit','Limit to create links (years)','text','3');
+               $this->createOption('dl_header','Header of links','text','<ul>');
+               $this->createOption('dl_footer','Footer of links','text','</ul>');
+               $this->createOption('template_ago','Template for older (Blank for no link.)','text','<li><a href="<%linkurl%>" title="Archive for <%date%>">&laquo; <%year%> year(s) ago</a></li>');
+               $this->createOption('template_after','Template for newer (Blank for no link.)','text','<li><a href="<%linkurl%>" title="Archive for <%date%>"><%year%> year(s) after &raquo;</a></li>');
+               $this->createOption('template_separator','Separator for links','text','');
+       }
+
+       function doTemplateVar(&$item){
+               $today = $item->timestamp;
+               $tcat = $item->catid;
+               if($linkForPrint = $this->LinksDate($today, $tcat, $this->getOption('dl_limit'))){
+                       echo $this->getOption('dl_header');
+                       echo @join($this->getOption('template_separator'), $linkForPrint);
+                       echo $this->getOption('dl_footer');
+               }
+       }
+       
+       function LinksDate($timestamp, $catid, $limitYear){
+               global $manager, $blog, $CONF, $archive;
+
+               if(!$this->getOption('template_ago') && !$this->getOption('template_after'))
+                       return FALSE;
+
+               $blogid = getBlogIDFromCatID($catid);
+               $b = & $manager->getBlog($blogid);
+               $from = array('<%linkurl%>','<%date%>','<%year%>');
+
+               for($i=$limitYear;$i>0;$i--){
+                       if(!$this->getOption('template_ago')) break;
+                       $target_date = date('Y-m-d', strtotime("-".$i." years", $timestamp));
+                       $s = $this->getArchiveForDate($target_date, $b);
+                       if($s) {
+                               $linkurl = createArchiveLink($blogid,$target_date);
+                               $to = array(
+                                       $linkurl,
+                                       $target_date,
+                                       $i
+                               );
+                               $print_data[] = str_replace($from,$to, $this->getOption('template_ago'));
+                       }
+               }
+
+               for($i=1;$i<=$limitYear;$i++){
+                       if(!$this->getOption('template_after')) break;
+                       $target_date = date('Y-m-d', strtotime("+".$i." years", $timestamp));
+                       $s = $this->getArchiveForDate($target_date, $b);
+                       if($s) {
+                               $linkurl = createArchiveLink($blogid,$target_date);
+                               $to = array(
+                                       $linkurl,
+                                       $target_date,
+                                       $i
+                               );
+                               $print_data[] = str_replace($from,$to, $this->getOption('template_after'));
+                       }
+               }
+
+               return $print_data;
+       }
+       
+       function getArchiveForDate($target_date, $blog){
+               $query = 'SELECT inumber FROM '.sql_table('item')
+                       .' WHERE iblog = '.$blog->getID().' AND itime BETWEEN "'
+                       .$target_date.' 00:00:00" AND "'
+                       .$target_date.' 23:59:59"'
+                       .' AND idraft=0'
+                       .' AND itime<=' . mysqldate($blog->getCorrectTime())
+                       .' LIMIT 1';
+               $result = sql_query($query);
+               if(mysql_num_rows($result)) return TRUE;
+               return FALSE;
+       }
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Douga/NP_Douga.php b/trunk/NP_Douga/NP_Douga.php
new file mode 100644 (file)
index 0000000..0d47343
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+class NP_Douga extends NucleusPlugin
+{
+
+       function getName() { return 'Douga'; }
+       function getAuthor() { return 'nakahara21'; }
+       function getURL() { return 'http://xx.nakahara21.net/'; }
+       function getVersion() { return '0.7'; }
+               
+       
+       function getDescription() {
+               return 'Æ°²è¤òËä¤á¹þ¤à¥×¥é¥°¥¤¥ó';
+       }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       
+       function getEventList() { return array('PreItem'); }
+       
+       function install() {
+       }
+       
+       
+       function event_PreItem($data) { 
+               $this->currentItem = &$data["item"]; 
+               $this->currentItem->body = preg_replace_callback("/<\%douga\((.*)\)%\>/Us", array(&$this, 'embeddouga'), $this->currentItem->body); 
+               $this->currentItem->more = preg_replace_callback("/<\%douga\((.*)\)%\>/Us", array(&$this, 'embeddouga'), $this->currentItem->more); 
+       } 
+
+       function embeddouga($matches){
+               global $CONF; 
+               
+               $farray = array();
+               $farray = explode("|",$matches[1]);
+               
+               $filename = $farray[0];
+               if (!strstr($filename,'/')) {
+                       $filename = $this->currentItem->authorid . '/' . $filename;
+               }
+               $filename = htmlspecialchars($CONF['MediaURL']. $filename);
+               $out = <<<EOD
+<OBJECT ID="MediaPlayer" WIDTH=320 HEIGHT=309
+  CLASSID="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"
+  STANDBY="Loading Windows Media Player components..." 
+  TYPE="application/x-oleobject"
+CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112">
+<PARAM NAME="ShowStatusBar" VALUE="true">
+<PARAM name="Volume" value="true">
+<PARAM name="ShowControls" value="true">
+<PARAM NAME="ShowAudioControls" VALUE="true">
+<PARAM NAME="ShowPositionControls" VALUE="true">
+<PARAM NAME="AutoStart" VALUE="true">
+<PARAM NAME="FileName" VALUE="$filename">
+
+<embed type="video/x-ms-wmv" 
+ pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" 
+Name="MediaPlayer" src="$filename" 
+AutoStart=1 ShowStatusBar=1 volume=-1 HEIGHT=309 WIDTH=320></embed>
+</OBJECT>
+EOD;
+
+
+               return $out;
+
+       }
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Dtree/NP_Dtree.php b/trunk/NP_Dtree/NP_Dtree.php
new file mode 100644 (file)
index 0000000..7769abe
--- /dev/null
@@ -0,0 +1,64 @@
+<?
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+
+class NP_Dtree extends NucleusPlugin {
+       function getName() {
+               return 'Navigation Tree'; 
+       }
+       function getAuthor() { 
+               return 'nakahara21'; 
+       }
+       function getURL() {
+               return 'http://nakahara21.com/'; 
+       }
+       function getVersion() {
+               return '0.92'; 
+       }
+       function getDescription() { 
+               return 'Show Navigation Tree. Usage: &lt;%Dtree()%&gt;';
+       }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+       function doSkinVar($skinType, $itemid=0) { 
+               global $blogid, $catid, $subcatid;
+               
+               $randomID = 'tree'.uniqid(rand());
+
+               echo '<script type="text/javascript" src="'.$this->getAdminURL().'dtree.php"></script>';
+
+               if($skinType == 'template'){
+                       echo '<script type="text/javascript" src="' . $this->getAdminURL() . 'dtreedata.php?o='.$randomID.'a&amp;bid=' . $blogid . '&amp;id='.$itemid.'"></script>';
+                       echo '<a href="javascript: '.$randomID.'a.openAll();">open all</a> | <a href="javascript: '.$randomID.'a.closeAll();">close all</a>';
+                       return;
+               }
+
+               $eq = '';
+               if($catid)
+                       $eq .= '&amp;cid='.$catid;
+               if($subcatid)
+                       $eq .= '&amp;sid='.$subcatid;
+
+               echo '<script type="text/javascript" src="' . $this->getAdminURL() . 'dtreedata.php?o='.$randomID.'d&amp;bid=' . $blogid . $eq . '"></script>';
+               echo '<a href="javascript: '.$randomID.'d.openAll();">open all</a> | <a href="javascript: '.$randomID.'d.closeAll();">close all</a>';
+
+       }
+
+               function doTemplateVar(&$item) {
+                       $this->doSkinVar('template', $item->itemid);
+               }
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Dtree/dtree/dtree.php b/trunk/NP_Dtree/dtree/dtree.php
new file mode 100644 (file)
index 0000000..d4b65e1
--- /dev/null
@@ -0,0 +1,320 @@
+/*--------------------------------------------------|\r| dTree 2.05 | www.destroydrop.com/javascript/tree/ |\r|---------------------------------------------------|\r| Copyright (c) 2002-2003 Geir Landr\e$B!&\e(B              |\r|                                                   |\r| This script can be used freely as long as all     |\r| copyright messages are intact.                    |\r|                                                   |\r| Updated: 17.04.2003                               |\r|--------------------------------------------------*/\r
+\r<?php\r        $strRel = '../../../';\r include($strRel . 'config.php');\r       include($DIR_LIBS . 'PLUGINADMIN.php');\r                $oPluginAdmin = new PluginAdmin('Dtree');\r              $this->plug =& $oPluginAdmin->plugin;\r          $imgpath = $this->plug->getAdminURL();
+//             $imgpath = 'nucleus/plugins/dtree/';
+
+?>
+// Node object\r
+var imgpath = "<?php echo $imgpath;?>";
+
+function Node(id, pid, name, url, title, target, icon, iconOpen, open) {\r
+       this.id = id;\r
+       this.pid = pid;\r
+       this.name = name;\r
+       this.url = url;\r
+       this.title = title;\r
+       this.target = target;\r
+       this.icon = icon;\r
+       this.iconOpen = iconOpen;\r
+       this._io = open || false;\r
+       this._is = false;\r
+       this._ls = false;\r
+       this._hc = false;\r
+       this._ai = 0;\r
+       this._p;\r
+};\r
+\r
+// Tree object\r
+function dTree(objName) {\r
+       this.config = {\r                target                                  : null,\r                folderLinks                     : true,\r                useSelection            : false,\r               useCookies                      : false,\r               useLines                                : true,\r                useIcons                                : true,\r                useStatusText           : false,\r               closeSameLevel  : false,\r               inOrder                                 : false\r        }\r
+       this.icon = {\r
+               root                    : imgpath + 'img/base.gif',\r            folder                  : imgpath + 'img/folder.gif',\r          folderOpen              : imgpath + 'img/folderopen.gif',\r//            node                    : imgpath + 'img/page.gif',\r            node                    : imgpath + 'img/folder.gif',\r          empty                   : imgpath + 'img/empty.gif',\r           line                    : imgpath + 'img/line.gif',\r            join                    : imgpath + 'img/join.gif',\r            joinBottom              : imgpath + 'img/joinbottom.gif',\r              plus                    : imgpath + 'img/plus.gif',\r            plusBottom              : imgpath + 'img/plusbottom.gif',\r              minus                   : imgpath + 'img/minus.gif',\r           minusBottom             : imgpath + 'img/minusbottom.gif',\r             nlPlus                  : imgpath + 'img/nolines_plus.gif',\r            nlMinus                 : imgpath + 'img/nolines_minus.gif'\r
+       };\r
+       this.obj = objName;\r
+       this.aNodes = [];\r
+       this.aIndent = [];\r
+       this.root = new Node(-1);\r
+       this.selectedNode = null;\r
+       this.selectedFound = false;\r
+       this.completed = false;\r
+};\r
+\r
+// Adds a new node to the node array\r
+dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {\r
+       this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);\r
+};\r
+\r
+// Open/close all nodes\r
+dTree.prototype.openAll = function() {\r
+       this.oAll(true);\r
+};\r
+dTree.prototype.closeAll = function() {\r
+       this.oAll(false);\r
+};\r
+\r
+// Outputs the tree to the page\r
+dTree.prototype.toString = function() {\r
+       var str = '<div class="dtree">\n';\r
+       if (document.getElementById) {\r
+               if (this.config.useCookies) this.selectedNode = this.getSelected();\r
+               str += this.addNode(this.root);\r
+       } else str += 'Browser not supported.';\r
+       str += '</div>';\r
+       if (!this.selectedFound) this.selectedNode = null;\r
+       this.completed = true;\r
+       return str;\r
+};\r
+\r
+// Creates the tree structure\r
+dTree.prototype.addNode = function(pNode) {\r
+       var str = '';\r
+       var n=0;\r
+       if (this.config.inOrder) n = pNode._ai;\r
+       for (n; n<this.aNodes.length; n++) {\r
+               if (this.aNodes[n].pid == pNode.id) {\r
+                       var cn = this.aNodes[n];\r
+                       cn._p = pNode;\r
+                       cn._ai = n;\r
+                       this.setCS(cn);\r
+                       if (!cn.target && this.config.target) cn.target = this.config.target;\r
+                       if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);\r
+                       if (!this.config.folderLinks && cn._hc) cn.url = null;\r
+                       if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {\r
+                                       cn._is = true;\r
+                                       this.selectedNode = n;\r
+                                       this.selectedFound = true;\r
+                       }\r
+                       str += this.node(cn, n);\r
+                       if (cn._ls) break;\r
+               }\r
+       }\r
+       return str;\r
+};\r
+\r
+// Creates the node icon, url and text\r
+dTree.prototype.node = function(node, nodeId) {\r
+       var str = '<div class="dTreeNode">' + this.indent(node, nodeId);\r
+       if (this.config.useIcons) {\r
+               if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);\r
+               if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;\r
+               if (this.root.id == node.pid) {\r
+                       node.icon = this.icon.root;\r
+                       node.iconOpen = this.icon.root;\r
+               }\r
+               str += '<img id="i' + this.obj + nodeId + '" src="' + ((node._io) ? node.iconOpen : node.icon) + '" alt="" />';\r
+       }\r
+       if (node.url) {\r
+               str += '<a id="s' + this.obj + nodeId + '" class="' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '" href="' + node.url + '"';\r
+               if (node.title) str += ' title="' + node.title + '"';\r
+               if (node.target) str += ' target="' + node.target + '"';\r
+               if (this.config.useStatusText) str += ' onmouseover="window.status=\'' + node.name + '\';return true;" onmouseout="window.status=\'\';return true;" ';\r
+               if (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))\r
+                       str += ' onclick="javascript: ' + this.obj + '.s(' + nodeId + ');"';\r
+               str += '>';\r
+       }\r
+       else if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)\r
+               str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ');" class="node">';\r
+       str += node.name;\r
+       if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';\r
+       str += '</div>';\r
+       if (node._hc) {\r
+               str += '<div id="d' + this.obj + nodeId + '" class="clip" style="display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';">';\r
+               str += this.addNode(node);\r
+               str += '</div>';\r
+       }\r
+       this.aIndent.pop();\r
+       return str;\r
+};\r
+\r
+// Adds the empty and line icons\r
+dTree.prototype.indent = function(node, nodeId) {\r
+       var str = '';\r
+       if (this.root.id != node.pid) {\r
+               for (var n=0; n<this.aIndent.length; n++)\r
+                       str += '<img src="' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '" alt="" />';\r
+               (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);\r
+               if (node._hc) {\r
+                       str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ');"><img id="j' + this.obj + nodeId + '" src="';\r
+                       if (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;\r
+                       else str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );\r
+                       str += '" alt="" /></a>';\r
+               } else str += '<img src="' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '" alt="" />';\r
+       }\r
+       return str;\r
+};\r
+\r
+// Checks if a node has any children and if it is the last sibling\r
+dTree.prototype.setCS = function(node) {\r
+       var lastId;\r
+       for (var n=0; n<this.aNodes.length; n++) {\r
+               if (this.aNodes[n].pid == node.id) node._hc = true;\r
+               if (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;\r
+       }\r
+       if (lastId==node.id) node._ls = true;\r
+};\r
+\r
+// Returns the selected node\r
+dTree.prototype.getSelected = function() {\r
+       var sn = this.getCookie('cs' + this.obj);\r
+       return (sn) ? sn : null;\r
+};\r
+\r
+// Highlights the selected node\r
+dTree.prototype.s = function(id) {\r
+       if (!this.config.useSelection) return;\r
+       var cn = this.aNodes[id];\r
+       if (cn._hc && !this.config.folderLinks) return;\r
+       if (this.selectedNode != id) {\r
+               if (this.selectedNode || this.selectedNode==0) {\r
+                       eOld = document.getElementById("s" + this.obj + this.selectedNode);\r
+                       eOld.className = "node";\r
+               }\r
+               eNew = document.getElementById("s" + this.obj + id);\r
+               eNew.className = "nodeSel";\r
+               this.selectedNode = id;\r
+               if (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);\r
+       }\r
+};\r
+\r
+// Toggle Open or close\r
+dTree.prototype.o = function(id) {\r
+       var cn = this.aNodes[id];\r
+       this.nodeStatus(!cn._io, id, cn._ls);\r
+       cn._io = !cn._io;\r
+       if (this.config.closeSameLevel) this.closeLevel(cn);\r
+       if (this.config.useCookies) this.updateCookie();\r
+};\r
+\r
+// Open or close all nodes\r
+dTree.prototype.oAll = function(status) {\r
+       for (var n=0; n<this.aNodes.length; n++) {\r
+               if (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {\r
+                       this.nodeStatus(status, n, this.aNodes[n]._ls)\r
+                       this.aNodes[n]._io = status;\r
+               }\r
+       }\r
+       if (this.config.useCookies) this.updateCookie();\r
+};\r
+\r
+// Opens the tree to a specific node\r
+dTree.prototype.openTo = function(nId, bSelect, bFirst) {\r
+       if (!bFirst) {\r
+               for (var n=0; n<this.aNodes.length; n++) {\r
+                       if (this.aNodes[n].id == nId) {\r
+                               nId=n;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       var cn=this.aNodes[nId];\r
+       if (cn.pid==this.root.id || !cn._p) return;\r
+       cn._io = true;\r
+       cn._is = bSelect;\r
+       if (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);\r
+       if (this.completed && bSelect) this.s(cn._ai);\r
+       else if (bSelect) this._sn=cn._ai;\r
+       this.openTo(cn._p._ai, false, true);\r
+};\r
+\r
+// Closes all nodes on the same level as certain node\r
+dTree.prototype.closeLevel = function(node) {\r
+       for (var n=0; n<this.aNodes.length; n++) {\r
+               if (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {\r
+                       this.nodeStatus(false, n, this.aNodes[n]._ls);\r
+                       this.aNodes[n]._io = false;\r
+                       this.closeAllChildren(this.aNodes[n]);\r
+               }\r
+       }\r
+}\r
+\r
+// Closes all children of a node\r
+dTree.prototype.closeAllChildren = function(node) {\r
+       for (var n=0; n<this.aNodes.length; n++) {\r
+               if (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {\r
+                       if (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);\r
+                       this.aNodes[n]._io = false;\r
+                       this.closeAllChildren(this.aNodes[n]);          \r
+               }\r
+       }\r
+}\r
+\r
+// Change the status of a node(open or closed)\r
+dTree.prototype.nodeStatus = function(status, id, bottom) {\r
+       eDiv    = document.getElementById('d' + this.obj + id);\r
+       eJoin   = document.getElementById('j' + this.obj + id);\r
+       if (this.config.useIcons) {\r
+               eIcon   = document.getElementById('i' + this.obj + id);\r
+               eIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;\r
+       }\r
+       eJoin.src = (this.config.useLines)?\r
+       ((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):\r
+       ((status)?this.icon.nlMinus:this.icon.nlPlus);\r
+       eDiv.style.display = (status) ? 'block': 'none';\r
+};\r
+\r
+\r
+// [Cookie] Clears a cookie\r
+dTree.prototype.clearCookie = function() {\r
+       var now = new Date();\r
+       var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);\r
+       this.setCookie('co'+this.obj, 'cookieValue', yesterday);\r
+       this.setCookie('cs'+this.obj, 'cookieValue', yesterday);\r
+};\r
+\r
+// [Cookie] Sets value in a cookie\r
+dTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {\r
+       document.cookie =\r
+               escape(cookieName) + '=' + escape(cookieValue)\r
+               + (expires ? '; expires=' + expires.toGMTString() : '')\r
+               + (path ? '; path=' + path : '')\r
+               + (domain ? '; domain=' + domain : '')\r
+               + (secure ? '; secure' : '');\r
+};\r
+\r
+// [Cookie] Gets a value from a cookie\r
+dTree.prototype.getCookie = function(cookieName) {\r
+       var cookieValue = '';\r
+       var posName = document.cookie.indexOf(escape(cookieName) + '=');\r
+       if (posName != -1) {\r
+               var posValue = posName + (escape(cookieName) + '=').length;\r
+               var endPos = document.cookie.indexOf(';', posValue);\r
+               if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));\r
+               else cookieValue = unescape(document.cookie.substring(posValue));\r
+       }\r
+       return (cookieValue);\r
+};\r
+\r
+// [Cookie] Returns ids of open nodes as a string\r
+dTree.prototype.updateCookie = function() {\r
+       var str = '';\r
+       for (var n=0; n<this.aNodes.length; n++) {\r
+               if (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {\r
+                       if (str) str += '.';\r
+                       str += this.aNodes[n].id;\r
+               }\r
+       }\r
+       this.setCookie('co' + this.obj, str);\r
+};\r
+\r
+// [Cookie] Checks if a node id is in a cookie\r
+dTree.prototype.isOpen = function(id) {\r
+       var aOpen = this.getCookie('co' + this.obj).split('.');\r
+       for (var n=0; n<aOpen.length; n++)\r
+               if (aOpen[n] == id) return true;\r
+       return false;\r
+};\r
+\r
+// If Push and pop is not implemented by the browser\r
+if (!Array.prototype.push) {\r
+       Array.prototype.push = function array_push() {\r
+               for(var i=0;i<arguments.length;i++)\r
+                       this[this.length]=arguments[i];\r
+               return this.length;\r
+       }\r
+};\r
+if (!Array.prototype.pop) {\r
+       Array.prototype.pop = function array_pop() {\r
+               lastElement = this[this.length-1];\r
+               this.length = Math.max(this.length-1,0);\r
+               return lastElement;\r
+       }\r
+};
\ No newline at end of file
diff --git a/trunk/NP_Dtree/dtree/dtreedata.php b/trunk/NP_Dtree/dtree/dtreedata.php
new file mode 100644 (file)
index 0000000..0b02155
--- /dev/null
@@ -0,0 +1,146 @@
+<?php
+       $strRel = '../../../';
+       include($strRel . 'config.php');
+
+       $usePathInfo = ($CONF['URLMode'] == 'pathinfo');
+
+       if ($usePathInfo)
+               include($strRel . 'fancyurls.config.php');
+
+       $CategoryKey = ($usePathInfo)? $CONF['CategoryKey']: 'catid';
+
+       $objectId = requestVar('o');
+       $blogid = requestVar('bid');
+       $blogname = getBlogNameFromID($blogid);
+
+               $b =& $manager->getBlog($blogid);
+               $blogurl = $b->getURL();
+               if (!$blogurl) {
+                       if($blog) {
+                               $b_tmp =& $manager->getBlog($CONF['DefaultBlog']);
+                               $blogurl = $b_tmp->getURL();
+                       }
+                       if (!$blogurl) {
+                               $blogurl = $CONF['IndexURL'];
+                               if (!$usePathInfo){
+                                       if ($data['type'] == 'pageparser') {
+                                               $blogurl .= 'index.php';
+                                       } else {
+                                               $blogurl = $CONF['Self'];
+                                       }
+                               }
+                       }
+               }
+               if ($usePathInfo){
+                       if(substr($blogurl, -1) == '/')  $blogurl = substr($blogurl,0,-1);
+               }
+
+               $CONF['BlogURL'] = $blogurl;
+               $CONF['ItemURL'] = $blogurl;
+               $CONF['CategoryURL'] = $blogurl;
+               $CONF['ArchiveURL'] = $blogurl;
+               $CONF['ArchiveListURL'] = $blogurl;
+               $CONF['SearchURL'] = $blogurl;
+
+       echo $objectId." = new dTree('".$objectId."');\n";
+       
+       echo $objectId.".add(0,-1,'".$blogname."');\n";
+       
+       $res = sql_query("SELECT * FROM ".sql_table('category')." WHERE cblog= ".$blogid);
+       $n = 1;
+       while($o = mysql_fetch_object($res)){
+               $catid = $o->catid;
+               $nodeArray[cat][$catid] = $n;
+//             $url = createBlogidLink($blogid, array('catid'=>$catid));
+               $url = createCategoryLink($catid);
+//             $url = createBlogidLink($blogid, array("$CategoryKey"=>$catid));
+               echo $objectId.".add(".$n.",0,'".$o->cname."','".$url."');\n";
+               $catFilter[] = $catid;
+               $n++;
+       }
+       
+       global $manager; 
+       if (!$manager->pluginInstalled('NP_MultipleCategories')){
+               echo 'document.write('.$objectId.');';
+               if($itemid = requestVar('id')){
+                       $catid = quickQuery('SELECT icat as result FROM '.sql_table('item').' WHERE inumber='.intval($itemid));
+                       $nodeId = 's'.$objectId.$nodeArray[cat][$catid];
+                       echo "document.getElementById('".$nodeId."').className = 'selectedNode';";
+               }
+               return;
+       }
+
+       if($catFilter[1]){
+               $catFilter = @join(',',$catFilter);
+               $catFilter = ' IN ('.$catFilter.')';
+       }else{
+               $catFilter = '='.$catFilter;
+       }
+       
+       $query = "SELECT * FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid".$catFilter;
+       $res = sql_query($query);
+       while($o = mysql_fetch_object($res)){
+               $scatid = $o->scatid;
+               $nodeArray[subcat][$scatid] = $n;
+               $n++;
+       }
+       $query = "SELECT * FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid".$catFilter;
+       $res = sql_query($query);
+       while($u = mysql_fetch_object($res)){
+               $scatid = $u->scatid;
+//             $url = createBlogidLink($blogid, array('catid'=>$u->catid, 'subcatid'=>$scatid));
+               $url = createCategoryLink($u->catid, array('subcatid'=>$scatid));
+//             $url = createBlogidLink($blogid, array("$CategoryKey"=>$u->catid, 'subcatid'=>$scatid));
+               $pnode = ($u->parentid)? $nodeArray[subcat][$u->parentid]: $nodeArray[cat][$u->catid];
+               echo $objectId.".add(".$nodeArray[subcat][$u->scatid].",".$pnode.",'".$u->sname."','".$url."');\n";
+       }
+
+       echo "document.write(".$objectId.");\n";
+
+
+       if(requestVar('sid')){
+               $cid = requestVar('sid');
+               $nodeId = 's'.$objectId.$nodeArray[subcat][$sid];
+               echo "document.getElementById('".$nodeId."').className = 'urlselected';\n";
+               echo $objectId.".openTo(".$nodeArray[subcat][$sid].", true);\n";
+       }elseif(requestVar('cid')){
+               $cid = requestVar('cid');
+               $nodeId = 's'.$objectId.$nodeArray[cat][$cid];
+               echo "document.getElementById('".$nodeId."').className = 'urlselected';\n";
+               echo $objectId.".openTo(".$nodeArray[cat][$cid].", true);\n";
+       }
+
+
+
+       if($itemid = requestVar('id')){
+               $catid = quickQuery('SELECT icat as result FROM '.sql_table('item').' WHERE inumber='.intval($itemid));
+               $nodeId = 's'.$objectId.$nodeArray[cat][$catid];
+               echo "document.getElementById('".$nodeId."').className = 'selectedNode';\n";
+               
+               //multi catid
+               if($catids = quickQuery('SELECT categories as result FROM '.sql_table('plug_multiple_categories').' WHERE item_id='.intval($itemid))){
+                       $catids = explode(',',$catids);
+                       for($i=0;$i<count($catids);$i++){
+                               $catidTemp = $catids[$i];
+                               if($catidTemp != $catid){
+                                       $nodeId = 's'.$objectId.$nodeArray[cat][$catidTemp];
+                                       echo "document.getElementById('".$nodeId."').className = 'selectedCatNode';\n";
+                               }
+                       }
+               }
+               
+               //(multi) subcatid
+               if($scatids = quickQuery('SELECT subcategories as result FROM '.sql_table('plug_multiple_categories').' WHERE item_id='.intval($itemid))){
+                       $scatids = explode(',',$scatids);
+                       for($i=0;$i<count($scatids);$i++){
+                               $scatid = $scatids[$i];
+                               $nodeId = 's'.$objectId.$nodeArray[subcat][$scatid];
+                               echo "document.getElementById('".$nodeId."').className = 'selectedScatNode';\n";
+                               echo $objectId.".openTo(".$nodeArray[subcat][$scatid].", true);\n";
+                       }
+               }
+       }
+
+
+?>
+
diff --git a/trunk/NP_Dtree/dtree/dtreedata.php.org b/trunk/NP_Dtree/dtree/dtreedata.php.org
new file mode 100644 (file)
index 0000000..df310c2
--- /dev/null
@@ -0,0 +1,57 @@
+               d = new dTree('d');
+
+<?php
+       $strRel = '../../../';
+       include($strRel . 'config.php');
+
+       $blogid = requestVar('bid');
+       $blogname = getBlogNameFromID($blogid);
+       echo "d.add(0,-1,'".$blogname."');\n";
+       
+       $res = sql_query("SELECT * FROM ".sql_table('category')." WHERE cblog= ".$blogid);
+       $n = 1;
+       while($o = mysql_fetch_object($res)){
+               $catid = $o->catid;
+               $nodeArray[cat][$catid] = $n;
+               $url = createBlogidLink($blogid, array('catid'=>$catid));
+               echo "d.add(".$n.",0,'".$o->cname."','".$url."');\n";
+               $catFilter[] = $catid;
+               $n++;
+       }
+       
+       global $manager; 
+       if (!$manager->pluginInstalled('NP_MultipleCategories')){
+               echo 'document.write(d);';
+               return;
+       }
+
+       if($catFilter[1]){
+               $catFilter = @join(',',$catFilter);
+               $catFilter = ' IN ('.$catFilter.')';
+       }else{
+               $catFilter = '='.$catFilter;
+       }
+       
+       $query = "SELECT * FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid".$catFilter;
+       $res = sql_query($query);
+       while($o = mysql_fetch_object($res)){
+               $scatid = $o->scatid;
+               $nodeArray[subcat][$scatid] = $n;
+               $n++;
+       }
+       $query = "SELECT * FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid".$catFilter;
+       $res = sql_query($query);
+       while($u = mysql_fetch_object($res)){
+               $scatid = $u->scatid;
+               $url = createBlogidLink($blogid, array('catid'=>$u->catid, 'subcatid'=>$scatid));
+               $pnode = ($u->parentid)? $nodeArray[subcat][$u->parentid]: $nodeArray[cat][$u->catid];
+               echo "d.add(".$nodeArray[subcat][$u->scatid].",".$pnode.",'".$u->sname."','".$url."');\n";
+       }
+
+?>
+
+               document.write(d);
+               d.openTo(7, true);
+               document.getElementById('sd7').className = 'selectedNode';
+               d.openTo(15, true);
+               document.getElementById('sd15').className = 'selectedNode';
diff --git a/trunk/NP_Dtree/dtree/img/base.gif b/trunk/NP_Dtree/dtree/img/base.gif
new file mode 100644 (file)
index 0000000..9ac0b11
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/base.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/cd.gif b/trunk/NP_Dtree/dtree/img/cd.gif
new file mode 100644 (file)
index 0000000..7503819
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/cd.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/empty.gif b/trunk/NP_Dtree/dtree/img/empty.gif
new file mode 100644 (file)
index 0000000..b5cf523
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/empty.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/folder.gif b/trunk/NP_Dtree/dtree/img/folder.gif
new file mode 100644 (file)
index 0000000..eb12976
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/folder.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/folderopen.gif b/trunk/NP_Dtree/dtree/img/folderopen.gif
new file mode 100644 (file)
index 0000000..c5c3110
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/folderopen.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/globe.gif b/trunk/NP_Dtree/dtree/img/globe.gif
new file mode 100644 (file)
index 0000000..57123d0
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/globe.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/imgfolder.gif b/trunk/NP_Dtree/dtree/img/imgfolder.gif
new file mode 100644 (file)
index 0000000..e6d8803
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/imgfolder.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/join.gif b/trunk/NP_Dtree/dtree/img/join.gif
new file mode 100644 (file)
index 0000000..34dd476
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/join.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/joinbottom.gif b/trunk/NP_Dtree/dtree/img/joinbottom.gif
new file mode 100644 (file)
index 0000000..48b81c8
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/joinbottom.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/line.gif b/trunk/NP_Dtree/dtree/img/line.gif
new file mode 100644 (file)
index 0000000..1a259ee
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/line.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/minus.gif b/trunk/NP_Dtree/dtree/img/minus.gif
new file mode 100644 (file)
index 0000000..3d212a9
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/minus.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/minusbottom.gif b/trunk/NP_Dtree/dtree/img/minusbottom.gif
new file mode 100644 (file)
index 0000000..dc3198b
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/minusbottom.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/musicfolder.gif b/trunk/NP_Dtree/dtree/img/musicfolder.gif
new file mode 100644 (file)
index 0000000..f620789
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/musicfolder.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/nolines_minus.gif b/trunk/NP_Dtree/dtree/img/nolines_minus.gif
new file mode 100644 (file)
index 0000000..2592ac2
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/nolines_minus.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/nolines_plus.gif b/trunk/NP_Dtree/dtree/img/nolines_plus.gif
new file mode 100644 (file)
index 0000000..f258ce2
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/nolines_plus.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/page.gif b/trunk/NP_Dtree/dtree/img/page.gif
new file mode 100644 (file)
index 0000000..42d7318
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/page.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/plus.gif b/trunk/NP_Dtree/dtree/img/plus.gif
new file mode 100644 (file)
index 0000000..b2c9972
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/plus.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/plusbottom.gif b/trunk/NP_Dtree/dtree/img/plusbottom.gif
new file mode 100644 (file)
index 0000000..b5671d8
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/plusbottom.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/question.gif b/trunk/NP_Dtree/dtree/img/question.gif
new file mode 100644 (file)
index 0000000..dd4e685
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/question.gif differ
diff --git a/trunk/NP_Dtree/dtree/img/trash.gif b/trunk/NP_Dtree/dtree/img/trash.gif
new file mode 100644 (file)
index 0000000..cfa0f00
Binary files /dev/null and b/trunk/NP_Dtree/dtree/img/trash.gif differ
diff --git a/trunk/NP_ExtractImage/NP_ExtractImage.php b/trunk/NP_ExtractImage/NP_ExtractImage.php
new file mode 100644 (file)
index 0000000..35f6b2f
--- /dev/null
@@ -0,0 +1,262 @@
+<?php
+
+//history
+//     0.2:    $archive, $blogid and $catid suppot ($exmode=all ready)
+//                     echos 'no images' 
+//     0.3:    add strtolower 
+//                     Initialize $this->exquery
+//     0.5:    use createGlobalItemLink
+//                     sql_table support :-P
+       
+
+
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+
+
+class NP_ExtractImage extends NucleusPlugin {
+       function getName () {return 'ExtractImage'; }
+       function getAuthor () {return 'nakahara21'; }
+       function getURL () {return 'http://xx.nakahara21.net/';}
+       function getVersion () {return '0.5';}
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function getDescription () {
+               return 'Extract image in items, and embed these images.';
+       }
+
+       function install () {
+/*
+               $this->createOption('default_catname','Default Category Name.','text','');
+*/     
+       }
+
+       function init() {
+               $this->fileex = array('.jpg','.png');
+               $this->random = 1;
+       }
+       
+       function doSkinVar($skinType, $amount=10, $align = 'yoko', $hsize='60', $random=0, $exmode=0) {
+               global $CONF, $blog;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+               
+               if($amount=='') $amount = 10;
+               if($align=='') $align = 'yoko';
+               if($hsize=='') $hsize = 60;
+               if($align == 'tate') $wsize = $hsize;
+               if($exmode != 'all') $exmode = 0;
+               $this->exquery = '';
+
+               switch($skinType){
+                       case 'archive': 
+                               global $archive;
+                               sscanf($archive,'%4c-%2c-%2c',$year,$month,$day);
+                               if ($day == 0) {
+                                       $timestamp_start = mktime(0,0,0,$month,1,$year);
+                                       $timestamp_end = mktime(0,0,0,$month+1,1,$year);  // also works when $month==12
+                               } else {
+                                       $timestamp_start = mktime(0,0,0,$month,$day,$year);
+                                       $timestamp_end = mktime(0,0,0,$month,$day+1,$year);  
+                               }
+                               $this->exquery .= ' and itime>=' . mysqldate($timestamp_start)
+                                               . ' and itime<' . mysqldate($timestamp_end);
+
+//                     break;
+                       default:
+                               if(!$exmode){
+                                       $this->exquery .= ' and iblog =' . $b->getID();
+                                       global $catid;
+                                       if($catid)      $this->exquery .= ' and icat =' . $catid;
+                               }
+               }
+
+
+
+
+               $filelist = array();
+               $this->imglists = array();
+               $this->imgfilename = array();
+               if(!($filelist = $this->listup())){
+                       echo 'No images here.';
+                       return;
+               }
+//             print_r($filelist);
+               $amount = min($amount,count($filelist));
+               if($random){
+                       srand((float)microtime()*1000000);
+                       shuffle($filelist);
+               }
+
+               switch($align){
+                       case 'head':
+                               break;
+                       case 'tate':
+                               for($i=0;$i<$amount;$i++){
+                                       $itemlink = $this->createGlobalItemLink($filelist[$i][1], '');
+                                       echo '<div>';
+                                       echo '<a href="'.$itemlink.'">';
+                                       echo '<img src="'.$CONF['ActionURL'].'?action=plugin&name=ExtractImage&type=draw&p='.$filelist[$i][0][0].'&wsize='.$wsize.'" vspace="1"/>';
+                                       echo "</a></div>\n";
+                               }
+                               break;
+                       case 'yoko':
+                       default:
+                               echo '<div>';
+                               for($i=0;$i<$amount;$i++){
+                                       $itemlink =$this->createGlobalItemLink($filelist[$i][1], '');
+                                       echo '<a href="'.$itemlink.'">';
+                                       echo '<img src="'.$CONF['ActionURL'].'?action=plugin&name=ExtractImage&type=draw&p='.$filelist[$i][0][0].'&hsize='.$hsize.'" />';
+                                       echo "</a>\n";
+                               }
+                                       echo "</div>\n";
+                               break;
+                       
+               }
+       }
+
+       function listup(){
+               global $blog;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+
+               $query = 'SELECT inumber as itemid, ititle as title, ibody as body, iauthor, itime, imore as more,' ;
+               $query .= ' icat as catid, iclosed as closed' ;
+               $query .= ' FROM '.sql_table('item');
+               $query .= ' WHERE idraft=0';
+               $query .= ' and itime <=' . mysqldate($b->getCorrectTime());    // don't show future items!
+               $query .= $this->exquery;
+               $query .= ' ORDER BY itime DESC'; 
+//             echo $query;
+       
+               $res = sql_query($query);
+               
+               if(!mysql_num_rows($res)) return FALSE;
+               
+               while ($it = mysql_fetch_object($res)){
+                       $txt = $it->body.$it->more;
+                       preg_match_all("/\<\%image\((.*)\)\%\>/Us",$txt,$imgpnt,PREG_PATTERN_ORDER);
+                       @array_walk($imgpnt[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor));
+               }
+//             $list = array('http://blog.nakahara21.net/media/1/bbb.jpg','http://yukarin.s43.xrea.com/blog/media/1/20040616-146.jpg');
+               return $this->imglists;
+       }
+
+       function exarray($imginfo,$key,$iaid){
+               $imginfo = explode("|",$imginfo);
+//             if(strrchr($imginfo[0], "." ) != '.jpg') return;
+               if(!in_array(strtolower(strrchr($imginfo[0], "." )),$this->fileex)) return;
+               if(in_array($imginfo[0],$this->imgfilename)) return;
+               $this->imgfilename[] = $imginfo[0];
+               if (!strstr($imginfo[0],'/')) {
+                       $imginfo[0] = $iaid[1] . '/' . $imginfo[0];
+               }
+//             $this->imglists[] = $imginfo;
+               $this->imglists[] = array($imginfo,$iaid[0]);
+       }
+
+       function baseimageCreate($p,$im_info){
+               switch($im_info[2]){
+                       case 2:
+                       return ImageCreateFromJpeg($p);
+                       case 3:
+                       return ImageCreateFromPng($p);
+                       default:
+                       return;
+               }
+       }
+
+       function doAction($type) {
+               global $CONF;
+               global $DIR_MEDIA;
+               $return = serverVar('HTTP_REFERER');
+               switch($type) {
+                       case draw:
+                               if(!requestVar('p')) return;
+                               $p = $DIR_MEDIA.requestVar('p');        //\8c³\89æ\91\9c\82Ö\82Ì\83p\83X
+//                             $id= requestVar('id');
+               
+                               //\8c³\89æ\91\9c\82Ì\8fî\95ñ\82ð\93¾\82é
+                               $this->im_info = GetImageSize($p);
+               
+                               $tsize['h'] = requestVar('hsize');
+                               if(!$tsize['h'] && requestVar('wsize')){
+                                       $tsize['w'] = requestVar('wsize');
+                                       $tsize['h'] = intval($this->im_info[1] * $tsize['w'] / $this->im_info[0]);
+                               }
+                               if(!$tsize['h']) $tsize['h'] = 50;
+                               
+                               if(!$tsize['w']) $tsize['w'] = intval($this->im_info[0] * $tsize['h'] / $this->im_info[1]);
+
+                               $im_r = $this->baseimageCreate($p,$this->im_info);
+                               $im = ImageCreateTrueColor($tsize['w'],$tsize['h']);
+                               ImageCopyResampled( $im, $im_r, 0, 0, 0, 0, $tsize['w'], $tsize['h'], $this->im_info[0], $this->im_info[1] );
+
+                               switch($this->im_info[2]){
+                                       case 2:
+                                       header ("Content-type: image/jpeg");
+                                       ImageJpeg($im);
+                                       imagedestroy($im);
+                                       break;
+                                       case 3:
+                                       header ("Content-type: image/png");
+                                       ImagePng($im);
+                                       imagedestroy($im);
+                                       break;
+                                       default:
+                                       return;
+                               }
+                       break;
+
+                       default:
+                               Header('Location: ' . $return);
+                               break;
+//_=======
+               }
+       }
+
+       function canEdit() {
+               global $member, $manager;
+               if (!$member->isLoggedIn()) return 0;
+               return $member->isAdmin();
+       }
+
+
+       function createGlobalItemLink($itemid, $extra = '') {
+               global $CONF, $manager;
+
+               if ($CONF['URLMode'] == 'pathinfo'){
+                       $link = $CONF['ItemURL'] . '/item/' . $itemid;
+               }else{
+                       $blogid = getBlogIDFromItemID($itemid);
+                       $b_tmp =& $manager->getBlog($blogid);
+                       $blogurl = $b_tmp->getURL() ;
+                       if(!$blogurl){
+                               $blogurl = $CONF['IndexURL'];
+                       }
+                       if(substr($blogurl, -4) != '.php'){
+                               if(substr($blogurl, -1) != '/')
+                                       $blogurl .= '/';
+                               $blogurl .= 'index.php';
+                       }
+                       $link = $blogurl . '?itemid=' . $itemid;
+               }
+               return addLinkParams($link, $extra);
+       }
+
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_FootNote/NP_FootNote.php b/trunk/NP_FootNote/NP_FootNote.php
new file mode 100644 (file)
index 0000000..8be73df
--- /dev/null
@@ -0,0 +1,97 @@
+<?php 
+/* 
+NP_FootNote 
+はてなダイアリーなどで使用される脚注を作成するプラグイン。 
+本文中に(())で囲まれたフレーズがあると、脚注として表示します。 
+もとのデータ自体は変更せず、パースする際に変換しています。 
+
+変更履歴 
+0.3:注釈がない記事にも無駄なコードを追加していたバグ修正。
+0.2:拡張領域に入力がない場合無駄なコードを追加していたバグ修正。
+0.1+:本文と拡張文とで注解を分ける指定をオプションに追加。
+0.1:本文注の部分に入ったAタグのtitle属性から不要な文字を削除するようにした。またこの部分の表示/非表示を切り替えるオプションを追加。 
+0.06:同じ行に(())があると一つの注としてまとめられるバグを修正。注内部での改行をサポート。 
+0.05:拡張領域のみに注がある場合に注が表示されないバグを修正。 
+0.04:拡張領域への注に対応。注がある場合には拡張領域に注を表示するようにした。 
+0.03:とりあえず版リリース。 
+
+*/ 
+class NP_FootNote extends NucleusPlugin { 
+
+    function getName() { 
+        return 'Foot Note Plugin.';  
+    } 
+    function getAuthor()  {  
+        return 'charlie + nakahara21';  
+    } 
+    function getURL()  
+    { 
+        return 'http://xx.nakahara21.net/';  
+    } 
+    function getVersion() { 
+        return '0.3';  
+    } 
+    function getDescription() {  
+        return 'はてな、Wikiで使用される脚注を生成するプラグインです。本文中に((と))で囲まれたフレーズがあると、脚注として表示します。'; 
+    } 
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+
+       function install() { 
+               $this->createOption('CreateTitle','本文注のリンクにTitle属性を付加しますか?','yesno','yes'); 
+               $this->createOption('Split','本文と拡張文で注解を分けますか?(アイテムページは常にまとめて最下部になります)','yesno','no'); 
+       } 
+
+       function getEventList() { 
+               return array('PreItem','PreSkinParse'); 
+       } 
+
+       function event_PreSkinParse($data) { 
+               $this->type = $data['type'];
+       }
+
+       function event_PreItem($data) { 
+               global $i, $id, $notelist;
+               $this->currentItem = &$data["item"]; 
+               $i =0;
+               $notelist = array();
+               $id = $this->currentItem->itemid;
+               $this->currentItem->body = preg_replace_callback("/\(\((.*)\)\)/Us", array(&$this, 'footnote'), $this->currentItem->body); 
+               if($this->getOption('Split') == 'yes' && $this->type != 'item'){
+                       if($footnote = @join('',$notelist))
+                               $this->currentItem->body .= '<ul class="footnote">' . $footnote . '</ul>';
+                       $notelist = array();
+               }
+               if($this->currentItem->more){
+                       $this->currentItem->more = preg_replace_callback("/\(\((.*)\)\)/Us", array(&$this, 'footnote'), $this->currentItem->more); 
+                       if($footnote = @join('',$notelist))
+                               $this->currentItem->more .= '<ul class="footnote">' . $footnote . '</ul>';
+               }elseif($footnote = @join('',$notelist)){
+                       $this->currentItem->body .= '<ul class="footnote">' . $footnote . '</ul>';
+               }
+       } 
+
+       function footnote($matches){
+               global $i, $id, $notelist;
+               $i++;
+               if($this->getOption('CreateTitle') == 'yes'){
+                       $fnote2 = htmlspecialchars(strip_tags($matches[1]));
+                       $fnote2 = preg_replace('/\r\n/s','',$fnote2);
+                       $fnote2 = ' title="'.$fnote2.'"';
+               }else{
+                       $fnote2 = '';
+               }
+               $note = '<span class="footnote"><a href="#'.$id.'-'.$i.'"'.$fnote2.'>*'.$i.'</a><a name="'.$id.'-'.$i.'f"></a></span>';
+               $notelist[] = '<a name="'.$id.'-'.$i.'"></a>'.'<li><a href="#'.$id.'-'.$i.'f">注'.$i.'</a>'.$matches[1].'</li>';
+               return $note;
+       
+       }
+} 
+?>
\ No newline at end of file
diff --git a/trunk/NP_GoogleHistory/NP_GoogleHistory.php b/trunk/NP_GoogleHistory/NP_GoogleHistory.php
new file mode 100644 (file)
index 0000000..8d43cce
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+class NP_GoogleHistory extends NucleusPlugin {
+       function getName() { return 'My GoogleHistory'; }
+       function getAuthor()  { return 'nakahara21'; }
+       function getURL() { return 'http://xx.nakahara21.net/'; }
+       function getVersion() { return '0.3'; }
+       function getDescription() { return 'Show history og google keywords'; }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+       function install() {
+               $this->createOption("ex", "extension of logfile (ex: log):", "text", "log");
+       }
+
+       function init(){
+               global $CONF;
+               $this->logdir = $this->getDirectory();
+               $this->month = date("Y-m");
+               $this->logfile = $this->logdir.$this->month.'.'.$this->getOption("ex");
+       }
+
+       function doSkinVar($skinType, $show="gform", $maxtoshow = 5) {
+               global $CONF;
+
+               if($show=="list"){
+                       $this->showGwordList($maxtoshow);
+               }
+               if($show=="gform"){
+?>
+<div>
+<form method="post" action="<?php echo $CONF['ActionURL'] ?>" target="_blank">
+<input type="hidden" name="action" value="plugin" />
+<input type="hidden" name="name" value="GoogleHistory" />
+<input type="hidden" name="type" value="gsearch" />
+<input type="text" value="" name="gword" size="15" />
+<input type="submit" value="!" />
+</form>
+</div>
+<?php
+               }
+               
+       }
+
+       function doAction($type) {
+               $gword = requestVar('gword');
+               switch ($type) {
+                       case 'gsearch':
+                               $this->saveGword($gword);
+                               $gurl = $this->makeGurl($gword);
+                               header('Location: ' . $gurl);
+                               break;
+                       default:
+                               return 'Unexisting action: ' . $type;
+               }
+               exit;
+       }
+
+       function makeGurl($gword) {
+               $en_gword = mb_convert_encoding($gword, "UTF-8", _CHARSET);
+               $gurl = 'http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q='.urlencode($en_gword);
+               return $gurl;
+       }
+
+       function saveGword($gword) {
+               $time = time();
+               $gword = mb_convert_encoding($gword, "sjis", "UTF-8");
+               $arr_data = Array($gword,$time);
+
+               $fp = @fopen($this->logfile,"a+");
+               if (!$fp) {
+                       if(!is_dir($this->logdir)) die("No such directory : ".$this->logdir."\n");
+                       if(!is_writable($this->logdir)) die("Cannot write to this directory : ".$this->logdir."\n");
+                       die("ERROR\n");
+               }
+               $tmp = fread ($fp, filesize ($this->logfile));
+               ftruncate($fp,0);
+               rewind($fp);
+               fputs($fp,@join("\t",$arr_data)."\n");
+               fputs($fp,$tmp);
+               fclose($fp);
+       }
+
+       function readlog($maxtoshow){
+               if( $handle = opendir($this->logdir)){
+                       while( false !== $file = readdir($handle)){
+                               sscanf($file,"%4s-%2s.%s", $y, $m, $ex);
+                               if(checkdate($m,1,$y) && $ex == $this->getOption("ex")){
+                                       $filelist[] = $file;
+                               }
+                       }
+                       closedir($handle);
+               }
+               $log = array();
+               for($i=0;$this->num<$maxtoshow;$i++){
+                       if($filelist[$i]){
+                               $data = @file($this->logdir.$filelist[$i]);
+                               $this->num += count($data);
+                               $log = array_merge($log, $data);
+                       }else{
+                               break;
+                       }
+               }
+                       return $log;
+       }
+
+       function showGwordList($maxtoshow){
+               $log = $this->readlog($maxtoshow);
+               if(($amount = min($maxtoshow, $this->num)) >0){
+                       for($i=0;$i<$amount;$i++){
+                               list($word,$timestamp) = explode("\t",$log[$i]);
+                               $word = mb_convert_encoding($word, _CHARSET, "sjis");
+                               $gtime = date("Y-m-d H:i",$timestamp);
+                               $gurl = $this->makeGurl($word);
+                               echo '<li><a href="'.$gurl.'" target="_blank">'.$word.'</a> '.$gtime.'</li>';
+                       }
+               }
+       }
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_GoogleHistory/googlehistory/dummy.txt b/trunk/NP_GoogleHistory/googlehistory/dummy.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/trunk/NP_GoogleRank/NP_GoogleRank.php b/trunk/NP_GoogleRank/NP_GoogleRank.php
new file mode 100644 (file)
index 0000000..152f14d
--- /dev/null
@@ -0,0 +1,132 @@
+<?
+
+class NP_GoogleRank extends NucleusPlugin{
+
+       function getName(){return 'GoogleRank';}
+       function getAuthor(){return 'nakahara21';}
+       function getURL(){return 'http://nakahara21.com/';}
+       function getVersion(){return '0.50';}
+       function getDescription(){return 'Embed GoogleRank';}
+       function supportsFeature ($what){
+               switch ($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                       return 0;
+               }
+       }
+       
+       function init(){
+               define('GOOGLE_MAGIC', 0xE6359A60);
+       }
+
+       function doSkinVar($skinType, $opt){
+               if(serverVar('REQUEST_URI')==''){
+                       $uri = (serverVar("QUERY_STRING"))? 
+                               sprintf("%s%s%s?%s", "http://", serverVar("HTTP_HOST"), serverVar("SCRIPT_NAME"), serverVar("QUERY_STRING") ):
+                               sprintf("%s%s%s","http://",serverVar("HTTP_HOST"),serverVar("SCRIPT_NAME"));
+               } else { 
+                       $uri = sprintf("%s%s%s","http://",serverVar("HTTP_HOST"),serverVar("REQUEST_URI")); 
+               }
+               $uri = 'info:' . $uri;
+               $temp = $this->strord($uri);
+               $ch = $this->GoogleCH($temp);
+               $chv = '6'.sprintf("%u", $ch);
+
+               $rankxmlurl =  'http://' . 'www.google.co.jp/search?client=navclient-auto&ch=' . $chv . '&q=' . $uri;
+               $rankdataurl =  $rankxmlurl . '&features=Rank';
+               echo '<a href="'.$rankxmlurl.'">check</a>';
+
+               $result = @file($rankdataurl);
+               if(!$result) return;
+
+               $data = @join( "", $result );
+               $e = preg_replace('/\s/',"",substr( strrchr( $data, ":" ), 1));
+               echo '<img src="'.$this->getAdminURL().'imgs/'.$e.'.gif" alt="Google PageRank" title="Google PageRank ('.$e.'/10)" />';
+
+       }
+
+//unsigned shift right
+function zeroFill($a, $b) {
+       $z = hexdec(80000000);
+
+       if ($z & $a) {
+               $a = ($a>>1);
+               $a &= (~$z);
+               $a |= 0x40000000;
+               $a = ($a>>($b-1));
+       } else {
+               $a = ($a>>$b);
+       }
+
+       return $a;
+}
+
+function mix($a,$b,$c) {
+       $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,13));
+       $b -= $c; $b -= $a; $b ^= ($a<<8);
+       $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
+       $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
+       $b -= $c; $b -= $a; $b ^= ($a<<16);
+       $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
+       $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
+       $b -= $c; $b -= $a; $b ^= ($a<<10);
+       $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15));
+
+       return array($a,$b,$c);
+}
+
+function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
+       if(is_null($length)) {
+               $length = sizeof($url);
+       }
+       $a = $b = 0x9E3779B9;
+       $c = $init;
+       $k = 0;
+       $len = $length;
+    while ($len >= 12) {
+               $a += ($url[$k+0] + ($url[$k+1]<<8) + ($url[$k+2]<<16) + ($url[$k+3]<<24));
+               $b += ($url[$k+4] + ($url[$k+5]<<8) + ($url[$k+6]<<16) + ($url[$k+7]<<24));
+               $c += ($url[$k+8] + ($url[$k+9]<<8) + ($url[$k+10]<<16) + ($url[$k+11]<<24));
+               $mix = $this->mix($a,$b,$c);
+               $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
+               $k += 12;
+               $len -= 12;
+       }
+
+       $c += $length;
+       /* all the case statements fall through */
+       switch($len) { 
+               case 11: $c+=($url[$k+10]<<24);
+               case 10: $c+=($url[$k+9]<<16);
+               case 9 : $c+=($url[$k+8]<<8);
+               /* the first byte of c is reserved for the length */ 
+               case 8 : $b+=($url[$k+7]<<24);
+               case 7 : $b+=($url[$k+6]<<16);
+               case 6 : $b+=($url[$k+5]<<8);
+               case 5 : $b+=($url[$k+4]);
+               case 4 : $a+=($url[$k+3]<<24);
+               case 3 : $a+=($url[$k+2]<<16);
+               case 2 : $a+=($url[$k+1]<<8);
+               case 1 : $a+=($url[$k+0]);
+               /* case 0: nothing left to add */
+       }
+    $mix = $this->mix($a,$b,$c);
+    /*-------------------------------------------- report the result */ 
+    return $mix[2]; 
+} 
+
+//converts a string into an array of integers containing the numeric value of the char 
+function strord($string) { 
+       for ($i = 0; $i < strlen($string); $i++) {
+               $result[$i] = ord($string{$i});
+       }
+       return $result;
+}
+
+
+
+
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/0.gif b/trunk/NP_GoogleRank/googlerank/imgs/0.gif
new file mode 100644 (file)
index 0000000..87f9b93
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/0.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/1.gif b/trunk/NP_GoogleRank/googlerank/imgs/1.gif
new file mode 100644 (file)
index 0000000..ff8422f
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/1.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/10.gif b/trunk/NP_GoogleRank/googlerank/imgs/10.gif
new file mode 100644 (file)
index 0000000..626d964
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/10.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/2.gif b/trunk/NP_GoogleRank/googlerank/imgs/2.gif
new file mode 100644 (file)
index 0000000..09f2f7b
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/2.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/3.gif b/trunk/NP_GoogleRank/googlerank/imgs/3.gif
new file mode 100644 (file)
index 0000000..5d2ec70
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/3.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/4.gif b/trunk/NP_GoogleRank/googlerank/imgs/4.gif
new file mode 100644 (file)
index 0000000..ffdbfc5
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/4.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/5.gif b/trunk/NP_GoogleRank/googlerank/imgs/5.gif
new file mode 100644 (file)
index 0000000..19c250b
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/5.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/6.gif b/trunk/NP_GoogleRank/googlerank/imgs/6.gif
new file mode 100644 (file)
index 0000000..fd5217d
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/6.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/7.gif b/trunk/NP_GoogleRank/googlerank/imgs/7.gif
new file mode 100644 (file)
index 0000000..02d38fb
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/7.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/8.gif b/trunk/NP_GoogleRank/googlerank/imgs/8.gif
new file mode 100644 (file)
index 0000000..b3e9507
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/8.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/9.gif b/trunk/NP_GoogleRank/googlerank/imgs/9.gif
new file mode 100644 (file)
index 0000000..5d6659d
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/9.gif differ
diff --git a/trunk/NP_GoogleRank/googlerank/imgs/n.gif b/trunk/NP_GoogleRank/googlerank/imgs/n.gif
new file mode 100644 (file)
index 0000000..4bf7dd7
Binary files /dev/null and b/trunk/NP_GoogleRank/googlerank/imgs/n.gif differ
diff --git a/trunk/NP_HighlightSource/NP_HighlightSource.php b/trunk/NP_HighlightSource/NP_HighlightSource.php
new file mode 100644 (file)
index 0000000..f57e45e
--- /dev/null
@@ -0,0 +1,99 @@
+<?
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('removeBreaks')){
+       function removeBreaks($var) {                   return preg_replace("/<br \/>([\r\n])/","$1",$var); }
+}
+
+class NP_HighlightSource extends NucleusPlugin {
+
+function getName() { return 'HighlightSource';    }
+function getAuthor() { return 'nakahara21';    }
+function getURL() { return 'http://xx.nakahara21.net'; }
+function getVersion() { return '0.8'; }
+function getDescription() { return 'HighlightSource'; }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function install() {
+               $this->createOption("Li", "Show line number?", "yesno", "no");
+       }
+
+       function getEventList() { return array('PreItem'); }
+
+       function event_PreItem($data){
+               $this->currentItem = &$data["item"]; 
+               $this->currentItem->more = preg_replace("/(<\/hs>)<br \/>\r\n/","$1",$this->currentItem->more);
+               $this->currentItem->body = preg_replace_callback('#<hs>(.*?)<\/hs>#s', array(&$this, 'phpHighlight'), $this->currentItem->body); 
+               $this->currentItem->more = preg_replace_callback('#<hs>(.*?)<\/hs>#s', array(&$this, 'phpHighlight'), $this->currentItem->more);
+       }
+
+       function phpHighlight($matches){
+               ini_set('highlight.string', '#CC0000'); //#CC0000 default
+               ini_set('highlight.comment', '#FF9900');        //#FF9900 default
+               ini_set('highlight.keyword', '#006600');        //#006600 default
+               ini_set('highlight.bg', '#dddddd');     //#dddddd default
+               ini_set('highlight.default', '#0000CC');        //#0000CC default
+               ini_set('highlight.html', '#000000');   //#000000 default
+               
+               $code = trim(removeBreaks($matches[1]), "\r,\n"); 
+               
+               if(substr(trim($code),0,2) != "<?"){
+                       $code = "<?php\n".$code;
+                       $sflag = 1;
+               }
+               if(substr(trim($code),-2,2) != "?>"){
+                       $code = $code."\n?>";
+                       $eflag = 1;
+               }
+
+//             $code = stripslashes($code);
+               $code = highlight_string($code, true);
+               
+               $source = explode('<br />', $code);
+               for($i=0;$i<count($source);$i++){
+                       $precode = $source[$i];
+                       $source[$i] = $precolor.trim($source[$i])."</font>";
+                       $source[$i] = preg_replace("/<font color\=\"#([a-z|A-Z|0-9]+)\"><\/font>/s","&nbsp;",$source[$i]);
+                       $ppp = preg_match_all("/<font color\=\"#([a-z|A-Z|0-9]+)\">/s",$precode,$pmat,PREG_SET_ORDER);
+                       if($pmat){
+                               $las = count($pmat) - 1;
+                               $pcolor = $pmat[$las][1];
+                       }
+                       $precolor = '<font color="#'.$pcolor.'">';
+               } 
+               $code = @join("<br />\n", $source) ;
+
+               if($sflag)
+                       $code = ereg_replace("(<code><font color\=\"#[a-z|A-Z|0-9]+\">)([\r\n])(<font color\=\"#[a-z|A-Z|0-9]+\">)&lt;\?php<br />\n</font>", '\\1<!--hss-->', $code);
+               else
+                       $code = ereg_replace("(<code><font color\=\"#[a-z|A-Z|0-9]+\">)([\r\n])", '\\1<!--hss-->', $code);
+
+               if($eflag)
+                       $code = ereg_replace("<br />\n</font><font color\=\"#([a-z|A-Z|0-9]+)\">\?&gt;</font>\n</font>\n</code>", "</font><!--hss--></font></code>", $code);
+               else
+                       $code = ereg_replace("</font>\n</font>\n</code>", "</font><!--hss--></font></code>", $code);
+
+               if($this->getOption('Li') == 'no')
+                       return '<div class="code">'.$code.'</div>';
+
+               $code = explode('<!--hss-->', $code);
+                       $source = explode('<br />', $code[1]);
+                       for($i=0;$i<count($source);$i++){
+                               $source[$i] = '<li>'.trim($source[$i]).'</li>';
+                       } 
+                       $text = '<div class="code">';
+                       $text .= $code[0];
+                       $text .= "<ol>". @join('', $source) . "\n</ol>";
+                       $text .= $code[2];
+                       $text .= '</div>';
+
+               return $text;
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_ImageCalendar/NP_ImageCalendar.php b/trunk/NP_ImageCalendar/NP_ImageCalendar.php
new file mode 100644 (file)
index 0000000..8d829fd
--- /dev/null
@@ -0,0 +1,453 @@
+<?php
+
+//history
+//     0.2:    $archive, $blogid and $catid suppot ($exmode=all ready)
+//                     echos 'no images' 
+//     0.3:    add strtolower 
+//                     Initialize $this->exquery
+//     0.4:    change css
+//                     allblogmode ready
+//     0.5:    use createGlobalArchiveLink
+//                     sql_table support :-P
+//     0.6:    support gif format
+//                     print archive month for the first
+//     0.7:    linkmode: [0]archive day link, [1]item link for the image
+
+
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+
+class NP_ImageCalendar extends NucleusPlugin {
+       function getName () {return 'ImageCalendar'; }
+       function getAuthor () {return 'nakahara21'; }
+       function getURL () {return 'http://nakahara21.com/';}
+       function getVersion () {return '0.7';}
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function getDescription () {
+               return 'Embed the image of day into Calendar.';
+       }
+
+       function install () {
+/*
+               $this->createOption('default_catname','Default Category Name.','text','');
+*/     
+       }
+
+       function init() {
+               $this->fileex = array('.gif','.jpg','.png');
+               $this->linkmode = 0; // create link for image [0]archive day link, [1]item link for the image
+//             $this->random = 1;
+       }
+       
+       function doSkinVar($skinType, $cnt=1, $wsize=50, $hsize=35, $point=0, $exmode=0) {
+               global $CONF, $blog;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+               
+               if($cnt=='') $cnt = 1;
+               if($hsize=='') $hsize = 80;
+               if($wsize=='') $wsize = 80;
+               if($exmode != 'all') $exmode = 0;
+               if($point != 'lefttop') $point = 0;
+               $this->exquery = '';
+
+               switch($skinType){
+                       case 'archive': 
+                               global $archive;
+                               sscanf($archive,'%4c-%2c-%2c',$year,$month,$day);
+                               if ($day == 0) {
+                                       $timestamp_start = mktime(0,0,0,$month,1,$year);
+                                       $timestamp_end = mktime(0,0,0,$month+1,1,$year);  // also works when $month==12
+                               } else {
+                                       $timestamp_start = mktime(0,0,0,$month,$day,$year);
+                                       $timestamp_end = mktime(0,0,0,$month,$day+1,$year);  
+                               }
+                               $this->exquery .= ' and itime>=' . mysqldate($timestamp_start)
+                                               . ' and itime<' . mysqldate($timestamp_end);
+                               $monthForPrint = getDate(mktime (0,0,0,$month,1, $year));
+
+
+//                     break;
+                       default:
+                               if(!$exmode){
+                                       $this->exquery .= ' and iblog =' . $b->getID();
+                                       global $catid;
+                                       if($catid)      $this->exquery .= ' and icat =' . $catid;
+                               }
+               }
+
+
+               $filelist = array();
+               $this->imglists = array();
+               $this->imgfilename = array();
+               if(!($filelist = $this->listup())){
+                       echo 'No images here.';
+                       return;
+               }
+//             print_r($filelist);
+/*
+               echo '<div>';
+               foreach($filelist as $key => $value){
+//                     $itemlink = createItemLink($value[1], '');
+                       $archivedaylink = createArchiveLink($b->getID(),$key,'');
+                       
+                       $exq = '';
+                       if($point)      $exq = '&pnt=lefttop';
+                               
+                       echo '<a href="'.$archivedaylink.'">';
+                       echo '<img src="'.$CONF['ActionURL'].'?action=plugin&name=ImageCalendar&type=draw&p='.$value[0].'&wsize='.$wsize.'&hsize='.$hsize.$exq.'" />';
+                       echo "</a>\n";
+               }
+               echo "</div>\n";
+*/
+
+
+//==Calendar start==============
+       $waku = '#9fdf9f';
+       $waku = '#e8e9da';
+       $wakurgb = $this->func_SetRgbValueFromHex($waku);
+       $wakugr = $this->func_GetRgbFamilyFromRgb($waku,3,23,5);
+//     print_r($wakugr);
+?>
+<style type="text/css">
+<!--
+       table.imgcalendar th{
+               FONT-FAMILY: verdana, arial, sans-serif;
+               FONT-WEIGHT: bold;
+               FONT-SIZE: 9px;
+               text-align:center;
+               background-color:<?php echo $waku; ?>;
+               color:RGB(<?php echo $wakugr[9]; ?>);
+       }
+       table.imgcalendar th.monthname{
+               text-align:center;
+               background-color:RGB(<?php echo $wakugr[2]; ?>);
+               border:0px solid RGB(<?php echo $wakugr[2]; ?>);
+       }
+       td.empcell{
+               width : <?php echo $wsize; ?>px;
+               height : <?php echo $hsize; ?>px;
+               Vertical-align: middle;
+               text-align: center;
+               padding:0px;
+               margin:1px;
+               background-color:none;
+               border: 1px solid RGB(<?php echo $wakurgb; ?>);
+               FONT-FAMILY: verdana, arial, sans-serif;
+               FONT-WEIGHT: bold;
+               FONT-SIZE: 9px;
+               COLOR: <?php echo $waku; ?>;
+       }
+       td.imgcell{
+               width : <?php echo $wsize; ?>px;
+               Vertical-align: top;
+               text-align: left;
+               padding:0px;
+               margin:1px;
+               background-color:RGB(<?php echo $wakugr[8]; ?>);
+               border: 1px solid <?php echo $waku; ?>;
+       }
+       .cellimg {
+               MARGIN-TOP: 0px;
+               MARGIN-LEFT: 0px;
+               POSITION: absolute;
+       }
+       .cellspacer{
+               height : <?php echo $hsize; ?>px;
+       }
+       p.anchor{
+               width : <?php echo $wsize; ?>px;
+               height : <?php echo $hsize; ?>px;
+               background-color:silver;
+       }
+       div.d{
+               FONT-FAMILY: verdana, arial, sans-serif;
+               FONT-WEIGHT: bold;
+               FONT-SIZE: 9px;
+               COLOR: RGB(<?php echo $wakugr[2]; ?>);
+               background-color:#fff;
+               border-right: 1px solid <?php echo $waku; ?>;
+               border-bottom: 1px solid <?php echo $waku; ?>;
+               width:2em;
+               TEXT-ALIGN: center;
+               z-index:2;
+               POSITION: absolute;
+       }
+-->
+</style>
+<?php
+       $monthForPrint = ($monthForPrint)? $monthForPrint: getDate($b->getCorrectTime());
+
+for($a=0;$a<$cnt;$a++){
+       $p_month = date("Y-m",mktime(0,0,0,$monthForPrint['mon']-$a,1,$monthForPrint['year']));
+       sscanf($p_month,'%4c-%2c',$year,$month);
+       $date = getDate(mktime (0,0,0,$month,1, $year));
+       $d = 1; 
+       $out = '<table class="imgcalendar"><tr><th colspan="7" class="monthname">'.$p_month.'</th></tr><tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr><tr>';
+       while (checkdate($date['mon'], $d, $date['year'])){
+               $p = date("w",mktime(0,0,0,$date['mon'],$d,$date['year']));
+               $di = date("Y-m-d",mktime(0,0,0,$date['mon'],$d,$date['year']));
+               if($d == 1) for($s=0;$s<$p;$s++){ $out .= '<td class="empcell">*</td>';}        // filling
+               if(!$p) $out .= "</tr><tr>";
+               $out .= '<td class="imgcell">';
+
+               if($filelist[$di]){
+                       if($this->linkmode){
+                               $linkurl = createItemLink($filelist[$di][1],'');
+                               $itemtitle = quickQuery('SELECT ititle as result FROM '.sql_table('item').' WHERE inumber='.intval($filelist[$di][1]));
+                               $alt = shorten(strip_tags($itemtitle),25,'..');
+                       }else{
+                               $linkurl = $this->createGlobalArchiveLink($filelist[$di][2],$di,'');
+                               $alt = $di;
+                       }
+                               
+                       $out .= '<div class="d">'.$d.'</div>';
+                       $out .= '<DIV class=cellimg>';
+                       $out .= '<a href="'.$linkurl.'">';
+                       $out .= '<img src="'.$CONF['ActionURL'].'?action=plugin&amp;name=ImageCalendar&amp;type=draw&amp;p='.$filelist[$di][0].'&amp;wsize='.$wsize.'&amp;hsize='.$hsize.'" alt="'.$alt.'" />';
+                       $out .= '</a>';
+                       $out .= '</div>';
+               }else{
+                       $out .= '<div class="d">'.$d.'</div>';
+               }
+
+
+               $out .= '<div class="cellspacer">&#160;<div>';
+               $out .= '</td>';
+               if($d == date("t",mktime(0,0,0,$date['mon'],$d,$date['year']))) for($s=$p+1;$s<=6;$s++){ $out .= '<td class="empcell">*</td>';} // filling
+               $d++;
+       }
+       $out .= '</tr></table>';
+       echo $out;
+}
+//==Calendar end==============
+
+       }
+
+//==color manegagement start==========
+function func_SetRgbValueFromHex ($pHexColor)
+{
+       // INPUT :
+       // $pHexColor : ie #339933
+       // OUTPUT :
+       // return rgb array
+       // Source : Rini Setiadarma, http://www.oodie.com/
+
+       $l_returnarray = array ();
+       $pHexColor = str_replace ("#", "", $pHexColor);
+       for ($l_counter=0; $l_counter<3; $l_counter++){ 
+               $l_temp = substr($pHexColor, 2*$l_counter, 2); 
+               $l_returnarray[$l_counter] = 16 * hexdec(substr($l_temp, 0, 1)) + hexdec(substr($l_temp, 1, 1)); 
+       } 
+       return implode(",",$l_returnarray);
+}
+
+function func_GetRgbFamilyFromRgb ($pHexColor, $pPrimary, $pIncrement, $pNum){
+       
+       $rgbarr = array();
+       $pHexColor = str_replace ("#", "", $pHexColor);
+       for ($l=0; $l<3; $l++){ 
+               $l_temp = substr($pHexColor, 2*$l, 2); 
+               $rgbarr[$l] = 16 * hexdec(substr($l_temp, 0, 1)) + hexdec(substr($l_temp, 1, 1)); 
+       } 
+       $pRgbColor = implode(",",$rgbarr);
+       
+       
+       // INPUT :
+       // $pRgbColor : ie 255,255,255 ; $pPrimary = pos. int (0-3); $pIncrement = pos. int ; $pNum = pos. int
+       // OUTPUT :
+       // array family from input
+       
+       $l_returnarray = array();
+       $l_rgbarray = explode (",",$pRgbColor);
+       if (($l_rgbarray != array ()) AND (count ($l_rgbarray) == 3))
+       {       
+               $l_start = $l_basevalue - ($pNum*$pIncrement);
+               $l_end = $l_basevalue + ($pNum*$pIncrement);
+               If ($pPrimary == 3)
+               {
+                       $l_startin = 0;
+                       $l_endin = 2;
+               } else {
+                       $l_startin = $pPrimary;
+                       $l_endin = $pPrimary;
+               }
+               for ($l_counter=$l_start;$l_counter<$l_end;$l_counter = $l_counter+$pIncrement)
+               {
+                       $l_rgbarraytemp = $l_rgbarray;
+                       for ($l_counterint=$l_startin;$l_counterint<=$l_endin;$l_counterint++){
+                               $l_value = $l_rgbarray[$l_counterint]+$l_counter;
+                               if ($l_value < 0) $l_value = 0;
+                               if ($l_value > 255) $l_value = 255;
+                               $l_rgbarraytemp[$l_counterint] = $l_value;
+                       }
+                       if ($l_rgbarraytemp != array ()) $l_returnarray[] = implode (",",$l_rgbarraytemp);
+               }
+       }
+       return $l_returnarray;
+}
+
+//==color manegagement end==========
+
+
+       function listup(){
+               global $blog;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+
+               $query = 'SELECT inumber as itemid, ititle as title, ibody as body, iauthor, itime, imore as more, iblog, ' ;
+               $query .= ' icat as catid, iclosed as closed' ;
+               $query .= ' FROM '.sql_table('item');
+               $query .= ' WHERE idraft=0';
+               $query .= ' and itime <=' . mysqldate($b->getCorrectTime());    // don't show future items!
+               $query .= $this->exquery;
+               $query .= ' ORDER BY itime DESC'; 
+       
+               $res = sql_query($query);
+               
+               if(!mysql_num_rows($res)) return FALSE;
+               
+               while ($it = mysql_fetch_object($res)){
+                       $txt = $it->body.$it->more;
+                       $item_ymd = date("Y-m-d",strtotime($it->itime));
+                       preg_match_all("/\<\%image\((.*)\)\%\>/Us",$txt,$imgpnt,PREG_PATTERN_ORDER);
+                       @array_walk($imgpnt[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor,$item_ymd,$it->iblog));
+               }
+               return $this->imglists;
+       }
+
+       function exarray($imginfo,$key,$iaid){
+               $imginfo = explode("|",$imginfo);
+               if(!in_array(strtolower(strrchr($imginfo[0], "." )),$this->fileex)) return;
+//             if(in_array($imginfo[0],$this->imgfilename)) return;
+//             $this->imgfilename[] = $imginfo[0];
+               list($iid,$auid,$item_ymd,$iblog) = $iaid;
+               if (!strstr($imginfo[0],'/')) {
+                       $imginfo[0] = $auid . '/' . $imginfo[0];
+               }
+//             $this->imglists[] = array($imginfo,$iaid[0]);
+//             $this->imglists[] = array($imginfo[0],$iaid[0],$iaid[2]);
+               $this->imglists[$item_ymd] = array($imginfo[0],$iid,$iblog);
+       }
+
+       function baseimageCreate($p,$imgtype){
+               switch($imgtype){
+                       case 1:
+                       return ImageCreateFromGif($p);
+                       case 2:
+                       return ImageCreateFromJpeg($p);
+                       case 3:
+                       return ImageCreateFromPng($p);
+                       default:
+                       return;
+               }
+       }
+
+       function doAction($type) {
+               global $CONF;
+               global $DIR_MEDIA;
+               $return = serverVar('HTTP_REFERER');
+               switch($type) {
+                       case draw:
+                               if(!requestVar('p')) return;
+                               $p = $DIR_MEDIA.requestVar('p');        //path
+               
+                               list($imgwidth, $imgheight, $imgtype) = GetImageSize($p);
+               
+                               $tsize['w'] = requestVar('wsize');
+                               $tsize['h'] = requestVar('hsize');
+                               $point = requestVar('pnt');
+                               
+                               if($imgwidth / $imgheight < $tsize['w'] / $tsize['h']){ // height longer
+                                       $trimX = 0;
+                                       $trimW = $imgwidth;
+                                       $trimH = intval($tsize['h']/$tsize['w']*$imgwidth);
+                                       $trimY = intval(($imgheight - $trimH) / 2);
+                               }else{ // width longer
+                                       $trimY = 0;
+                                       $trimH = $imgheight;
+                                       $trimW = intval($tsize['w']/$tsize['h']*$imgheight);
+                                       $trimX = intval(($imgwidth - $trimW) / 2);
+                               }
+                               
+                               if($point == 'lefttop'){
+                                       $trimX = $trimY = 0;
+                               }
+                               
+                               $im_r = $this->baseimageCreate($p,$imgtype);
+                               $im = ImageCreateTrueColor($tsize['w'],$tsize['h']);
+                               ImageCopyResampled( $im, $im_r, 0, 0, $trimX, $trimY, $tsize['w'], $tsize['h'], $trimW, $trimH);
+                               switch($imgtype){
+                                       case 1:
+                                       header ("Content-type: image/gif");
+                                       ImageGif($im);
+                                       imagedestroy($im);
+                                       break;
+                                       case 2:
+                                       header ("Content-type: image/jpeg");
+                                       ImageJpeg($im);
+                                       imagedestroy($im);
+                                       break;
+                                       case 3:
+                                       header ("Content-type: image/png");
+                                       ImagePng($im);
+                                       imagedestroy($im);
+                                       break;
+                                       default:
+                                       return;
+                               }
+                       break;
+
+                       default:
+                               Header('Location: ' . $return);
+                               break;
+//_=======
+               }
+       }
+
+       function canEdit() {
+               global $member, $manager;
+               if (!$member->isLoggedIn()) return 0;
+               return $member->isAdmin();
+       }
+
+       function createGlobalArchiveLink($blogid, $archive, $extra = '') {
+               global $CONF, $manager;
+               if ($CONF['URLMode'] == 'pathinfo'){
+                       $link = $CONF['ArchiveURL'] . '/archive/'.$blogid.'/' . $archive;
+               }else{
+                       $script_name = $CONF['Self'];
+                       if(!$script_name) $script_name = 'index.php';
+                       
+                       $b_tmp =& $manager->getBlog($blogid);
+                       $blogurl = $b_tmp->getURL() ;
+                       if(!$blogurl){
+                               $blogurl = $CONF['IndexURL'];
+                       }
+                       if(substr($blogurl, -4) != '.php'){
+                               if(substr($blogurl, -1) != '/')
+                                       $blogurl .= '/';
+                               $blogurl .= 'index.php';
+                       }
+
+                       $link = $blogurl . '?blogid='.$blogid.'&amp;archive=' . $archive;
+               }
+               return addLinkParams($link, $extra);
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Milionic/NP_Milionic.php b/trunk/NP_Milionic/NP_Milionic.php
new file mode 100644 (file)
index 0000000..fe7f543
--- /dev/null
@@ -0,0 +1,655 @@
+<?php
+
+class NP_Milionic extends NucleusPlugin {
+
+       function getName()              { return 'DHTML Tree Menu'; }
+       function getAuthor()    { return 'nakahara21'; }
+       function getURL()               { return 'http://nakahara21.com/'; }
+       function getVersion()   { return '0.8'; }
+       function getDescription() { return 'JavaScript DHTML navigation';       }
+
+       function supportsFeature($what) {
+               switch($what)
+               { case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0; }
+       }
+
+       function install() {
+       }
+       
+       function unInstall() {
+       }
+
+
+       function doSkinVar($skinType){
+               global $CONF, $manager, $blogid, $catid, $subcatid;
+               
+               
+               
+               $fileName = $CONF['ActionURL'].'?action=plugin&name=Milionic&type=f&st='.$skinType;
+               $fileName .= '&bid='.$blogid;
+               if($catid) $fileName .= '&cid='.$catid;
+               if($subcatid) $fileName .= '&sid='.$subcatid;
+
+
+?>
+
+<script type="text/javascript" src="<?php echo $this->getAdminURL(); ?>milonic_src.js"></script>
+<div class=milonic><a href="http://www.milonic.com/">JavaScript Menu, DHTML Menu Powered By Milonic</a></div>
+<script        type="text/javascript">
+       <!--
+       if(ns4)_d.write("<scr"+"ipt type=text/javascript src='<?php echo $this->getAdminURL(); ?>mmenuns4.js'><\/scr"+"ipt>");
+         else _d.write("<scr"+"ipt type=text/javascript src='<?php echo $this->getAdminURL(); ?>mmenudom.js'><\/scr"+"ipt>");
+       -->
+</script>
+<script type="text/javascript" src="<?php echo $fileName; ?>"></script>
+<table>
+<td>
+<script type="text/javascript">
+       <!--
+drawMenus();
+       -->
+</script>
+<noscript>
+Site navigation will open here if you enable JavaScript in your browser.
+</noscript>
+</td>
+</table>
+
+
+<?php
+       }
+
+       function doAction($type) {
+               if($type == 'f'){
+               global $manager, $CONF;
+               $aurl = $this->getAdminURL().'icons/';
+               $blogid = intRequestVar('bid');
+               $catid = intRequestVar('cid');
+               $subcatid = intRequestVar('sid');
+               $skinType = requestVar('st');
+
+//++++++++++++++++++++++++++++++++++++++
+$pathToCodeFiles=$aurl;               // The www root to where the menu code files are located
+
+/// The following is only changed if the name of the menu code files have been changed.
+$menuVars=array();
+$menuData="";
+
+//++++++++++++++++++++++++++++++++++++++
+
+echo <<<EOD
+
+_menuCloseDelay=150;
+_menuOpenDelay=10;
+_subOffsetTop=0;
+_subOffsetLeft=2;
+
+with(submenuStyle=new mm_style()){
+fontfamily="Verdana";
+fontsize="80%";
+fontstyle="normal";
+high3dcolor="#ffffff";
+low3dcolor="#336633";
+offbgcolor="#DFDFBF";
+offborder="1px solid #BDBDA2";
+offcolor="#000000";
+onbgcolor="#878774";
+onborder="2px outset #CBCBAE";
+oncolor="#ffffff";
+onsubimage="{$aurl}white_arrow.gif";
+padding=4;
+separatorcolor="#a0c0a0";
+separatorsize=1;
+subimage="{$aurl}arrow.gif";
+subimagepadding=4;
+image='{$aurl}grey-bar.gif';
+pageimage="{$aurl}grey-bar-select.gif";
+pagematch="";
+}
+
+with(menuStyle=new mm_style()){
+fontfamily="Verdana";
+fontsize="80%";
+fontstyle="normal";
+high3dcolor="#ffffff";
+low3dcolor="#336633";
+offbgcolor="#DFDFBF";
+offborder="1px solid #BDBDA2";
+offcolor="000000";
+onbgcolor="#878774";
+onborder="2px outset #CBCBAE";
+oncolor="#ffffff";
+onsubimage="{$aurl}white_arrow.gif";
+padding=4;
+separatorcolor="#336600";
+separatorsize=1;
+subimage="{$aurl}arrow.gif";
+subimagepadding=4;
+itemwidth=100;
+image='{$aurl}grey-bar.gif';
+pageimage="{$aurl}grey-bar-select.gif";
+pagematch="";
+}
+
+with(milonic=new menuname("Main Menu")){
+alwaysvisible=1;
+orientation="Vertical";
+position="relative";
+style=menuStyle;
+aI("status=Back To Home Page;text=HOME;url=http://www.milonic.com/;");
+aI("showmenu=Categores;text=Categores;pagematch=catid=;");
+aI("showmenu=Archives;text=Archives;pagematch=archive;");
+aI("showmenu=Remarks;text=Remarks;");
+aI("showmenu=Links;text=LINKS;");
+aI("showmenu=Search;text=¸¡º÷;");
+aI("showmenu=Login;text=Login;");
+aI("showmenu=Otherblog;fontsize=xx-small;fontfamily=Tahoma;text=`<small>Other Blog</small>`;pageimage=;");
+}
+
+
+with(milonic=new menuname("Links")){
+style=submenuStyle;
+aI("status=Apache Web Server, the basis of Milonic's Web Site;text=Apache Server;url=http://www.apache.org/;");
+aI("status=MySQL, Milonic's Prefered Choice of Database Server;text=MySQL Database Server;url=http://ww.mysql.com/;");
+aI("status=PHP - Web Server Scripting as used by Milonic;text=PHP - Development;url=http://www.php.net/;");
+aI("status=PHP Based Web Forum, Milonic's Recommended Forum Software;text=phpBB Web Forum System;url=http://www.phpbb.net/;");
+aI("showmenu=Anti Spam;status=Anti Spam Solutions, as used by Milonic;text=Anti Spam;");
+}
+
+with(milonic=new menuname("Anti Spam")){
+style=submenuStyle;
+aI("text=Spam Cop;url=http://www.spamcop.net/;");
+aI("text=Mime Defang;url=http://www.mimedefang.org/;");
+aI("text=Spam Assassin;url=http://www.spamassassin.org/;");
+}
+
+
+EOD;
+//++++++++++++++++++++++++++++++++++++++
+$menuVars=array();
+$menuData="";
+//++(SEARCH)++++++++++++++++++++++++++++++++++++
+               $mmMenu=new mMenu();
+               $mmMenu->style="submenuStyle";
+               $searchForm = $this->doParse('<%searchform%>',$skinType);
+               $mmMenu->addItemFromText('text=`' . $searchForm . '`;type=form;align=center;onbgcolor=;onborder=;image=;');
+               $mmMenu->createMenu("Search");
+
+//++(Login)++++++++++++++++++++++++++++++++++++
+               $mmMenu=new mMenu();
+               $mmMenu->style="submenuStyle";
+               $searchForm = $this->doParse('<%loginform%>',$skinType);
+               $mmMenu->addItemFromText('text=`' . $searchForm . '`;type=form;align=center;onbgcolor=;onborder=;image=;');
+               
+               $mmMenu->addItemFromText('text=Jump to Admin Page;url='.$CONF['AdminURL'].';align=center;onbgcolor=;onborder=;image=;');
+               $mmMenu->createMenu("Login");
+
+//++(other blog)++++++++++++++++++++++++++++++++++++
+
+               $query = 'SELECT bnumber as blogid, bname as blogname, burl as blogurl, bshortname, bdesc as blogdesc';
+               $query .= ' FROM '.sql_table('blog');
+               $query .= ' WHERE bnumber <>'.$blogid;
+               $query .= ' ORDER BY bnumber';
+
+               $res = sql_query($query);
+               $bn=1;
+               $mmMenu=new mMenu();
+               $mmMenu->style="submenuStyle";
+               while ($o = mysql_fetch_object($res)) {
+                       $this->bid = $o->blogid;
+                       $burl = createBlogidLink($o->blogid);
+                       $mmMenu->addItemFromText("text=".$o->blogname.";url=".$burl.";pageimage=;");
+               }
+               $mmMenu->createMenu("Otherblog");
+
+
+//++(archives)++++++++++++++++++++++++++++++++++++
+               if($amTemp = $this->_getArchiveList('month', 0, $blogid, $catid, $subcatid)){
+//                     print_r($amTemp);
+                       $archiveYears = array_keys($amTemp);
+                       $mmMenu=new mMenu();
+                       $mmMenu->style="submenuStyle";
+                       $mmMenu->overflow="scroll";
+                       for($i=0;$i<count($archiveYears);$i++){
+                               $mmMenu->addItemFromText("showmenu=ay" . $archiveYears[$i] . ";text=" . $archiveYears[$i] . ";pagematch=" . $archiveYears[$i] . ";");
+                       }
+                       $mmMenu->createMenu("Archives");
+                               
+                               
+                       foreach($amTemp as $ay => $values){
+                               $mmMenu=new mMenu();
+                               $mmMenu->style="submenuStyle";
+                               $mmMenu->overflow="scroll";
+                               for($i=0;$i<count($values);$i++){
+                                       $mmMenu->addItemFromText("showmenu=am" . $values[$i]['archivedate'] . ";text=" . $values[$i]['archivedate'] . ";url=" . $values[$i]['archivelink'] . ";pagematch=" . $values[$i]['archivedate'] . ";");
+                               }
+                               $mmMenu->createMenu("ay".$ay);
+                       }
+
+                       $adTemp = $this->_getArchiveList('day', 0, $blogid, $catid, $subcatid);
+                       foreach($adTemp as $archiveMonth => $Values){
+                               $mmMenu=new mMenu();
+                               $mmMenu->style="submenuStyle";
+                               $mmMenu->overflow="scroll";
+                               for($i=0;$i<count($Values);$i++){
+                                       $mmMenu->addItemFromText("text=" . $Values[$i]['archivedate'] . ";url=" . $Values[$i]['archivelink'] . ";pagematch=" . $Values[$i]['archivedate'] . ";");
+                               }
+                               $mmMenu->createMenu($archiveMonth);
+                       }
+                       
+               }else{
+                       $mmMenu=new mMenu();
+                       $mmMenu->style="submenuStyle";
+                       $mmMenu->addItemFromText("text=(No archives);image=;");
+                       $mmMenu->createMenu("Archives");
+               }
+//++(category)++++++++++++++++++++++++++++++++++++
+               $cquery = 'SELECT catid as catid, cname as catname, cdesc as catdesc FROM '.sql_table('category').' WHERE cblog='.$blogid.' ORDER BY catid';
+               $cres = sql_query($cquery);
+               $mmMenu=new mMenu();
+               $mmMenu->style="submenuStyle";
+               while ($co = mysql_fetch_object($cres)) {
+                       $curl = $this->_de(createBlogidLink($blogid, array('catid'=>$co->catid)));
+                       $chkFlg = $this->checkMSCVersion();
+                       $menuExtra = "";
+                       if($chkFlg > 1){
+                               $keyName = 'catid'.$co->catid;
+                               if($subcatArray[$keyName] = $this->_getScatsFromCatid($co->catid, $chkFlg)){
+                                       $menuExtra = "showmenu=catid" . $co->catid.";";
+                               }
+                       }
+                       $mmMenu->addItemFromText($menuExtra . "text=" . $co->catname . ";url=" . $curl . ";pagematch=catid=" . $co->catid . ";");
+               } //end of storing catid item
+               $mmMenu->createMenu("Categores");
+
+//             print_r($subcatArray);
+               if($subcatArray){
+                       foreach($subcatArray as $keyName=>$valueArray){
+                               if($valueArray){
+                               $cid = str_replace('catid','',$keyName);
+                               $mmMenu=new mMenu();
+                               $mmMenu->style="submenuStyle";
+                               for($i=0;$i<count($valueArray);$i++){
+                                       $sid = $valueArray[$i]['scatid'];
+                                       $surl = $this->_de(createBlogidLink($blogid, array('catid'=>$cid, 'subcatid'=>$sid)));
+                                       if($this->checkMSCVersion() > 2){
+                                               $this->getDescendantFromScatid($sid, 0);
+                                               $extra = ($this->r[$sid])? 'showmenu=sid'.$sid.';' : '';
+                                               $mmMenu->addItemFromText($extra."text=" . $valueArray[$i]['sname'] . ";url=" . $surl . ";pagematch=catid=" . $cid ."&subcatid=".$sid.";");
+                                       }else{
+                                               $mmMenu->addItemFromText("text=" . $valueArray[$i]['sname'] . ";url=" . $surl . ";pagematch=catid=" . $cid ."&subcatid=".$sid.";");
+                                       }
+                               }
+                               $mmMenu->createMenu("$keyName");
+                               }
+                       }
+               }
+
+               if($this->r){
+                       foreach($this->r as $sid=>$valueArray){
+                               $mmMenu=new mMenu();
+                               $mmMenu->style="submenuStyle";
+                               for($i=0;$i<count($valueArray);$i++){
+                                       $ssid = $valueArray[$i];
+                                       $sname = $this->mplugin->_getScatNameFromID($ssid);
+                                       $surl = createBlogidLink($blogid, array('catid'=>$cid, 'subcatid'=>$ssid));
+                                       $extra = ($this->r[$ssid])? 'showmenu=sid'.$ssid.';' : '';
+                                               $mmMenu->addItemFromText($extra."text=" . $sname . ";url=" . $this->_de($surl) . ";pagematch=catid=" . $cid ."&subcatid=".$ssid.";");
+                               }
+                               
+                               $mmMenu->createMenu("sid".$sid);
+                       }
+               }
+//++(Remarks)++++++++++++++++++++++++++++++++++++
+               $mmMenu=new mMenu();
+               $mmMenu->style="submenuStyle";
+
+               if($remarks = $this->_getRemarks($blogid, $catid, $subcatid, $mode='both')){
+                       $mmMenu->divides=3;
+                       $mmMenu->overflow="scroll";
+                       for($i=0;$i<count($remarks);$i++){
+                               $text =  '<b>'.$remarks[$i][name] . "</b>(" . $remarks[$i][date] . ")<br />" . $remarks[$i][shortentext];
+                               $mmMenu->addItemFromText("text=" . $this->removeN($text) . ";url=" . $remarks[$i][linkurl] . "#c" . $remarks[$i][commentid] .";pagematch=itemid=".$remarks[$i][itemid].";image=;");
+                       }
+               }else{
+                       $mmMenu->addItemFromText("text=(No remarks);image=;");
+               }
+               $mmMenu->createMenu("Remarks");
+
+
+
+
+
+
+               commitMenus();
+//++++++++++++++++++++++++++++++++++++++
+               }else{
+                       return;
+               }
+       }       //end of function doAction
+
+       
+       function removeN($var) {
+               return preg_replace("/[\r\n]/","",$var); 
+       }
+       
+       function doParse($content,$type='') {
+               global $CONF;
+               $sType = $type;
+               if ($type == 'pageparser') {
+                       $type = 'index';
+               }
+               $handler = new ACTIONS($sType);
+               $parser = new PARSER(SKIN::getAllowedActionsForType($type), $handler);
+               $handler->parser =& $parser;
+               ob_start();
+                       $parser->parse($content);
+                       $res = ob_get_contents();
+               ob_end_clean();
+               $res = str_replace('"',"'",$res);
+               $res = str_replace("\r\n","",$res);
+
+               return $res;
+       }
+
+       function _getRemarks($blogid, $catid, $subcatid, $mode='both'){
+               global $manager; 
+               $numberOfCharacters = 60;
+               $numberOfTitleCharacters = 40;
+               $toadd = "...";
+
+               if(!is_numeric($numberOfWritebacks)){
+                       $filter = $numberOfWritebacks;
+                       $numberOfWritebacks   = 5; // defaults to 5
+               }
+
+               $mtable = '';
+               if($catid){
+                       $linkparams[catid] = $catid;
+                       if ($manager->pluginInstalled('NP_MultipleCategories')) {
+                               $where .= ' and ((i.inumber=p.item_id and (p.categories REGEXP "(^|,)'.intval($catid).'(,|$)" or i.icat='.intval($catid).')) or (i.icat='.intval($catid).' and p.item_id IS NULL))';
+                               $mtable = ' LEFT JOIN '.sql_table('plug_multiple_categories').' as p ON  i.inumber=p.item_id';
+                               $mplugin =& $manager->getPlugin('NP_MultipleCategories');
+                               if ($subcatid && method_exists($mplugin,"getRequestName")) {
+                                       $linkparams[subcatid] = $subcatid;
+//family
+                                       if($this->checkMSCVersion() >2){
+                                               $Children = array();
+                                               $Children = explode('/',intval($subcatid).$this->getDescendantFromScatid(intval($subcatid), 1));
+                                       }
+                                       if($Children[1]){
+                                               for($i=0;$i<count($Children);$i++){
+                                                       $temp_whr[] = ' p.subcategories REGEXP "(^|,)'.intval($Children[$i]).'(,|$)" ';
+                                               }
+                                               $where .= ' and ';
+                                               $where .= ' ( ';
+                                               $where .= join(' or ', $temp_whr);
+                                               $where .= ' )';
+                                       }else{
+                                               $where .= ' and p.subcategories REGEXP "(^|,)'.intval($subcatid).'(,|$)"';
+                                       }
+//family end
+                               }
+                       } else {
+                               $where .= ' and i.icat='.intval($catid);
+                       }
+               }
+
+               // select
+               $query = "SELECT c.cnumber, c.cuser, c.cbody, c.citem, c.cmember, c.ctime ,UNIX_TIMESTAMP(c.ctime) as ctimest";
+               $query .= " FROM ".sql_table('comment').' as c, ' . sql_table('item').' as i'.$mtable;
+               $query .= " WHERE c.citem=i.inumber and i.iblog=".$blogid.$where;
+               if($filter){
+                       $query .= $filter;
+               }
+               $query .= " ORDER by c.ctime DESC LIMIT 0,".$numberOfWritebacks;
+
+               $comments = mysql_query($query);
+               
+               if(mysql_num_rows($comments)){
+                       while($row = mysql_fetch_object($comments)) {
+                               $temp = array();
+                               $temp[itemid] = $cid  = $row->citem;
+                               $temp[commentid] = $cid  = $row->cnumber;
+                               $temp[timestamp] = $ct  = $row->ctimest;
+                               $temp[date] = $ctst  = date("y-m-d H:i",strtotime($row->ctime));
+                               $temp[fulltext] = $text  = strip_tags($row->cbody);
+                               $temp[shortentext] = $ctext = shorten($text,$numberOfCharacters,$toadd);
+
+                               if (!$row->cmember) $temp[name] = $myname = $row->cuser;
+                               else {
+                                       $mem = new MEMBER;
+                                       $mem->readFromID(intval($row->cmember));
+                                       $temp[name] = $myname = $mem->getDisplayName();
+                               }
+
+                               $temp[linkurl] = $itemlink = $this->_de(createItemLink($row->citem, $linkparams));
+                               $resultArray[] = $temp;
+                       }
+               }
+               return $resultArray;
+       }
+
+       function _de($url){
+               return str_replace("&amp;",'&',$url);
+       }
+
+       function getDescendantFromScatid($subcat_id, $mode=0){
+               $res = sql_query("select scatid, parentid, sname from ".sql_table('plug_multiple_categories_sub')." where parentid = '$subcat_id'");
+               if($mode >0){
+                       while ($so =  mysql_fetch_object($res)) {
+                               $r .= $this->getDescendantFromScatid($so->scatid, 1) . '/' . $so->scatid;
+                       }
+                       return $r;
+               }else{
+                       while ($so =  mysql_fetch_object($res)) {
+                               $this->r[$subcat_id][] = $this->getDescendantFromScatid($so->scatid, 0);
+                       }
+                       return $subcat_id;
+               }
+       }
+
+       function checkMSCVersion(){
+       global $manager; 
+               if ($manager->pluginInstalled('NP_MultipleCategories')) {
+                       $this->mplugin =& $manager->getPlugin('NP_MultipleCategories');
+                       if (method_exists($this->mplugin,"getRequestName")) {
+                               $res = sql_query("SHOW FIELDS from ".sql_table('plug_multiple_categories_sub') );
+                               while ($co = mysql_fetch_assoc($res)) {
+                                       if($co['Field'] == 'parentid') return 3;
+                               }
+                               return 2;
+                       }else{
+                               return 1;
+                       }
+               }else{
+                       return 0;
+               }
+       }
+
+
+       function _getScatsFromCatid($catid, $version=0){
+               if($version==0)return;
+               $aResult = array();     
+               $query = 'SELECT * FROM '.sql_table('plug_multiple_categories_sub').' WHERE catid=' . intval($catid);
+               if($version>2) $query .= ' AND parentid=0';
+               $res = sql_query($query);
+               while ($a = mysql_fetch_assoc($res)){
+                       array_push($aResult,$a);
+               } 
+               return $aResult;
+       }
+
+       function _getArchiveList($mode = 'month', $limit = 0, $blogid, $catid=0, $subcatid=0) {
+               global $CONF, $manager;
+               
+               if(!$blogid) $blogid = $CONF['DefaultBlog'];
+
+               $b =& $manager->getBlog($blogid);
+               if ($catid) 
+                       $linkparams = array('catid' => $catid);
+
+               $query = 'SELECT i.itime, SUBSTRING(i.itime,1,4) AS Year, SUBSTRING(i.itime,6,2) AS Month, SUBSTRING(i.itime,9,2) as Day FROM '.sql_table('item').' as i';
+               if ($catid) {
+                       $query .= ' LEFT JOIN '.sql_table('plug_multiple_categories').' as p ON i.inumber=p.item_id';
+               }
+               $query .= ' WHERE i.iblog=' . $blogid
+               . ' and i.itime <=' . mysqldate($b->getCorrectTime())   // don't show future items!
+               . ' and i.idraft=0'; // don't show draft items
+               
+               if ($catid) {
+                       $query .= ' and ((i.inumber=p.item_id and (p.categories REGEXP "(^|,)'.intval($catid).'(,|$)" or i.icat='.intval($catid).')) or (i.icat='.intval($catid).' and p.item_id IS NULL))';
+                       $linkparams = array('catid' => $catid);
+               }
+               if ($subcatid) {
+                       if($this->checkMSCVersion() >2){
+                                       $Children = array();
+                                       $Children = explode('/',intval($subcatid).$this->getDescendantFromScatid(intval($subcatid), 1) );
+                       }
+                       if($Children[1]){
+                                       for($i=0;$i<count($Children);$i++){
+                                               $temp_whr[] = ' p.subcategories REGEXP "(^|,)'.intval($Children[$i]).'(,|$)" ';
+                                       }
+                                       $where .= ' and ';
+                                       $where .= ' ( ';
+                                       $where .= join(' or ', $temp_whr);
+                                       $where .= ' )';
+                       }else{
+                               $query .= ' and p.subcategories REGEXP "(^|,)'.intval($subcatid).'(,|$)"';
+                       }
+                       $linkparams['subcatid'] = $subcatid;
+               }
+               
+               $query .= ' GROUP BY Year, Month';
+               if ($mode == 'day')
+                       $query .= ', Day';
+               
+               $query .= ' ORDER BY i.itime ASC';
+               
+               if ($limit > 0) 
+                       $query .= ' LIMIT ' . intval($limit);
+               
+               $res = sql_query($query);
+
+               while ($current = mysql_fetch_object($res)) {
+                       $current->itime = strtotime($current->itime);   // string time -> unix timestamp
+                       $archivedate = ($mode == 'day')? date('Y-m-d',$current->itime): date('Y-m',$current->itime);
+
+                       $data['year'] = $y = date('Y',$current->itime);
+                       $data['month'] = date('m',$current->itime);
+                       if ($mode == 'day') $data['day'] = date('d',$current->itime);
+                       $data['archivedate'] = $archivedate;
+                       $data['archivelink'] = $this->_de(createArchiveLink($blogid,$archivedate,$linkparams));
+                       if($mode == 'day'){
+                               $menuname = 'am'.date('Y-m',$current->itime);
+                               $temp[$menuname][] = $data;
+                       }else{
+                               $temp[$y][] = $data;
+                       }
+               }
+               mysql_free_result($res);
+               return $temp;
+       }
+
+
+}      //end of CLASS
+
+class mmenuStyle
+{
+       
+       function createMenuStyle($styleName)
+       {
+               global $menuData;
+               $styleArray=get_object_vars($this);
+               $menuData.="with($styleName=new mm_style()){\n";
+               
+               foreach ($styleArray as $fieldName => $fieldValue) 
+               {
+                       if(ereg("color",$fieldName))
+                       {
+                               if(substr($fieldValue,0,1)!="#" && is_numeric($fieldValue))$fieldValue="#".$fieldValue;
+                       }
+                       
+                       $menuData.= "$fieldName=\"$fieldValue\";\n";
+               }
+   
+               $menuData.= "}\n\n";
+       }
+}
+
+
+class mMenu{
+       var $menuItems;
+       function createMenu($menuName){
+               global $menuData;
+               $menuArray=get_object_vars($this);
+
+               $menuData.= "with(milonic=new menuname(\"$menuName\")){\n";
+               $tempMenuItems="";
+               foreach ($menuArray as $fieldName => $fieldValue) {
+                       global $menuData;
+                       if($fieldName!="menuItems")
+                       {
+                               if($fieldName=="style")
+                               {
+                                       $menuData.= "$fieldName=$fieldValue;\n";
+                               }
+                               else
+                               {
+                                       $menuData.= "$fieldName=\"$fieldValue\";\n";
+                               }
+                               
+                       }
+                       else
+                       {
+                               if($fieldName=="menuItems")$tempMenuItems=$fieldValue;
+                       }
+               }
+   
+               $menuData.= $tempMenuItems."\n";
+               $menuData.= "}\n\n";
+       }
+       
+       
+       function addItemFromText($itemText){
+               global $menuData;
+               $this->menuItems.="aI(\"".$itemText . "\");\n"; 
+       }
+
+       function addItemFromItem($menuItem){
+               global $menuData;
+               $tempVar="";
+               foreach ($menuItem as $fieldName => $fieldValue) {
+                       if(ereg("color",$fieldName)){
+                               if(substr($fieldValue,0,1)!="#")$fieldValue="#".$fieldValue;
+                       }
+                       
+                       $tempVar.="$fieldName=$fieldValue;";
+               }
+               $this->menuItems.="aI(\"".$tempVar . "\");\n";  
+       }       
+       
+}
+
+
+class mItem{
+       function addItemElement($mtype,$mval){
+               $this->$mtype=$mval;
+       }
+}
+
+
+function commitMenus(){
+       global $menuData,$menuVars;
+
+echo $menuData;
+
+}
+
+
+
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_Milionic/milionic/1st_readme.txt b/trunk/NP_Milionic/milionic/1st_readme.txt
new file mode 100644 (file)
index 0000000..1b52275
--- /dev/null
@@ -0,0 +1,28 @@
+++++++++++++++++++++++++++++++++++++++++++++++++
+  NP_Milionic \82Ì\90Ý\92u\82É\95K\97v\82È\83t\83@\83C\83\8b\82É\82Â\82¢\82Ä
+++++++++++++++++++++++++++++++++++++++++++++++++
+
+1) \83\81\83j\83\85\81[\95\\8e¦\82Ì\82½\82ß\82Ì\96{\91Ì\83t\83@\83C\83\8b\82ð\83_\83E\83\93\83\8d\81[\83h\82µ\82Ü\82·\81B
+http://www.milonic.com/download.php
+\82Ü\82½\82Í\81A
+http://www.milonic.com/
+\82Ì\83y\81[\83W\8dÅ\89º\95\94\82É\82 \82é\83T\83\93\83v\83\8b\8cQ\82Ì\82¢\82¸\82ê\82©\82Ì\88³\8fk\83t\83@\83C\83\8b\82ð\83_\83E\83\93\83\8d\81[\83h\82µ\82Ä\82­\82¾\82³\82¢\81B
+
+2) \83_\83E\83\93\83\8d\81[\83h\82µ\82½\88³\8fk\83t\83@\83C\83\8b\82ð\89ð\93\80\82µ\82Ü\82·\81B
+
+3) \82±\82Ì\8d¡\93Ç\82ñ\82Å\82¢\82é\83e\83L\83X\83g\83t\83@\83C\83\8b\82Æ\93¯\82\83f\83B\83\8c\83N\83g\83\8a\82É\81A\89ð\93\80\82µ\82Ä\90\90¬\82³\82ê\82½\83t\83@\83C\83\8b\82Ì\93à\81A
+       milonic_src.js
+       mmenudom.js
+       mmenuns4.js
+\82Ì3\82Â\82Ì\83t\83@\83C\83\8b\82ð\92u\82¢\82Ä\82­\82¾\82³\82¢\81B
+
+* menu_data.js\82Í\83v\83\89\83O\83C\83\93\82ª\8e©\93®\8dì\90¬\82µ\82Ü\82·\82Ì\82Å\95K\97v\82 \82è\82Ü\82¹\82ñ\81B
+  (\95Ê\82É\93ü\82ê\82Ä\82à\8d\\82¢\82Ü\82¹\82ñ)
+
+* \82»\82Ì\82Ù\82©\82Ì\83t\83@\83C\83\8b\82Í\93Á\82É\95K\97v\82 \82è\82Ü\82¹\82ñ\81B
+  (\95Ê\82É\93ü\82ê\82Ä\82à\8d\\82¢\82Ü\82¹\82ñ)
+
+\89½\82©\8b^\96â\93_\82â\95s\96¾\82È\93_\82ª\82 \82ê\82Î
+http://nakahara21.com/index.php?itemid=582
+\82É\82¨\8bC\8cy\82É\83R\83\81\83\93\83g\82­\82¾\82³\82¢\81B
+
diff --git a/trunk/NP_Milionic/milionic/icons/arrow.gif b/trunk/NP_Milionic/milionic/icons/arrow.gif
new file mode 100644 (file)
index 0000000..a7ef84e
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/arrow.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/bcode_vert_grey.gif b/trunk/NP_Milionic/milionic/icons/bcode_vert_grey.gif
new file mode 100644 (file)
index 0000000..e1b03de
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/bcode_vert_grey.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/bcode_vert_red.gif b/trunk/NP_Milionic/milionic/icons/bcode_vert_red.gif
new file mode 100644 (file)
index 0000000..dcb31fe
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/bcode_vert_red.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/black_9x7right.gif b/trunk/NP_Milionic/milionic/icons/black_9x7right.gif
new file mode 100644 (file)
index 0000000..50c8316
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/black_9x7right.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/grey-bar-select.gif b/trunk/NP_Milionic/milionic/icons/grey-bar-select.gif
new file mode 100644 (file)
index 0000000..6d63028
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/grey-bar-select.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/grey-bar.gif b/trunk/NP_Milionic/milionic/icons/grey-bar.gif
new file mode 100644 (file)
index 0000000..545e525
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/grey-bar.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/grey_13x13_tb.gif b/trunk/NP_Milionic/milionic/icons/grey_13x13_tb.gif
new file mode 100644 (file)
index 0000000..eae3eb1
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/grey_13x13_tb.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/grey_9x7right.gif b/trunk/NP_Milionic/milionic/icons/grey_9x7right.gif
new file mode 100644 (file)
index 0000000..21247de
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/grey_9x7right.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/white_13x13_tb.gif b/trunk/NP_Milionic/milionic/icons/white_13x13_tb.gif
new file mode 100644 (file)
index 0000000..403c3e4
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/white_13x13_tb.gif differ
diff --git a/trunk/NP_Milionic/milionic/icons/white_arrow.gif b/trunk/NP_Milionic/milionic/icons/white_arrow.gif
new file mode 100644 (file)
index 0000000..a2fd4a1
Binary files /dev/null and b/trunk/NP_Milionic/milionic/icons/white_arrow.gif differ
diff --git a/trunk/NP_Milionic/milionic/index.html b/trunk/NP_Milionic/milionic/index.html
new file mode 100644 (file)
index 0000000..612e1cb
--- /dev/null
@@ -0,0 +1,5 @@
+<html>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/trunk/NP_OtherblogEX/NP_OtherblogEX.php b/trunk/NP_OtherblogEX/NP_OtherblogEX.php
new file mode 100644 (file)
index 0000000..6b055a9
--- /dev/null
@@ -0,0 +1,72 @@
+<? 
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+class NP_OtherblogEX extends NucleusPlugin { 
+       function getEventList() { return array(); } 
+       function getName() { return 'OtherblogEX'; } 
+       function getAuthor() { return 'nakahara21'; } 
+       function getURL() { return 'http://xx.nakahara21.net/'; } 
+       function getVersion() { return '0.3'; } 
+       function getDescription() { 
+               return 'OtherblogEX'; 
+       } 
+
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function doSkinVar($skinType, $blogname, $template, $amount = 10, $catname = '', $sort) { 
+
+               list($limit, $offset) = sscanf($amount, '%d(%d)');
+               if($sort == 'ASC'){
+                       $sort = 'ASC';
+               }else{
+                       $sort = 'DESC';
+               }
+               $this->readLogAmountex($blogname,$template,$catname,$limit,'','',1,1,$offset, $startpos, $sort);
+       }// doSkinVar end
+
+       function readLogAmountex($blogname, $template, $catname, $amountEntries, $extraQuery, $highlight, $comments, $dateheads, $offset = 0, $startpos = 0, $sort) {
+               global $manager;
+
+               $b =& $manager->getBlog(getBlogIDFromName($blogname));
+               if ($catname != '')
+                       $b->setSelectedCategoryByName($catname);
+               else
+                       $b->setSelectedCategory($catid);
+
+               $query =  'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, UNIX_TIMESTAMP(i.itime) as timestamp, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed'
+                      . ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'
+                      . ' WHERE i.iblog='.$b->getID()
+                      . ' and i.iauthor=m.mnumber'
+                      . ' and i.icat=c.catid'
+                      . ' and i.idraft=0'      // exclude drafts
+                                       // don't show future items
+                      . ' and i.itime<=' . mysqldate($b->getCorrectTime());
+
+               if ($b->getSelectedCategory())
+                       $query .= ' and i.icat=' . $b->getSelectedCategory() . ' ';
+
+               $query .= $extraQuery
+                      . ' ORDER BY i.itime '.$sort;
+
+               if ($amountEntries > 0) {
+                       // $offset zou moeten worden:
+                       // (($startpos / $amountentries) + 1) * $offset ... later testen ...
+                      $query .= ' LIMIT ' . intval($startpos + $offset).',' . intval($amountEntries);
+               }
+
+               return $b->showUsingQuery($template, $query, $highlight, $comments, $dateheads);
+       }
+
+} 
+?>
\ No newline at end of file
diff --git a/trunk/NP_Pholiot/NP_Pholiot052/NP_Pholiot.php b/trunk/NP_Pholiot/NP_Pholiot052/NP_Pholiot.php
new file mode 100644 (file)
index 0000000..7a767a9
--- /dev/null
@@ -0,0 +1,216 @@
+<?php
+
+//history
+//     0.5:    test version
+//     0.51    htmlspecialchars text
+//     0.52    linkurl ready :: rename to pholiot
+
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+class NP_Pholiot extends NucleusPlugin {
+       function getName () {return 'Pholiot'; }
+       function getAuthor () {return 'nakahara21'; }
+       function getURL () {return 'http://xx.nakahara21.net/';}
+       function getVersion () {return '0.52';}
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function getDescription () {
+               return 'Extract image in items, and embed these images into Pholiot!';
+       }
+
+       function install () {
+/*
+               $this->createOption('default_catname','Default Category Name.','text','');
+*/     
+       }
+
+       function init() {
+               $this->fileex = array('.jpg','.swf');
+       }
+       
+       function doSkinVar($skinType, $ss='', $amount=30, $random=0, $exmode=0) {
+               global $CONF, $blog,$manager;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+               
+               if($amount=='') $amount = 30;
+               if($exmode != 'all') $exmode = 0;
+               $this->exquery = '';
+
+               switch($skinType){
+                       case 'archive': 
+                               global $archive;
+                               sscanf($archive,'%4c-%2c-%2c',$year,$month,$day);
+                               if ($day == 0) {
+                                       $timestamp_start = mktime(0,0,0,$month,1,$year);
+                                       $timestamp_end = mktime(0,0,0,$month+1,1,$year);  // also works when $month==12
+                               } else {
+                                       $timestamp_start = mktime(0,0,0,$month,$day,$year);
+                                       $timestamp_end = mktime(0,0,0,$month,$day+1,$year);  
+                               }
+                               $this->exquery .= ' and itime>=' . mysqldate($timestamp_start)
+                                               . ' and itime<' . mysqldate($timestamp_end);
+
+//                     break;
+                       default:
+                               if(!$exmode){
+                                       $this->exquery .= ' and iblog =' . $b->getID();
+                                       global $catid;
+                                       if($catid)      $this->exquery .= ' and icat =' . $catid;
+                               }
+               }
+
+               $filelist = array();
+               $this->imglists = array();
+               $this->imgfilename = array();
+               if(!($filelist = $this->listup())){
+                       $durl = $this->getAdminURL().'pholiot.xml';
+               }else{
+//             print_r($filelist);
+                       $amount = min($amount,count($filelist));
+                       if($random){
+                               srand((float)microtime()*1000000);
+                               shuffle($filelist);
+                       }
+       
+                                       $feed = '<';
+                                       $feed .= '?';
+                                       $feed .= 'xml version="1.0" encoding="UTF-8"';
+                                       $feed .= '?';
+                                       $feed .= '>';
+                                       $feed .= <<<EOD
+<pholiotdata>
+       <customize defaultmode="slideshow" fitimagetoview="true" fitviewtoimage="true" pan="false" zoom="true" zoomrandomxy="true" zoomdepth="2" zoomrandomdepth="false" panzoomtime="5000" crossfadetime="3000" slidedelaytime="6000" motionmode="liner" playallgalleries="true" returntobrowse="false" galleries="true" thumbnail="true" xmargin="0" ymargin="0" />
+       <gallery name="pholiot" description="TEST"> 
+EOD;
+                                       foreach($filelist as $imglist){
+                                               $linkurl = $this->createGlobalItemLink($imglist[1],'');
+                                               $feed .= '<image>';
+                                               $feed .= '<imageurl>'.$CONF[MediaURL].$imglist[0].'</imageurl>';
+                                               $feed .= '<caption>'.$imglist[2].'</caption>';
+                                               $feed .= '<linkurl name="'.$imglist[3].' ID:'.$imglist[1].'">'.$linkurl.'</linkurl>';
+                                               $feed .= '</image>';
+                                       }
+                                       $feed .= <<<EOD
+       </gallery>
+</pholiotdata>
+EOD;
+                       $feed = mb_convert_encoding($feed, "UTF-8", _CHARSET);
+       
+                       $fp = @fopen($this->getDirectory()."feed.xml","w+"); 
+                       if (!$fp)
+                               $durl = $this->getAdminURL().'pholiot.xml';
+                       fputs($fp,$feed); 
+                       fclose($fp); 
+                       
+                       $durl = $this->getAdminURL().'feed.xml';
+               }
+
+               switch($ss){
+                       case 'head':
+                               echo '<script type="text/javascript" language="JavaScript" src="'.$this->getAdminURL().'pholiot.js"></script>';
+                               break;
+                       default:
+                               $surl = $this->getAdminURL().'pholiot.swf';
+                               echo <<<EOD
+<script type="text/javascript" language="JavaScript"> 
+showPholiot({url: '{$surl}', data_url: '{$durl}', bgcolor: '#e8e9da', width: '120', height: '160', menu: 'false'}); 
+</script>
+EOD;
+
+
+               }
+       }
+
+       function listup(){
+               global $blog,$manager;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+
+               $query = 'SELECT inumber as itemid, ititle as title, ibody as body, iauthor, itime, imore as more,' ;
+               $query .= ' icat as catid, iclosed as closed' ;
+               $query .= ' FROM '.sql_table('item');
+               $query .= ' WHERE idraft=0';
+               $query .= ' and itime <=' . mysqldate($b->getCorrectTime());    // don't show future items!
+               $query .= $this->exquery;
+               $query .= ' ORDER BY itime DESC'; 
+//             echo $query;
+       
+               $res = sql_query($query);
+               
+               if(!mysql_num_rows($res)) return FALSE;
+               
+               while ($it = mysql_fetch_object($res)){
+                       $ititle = $it->title;
+                       $txt = $it->body.$it->more;
+                       $item_ymd = date("Y-m-d",strtotime($it->itime));
+                       $capt = htmlspecialchars(shorten(strip_tags( (!$ititle)? $txt: $ititle ),30,'..'));
+                       preg_match_all("/\<\%image\((.*)\)\%\>/Us",$txt,$imgpnt,PREG_PATTERN_ORDER);
+                       @array_walk($imgpnt[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor,$capt,$item_ymd));
+                       preg_match_all("/\<\%popup\((.*)\)\%\>/Us",$txt,$imgpntp,PREG_PATTERN_ORDER);
+                       @array_walk($imgpntp[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor,$capt,$item_ymd));
+               }
+               return $this->imglists;
+       }
+
+       function exarray($imginfo,$key,$iaid){
+               list($iid, $auid, $capt,$item_ymd) = $iaid;
+               $imginfo = explode("|",$imginfo);
+               if(trim($imginfo[3])) $capt = htmlspecialchars(shorten(strip_tags($imginfo[3]),30,'..'));
+               
+               if(!in_array(strtolower(strrchr($imginfo[0], "." )),$this->fileex)) return;
+               if(in_array($imginfo[0],$this->imgfilename)) return;
+               $this->imgfilename[] = $imginfo[0];
+               
+               if (!strstr($imginfo[0],'/')) {
+                       $imginfo[0] = $auid . '/' . $imginfo[0];
+               }
+               
+               $this->imglists[] = array($imginfo[0],$iid,$capt,$item_ymd);
+       }
+
+       function canEdit() {
+               global $member, $manager;
+               if (!$member->isLoggedIn()) return 0;
+               return $member->isAdmin();
+       }
+
+
+       function createGlobalItemLink($itemid, $extra = '') {
+               global $CONF, $manager;
+
+               if ($CONF['URLMode'] == 'pathinfo'){
+                       $link = $CONF['ItemURL'] . '/item/' . $itemid;
+               }else{
+                       $blogid = getBlogIDFromItemID($itemid);
+                       $b_tmp =& $manager->getBlog($blogid);
+                       $blogurl = $b_tmp->getURL() ;
+                       if(!$blogurl){
+                               $blogurl = $CONF['IndexURL'];
+                       }
+                       if(substr($blogurl, -4) != '.php'){
+                               if(substr($blogurl, -1) != '/')
+                                       $blogurl .= '/';
+                               $blogurl .= 'index.php';
+                       }
+                       $link = $blogurl . '?itemid=' . $itemid;
+               }
+               return addLinkParams($link, $extra);
+       }
+
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.js b/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.js
new file mode 100644 (file)
index 0000000..5cb2a17
--- /dev/null
@@ -0,0 +1,33 @@
+function showPholiot(p) {
+       rgb = '0x' + p.bgcolor.substr(1);
+       document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"');
+       document.write(' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"');
+       document.write(' width="' + p.width + '"  height="' + p.height + '" id="pholiot">' + "\n");
+       document.write('<param name=movie value="' + p.url + '" />');
+       document.write(' <param name=quality value="high" />');
+       document.write('<param name=menu value="' + p.menu + '">');
+       document.write(' <param name=bgcolor value="' + p.bgcolor + '" />');
+       document.write(' <param name="flashvars" value="xmluri=' + p.data_url + '&rgb=' + rgb + '&sw='+p.width+'&sh='+p.height+'" />' + "\n");
+       document.write('<embed src="' + p.url + '"');
+       document.write(' quality="high" menu="' + p.menu + '" bgcolor="' + p.bgcolor + '" width="' + p.width + '" height="' + p.height + '" name="pholiot"');
+       document.write(' pluginspage="http://www.macromedia.com/go/getflashplayer"');
+       document.write(' flashvars="xmluri=' + p.data_url + '&rgb=' + rgb + '&sw='+p.width+'&sh='+p.height+'"></embed>' + "\n");
+       document.write('</object>');
+}
+
+function pholiotImageOpen(uri,width,height,close){
+       newwin = window.open("", "pholiotimg", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=no,resizable=no,width="+width+",height="+height);
+       newwin.window.focus();
+       newwin.document.open();
+       newwin.document.write('<html><head><title>Pholiot</title></head><body style="margin:0px;padding:0px">');
+       if (close) {
+               newwin.document.write('<a href="javascript:window.close()">');
+       }
+       newwin.document.write('<img src="'+uri+'" width="'+width+'" height="'+height+'" style="border:none" />');
+       if (close) {
+               newwin.document.write('</a>');
+       }
+       newwin.document.write('</body></html>');
+       newwin.document.close();
+}
+
diff --git a/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.swf b/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.swf
new file mode 100644 (file)
index 0000000..a076a50
Binary files /dev/null and b/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.swf differ
diff --git a/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.xml b/trunk/NP_Pholiot/NP_Pholiot052/pholiot/pholiot.xml
new file mode 100644 (file)
index 0000000..56c0fa2
--- /dev/null
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pholiotdata>
+       <customize defaultmode="slideshow" galleries="true" thumbnail="true" playallgalleries="true" returntobrowse="false" 
+       randomgallery = "false" randomimage = "false"
+       fitimagetoview="true" fitviewtoimage="true" 
+       pan="false" zoom="true" zoomrandomxy="true" zoomdepth="2" zoomrandomdepth="false" 
+       panzoomtime="5000" crossfadetime="3000" slidedelaytime="6000" motionmode="liner" 
+       xmargin="10" ymargin="10" showlink="false" />
+       
+       <gallery name="Europe" description="母が撮った写真です"> 
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/01.jpg</imageurl> 
+                       <linkurl name="open 01.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/01.jpg",500,333,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/02.jpg</imageurl> 
+                       <linkurl name="open 02.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/02.jpg",500,333,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/03.jpg</imageurl> 
+                       <linkurl name="open 03.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/03.jpg",500,341,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/04.jpg</imageurl> 
+                       <linkurl name="open 04.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/04.jpg",500,375,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/05.jpg</imageurl> 
+                       <linkurl name="open 05.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/05.jpg",500,375,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/06.jpg</imageurl> 
+                       <linkurl name="open 06.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/06.jpg",500,333,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/07.jpg</imageurl> 
+                       <linkurl name="open 07.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/07.jpg",500,375,1)</linkurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/misa/08.jpg</imageurl> 
+                       <linkurl name="open 08.jpg">javascript:pholiotImageOpen("http://reverb.jp/vivian/download/pholiot/misa/08.jpg",500,333,1)</linkurl> 
+               </image>
+       </gallery>
+
+       <gallery name="Light" description="ある夜のお散歩中に"> 
+               <customize fitimagetoview="true" fitviewtoimage="true" pan="true" zoom="false" panzoomtime="3000" crossfadetime="2000" slidedelaytime="6000" motionmode="liner"  xmargin="0" ymargin="0" />
+               <linkurl name="Reverb.JP">http://reverb.jp</linkurl> 
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/01.jpg</imageurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/02.jpg</imageurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/03.jpg</imageurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/04.jpg</imageurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/05.jpg</imageurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/06.jpg</imageurl> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/02/07.jpg</imageurl> 
+               </image>
+       </gallery>
+       
+       <gallery name="横浜遊歩" description="昔住んでた横浜の伯母の家へ(携帯で撮りました)"> 
+       <customize fitimagetoview="false" fitviewtoimage="true" zoom="false" xmargin="10" ymargin="10" />
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/kaidan.jpg</imageurl>
+                       <caption>目指すは丘の上の公園</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/nya2_s.jpg</imageurl> 
+                       <caption>ねこたんお見送り</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/kouen3.jpg</imageurl> 
+                       <caption>なつかしの場所到着</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/kouen1.jpg</imageurl> 
+                       <caption>ここがお気に入り</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/kouen2_s.jpg</imageurl> 
+                       <caption>ハモニカ吹くひと</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/cosmos1.jpg</imageurl> 
+                       <caption>コスモスがキレイでした</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/cosmos2.jpg</imageurl> 
+                       <caption>もういっちょ</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/dondon_s.jpg</imageurl> 
+                       <caption>その名もドンドン商店街</caption> 
+               </image>
+               <image> 
+                       <imageurl>http://reverb.jp/vivian/download/pholiot/yokohama/nya1.jpg</imageurl> 
+               </image>
+       </gallery>
+
+</pholiotdata>
diff --git a/trunk/NP_RecentItems/NP_RecentItems.php b/trunk/NP_RecentItems/NP_RecentItems.php
new file mode 100644 (file)
index 0000000..bd9baa4
--- /dev/null
@@ -0,0 +1,62 @@
+<?
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) { return 'nucleus_' . $name;}
+}
+
+
+class NP_RecentItems extends NucleusPlugin {
+       function getName() {    return 'RecentItems'; }
+       function getAuthor() {  return 'nakahara21'; }
+       function getURL() {     return 'http://nakahara21.com/'; }
+       function getVersion() { return '0.5'; }
+       function getDescription() { 
+               return 'Display Recent Items. Usage: &lt;%RecentItems(blogname,templatename,5)%&gt;';
+       }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function doSkinVar($skinType, $blogName='', $templateName='', $amountEntries=5) { 
+       global $manager;
+
+
+               if(!BLOG::exists($blogName)) return;
+               if(!TEMPLATE::exists($templateName)) return;
+               if($amountEntries=='') $amountEntries=5;
+
+               $tempBid = getBlogIDFromName($blogName);
+               $b =& $manager->getBlog($tempBid); 
+
+               $query = $this->_getsqlquery($b, $amountEntries, '');
+               $b->showUsingQuery($templateName, $query, 0, 1, 0);
+       }
+
+       function _getsqlquery($blogObj, $amountEntries, $extraQuery)
+       {
+               $query = 'SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed';
+               
+               $query .= ' FROM '.sql_table('item').' as i, '.sql_table('member').' as m, '.sql_table('category').' as c'
+                      . ' WHERE i.iblog='.$blogObj->getID()
+                      . ' and i.iauthor=m.mnumber'
+                      . ' and i.icat=c.catid'
+                      . ' and i.idraft=0'      // exclude drafts
+                                       // don't show future items
+                      . ' and i.itime<=' . mysqldate($blogObj->getCorrectTime());
+
+//             if ($blogObj->getSelectedCategory())
+//                     $query .= ' and i.icat=' . $blogObj->getSelectedCategory() . ' ';
+
+               $query .= $extraQuery;
+               
+               $query .= ' ORDER BY i.itime DESC';
+               $query .= ' LIMIT '.$amountEntries;
+               
+               return $query;
+       }
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_SkinSwitcher/NP_SkinSwitcher.php b/trunk/NP_SkinSwitcher/NP_SkinSwitcher.php
new file mode 100644 (file)
index 0000000..03c2f00
--- /dev/null
@@ -0,0 +1,211 @@
+<?php
+
+class NP_SkinSwitcher extends NucleusPlugin {
+
+ function getNAME() { return 'Skin Switcher';  }
+ function getAuthor()  { return 'Andy + nakahara21';  }
+ function getURL() {  return ''; }
+ function getVersion() { return '0.7'; }
+ function getDescription() { 
+  return 'Skin selector. &lt;%SkinSwitcher()%&gt; makes a drop down menu. you can define unselectable skin on each blog, and all blogs.';
+ }
+ function install() {
+               $this->createOption("del_uninstall", "Delete tables on uninstall?", "yesno", "no");
+
+               $query =  'CREATE TABLE IF NOT EXISTS '. sql_table('plug_skinswitcher'). '('
+               . 'ssid int(11) not null auto_increment,'
+               . 'sblogid int(11) NOT NULL,'
+               . 'disskinid TEXT NOT NULL,'
+               . ' PRIMARY KEY (ssid)'
+               . ') TYPE=MyISAM;';
+               sql_query($query);
+ }
+ function unInstall() { 
+               if ($this->getOption('del_uninstall') == "yes") {
+                       sql_query('DROP TABLE ' .sql_table('plug_skinswitcher'));
+               }
+ }
+
+       function supportsFeature($what) {
+               switch($what)
+               {
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function getTableList() {
+               return array(sql_table('plug_skinswitcher'));
+       }
+       function hasAdminArea() { return 1; }
+       function event_QuickMenu(&$data) {
+               global $member;
+               // only show to blogAdmins
+               if (!($member->isLoggedIn() && $member->getAdminBlogs())) return;
+               array_push(
+                       $data['options'],
+                       array(
+                               'title' => 'SkinSwitcher',
+                               'url' => $this->getAdminURL(),
+                               'tooltip' => 'Edit SkinSwitcher'
+                       )
+               );
+       }
+
+       function getEventList()   {             
+               return array('QuickMenu','InitSkinParse');
+       }
+
+       function event_InitSkinParse(&$data) {
+               global $CONF, $blogid;
+               $cookieName = $CONF['CookiePrefix'] .'nuc_skinswitch';
+
+               if (cookieVar($cookieName)) {
+                       $skinID = cookieVar($cookieName);
+                       $sdnums = $this->getSdnums($blogid);
+                       if(in_array($skinID,$sdnums)){
+                               setcookie($cookieName,'',(time() - 3600),$CONF['CookiePath'],$CONF['CookieDomain'],$CONF['CookieSecure']);
+                       }else{
+                               if ($data['skin']->existsID($skinID)) {
+//                                     $data['skin']->SKIN($skinID);
+                                       $data['skin'] = new SKIN($skinID);
+                               }
+                       }
+               }
+       }
+
+       function doSkinVar($skinType) {
+               global $blog, $currentSkinName, $CONF;
+
+               $b =& $blog;
+               $defskinid = $b->getDefaultSkin();
+               $defskinName = SKIN::getNameFromId($defskinid);
+               $currentSkinID = SKIN::getIdFromName($currentSkinName);
+               $blogid = $b->getID();
+               $cookieContent = "document.cookie='".$CONF['CookiePrefix']."nuc_skinswitch=' + this.value + ';'";
+               $cookieContentExtra = '';
+               if($CONF['CookiePath']) $cookieContentExtra .= "path=".$CONF['CookiePath'].";";
+               if($CONF['CookieDomain']) $cookieContentExtra .= "domain=".$CONF['CookieDomain'].";";
+               if($CONF['CookieSecure']) $cookieContentExtra .= "secure=".$CONF['CookieSecure'].";";
+               if($cookieContentExtra) $cookieContent .= " + '".$cookieContentExtra."'";
+
+               echo '<form action="">';                
+//             echo '<select name="skinselector" onchange="document.cookie=\''.$CONF['CookiePrefix'].'nuc_skinswitch=\' + this.value;">';
+               echo '<select name="skinselector" onchange="'.$cookieContent.'">';
+               echo '<optgroup label="Blog default" style="color:red;">';
+                       $exstr = ($defskinid==$currentSkinID)? ' selected="selected"': '';
+                       echo '<option value="' . $defskinid . '"'.$exstr.'>';
+                       echo htmlspecialchars($defskinName).'</option>';
+               echo '</optgroup>';
+
+               echo '<optgroup label="oters">';
+               $global_sdnums = $this->getSdnums(0);
+               $sdnums = $this->getSdnums($blogid);
+               $res = sql_query('SELECT * FROM '.sql_table('skin_desc').' WHERE sdnumber<>'.$defskinid);
+               while ($skinObj = mysql_fetch_object($res)) {
+                       if(in_array($skinObj->sdnumber,$global_sdnums) || in_array($skinObj->sdnumber,$sdnums)) continue;
+                       $exstr = ($skinObj->sdnumber==$currentSkinID)? ' selected': '';
+                       echo '<option value="' . $skinObj->sdnumber . '"'.$exstr.'>';
+                       echo htmlspecialchars($skinObj->sdname).'</option>';
+               }
+               echo '</optgroup>';
+               echo '</select>';
+               echo '<input type="submit" value="select" onclick="window.location.reload();return false;" />';
+               echo '</form>';
+
+               if($currentSkinID != $defskinid && $this->canChange($blogid)){
+                       echo '<div id="skindef"><a href="javascript:setDefSkin('."'".$currentSkinID."','".$blogid."'".');">set default skin to "'.htmlspecialchars($currentSkinName).'"</a></div>';
+               }
+if($this->canChange($blogid)){
+?>
+       <script type="text/javascript">
+       var xmlhttp = false;
+       var scAction = "<?php echo $CONF['ActionURL'];?>";
+               function setDefSkin(skinid, blogid){
+                       try 
+                       {
+                               xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+                       } 
+                       catch (e) 
+                       {
+                               try 
+                               {
+                                       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+                               } 
+                               catch (e) 
+                               {
+                                       xmlhttp = false;
+                               }
+                       }
+
+                       if (!xmlhttp && typeof XMLHttpRequest!='undefined'){
+                               xmlhttp = new XMLHttpRequest();
+                       }
+                       
+                       if (xmlhttp){
+               var url = scAction + '?action=plugin&name=SkinSwitcher&type=change&s=' + skinid + '&b=' + blogid;
+               
+               xmlhttp.onreadystatechange=xmlhttpChange
+               xmlhttp.open("GET",url,true)
+               xmlhttp.send('')
+                       }
+               }
+       function xmlhttpChange()
+       {
+               if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
+               {
+                       var deff = document.getElementById("skindef");
+                       deff.innerHTML = xmlhttp.responseText;
+               }
+       }
+       
+       </script>
+
+<?php
+}
+
+       }
+
+       function getSdnums($blogid=0) {
+               $pq = 'SELECT disskinid FROM '.sql_table('plug_skinswitcher').' WHERE sblogid='.$blogid;
+               $pres = sql_query($pq);
+               if (mysql_num_rows($pres) == 0) return array();
+               $sdnums = mysql_result($pres,0,0);
+               $sdnums = explode(',',$sdnums);
+               return $sdnums;
+       }
+
+       function canChange($blogid) {
+               global $member;
+               if(!$member->isLoggedIn()) return 0;
+               return $member->isBlogAdmin($blogid);
+       }
+
+       function doAction($type){
+               global $CONF, $manager;
+               switch ($type) {
+                       case 'change':
+                               if(!($blogid = intGetVar('b'))) return;
+                               if(!$this->canChange($blogid)) return;
+
+                               if(!($skinid = intGetVar('s'))) return;
+                               $query =  'UPDATE '.sql_table('blog')
+                                      . " SET bdefskin=" . $skinid
+                                      . " WHERE bnumber=" . $blogid;
+                               $res = @mysql_query($query);
+                               if($res){
+                                       echo '<b style="color:red;">Done! Please reload.</b>';
+                               }else{
+                                       echo 'Could not update: ' . mysql_error() . $query;
+                               }               
+                               break;
+                       default:
+                               break;
+               }
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_SkinSwitcher/skinswitcher/index.php b/trunk/NP_SkinSwitcher/skinswitcher/index.php
new file mode 100644 (file)
index 0000000..7c998ea
--- /dev/null
@@ -0,0 +1,217 @@
+<?php
+
+       $strRel = '../../../'; 
+       include($strRel . 'config.php');
+       include($DIR_LIBS . 'PLUGINADMIN.php');
+       
+       // Send out Content-type
+       sendContentType('application/xhtml+xml', 'admin-skinswitcher', _CHARSET);       
+/*
+       if (!($member->isLoggedIn() && $member->isAdmin()))
+               doError('You\'re not logged in.');
+*/     
+       if (!($member->isLoggedIn() && $member->getAdminBlogs()))
+               doError('You do not have admin rights for any blogs.');
+
+       $oPluginAdmin = new PluginAdmin('SkinSwitcher');
+
+               // include language file for this plugin 
+               $language = ereg_replace( '[\\|/]', '', getLanguageName()); 
+               if (file_exists($oPluginAdmin->plugin->getDirectory().'language/'.$language.'.php')) 
+                       include_once($oPluginAdmin->plugin->getDirectory().'language/'.$language.'.php'); 
+               else 
+                       include_once($oPluginAdmin->plugin->getDirectory().'language/'.'english.php');
+
+
+// ------------------------------------------------------------------
+class NpSkinSwitcher_ADMIN{
+       
+       function NpSkinSwitcher_ADMIN(){
+               global $oPluginAdmin;
+               $this->url = $oPluginAdmin->plugin->getAdminURL();
+               $this->extrahead = '<link rel="stylesheet" type="text/css" href="'.$this->url.'plus.css" />'."\n";
+               session_start();
+
+       }
+
+       function msg(){
+               $msg = $_SESSION['msg'];
+               if ($msg) echo "<blockquote>"._MESSAGE.": $msg</blockquote>";
+               unset($_SESSION['msg']);
+       }
+
+       function showSelectList($blogid){
+               global $member, $oPluginAdmin;
+               if(!$blogid && !($member->isAdmin())) return;
+
+               $global_sdnums = $oPluginAdmin->plugin->getSdnums(0);
+               $defskinid = quickQuery('SELECT bdefskin as result FROM '.sql_table('blog').' WHERE bnumber='.intval($blogid));
+               if($hkey = array_search($defskinid,$global_sdnums)) unset($global_sdnums[$hkey]);
+               $sdnums = $oPluginAdmin->plugin->getSdnums($blogid);
+               if($blogid)
+                       echo '<h4>'._EBLOG_NAME.' : '.getBlogNameFromID($blogid).'</h4>';
+               else
+                       echo '<h4>'._SETTINGS_TITLE.'</h4>';
+
+               $this->msg();
+?>
+                       <form method="post" action="<?php echo $this->url ?>index.php">
+                               <input type="hidden" name="action" value="update" />
+                               <input type="hidden" name="blogid" value="<?php echo $blogid ?>" />
+<?php          
+               echo '<table>'."\n";
+               echo '<thead><tr><th>'._SKIN_NAME.'</th><th>'._SKIN_TYPE.'</th><th>'._SKIN_DESC.'</th></tr></thead>'."\n";
+               echo '<tbody>';
+               $query =  'SELECT * FROM '.sql_table('skin_desc');
+               $res = sql_query($query);
+               
+               
+               $i=0;
+               while($ob = mysql_fetch_object($res)){
+                       if($blogid && in_array($ob->sdnumber,$global_sdnums)) continue;
+                       $chtxt = (in_array($ob->sdnumber,$sdnums))? ' checked="checked"': '';
+                       $extxt = ($ob->sdnumber==$defskinid)? '<b> ('._EBLOG_DEFSKIN.')</b>': '';
+                       echo '<tr'." onmouseover='focusRow(this);' onmouseout='blurRow(this);'".'><td><input type="checkbox" id="batch'.$i.'" name="sdnum['.$i.']" value="'.$ob->sdnumber.'"'.$chtxt.' /><label for="batch'.$i.'">'.$ob->sdname.$extxt.'</label></td><td>'.$ob->sdtype.'</td><td>'.$ob->sddesc.'</td></tr>'."\n";
+                       $i++;
+               }
+               echo '<tr><td colspan="3">
+               <a href="" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return batchSelectAll(1); ">'._BATCH_SELECTALL.'</a>
+                <a href="" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return batchSelectAll(0); ">'._BATCH_DESELECTALL.'</a>
+                       <input type="submit" tabindex="10" value="'._SUBMIT.'" /> 
+                </td></tr>'."\n";
+               echo '</tbody></table></form>'."\n";
+       }
+
+       function bloglistForSS(){
+               global $member;
+               
+               echo '<h4>'._OVERVIEW_YRBLOGS.' ('._BMLET_OPTIONS.')</h4>';
+               if ($member->isAdmin()) {
+                       // Super-Admins have access to all blogs! (no add item support though)
+                       $query =  'SELECT bnumber, bname, 1 as tadmin, burl, bshortname'
+                                  . ' FROM ' . sql_table('blog')
+                                  . ' ORDER BY bname';
+               } else {
+                       $query =  'SELECT bnumber, bname, tadmin, burl, bshortname'
+                                  . ' FROM ' . sql_table('blog') . ', ' . sql_table('team')
+                                  . ' WHERE tblog=bnumber and tmember=' . $member->getID() . ' and tadmin=1'
+                                  . ' ORDER BY bname';
+               }
+               $res = sql_query($query);
+               
+               $i=0;
+               echo '<table>'."\n";
+               echo '<tr><th>'._EBLOG_NAME.'</th><th>'._EBLOG_DESC.'</th><th>'._LISTS_ACTIONS.'</th></tr>'."\n";
+               while($ob = mysql_fetch_object($res)){
+                       echo '<tr'." onmouseover='focusRow(this);' onmouseout='blurRow(this);'".'><td>' . $ob->bname . '</td><td>'.$ob->bdesc.'</td><td><a href="'.$this->url.'index.php?action=blogoverview&amp;blogid='.$ob->bnumber.'">'._PLUG_SKINSWITCHER_BLOGLINK.'</a></td></tr>';
+               }
+               echo '</table>'."\n";
+               
+       }
+
+       function action_overview(){
+               global $member, $oPluginAdmin;
+//             $member->isAdmin() or $this->disallow();
+               $member->isLoggedIn() or $this->disallow();
+
+               $oPluginAdmin->start($this->extrahead);
+               echo '<h2>SkinSwitcher</h2>';
+               echo _PLUG_SKINSWITCHER_HINT;
+               $this->showSelectList(0);
+               $this->bloglistForSS();
+
+               
+               $oPluginAdmin->end();
+       }
+
+       function action_blogoverview(){
+               global $member, $oPluginAdmin;
+               $member->isLoggedIn() or $this->disallow();
+
+               $oPluginAdmin->start($this->extrahead);
+               echo '<h2>SkinSwitcher</h2>';
+               echo _PLUG_SKINSWITCHER_HINT;
+               $blogid = intRequestVar('blogid');
+               $this->showSelectList($blogid);
+
+               
+               $oPluginAdmin->end();
+       }
+       
+
+       function action_update(){
+               global $member, $oPluginAdmin, $oTemplate;
+//             $member->isAdmin() or $this->disallow();
+               $member->isLoggedIn() or $this->disallow();
+
+               $blogid = intRequestVar('blogid');
+               $sdnums = @join(',',requestVar('sdnum'));
+               
+               $dq = 'DELETE FROM '.sql_table('plug_skinswitcher').' WHERE sblogid='.$blogid;
+               $dres = sql_query($dq);
+               
+               if($sdnums){
+               $iq = "
+                               INSERT INTO 
+                                       ".sql_table('plug_skinswitcher')." 
+                               SET
+                                       sblogid = ".$blogid.", 
+                                       disskinid = '".$sdnums."'
+                               ";
+                               $res = @mysql_query($iq);
+                               if (!$res) {
+                                       $_SESSION['msg'] = $iq.'Could not save data: ' . mysql_error() . $query;
+                               }else{
+                                       $_SESSION['msg'] = 'Saved.';
+                               }
+               }else{
+                                       $_SESSION['msg'] = 'Saved.';
+               }
+               
+               header('location: '.$this->url);
+
+       }
+
+       
+       
+       function action($action) {
+               $methodName = 'action_' . $action;
+               if (method_exists($this, $methodName)) {
+                       call_user_func(array(&$this, $methodName));
+               } else {
+                       $this->error(_BADACTION . " ($action)");
+               }
+       }
+
+       function disallow() {
+               global $HTTP_SERVER_VARS;
+               
+               ACTIONLOG::add(WARNING, _ACTIONLOG_DISALLOWED . $HTTP_SERVER_VARS['REQUEST_URI']);
+               
+               $this->error(_ERROR_DISALLOWED);
+       }
+
+       function error($msg) {
+               global $oPluginAdmin;
+               
+               $oPluginAdmin->start();
+               $dir=$oPluginAdmin->plugin->getAdminURL();
+               ?>
+               <h2>Error!</h2>
+               <?php           echo $msg;
+               echo "<br />";
+               echo "<a href='".$dir."index.php' onclick='history.back()'>"._BACK."</a>";
+               
+               $oPluginAdmin->end();
+               exit;
+       }
+}
+// ------------------------------------------------------------------
+$myAdmin = new NpSkinSwitcher_ADMIN();
+if (requestVar('action')) {
+       $myAdmin->action(requestVar('action'));
+} else {
+       $myAdmin->action('overview');
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_SkinSwitcher/skinswitcher/language/english.php b/trunk/NP_SkinSwitcher/skinswitcher/language/english.php
new file mode 100644 (file)
index 0000000..353ec8c
--- /dev/null
@@ -0,0 +1,5 @@
+<?php 
+define('_PLUG_SKINSWITCHER_HINT',                      "Select skin you <b>don't want</b> to put in choices.");
+define('_PLUG_SKINSWITCHER_BLOGLINK',                  "define unselectable skins on this blog");
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_SkinSwitcher/skinswitcher/language/japanese-euc.php b/trunk/NP_SkinSwitcher/skinswitcher/language/japanese-euc.php
new file mode 100644 (file)
index 0000000..3ec1f35
--- /dev/null
@@ -0,0 +1,7 @@
+<?php 
+define('_PLUG_SKINSWITCHER_HINT',                      "¥»¥ì¥¯¥È¥Ü¥Ã¥¯¥¹¤ÎÁªÂò»è¤ÎÃæ¤Ë<b>Æþ¤ì¤¿¤¯¤Ê¤¤</b>¥¹¥­¥ó¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤¯¤À¤µ¤¤");
+define('_PLUG_SKINSWITCHER_BLOGLINK',                  "¤³¤Îblogɽ¼¨Ãæ¤ËÁªÂò¤µ¤»¤Ê¤¤¥¹¥­¥ó¤ÎÄɲûØÄê¤Ø");
+
+
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_SkinSwitcher/skinswitcher/language/japanese-utf8.php b/trunk/NP_SkinSwitcher/skinswitcher/language/japanese-utf8.php
new file mode 100644 (file)
index 0000000..3df67af
--- /dev/null
@@ -0,0 +1,7 @@
+<?php 
+define('_PLUG_SKINSWITCHER_HINT',                      "セレクトボックスの選択肢の中に<b>入れたくない</b>スキンにチェックを入れてください");
+define('_PLUG_SKINSWITCHER_BLOGLINK',                  "このblog表示中に選択させないスキンの追加指定へ");
+
+
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_SkinSwitcher/skinswitcher/plus.css b/trunk/NP_SkinSwitcher/skinswitcher/plus.css
new file mode 100644 (file)
index 0000000..f21c2e1
--- /dev/null
@@ -0,0 +1,27 @@
+blockquote{
+       color: red;
+       border:1px solid red;
+       padding:0.5em;
+}
+sup{
+       font-weight:bold;
+       color:blue;
+}
+td.sep{
+       border:none;
+       padding:5px;
+}
+td.tl, td.tld{
+       font-family: Tahoma, verdana, lucida, arial, helvetica, sans-serif;
+       font-size: 80%;
+}
+td.tld{
+       color: silver;
+}
+textarea, input,select.f, select.f option{
+       font-family: Tahoma, verdana, arial, " Trebuchet MS", lucida, helvetica, sans-serif;
+       font-size: 90%;
+}
+textarea{
+       padding:2px;
+}
diff --git a/trunk/NP_TinyMCE2j/NP_TinyMCE2j.php b/trunk/NP_TinyMCE2j/NP_TinyMCE2j.php
new file mode 100644 (file)
index 0000000..b885d1e
--- /dev/null
@@ -0,0 +1,230 @@
+<?php
+
+/**
+  * Plugin for Nucleus CMS (http://plugins.nucleuscms.org/)
+  * Copyright (C) 2003 The Nucleus Plugins Project
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2
+  * of the License, or (at your option) any later version.
+  *
+  * see license.txt for the full license
+  */
+
+/**
+ * Usage:
+ *             
+ *
+ * Versions:
+ *  0.9c       2005-09-28  eph
+ *             - upgrade to TinyMCE 2RC3
+ *             - lots of path fixes
+ *             - experimental GZip option. Should load quicker if it works
+ *  0.9b       2005-09-24  eph
+ *             - upgrade to TinyMCE 2RC2
+ *             - addition of File Manager
+ *             - bugfixes and cleaner uninstall
+ *     0.9             2005-07-16      roel
+ *             - initial implementation, mostly copied over from NP_EditControls by karma - http://demuynck.org 
+ */
+
+class NP_TinyMCE2j extends NucleusPlugin {
+
+       function NP_TinyMCE2j() {
+               // $this->baseUrl = $this->getAdminURL();
+               // hardcoded relative path to avoid domain security issues (IE6 'Access is denied' error) 
+               global $CONF;
+               $this->baseUrl = str_replace ($CONF['AdminURL'],'',$this->getAdminURL()); 
+               
+       }
+
+       function getName()              { return 'TinyMCE 2RC3'; }
+       function getAuthor()    { return 'karma | roel | eph'; }
+       function getURL()               { return 'http://demuynck.org/'; }
+       function getVersion()   { return '0.9c'; }
+       function getMinNucleusVersion() { return 300; }
+       function getDescription()
+       {
+               return 'WYSIWYG XHTML 1.0 editor. Mozilla, MSIE and FireFox (Safari experimental).';
+       }
+               
+
+
+       /**
+        * Make sure plugin still works when a database table prefix is activated for 
+        * the Nucleus installation. (Nucleus refuses to install plugins which do not
+        * support SqlTablePrefix when a database prefix is active)
+        */
+
+       function supportsFeature($what) {
+       switch($what) {
+               case 'HelpPage':
+                               return 0;
+                               break;
+                       case 'SqlTablePrefix':
+                                       return 1;
+                                       break;
+               default:
+                               return 0;
+       }
+       }
+
+       function install() {
+               // create plugin options (per-blog options)
+               $this->createBlogOption('use_tinymce', 'Use TinyMCE editor', 'yesno', 'yes');
+
+               // create plugin options (admin)
+               $this->createOption('use_tgzip', 'Use TinyMCE GZip compression (experimental)', 'yesno', 'no');
+               
+               // disable the default javascript editbar that comes with nucleus
+               mysql_query("UPDATE ".sql_table('config')." SET value='1' WHERE name='DisableJSTools'");
+               
+               // disable auto-linebreak conversions
+               $this->setLinebreakConversion(0);
+               
+       }
+       
+       function setLinebreakConversion($mode) {
+               // modify auto-linebreak on the fly. Thx to alfmiti :)
+               mysql_query("UPDATE ".sql_table('blog')." SET bconvertbreaks=".$mode);
+
+       }
+
+       function unInstall() {
+               // restore to standard settings
+               $this->setLinebreakConversion(1);
+               mysql_query("UPDATE ".sql_table('config')." SET value='2' WHERE name='DisableJSTools'");
+       }
+
+       /**
+        * List of events we want to subscribe to
+        */
+       function getEventList() {
+               return array(
+                       'AdminPrePageHead',                     // include javascript on admin add/edit pages
+                       'BookmarkletExtraHead',                 // include javascript on bookmarklet pages
+                       'PreSendContentType'                    // we need to force text/html instead of application/xhtml+xml
+               );
+       }
+       
+       /**
+        * Hook into the <head> section of bookmarkler area pages.
+        * Insert extra script/css includes there.
+        */
+       function event_BookmarkletExtraHead(&$data)
+       {
+               $this->_getExtraHead($data['extrahead']);       
+       }
+
+       /**
+        * Hook into the <head> section of admin area pages. When the requested page is an "add item" or
+        * "edit item" form, include the extra code.
+        */
+       function event_AdminPrePageHead(&$data) 
+       {
+               $action = $data['action'];
+               if (($action != 'createitem') && ($action != 'itemedit'))
+                       return;
+               
+               $this->_getExtraHead($data['extrahead']);
+               
+       }       
+       
+       /**
+        * Returns the extra code that needs to be inserted in the <head>...</head> section of pages that
+        * use tinyMCE
+        */
+       function _getExtraHead(&$extrahead)
+       {
+               global $CONF, $manager;
+
+               // Found no function to detect blogid in this time -> do the long way
+               if (is_array($manager->blogs)) {
+                       $tmp_keys = array_keys($manager->blogs);
+                       $blogid = $tmp_keys[0];
+               }      
+               
+               // get the options for the current blog
+               $bUseEditor     = ($this->getBlogOption($blogid, 'use_tinymce') == 'yes');
+
+               // add code for html editor
+               if ($bUseEditor)
+               {
+                       // To avoid conflicts if a other user use only textmode we must set this on all calls
+                       $CONF['DisableJsTools'] = 1; // overrule simple global settings
+                       $this->setLinebreakConversion(0);
+                       
+                       // GZip compression?
+                       if ($this->getOption('use_tgzip') == 'yes')
+                               $editorCode = '<script type="text/javascript" src="'.$this->baseUrl.'tiny_mce_gzip.php"></script>';
+                       else 
+                               $editorCode = '<script type="text/javascript" src="'.$this->baseUrl.'tiny_mce.js"></script>';
+
+               if(_CHARSET == 'UTF-8'){
+                       $lang_jp = 'ja_utf8';
+               }elseif(_CHARSET == 'EUC-JP'){
+                       $lang_jp = 'ja_euc';
+               }else{
+                       $lang_jp = 'en';
+               }
+                       $editorCode .= <<<EOD
+<script type="text/javascript">
+ tinyMCE.init({ 
+       language : "{$lang_jp}",
+       mode : "textareas",
+       theme : "advanced",
+       document_base_url : "{$CONF['IndexURL']}",
+       plugins : "paste,ibrowser,filemanager,emotions,searchreplace,table",
+       theme_advanced_buttons1 : "bold,italic,underline,strikethrough,forecolor,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,bullist,numlist,separator,link,unlink",
+       theme_advanced_buttons1_add : "ibrowser,filemanager,emotions,separator,code",
+       theme_advanced_buttons2 : "undo,redo,separator,tablecontrols,separator,pastetext,pasteword,search,replace",
+       theme_advanced_buttons3 : "",
+       theme_advanced_toolbar_location : "top",
+       theme_advanced_toolbar_align : "left",
+       theme_advanced_path_location : "bottom",
+       extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],span[class|align|style]",
+       paste_create_paragraphs : true,
+       paste_use_dialog : true,
+       paste_auto_cleanup_on_paste : true,
+       theme_advanced_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Row=tableRow1",
+       debug : false
+
+});
+</script>
+EOD;
+
+                       $extrahead .= $editorCode;
+               } else {
+                       $CONF['DisableJsTools'] = 2;
+                       $linebreak_conversion = $this->getOption('enable_br') == 'yes' ? 1 : 0;
+                       $this->setLinebreakConversion($linebreak_conversion);
+               }
+
+       }
+       
+       /**
+        * Nucleus sends its admin area pages as application/xhtml+xml to browsers that can handle this.
+        *
+        * Unfortunately, this causes javascripts that alter page contents through non-DOM methods
+        * to stop working correctly. As the jscalendar and htmlarea both need this, we're forcing
+        * the content-type to text/html for add/edit item forms.
+        */
+       function event_PreSendContentType(&$data)
+       {
+               $pageType = $data['pageType'];
+               if ($pageType == 'skin')
+                       return;
+               if (    ($pageType != 'bookmarklet-add')
+                       &&      ($pageType != 'bookmarklet-edit')
+                       &&      ($pageType != 'admin-createitem')
+                       &&      ($pageType != 'admin-itemedit')
+                       )
+                       return;
+               
+               if ($data['contentType'] == 'application/xhtml+xml')
+                       $data['contentType'] = 'text/html';
+       }
+       
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/blank.htm b/trunk/NP_TinyMCE2j/tinymce2j/blank.htm
new file mode 100644 (file)
index 0000000..c1ff835
--- /dev/null
@@ -0,0 +1,9 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>blank_page</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</head>
+<body class="mceContentBody">
+
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ar.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ar.js
new file mode 100644 (file)
index 0000000..bb5804c
--- /dev/null
@@ -0,0 +1,43 @@
+// arabic lang variables
+// Toolbar Items and Context Menu
+
+tinyMCE.addToLang('',{
+dir : 'rtl',
+bold_desc : '&#1594;&#1575;&#1605;&#1602;',
+italic_desc : '&#1605;&#1575;&#1574;&#1604;',
+underline_desc : '&#1578;&#1587;&#1591;&#1610;&#1585;',
+striketrough_desc : '&#1610;&#1578;&#1608;&#1587;&#1591;&#1607; &#1582;&#1591;',
+justifyleft_desc : '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577; &#1573;&#1604;&#1609; &#1575;&#1604;&#1610;&#1587;&#1575;&#1585;',
+justifycenter_desc : '&#1578;&#1608;&#1587;&#1610;&#1591;',
+justifyright_desc : '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577; &#1573;&#1604;&#1609; &#1575;&#1604;&#1610;&#1605;&#1610;&#1606;',
+justifyfull_desc : '&#1590;&#1576;&#1591;',
+bullist_desc : '&#1578;&#1593;&#1583;&#1575;&#1583; &#1606;&#1602;&#1591;&#1610;',
+numlist_desc : '&#1578;&#1593;&#1583;&#1575;&#1583; &#1585;&#1602;&#1605;&#1610;',
+outdent_desc : '&#1573;&#1606;&#1602;&#1575;&#1589; &#1575;&#1604;&#1605;&#1587;&#1575;&#1601;&#1577; &#1575;&#1604;&#1576;&#1575;&#1583;&#1574;&#1577;',
+indent_desc : '&#1586;&#1610;&#1575;&#1583;&#1577; &#1575;&#1604;&#1605;&#1587;&#1575;&#1601;&#1577; &#1575;&#1604;&#1576;&#1575;&#1583;&#1574;&#1577;',
+undo_desc : '&#1578;&#1585;&#1575;&#1580;&#1593;',
+redo_desc : '&#1573;&#1593;&#1575;&#1583;&#1577;',
+link_desc : '&#1573;&#1583;&#1585;&#1575;&#1580;/&#1578;&#1581;&#1585;&#1610;&#1585; &#1585;&#1575;&#1576;&#1591;',
+unlink_desc : '&#1573;&#1586;&#1575;&#1604;&#1577; &#1585;&#1575;&#1576;&#1591;',
+image_desc : '&#1573;&#1583;&#1585;&#1575;&#1580;/&#1578;&#1581;&#1585;&#1610;&#1585; &#1589;&#1608;&#1585;&#1577;',
+cleanup_desc : 'Cleanup messy code',
+focus_alert : 'A editor instance must be focused before using this command.',
+edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',
+insert_link_title : '&#1573;&#1583;&#1585;&#1575;&#1580;/&#1578;&#1581;&#1585;&#1610;&#1585; &#1585;&#1575;&#1576;&#1591;',
+insert : '&#1573;&#1583;&#1585;&#1575;&#1580;',
+update : '&#1573;&#1583;&#1585;&#1575;&#1580;',
+cancel : '&#1571;&#1604;&#1594;&#1610;',
+insert_link_url : '&#1585;&#1575;&#1576;&#1591; URL',
+insert_link_target : '&#1575;&#1604;&#1607;&#1583;&#1601;',
+insert_link_target_same : '&#1606;&#1601;&#1587; &#1575;&#1604;&#1573;&#1591;&#1575;&#1585;',
+insert_link_target_blank : '&#1573;&#1591;&#1575;&#1585; &#1580;&#1583;&#1610;&#1583; (_blank)',
+insert_image_title : '&#1573;&#1583;&#1585;&#1575;&#1580;/&#1578;&#1581;&#1585;&#1610;&#1585; &#1589;&#1608;&#1585;&#1577;',
+insert_image_src : '&#1589;&#1608;&#1585;&#1577; URL',
+insert_image_alt : '&#1575;&#1604;&#1608;&#1589;&#1601;',
+help_desc : '&#1575;&#1604;&#1605;&#1587;&#1575;&#1593;&#1583;&#1577;',
+bold_img : 'bold.gif',
+italic_img : 'italic.gif',
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ca.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ca.js
new file mode 100644 (file)
index 0000000..3a896fc
--- /dev/null
@@ -0,0 +1,41 @@
+// CA lang variables by Marc Bria
+
+tinyMCE.addToLang('',{
+bold_desc : 'Negreta',
+italic_desc : 'Cursiva',
+underline_desc : 'Subratllat',
+striketrough_desc : 'Tatxat',
+justifyleft_desc : 'Alinear a l´esquerra',
+justifycenter_desc : 'Alinear al centre',
+justifyright_desc : 'Alinear a la dreta',
+justifyfull_desc : 'Alinear justificat',
+bullist_desc : 'Llista sense ordenar',
+numlist_desc : 'Llista ordenada',
+outdent_desc : 'Disminueix sangria',
+indent_desc : 'Augmentar sangria',
+undo_desc : 'Desfer',
+redo_desc : 'Refer',
+link_desc : 'Insertar enllaç',
+unlink_desc : 'Treure enllaç',
+image_desc : 'Insertar imatge',
+cleanup_desc : 'Netejar codi',
+focus_alert : 'L´àrea de l´editor ha de ser enfocada abans d´executar aquesta comanda.',
+edit_confirm : 'Vols utilitzar el modus WYSIWYG per a aquesta àrea de text?',
+insert_link_title : 'Insertar/editar enllaç',
+insert : 'Insertar',
+update : 'Insertar',
+cancel : 'Cancel·lar',
+insert_link_url : 'Adreça de l´enllaç',
+insert_link_target : 'Destí',
+insert_link_target_same : 'Obrir enllaç a la mateixa finestra',
+insert_link_target_blank : 'Obrir enllaç en una finestra nova',
+insert_image_title : 'Insertar/editar imatge',
+insert_image_src : 'URL de l´imatge',
+insert_image_alt : 'Descripció de la imatge',
+help_desc : 'Ajut',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copiar/Tallar/Enganxar no és possible amb Mozilla i Firefox.\nVols més informació sobre aquest problema de seguretat?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/cs.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/cs.js
new file mode 100644 (file)
index 0000000..b0c9b29
--- /dev/null
@@ -0,0 +1,52 @@
+/**
+ * Czech lang variables 
+ * encoding: utf-8
+ * 
+ * @author Michi   
+ * @author Pavel Novák
+ * @author Josef Klimosz
+ *    
+ * $Id: cs.js,v 1.1 2006-10-02 05:37:06 shizuki Exp $ 
+ */  
+
+
+tinyMCE.addToLang('',{
+bold_desc : 'Tučně',
+italic_desc : 'Kurzíva',
+underline_desc : 'Podtržení',
+striketrough_desc : 'Přeškrtnutí',
+justifyleft_desc : 'Zarovnání vlevo',
+justifycenter_desc : 'Zarovnání na střed',
+justifyright_desc : 'Zarovnání vpravo',
+justifyfull_desc : 'Zarovnání do bloku',
+bullist_desc : 'Seznam s odrážkami',
+numlist_desc : 'Číslovaný seznam',
+outdent_desc : 'Snížit odsazení',
+indent_desc : 'Zvýšit odsazení',
+undo_desc : 'Zpět',
+redo_desc : 'Znovu',
+link_desc : 'Vložit odkaz',
+unlink_desc : 'Zrušit odkaz',
+image_desc : 'Vložit obrázek',
+cleanup_desc : 'Vyčistit kód',
+focus_alert : 'Před použitím tohoto příkazu musí být kurzor v okně editoru.',
+edit_confirm : 'Chcete použít WYSIWYG editaci pro tento text?',
+insert_link_title : 'Vložit/upravit odkaz',
+insert : 'Vložit',
+update : 'Změnit',
+cancel : 'Zrušit',
+insert_link_url : 'URL odkazu',
+insert_link_target : 'Cíl',
+insert_link_target_same : 'Otevřít odkaz ve stejném okně',
+insert_link_target_blank : 'Otevřít odkaz v novém okně',
+insert_image_title : 'Vložit/upravit obrázek',
+insert_image_src : 'URL obrázku',
+insert_image_alt : 'Popis obrázku',
+help_desc : 'Nápověda',
+bold_img : 'bold.gif',
+italic_img : 'italic.gif',
+underline_img : "underline.gif",
+clipboard_msg : 'Funkce Kopírovat/vyjmout/vložit nejsou použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?',
+popup_blocked : 'Omlouváme se, ale blokovač vyskakovacích oken neumožnil otevřít okno, které zprostředkovává funkčnost aplikace. Musíte vypnout blokování vyskakovacích oken na tomto webu, abyste využili plné funkčnosti.'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/cy.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/cy.js
new file mode 100644 (file)
index 0000000..2ac5bbc
--- /dev/null
@@ -0,0 +1,41 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Bold (Ctrl+B)',
+italic_desc : 'Italig (Ctrl+I)',
+underline_desc : 'Tanlinellu (Ctrl+U)',
+striketrough_desc : 'Llinell drwodd',
+justifyleft_desc : 'Unioni i\'r chwith',
+justifycenter_desc : 'Unioni i\'r canol',
+justifyright_desc : 'Unioni i\'r dde',
+justifyfull_desc : 'Unioni llawn',
+bullist_desc : 'Rhestr heb drefn',
+numlist_desc : 'Rhestr mewn trefn',
+outdent_desc : 'Lleihau mewnoliad',
+indent_desc : 'Cynyddu mewnoliad',
+undo_desc : 'Dadwneud (Ctrl+Z)',
+redo_desc : 'Ailwneud (Ctrl+Y)',
+link_desc : 'Mewnosod/golygu dolen',
+unlink_desc : 'Dadgysylltu',
+image_desc : 'Mewnosod/golygu delwedd',
+cleanup_desc : 'Tacluso c&ocirc;d',
+focus_alert : 'Rhaid rhoi ffocws i\'r golygydd cyn defnyddio\'r gorchymyn hwn.',
+edit_confirm : 'Wyt ti eisiau defnyddio\'r dull WYSIWYG ar gyfer yr ardal destun hon?',
+insert_link_title : 'Mewnosod/golygu dolen',
+insert : 'Mewnosod',
+update : 'Diweddaru',
+cancel : 'Diddymu',
+insert_link_url : 'URL dolen',
+insert_link_target : 'Targed',
+insert_link_target_same : 'Agor dolen yn yr un ffenest',
+insert_link_target_blank : 'Agor dolen mewn ffenest newydd',
+insert_image_title : 'Mewnosod/golygu delwedd',
+insert_image_src : 'URL delwedd',
+insert_image_alt : 'Disgrifiad delwedd',
+help_desc : 'Cymorth',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Dyw Cop&iuml;o/Torri/Gludo ddim ar gael ym Mozilla na Firefox.\nHoffet ti ragor o wybodaeth ynghylch hyn?',
+popup_blocked : 'Mae\'n ddrwg gennym, ond mae dy declyn atal ffenestri naid wedi analluogi ffenest sy\'n cynnig nodweddion i\'r rhaglen. Bydd rhaid i ti analluogi atal ffenestri naid ar gyfer y safle hon er mwyn cael y defnydd gorau o\'r rhaglen hwn.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/da.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/da.js
new file mode 100644 (file)
index 0000000..fa1888a
--- /dev/null
@@ -0,0 +1,41 @@
+// DK lang variables contributed by Jan Moelgaard
+
+tinyMCE.addToLang('',{
+bold_desc : 'Fed',
+italic_desc : 'Kursiv',
+underline_desc : 'Understreg',
+striketrough_desc : 'Gennemstreg',
+justifyleft_desc : 'Venstrestil',
+justifycenter_desc : 'Centrer',
+justifyright_desc : 'H&#248;jrestil',
+justifyfull_desc : 'Lige margin',
+bullist_desc : 'Liste med bullets',
+numlist_desc : 'Liste med tal',
+outdent_desc : 'Ryk til venstre',
+indent_desc : 'Ryk til h&#248;jre',
+undo_desc : 'Fortryd',
+redo_desc : 'G&#248;r igen',
+link_desc : 'Inds&#230;t link',
+unlink_desc : 'Fjern link',
+image_desc : 'Inds&#230;t billede',
+cleanup_desc : 'Ryd op i koden',
+focus_alert : 'Der skal s&#230;ttes fokus p&#229; sessionen, f&#248;r man kan bruge denne kommando',
+edit_confirm : 'Vil du bruge WYSIWYG mode til dette textomr&#229;de?',
+insert_link_title : 'Inds&#230;t eller rediger link',
+insert : 'Inds&#230;t',
+update : 'Opdater',
+cancel : 'Fortryd',
+insert_link_url : 'Linkadresse',
+insert_link_target : 'Destination',
+insert_link_target_same : 'Luk linket op i samme vindue',
+insert_link_target_blank : 'Luk linket op i et nyt vindue',
+insert_image_title : 'Inds&#230;t / rediger billede',
+insert_image_src : 'Billedets adresse',
+insert_image_alt : 'Alternativ tekst',
+help_desc : 'Hj&#230;lp',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Kopier/Klip/Inds&#230;t virker ikke i Mozilla og Firefox.\nVil du vide mere om dette?',
+popup_blocked : 'Beklager, men din browser blokerer for pop-up-vinduer. Skal du bruge denne editor fuldt ud, skal pop-up-vinduer v&#230;re tilladt.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/de.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/de.js
new file mode 100644 (file)
index 0000000..e28f818
--- /dev/null
@@ -0,0 +1,41 @@
+// DE lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Fett',
+italic_desc : 'Kursiv',
+underline_desc : 'Unterstrichen',
+striketrough_desc : 'Durchgestrichen',
+justifyleft_desc : 'Linksb&uuml;ndig',
+justifycenter_desc : 'Zentriert',
+justifyright_desc : 'Rechtsb&uuml;ndig',
+justifyfull_desc : 'Blocksatz',
+bullist_desc : 'Aufz&auml;hlungszeichen',
+numlist_desc : 'Nummerierung',
+outdent_desc : 'Einzug verkleinern',
+indent_desc : 'Einzug vergr&ouml;&szlig;ern',
+undo_desc : 'R&uuml;ckg&auml;ngig',
+redo_desc : 'Wiederholen',
+link_desc : 'Link einf&uuml;gen/bearbeiten',
+unlink_desc : 'Link entfernen',
+image_desc : 'Bild einf&uuml;gen/bearbeiten',
+cleanup_desc : 'Unsauberen Code aufr&auml;umen',
+focus_alert : 'Klicken Sie bitte vor Benutzung dieses Befehls auf das Editorfenster.',
+edit_confirm : 'Wollen Sie den WYSIWYG-Modus f&uuml;r dieses Textfeld benutzen?',
+insert_link_title : 'Link einf&uuml;gen/bearbeiten',
+insert : 'Einf&uuml;gen',
+update : 'Aktualisieren',
+cancel : 'Abbrechen',
+insert_link_url : 'Link-URL',
+insert_link_target : 'Ziel',
+insert_link_target_same : 'Link in gleichen Fester &ouml;ffnen',
+insert_link_target_blank : 'Link in neuen Fenster &ouml;ffnen',
+insert_image_title : 'Bild einf&uuml;gen/bearbeiten',
+insert_image_src : 'Bild-URL',
+insert_image_alt : 'Bild-Beschreibung',
+help_desc : 'Hilfe',
+bold_img : "bold_de_se.gif",
+italic_img : "italic_de_se.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Kopieren/Ausschneiden/Einf&uuml;gen ist in Mozilla und Firefox nicht verf&uuml;gbar.\nWollen Sie mehr Informationen dar&uuml;ber erhalten?',
+popup_blocked : 'Ihr Popup-Blocker hat verhindert, dass das Bearbeitungsfenster des Editors ge&ouml;ffnet werden konnte. Bitte deaktivieren Sie den Popup-Schutz f&uuml;r diese Seite.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/el.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/el.js
new file mode 100644 (file)
index 0000000..09a8f8a
--- /dev/null
@@ -0,0 +1,41 @@
+// Greek lang variables by Jacaranda Bill
+
+tinyMCE.addToLang('',{
+bold_desc : '¸íôïíç ãñá&ouml;Þ',
+italic_desc : 'ÐëÜãéá ãñá&ouml;Þ',
+underline_desc : 'ÕðïãñÜììéóç',
+striketrough_desc : '&Auml;éáêñéôÞ &auml;éáãñá&ouml;Þ',
+justifyleft_desc : 'Óôïß÷éóç áñéóô&aring;ñÜ',
+justifycenter_desc : 'Óôïß÷éóç óôï êÝíôñï',
+justifyright_desc : 'Óôïß÷éóç &auml;&aring;îéÜ',
+justifyfull_desc : 'ÐëÞñçò óôïß÷éóç',
+bullist_desc : 'Êïõêêß&auml;&aring;ò',
+numlist_desc : 'Áñßèìçóç',
+outdent_desc : 'Ì&aring;ßùóç &aring;óï÷Þò',
+indent_desc : 'Áýîçóç &aring;óï÷Þò',
+undo_desc : 'Áíáßñ&aring;óç',
+redo_desc : 'Áêýñùóç áíáßñ&aring;óçò',
+link_desc : '&Auml;çìéïõñãßá/&Auml;éüñèùóç õð&aring;ñ-óýí&auml;&aring;óçò',
+unlink_desc : '&Auml;éáãñá&ouml;Þ õð&aring;ñ-óýí&auml;&aring;óçò',
+image_desc : '&Aring;éóáãùãÞ/&Auml;éüñèùóç &aring;éêüíáò',
+cleanup_desc : 'ÊáèÜñéóìá êþ&auml;éêá',
+focus_alert : 'ÐñÝð&aring;é íá õðÜñ÷&aring;é &aring;í&aring;ñãüò êÜðïéïò &aring;ð&aring;î&aring;ñãáóôÞò ê&aring;éìÝíïõ ðñéí íá ÷ñçóéìïðïéÞó&aring;ô&aring; áõôÞ ôçí &aring;íôïëÞ.',
+edit_confirm : 'ÈÝë&aring;ô&aring; íá ÷ñçóéìïðïéÞó&aring;ô&aring; ôçí êáôÜóôáóç WYSIWYG ãéá ôï óõãê&aring;êñéìÝíï ðëáßóéï ê&aring;éìÝíïõ;',
+insert_link_title : '&Auml;çìéïõñãßá/&Auml;éüñèùóç õð&aring;ñ-óýí&auml;&aring;óçò',
+insert : '&Aring;éóáãùãÞ',
+update : '&Aring;éóáãùãÞ',
+cancel : 'Áêýñùóç',
+insert_link_url : '&Auml;é&aring;ýèõíóç',
+insert_link_target : 'Óôü÷ïò',
+insert_link_target_same : '¢íïéãìá ôçò &auml;é&aring;ýèõíóçò óôï ß&auml;éï ðáñÜèõñï',
+insert_link_target_blank : '¢íïéãìá ôçò &auml;é&aring;ýèõíóçò ó&aring; íÝï ðáñÜèõñï',
+insert_image_title : '&Aring;éóáãùãÞ/&Auml;éüñèùóç &aring;éêüíáò',
+insert_image_src : '&Auml;é&aring;ýèõíóç',
+insert_image_alt : 'Ð&aring;ñéãñá&ouml;Þ',
+help_desc : 'ÂïÞè&aring;éá',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/en.js
new file mode 100644 (file)
index 0000000..c7faa24
--- /dev/null
@@ -0,0 +1,41 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Bold (Ctrl+B)',
+italic_desc : 'Italic (Ctrl+I)',
+underline_desc : 'Underline (Ctrl+U)',
+striketrough_desc : 'Strikethrough',
+justifyleft_desc : 'Align left',
+justifycenter_desc : 'Align center',
+justifyright_desc : 'Align right',
+justifyfull_desc : 'Align full',
+bullist_desc : 'Unordered list',
+numlist_desc : 'Ordered list',
+outdent_desc : 'Outdent',
+indent_desc : 'Indent',
+undo_desc : 'Undo (Ctrl+Z)',
+redo_desc : 'Redo (Ctrl+Y)',
+link_desc : 'Insert/edit link',
+unlink_desc : 'Unlink',
+image_desc : 'Insert/edit image',
+cleanup_desc : 'Cleanup messy code',
+focus_alert : 'A editor instance must be focused before using this command.',
+edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',
+insert_link_title : 'Insert/edit link',
+insert : 'Insert',
+update : 'Update',
+cancel : 'Cancel',
+insert_link_url : 'Link URL',
+insert_link_target : 'Target',
+insert_link_target_same : 'Open link in the same window',
+insert_link_target_blank : 'Open link in a new window',
+insert_image_title : 'Insert/edit image',
+insert_image_src : 'Image URL',
+insert_image_alt : 'Image description',
+help_desc : 'Help',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/es.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/es.js
new file mode 100644 (file)
index 0000000..1bb2628
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * ES lang variables
+ * 
+ * Authors : Alvaro Velasco,
+ *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
+ *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
+ * Last Updated : October 17, 2005
+ * TinyMCE Version : 2.0RC3
+ */
+
+
+tinyMCE.addToLang('',{
+bold_desc : 'Negrita (Ctrl+B)',
+italic_desc : 'Cursiva (Ctrl+I)',
+underline_desc : 'Subrayado (Ctrl+U)',
+striketrough_desc : 'Tachado',
+justifyleft_desc : 'Alinear a la izquierda',
+justifycenter_desc : 'Alinear al centro',
+justifyright_desc : 'Alinear a la derecha',
+justifyfull_desc : 'Alinear justificado',
+bullist_desc : 'Lista sin ordenar',
+numlist_desc : 'Lista ordenada',
+outdent_desc : 'Disminuir sangría',
+indent_desc : 'Aumentar sangría',
+undo_desc : 'Deshacer',
+redo_desc : 'Rehacer',
+link_desc : 'Insertar enlace',
+unlink_desc : 'Quitar enlace',
+image_desc : 'Insertar imagen',
+cleanup_desc : 'Limpiar codigo',
+focus_alert : 'Una instanacia del editor debe ser enfocada antes de usar este comando.',
+edit_confirm : '¿Quieres usar el modo WYSIWYG (What You See Is What You Get - "lo que ves es lo que obtienes") para esta area de texto?',
+insert_link_title : 'Insertar/editar enlace',
+insert : 'Insertar',
+update : 'Actualizar',
+cancel : 'Cancelar',
+insert_link_url : 'Dirección del enlace',
+insert_link_target : 'Destino',
+insert_link_target_same : 'Abrir enlace en la misma ventana',
+insert_link_target_blank : 'Abrir enlace en una ventana nueva',
+insert_image_title : 'Insertar/editar imagen',
+insert_image_src : 'Dirección de la imagen',
+insert_image_alt : 'Descripción de la imagen',
+help_desc : 'Ayuda',
+bold_img : "bold_es.gif",
+italic_img : "italic_es.gif",
+underline_img : "underline_es.gif",
+clipboard_msg : 'No se pueden utilizar los comandos Copiar / Cortar / Pegar en Mozilla y en Firefox.\r\nUse el teclado Copiar (Ctrl+C) / Cortar (Ctrl+X) / Pegar (Ctrl+V)\r\n¿Quieres obtener más información?',
+popup_blocked : 'Lo siento, pero tu bloqueador de popups ha desactivado una ventana que ha lanzado la aplicación. Debes desactivar tu bloqueador de popups para tener toda la funcionalad de la aplicación.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/fa.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/fa.js
new file mode 100644 (file)
index 0000000..cb34669
--- /dev/null
@@ -0,0 +1,46 @@
+// IR lang variables
+// Persian (Farsi) language pack (for IRAN)
+// By: Morteza Zafari
+// Lost@LostLord.com
+// http://www.LostLord.com
+
+tinyMCE.addToLang('',{
+dir : 'rtl',
+bold_desc : '????',
+italic_desc : '????',
+underline_desc : '??? ?? ???',
+striketrough_desc : '?? ?????',
+justifyleft_desc : '?? ???',
+justifycenter_desc : '??? ???',
+justifyright_desc : '???? ???',
+justifyfull_desc : '????? ???',
+bullist_desc : '????',
+numlist_desc : '???? ????',
+outdent_desc : '???? ?????',
+indent_desc : '?????? ?????',
+undo_desc : '????????',
+redo_desc : '????????',
+link_desc : '??? ? ?????? ????',
+unlink_desc : '??? ????',
+image_desc : '??? ? ?????? ???',
+cleanup_desc : '??????? ??',
+focus_alert : 'A editor instance must be focused before using this command.',
+edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',
+insert_link_title : '??? ? ?????? ????',
+insert : '  ?????  ',
+update : '  ?????  ',
+cancel : ' ?????? ',
+insert_link_url : 'URL ????',
+insert_link_target : '????',
+insert_link_target_same : '???? ?? ?? ???? ???? ??? ??',
+insert_link_target_blank : '???? ?? ?? ???? ???? ??? ??',
+insert_image_title : '??? ? ?????? ???',
+insert_image_src : 'URL ???',
+insert_image_alt : '?????',
+help_desc : '??????',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/fi.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/fi.js
new file mode 100644 (file)
index 0000000..dfefb16
--- /dev/null
@@ -0,0 +1,42 @@
+// FI lang variables by Urho Konttori from Absolutions
+// Updated by Tuomo Aura, Ateco.fi
+
+tinyMCE.addToLang('',{
+bold_desc : 'Lihavoi (Ctrl+B)',
+italic_desc : 'Kursivoi (Ctrl+I)',
+underline_desc : 'Alleviivaa (Ctrl+U)',
+striketrough_desc : 'Yliviivaa',
+justifyleft_desc : 'Vasen tasaus',
+justifycenter_desc : 'Keskitys',
+justifyright_desc : 'Oikea tasaus',
+justifyfull_desc : 'Pakotettu tasaus',
+bullist_desc : 'Luettelo',
+numlist_desc : 'Numeroitu lista',
+outdent_desc : 'Poista sisennyt',
+indent_desc : 'Sisennys',
+undo_desc : 'Peruuta (Ctrl+Z)',
+redo_desc : 'Tee uudelleen (Ctrl+Y)',
+link_desc : 'Lis&auml;&auml; linkki',
+unlink_desc : 'Poista linkki',
+image_desc : 'Lis&auml;&auml; kuva',
+cleanup_desc : 'Siisti koodi',
+focus_alert : 'Teksink&auml;sittelyalue t&auml;ytyy olla valittuna ennen t&auml;m&auml;n komennon suorittamista.',
+edit_confirm : 'Haluatko k&auml;ytt&auml;&auml; WYSIWYG-tilaa t&auml;h&auml;n tekstialueeseen?',
+insert_link_title : 'Lis&auml;&auml;/muokkaa linkki&auml;',
+insert : 'Lisää',
+update : 'Päivitä',
+cancel : 'Peruuta',
+insert_link_url : 'Linkin URL',
+insert_link_target : 'Kohde',
+insert_link_target_same : 'Avaa linkki samassa ikkunassa',
+insert_link_target_blank : 'Avaa linkki uudessa ikkunassa',
+insert_image_title : 'Lis&auml;&auml;/muokkaa kuvaa',
+insert_image_src : 'Kuvan URL',
+insert_image_alt : 'Kuvan selite',
+help_desc : 'Apua',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Leikkaus/Kopiointi/Liit&auml;minen ei onnistu Mozilla eik&auml; Firefox -selaimilla tietoturvasta johtuen. \n Haluatko lis&auml;tietoa aiheesta?',
+popup_blocked : 'Koneellasi oleva popup-ikkunoiden esto-ohjelma est&auml;&auml; tarvittavan ikkunan avaamisen. Sinun pit&auml;&auml; sallia popup-ikkunoiden n&auml;ytt&auml;minen t&auml;ll&auml; sivustolla ohjelman asetuksista.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/fr.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/fr.js
new file mode 100644 (file)
index 0000000..e9f59c5
--- /dev/null
@@ -0,0 +1,43 @@
+// FR lang variables by Pat Boens
+// Modify by Laurent Dran
+// Modifié par Normand Lamoureux le 2005-11-12
+
+tinyMCE.addToLang('',{
+bold_desc : 'Gras',
+italic_desc : 'Italique',
+underline_desc : 'Souligné',
+striketrough_desc : 'Barré',
+justifyleft_desc : 'Aligner à gauche',
+justifycenter_desc : 'Centrer',
+justifyright_desc : 'Aligner à droite',
+justifyfull_desc : 'Justifier',
+bullist_desc : 'Liste à puces',
+numlist_desc : 'Liste numérotée',
+outdent_desc : 'Diminuer le retrait',
+indent_desc : 'Augmenter le retrait',
+undo_desc : 'Annuler',
+redo_desc : 'Restaurer',
+link_desc : 'Insérer/Modifier un lien',
+unlink_desc : 'Supprimer le lien',
+image_desc : 'Insérer/Modifier une image',
+cleanup_desc : 'Nettoyer le code',
+focus_alert : 'Une instance de l\éditeur doit avoir le focus avant d\'utiliser cette commande.',
+edit_confirm : 'Voulez-vous utiliser le mode WYSIWYG pour cette zone d\'édition de texte ?',
+insert_link_title : 'Gestionnaire d\'hyperlien',
+insert : 'Insérer',
+update : 'Appliquer',
+cancel : 'Annuler',
+insert_link_url : 'Lien URL',
+insert_link_target : 'Cible',
+insert_link_target_same : 'Ouvrir dans la même fenêtre',
+insert_link_target_blank : 'Ouvrir dans une nouvelle fenêtre',
+insert_image_title : 'Gestionnaire d\'image',
+insert_image_src : 'URL de l\'image',
+insert_image_alt : 'Équivalent textuel',
+help_desc : 'Aide',
+bold_img : "bold_fr.gif",
+italic_img : "italic.gif",
+underline_img : "underline_fr.gif",
+clipboard_msg : 'Pour des raisons de sécurité, les fonctions « Copier », « Couper » et « Coller »\nne sont pas disponibles dans Mozilla et Firefox.\n\n\nVoulez-vous plus d\'information à ce sujet?\n',
+popup_blocked : 'Désolé, mais votre bloqueur de pop-up empêche le fonctionnement normal de l\'application.\n\n\nPour utiliser cet outil, veuillez régler votre navigateur pour qu\'il accepte les pop-up de ce site.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/fr_ca.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/fr_ca.js
new file mode 100644 (file)
index 0000000..2023bee
--- /dev/null
@@ -0,0 +1,40 @@
+// Canadian French lang variables by Virtuelcom
+
+tinyMCE.addToLang('',{
+bold_desc : 'Gras',
+italic_desc : 'Italique',
+underline_desc : 'Souligner',
+striketrough_desc : 'Barrer',
+justifyleft_desc : 'Aligner à gauche',
+justifycenter_desc : 'Aligner au centre',
+justifyright_desc : 'Aligner à droite',
+justifyfull_desc : 'Justifier',
+bullist_desc : 'Puces',
+numlist_desc : 'Numérotation',
+outdent_desc : 'Réduire le retrait',
+indent_desc : 'Augmenter le retrait',
+undo_desc : 'Annuler la dernière action',
+redo_desc : 'Refaire la dernière action annulée',
+link_desc : 'Insérer un hyperlien',
+unlink_desc : 'Supprimer un hyperlien',
+image_desc : 'Insérer une image',
+cleanup_desc : 'Nettoyer le code',
+focus_alert : 'Un éditeur doit être sélectionné pour utiliser cette fonction.',
+edit_confirm : 'Désirez-vous utiliser l\'éditeur pour modifier cette zone?',
+insert_link_title : 'Insérer / Modifier un hyperlien',
+insert : 'Insérer',
+update : 'Insérer',
+cancel : 'Annuler',
+insert_link_url : 'Adresse URL',
+insert_link_target : 'Destination',
+insert_link_target_same : 'Ouvrir dans la même fenêtre',
+insert_link_target_blank : 'Ouvrir dans une nouvelle fenêtre',
+insert_image_title : 'Insérer / Modifier une image',
+insert_image_src : 'Adresse de l\'image',
+insert_image_alt : 'Description de l\'image',
+help_desc : 'Aide',
+bold_img : "bold_fr.gif",
+italic_img : "italic.gif",
+underline_img : "underline_fr.gif",
+clipboard_msg : 'Copier/Couper/Coller ne sont pas disponibles dans Mozilla et FireFox.\nDésirez-vous consulter de plus amples informations à ce sujet?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/he.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/he.js
new file mode 100644 (file)
index 0000000..e0a0c03
--- /dev/null
@@ -0,0 +1,41 @@
+// HE lang variables by Liron Newman, http://eesh.net
+
+tinyMCE.addToLang('',{
+bold_desc : 'îåãâù (Ctrl+B)',
+italic_desc : 'ðèåé (Ctrl+I)',
+underline_desc : '÷å úçúé (Ctrl+U)',
+striketrough_desc : '÷å çåöä',
+justifyleft_desc : 'éùø ìùîàì',
+justifycenter_desc : 'éùø ìîøëæ',
+justifyright_desc : 'éùø ìéîéï',
+justifyfull_desc : 'éùø ìùðé äöããéí',
+bullist_desc : 'øùéîä çñøú ñãø',
+numlist_desc : 'øùéîä îñåãøú',
+outdent_desc : 'ä÷èï ëðéñä',
+indent_desc : 'äâãì ëðéñä',
+undo_desc : 'áèì (Ctrl+Z)',
+redo_desc : 'áöò ùåá (Ctrl+Y)',
+link_desc : 'äëðñ/òøåê ÷éùåø',
+unlink_desc : 'áèì ÷éùåø',
+image_desc : 'äëðñ/òøåê úîåðä',
+cleanup_desc : 'ð÷ä ÷åã îáåìâï',
+focus_alert : 'éù ìáçåø áùãä òøéëä ìôðé ùðéúï ìäùúîù áô÷åãä æå.',
+edit_confirm : 'äàí áøöåðê ìäùúîù áîöá òøéëä òùéøä (WYSIWYG) òáåø ùãä è÷ñè æä?',
+insert_link_title : 'äëðñ/òøåê ÷éùåø',
+insert : 'äëðñ',
+update : 'òãëï',
+cancel : 'áèì',
+insert_link_url : 'ëúåáú (URL) ä÷éùåø',
+insert_link_target : 'éòã',
+insert_link_target_same : 'ôúç àú ä÷éùåø áàåúå çìåï',
+insert_link_target_blank : 'ôúç àú ä÷éùåø áçìåï çãù',
+insert_image_title : 'äëðñ/òøåê úîåðä',
+insert_image_src : 'ëúåáú (URL) äúîåðä',
+insert_image_alt : 'úéàåø äúîåðä',
+help_desc : 'òæøä',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'ôòåìåú äòú÷ä/âæéøä/äãá÷ä àéðï ðúîëåú úçú Mozilla å-Firefox.\näàí áøöåðê ì÷áì îéãò ðåñó àåãåú ðåùà æä?',
+popup_blocked : 'ñìéçä, àê ùîðå ìá ëé çåñí äçìåðåú ä÷åôöéí ùìê çñí çìåï ùîäååä çì÷ îäééùåí. úöèøê ìáèì àú çñéîú äçìåðåú ä÷åôöéí áàúø æä ëãé ìðöì ëìé æä áîìåàå.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/hu.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/hu.js
new file mode 100644 (file)
index 0000000..8295d5e
--- /dev/null
@@ -0,0 +1,41 @@
+// HU lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Félkövér',
+italic_desc : 'Dölt',
+underline_desc : 'Aláhúzott',
+striketrough_desc : 'Áthúzott',
+justifyleft_desc : 'Balra igazított',
+justifycenter_desc : 'Középre igazított',
+justifyright_desc : 'Jobbra igazított',
+justifyfull_desc : 'Telejesen igazított',
+bullist_desc : 'Rendezetlen lista',
+numlist_desc : 'Rendezett lista',
+outdent_desc : 'Kihúzás',
+indent_desc : 'Behúzás',
+undo_desc : 'visszavonás',
+redo_desc : 'Ismét',
+link_desc : 'Link hozzáadása/szerkesztése',
+unlink_desc : 'Link megszüntetése',
+image_desc : 'Kép beillesztése/szerkesztése',
+cleanup_desc : 'Rendetlen kód tisztítása',
+focus_alert : 'Egy szerkesztõablakra muszáj fókuszálni ennek a parancsnak a használata elõtt.',
+edit_confirm : 'Szeretnéd használni ezt a WYSIWYG módot ehhez a szövegmezõhöz?',
+insert_link_title : 'Link beillesztése/szerkesztése',
+insert : 'Beillesztés',
+update : 'Frissítés',
+cancel : 'Mégse',
+insert_link_url : 'Link URL',
+insert_link_target : 'Cél',
+insert_link_target_same : 'Link megnyitása ugyanabban az ablakban',
+insert_link_target_blank : 'Link megnyitása új ablakban',
+insert_image_title : 'Kép beillesztése/szerkesztése',
+insert_image_src : 'Kép URL',
+insert_image_alt : 'Kép leírása',
+help_desc : 'Súgó',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'A Másolás/Kivágás/Beillesztés nem elérhetõ Mozillában and Firefox-ban.\nSzeretnél több információt errõl a problémáról?',
+popup_blocked : 'Sajnálom, de észrevettem, hogy a popup-blokkolód letiltotta az ablakot, ami biztosítja ennek az alkalmazásnak a mûködését. Meg kell szüntetned a popup-blokkolást ennek a segédeszköznek a teljes használatához.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/is.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/is.js
new file mode 100644 (file)
index 0000000..963b202
--- /dev/null
@@ -0,0 +1,41 @@
+// Iceland lang variables by Johannes Birgir Jensson
+
+tinyMCE.addToLang('',{
+bold_desc : 'Feitletrun (Ctrl+B)',
+italic_desc : 'Sk&aacute;letrun (Ctrl+I)',
+underline_desc : 'Undirstrikun (Ctrl+U)',
+striketrough_desc : 'Strik &iacute; gegn',
+justifyleft_desc : 'Vinstri j&ouml;fnun',
+justifycenter_desc : 'Mi&eth;ju j&ouml;fnun',
+justifyright_desc : 'H&aelig;gri j&ouml;fnun',
+justifyfull_desc : 'Samfelld j&ouml;fnun',
+bullist_desc : 'Óra&eth;a&eth;ur listi',
+numlist_desc : 'Ra&eth;a&eth;ur listi',
+outdent_desc : 'Útdr&aacute;ttur',
+indent_desc : 'Inndr&aacute;ttur',
+undo_desc : 'Afturkalla (Ctrl+Z)',
+redo_desc : 'Endurkalla (Ctrl+Y)',
+link_desc : 'Setja inn/breyta hlekk',
+unlink_desc : 'Fjarl&aelig;gja hlekk',
+image_desc : 'Setja inn/breyta mynd',
+cleanup_desc : 'Hreinsa ruslk&oacute;&eth;a',
+focus_alert : 'Setja &thorn;arf bendil &iacute; ritsv&aelig;&eth;i &aacute;&eth;ur en &thorn;essi skipun er notu&eth;.',
+edit_confirm : 'Viltu nota WYSIWYG &aacute; &thorn;essum reit?',
+insert_link_title : 'N&yacute;r/breyttur hlekkur',
+insert : 'Setja inn',
+update : 'Uppf&aelig;ra',
+cancel : 'H&aelig;tta vi&eth;',
+insert_link_url : 'Sl&oacute;&eth; hlekks',
+insert_link_target : 'Gluggi',
+insert_link_target_same : 'Opna tengil &iacute; sama glugga',
+insert_link_target_blank : 'Opna tengil &iacute; n&yacute;jum glugga',
+insert_image_title : 'N&yacute;/breytt mynd',
+insert_image_src : 'Sl&oacute;&eth; myndar',
+insert_image_alt : 'L&yacute;sing myndar',
+help_desc : 'Hj&aacute;lp',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Afrita/skeyta/líma er ekki leyft í vafranum.\nViltu fá frekari upplýsingar um hvernig á að stilla það?',
+popup_blocked : 'Afsakið, gluggavörn vafrans hefur meinað glugga, sem umsjónarkerfið notar, leyfi til þess að opnast. Þú verður að leyfa þessum vef að opna sprettiglugga (popup) til að geta nýtt þennan möguleika.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/it.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/it.js
new file mode 100644 (file)
index 0000000..c4b0905
--- /dev/null
@@ -0,0 +1,41 @@
+// Variabili lingua IT - fabrix.xm@lombardiacom.it
+
+tinyMCE.addToLang('',{
+bold_desc : 'Grassetto',
+italic_desc : 'Corsivo',
+underline_desc : 'Sottolineato',
+striketrough_desc : 'Barrato',
+justifyleft_desc : 'Allinea a sinistra',
+justifycenter_desc : 'Allinea centrato',
+justifyright_desc : 'Allinea a destra',
+justifyfull_desc : 'Giustifica',
+bullist_desc : 'Lista non ordinata',
+numlist_desc : 'Lista ordinata',
+outdent_desc : 'Rientra',
+indent_desc : 'Indenta',
+undo_desc : 'Annulla',
+redo_desc : 'Ripeti',
+link_desc : 'Inserisci link',
+unlink_desc : 'Elimina link',
+image_desc : 'Inserisci immagine',
+cleanup_desc : 'Pulisci il  codice',
+focus_alert : 'Una istanza dell\' editor deve essere selezionata prima di usare questo comando.',
+edit_confirm : 'Vuoi usare la modalit\u00E0 WYSIWYG per questa textarea?',
+insert_link_title : 'Inserisci/modifica link',
+insert : 'Inserisci',
+update : 'Inserisci',
+cancel : 'Cancella',
+insert_link_url : 'Link URL',
+insert_link_target : 'Target',
+insert_link_target_same : 'Apri il link nella stessa finestra',
+insert_link_target_blank : 'Apri il link in una nuova finestra',
+insert_image_title : 'Inserisci/modifica immagine',
+insert_image_src : 'URL immagine',
+insert_image_alt : 'Descrizione dell\'immagine',
+help_desc : 'Guida',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copia, Taglia e Incolla non sono disponibili in Mozilla e Firefox.\nVuoi maggiori dettegli su questo problema?',
+popup_blocked : 'Spiacenti, un sistema di blocco popup ha impedito l\'apertura di una finestra necessaria per il funzionamento dell\'editor. Disabilita il blocco popup per questo sito se vuoi utilizzare tutte le funzionalità.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ja.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ja.js
new file mode 100644 (file)
index 0000000..dc796cb
--- /dev/null
@@ -0,0 +1,41 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : '\e$BB@;z\e(B',
+italic_desc : '\e$B<PBN\e(B',
+underline_desc : '\e$B2<@~\e(B',
+striketrough_desc : '\e$BKu>C@~\e(B',
+justifyleft_desc : '\e$B:85M$a\e(B',
+justifycenter_desc : '\e$BCf1{9g$o$;\e(B',
+justifyright_desc : '\e$B1&5M$a\e(B',
+justifyfull_desc : '\e$B9TB7$(\e(B',
+bullist_desc : '\e$B2U>r=q\e(B',
+numlist_desc : '\e$BHV9fIU$-2U>r=q\e(B',
+outdent_desc : '\e$B;z>e$2\e(B',
+indent_desc : '\e$B;z2<$2\e(B',
+undo_desc : '\e$B$d$j$J$*$7\e(B',
+redo_desc : '\e$B:F<B9T\e(B',
+link_desc : '\e$B%j%s%/$NA^F~\e(B/\e$BJT=8\e(B',
+unlink_desc : '\e$B%j%s%/$N:o=|\e(B',
+image_desc : '\e$B2hA|$NA^F~\e(B/\e$BJT=8\e(B',
+cleanup_desc : '\e$B%3!<%I@0M}\e(B',
+focus_alert : '\e$B$3$N%3%^%s%I$r;H$&A0$K%(%G%#%?>e$N$I$3$+$rA*Br$9$kI,MW$,$"$j$^$9!#\e(B',
+edit_confirm : 'WYSIWYG\e$B%b!<%I$G$3$N%F%-%9%H%(%j%"$rJT=8$7$^$9$+!)\e(B',
+insert_link_title : '\e$B%j%s%/$NA^F~\e(B/\e$BJT=8\e(B',
+insert : '\e$BA^F~\e(B',
+update : '\e$BA^F~\e(B',
+cancel : '\e$B<h$j>C$7\e(B',
+insert_link_url : '\e$B%j%s%/@h\e(BURL',
+insert_link_target : '\e$B%?!<%2%C%H\e(B',
+insert_link_target_same : '\e$BF1$8Ak$G%j%s%/$r3+$/\e(B',
+insert_link_target_blank : '\e$B?7$7$$Ak$G%j%s%/$r3+$/\e(B',
+insert_image_title : '\e$B2hA|$NA^F~\e(B/\e$BJT=8\e(B',
+insert_image_src : '\e$B2hA|$N\e(BURL',
+insert_image_alt : '\e$B2hA|$N@bL@\e(B',
+help_desc : '\e$B%X%k%W\e(B',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ja_euc.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ja_euc.js
new file mode 100644 (file)
index 0000000..0d2e7ac
--- /dev/null
@@ -0,0 +1,41 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'ÂÀ»ú',
+italic_desc : '¼ÐÂÎ',
+underline_desc : '²¼Àþ',
+striketrough_desc : 'Ëõ¾ÃÀþ',
+justifyleft_desc : 'º¸µÍ¤á',
+justifycenter_desc : 'Ãæ±û¹ç¤ï¤»',
+justifyright_desc : '±¦µÍ¤á',
+justifyfull_desc : '¹Ô·¤¨',
+bullist_desc : '²Õ¾ò½ñ',
+numlist_desc : 'ÈÖ¹æÉÕ¤­²Õ¾ò½ñ',
+outdent_desc : '»ú¾å¤²',
+indent_desc : '»ú²¼¤²',
+undo_desc : '¤ä¤ê¤Ê¤ª¤·',
+redo_desc : 'ºÆ¼Â¹Ô',
+link_desc : '¥ê¥ó¥¯¤ÎÁÞÆþ/ÊÔ½¸',
+unlink_desc : '¥ê¥ó¥¯¤Îºï½ü',
+image_desc : '²èÁü¤ÎÁÞÆþ/ÊÔ½¸',
+cleanup_desc : '¥³¡¼¥ÉÀ°Íý',
+focus_alert : '¤³¤Î¥³¥Þ¥ó¥É¤ò»È¤¦Á°¤Ë¥¨¥Ç¥£¥¿¾å¤Î¤É¤³¤«¤òÁªÂò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£',
+edit_confirm : 'WYSIWYG¥â¡¼¥É¤Ç¤³¤Î¥Æ¥­¥¹¥È¥¨¥ê¥¢¤òÊÔ½¸¤·¤Þ¤¹¤«¡©',
+insert_link_title : '¥ê¥ó¥¯¤ÎÁÞÆþ/ÊÔ½¸',
+insert : 'ÁÞÆþ',
+update : 'ÁÞÆþ',
+cancel : '¼è¤ê¾Ã¤·',
+insert_link_url : '¥ê¥ó¥¯ÀèURL',
+insert_link_target : '¥¿¡¼¥²¥Ã¥È',
+insert_link_target_same : 'Ʊ¤¸Áë¤Ç¥ê¥ó¥¯¤ò³«¤¯',
+insert_link_target_blank : '¿·¤·¤¤Áë¤Ç¥ê¥ó¥¯¤ò³«¤¯',
+insert_image_title : '²èÁü¤ÎÁÞÆþ/ÊÔ½¸',
+insert_image_src : '²èÁü¤ÎURL',
+insert_image_alt : '²èÁü¤ÎÀâÌÀ',
+help_desc : '¥Ø¥ë¥×',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Mozilla/Firefox¤Ç¤Ï¥³¥Ô¡¼¡¢ÀÚ¼è¤ê¡¢Å½ÉÕ¤±¤¬¤Ç¤­¤Þ¤»¤ó¡£',
+popup_blocked : '¥Ý¥Ã¥×¥¢¥Ã¥×¥¦¥£¥ó¥É¥¦À©¸æ¤Î±Æ¶Á¤ÇÁàºî¤Î³¹Ô¤¬¤Ç¤­¤Þ¤»¤ó¡£¤³¤Î¥Ä¡¼¥ë¤Îµ¡Ç½¤ò¥Õ¥ë¤Ë»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¥Ý¥Ã¥×¥¢¥Ã¥×¤Î¥Ö¥í¥Ã¥¯¤ò̵¸ú¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ja_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ja_utf8.js
new file mode 100644 (file)
index 0000000..04d23b2
--- /dev/null
@@ -0,0 +1,41 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : '太字',
+italic_desc : '斜体',
+underline_desc : '下線',
+striketrough_desc : '抹消線',
+justifyleft_desc : '左詰め',
+justifycenter_desc : '中央合わせ',
+justifyright_desc : '右詰め',
+justifyfull_desc : '行揃え',
+bullist_desc : '箇条書',
+numlist_desc : '番号付き箇条書',
+outdent_desc : '字上げ',
+indent_desc : '字下げ',
+undo_desc : 'やりなおし',
+redo_desc : '再実行',
+link_desc : 'リンクの挿入/編集',
+unlink_desc : 'リンクの削除',
+image_desc : '画像の挿入/編集',
+cleanup_desc : 'コード整理',
+focus_alert : 'このコマンドを使う前にエディタ上のどこかを選択する必要があります。',
+edit_confirm : 'WYSIWYGモードでこのテキストエリアを編集しますか?',
+insert_link_title : 'リンクの挿入/編集',
+insert : '挿入',
+update : '挿入',
+cancel : '取り消し',
+insert_link_url : 'リンク先URL',
+insert_link_target : 'ターゲット',
+insert_link_target_same : '同じ窓でリンクを開く',
+insert_link_target_blank : '新しい窓でリンクを開く',
+insert_image_title : '画像の挿入/編集',
+insert_image_src : '画像のURL',
+insert_image_alt : '画像の説明',
+help_desc : 'ヘルプ',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Mozilla/Firefoxではコピー、切取り、貼付けができません。',
+popup_blocked : 'ポップアップウィンドウ制御の影響で操作の続行ができません。このツールの機能をフルに使用する場合は、ポップアップのブロックを無効に設定してください。'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ko.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ko.js
new file mode 100644 (file)
index 0000000..48d5386
--- /dev/null
@@ -0,0 +1,40 @@
+// KO lang variables by Setzer Gabbiani
+
+tinyMCE.addToLang('',{
+bold_desc : 'ÁøÇÏ°Ô',
+italic_desc : '±â¿ïÀÓ',
+underline_desc : '¹ØÁÙ',
+striketrough_desc : '°¡·ÎÁÙ',
+justifyleft_desc : '¿ÞÂÊ Á¤·&Auml;',
+justifycenter_desc : '°¡¿îµ¥ Á¤·&Auml;',
+justifyright_desc : '¿À¸¥ÂÊ Á¤·&Auml;',
+justifyfull_desc : '¾çÂÊ Á¤·&Auml;',
+bullist_desc : '¸ñÂ÷ ¸&Aring;±â±â',
+numlist_desc : '¹øÈ£ ¸&Aring;±â±â',
+outdent_desc : '³»¾î¾²±â',
+indent_desc : 'µé¿©¾²±â',
+undo_desc : '½ÇÇàÃë¼Ò',
+redo_desc : 'Àç½ÇÇà',
+link_desc : '¸µ&Aring;© ³&Ouml;±â/°í&Auml;¡±â',
+unlink_desc : '¸µ&Aring;© ÇØÁ¦',
+image_desc : '±×¸² ³&Ouml;±â/°í&Auml;¡±â',
+cleanup_desc : '&Auml;Úµ&aring;¸¦ ±ò²ûÇÏ°Ô',
+focus_alert : 'ÀÌ ¸í·ÉÀ» ½ÇÇàÇϱâ Àü¿¡ ¹Ýµ&aring;½Ã ¿¡µð&Aring;Í ³»ÀÇ ¾îµò°¡¿¡ &Auml;¿¼­°¡ À&Ouml;¾î¾ß ÇÕ´Ï´Ù.',
+edit_confirm : 'ÀÌ &Aring;ؽºÆ® ¹Ú½º¿¡¼­ HTML ¿¡µð&Aring;͸¦ »ç¿ëÇϱ栿øÇϽʴϱî?',
+insert_link_title : '¸µ&Aring;© ³&Ouml;±â/°í&Auml;¡±â',
+insert : '»ðÀÔ',
+update : '»ðÀÔ',
+cancel : 'Ãë¼Ò',
+insert_link_url : 'URL ¸µ&Aring;©',
+insert_link_target : '&Aring;¸°Ù',
+insert_link_target_same : '°°Àº Ã¢¿¡¼­ ¸µ&Aring;© ¿­±â',
+insert_link_target_blank : '»õ Ã¢¿¡¼­ ¸µ&Aring;© ¿­±â',
+insert_image_title : '±×¸² ³&Ouml;±â/°í&Auml;¡±â',
+insert_image_src : '±×¸² URL',
+insert_image_alt : '±×¸² ¼³¸í',
+help_desc : 'µµ¿ò¸»',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/nb.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/nb.js
new file mode 100644 (file)
index 0000000..8311624
--- /dev/null
@@ -0,0 +1,41 @@
+// nb = Norwegian (bokm&aring;l) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+bold_desc : 'Fet',
+italic_desc : 'Kursiv',
+underline_desc : 'Understreking',
+striketrough_desc : 'Gjennomstreking',
+justifyleft_desc : 'Venstrestill',
+justifycenter_desc : 'Sentrer',
+justifyright_desc : 'H&oslash;yrestill',
+justifyfull_desc : 'Blokkjustering',
+bullist_desc : 'Punktliste',
+numlist_desc : 'Nummerliste',
+outdent_desc : 'Reduser innrykk',
+indent_desc : '&Oslash;k innrykk',
+undo_desc : 'Angre',
+redo_desc : 'Gj&oslash;r om',
+link_desc : 'Opprett/endre lenke',
+unlink_desc : 'Fjern lenke',
+image_desc : 'Sett inn/endre bilde',
+cleanup_desc : 'Rens grisete kode',
+focus_alert : 'Editoren m&aring; v&aelig;re i fokus f&oslash;r du benytter denne kommando.',
+edit_confirm : 'Vil du benytte WYSIWYG editoren for dette tekstfelt?',
+insert_link_title : 'Opprett/endre lenke',
+insert : 'Sett inn',
+update : 'Oppdater',
+cancel : 'Avbryt',
+insert_link_url : 'Lenkens URL',
+insert_link_target : 'Vindu',
+insert_link_target_same : '&Aring;pne i samme vindu',
+insert_link_target_blank : '&Aring;pne i nytt vindu',
+insert_image_title : 'Opprett/endre bilde',
+insert_image_src : 'Bildets URL',
+insert_image_alt : 'Bildets beskrivelse',
+help_desc : 'Hjelp',
+bold_img : 'bold_de_se.gif',
+italic_img : 'italic_de_se.gif',
+underline_img : 'underline.gif',
+clipboard_msg : 'Klipp ut/Kopier/Lim inn fungerer ikke i Mozilla og Firefox. Vil du vite mer om dette?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/nl.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/nl.js
new file mode 100644 (file)
index 0000000..05253a4
--- /dev/null
@@ -0,0 +1,42 @@
+// NL lang variables thanks to "Meint Post"
+// Updates by (2.0) Mark van der Sanden
+
+tinyMCE.addToLang('',{
+bold_desc : 'Vet (Ctrl+B)',
+italic_desc : 'Cursief (Ctrl+I)',
+underline_desc : 'Onderstrepen (Ctrl+U)',
+striketrough_desc : 'Doorhalen',
+justifyleft_desc : 'Links uitlijnen',
+justifycenter_desc : 'Centreren',
+justifyright_desc : 'Rechts uitlijnen',
+justifyfull_desc : 'Volledig uitlijnen',
+bullist_desc : 'Opsommingstekens',
+numlist_desc : 'Genummerde lijst',
+outdent_desc : 'Inspringen verkleinen',
+indent_desc : 'Inspringen vergroten',
+undo_desc : 'Ongedaan maken (Ctrl+Z)',
+redo_desc : 'Opnieuw (Ctrl+Y)',
+link_desc : 'Hyperlink invoegen/bewerken',
+unlink_desc : 'Hyperlink verwijderen',
+image_desc : 'Afbeelding invoegen',
+cleanup_desc : 'Code opschonen',
+focus_alert : 'Klik op de tekst in de editor voor het uitvoeren van dit commando.',
+edit_confirm : 'Wilt u de WYSIWYG modus voor deze textarea gebruiken?',
+insert_link_title : 'Hyperlink invoegen/bewerken',
+insert : 'OK',
+update : 'Toepassen',
+cancel : 'Annuleren',
+insert_link_url : 'URL link',
+insert_link_target : 'Bestemming',
+insert_link_target_same : 'Open link in hetzelfde venster',
+insert_link_target_blank : 'Open link in een nieuw venster',
+insert_image_title : 'Afbeelding invoegen/bewerken',
+insert_image_src : 'Afbeelding',
+insert_image_alt : 'Beschrijving',
+help_desc : 'Help',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Kopiëren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze kwestie?',
+popup_blocked : 'Uw browser heeft zojuist geweigerd een popup-venster te tonen. Waarschijnlijk gebruikt u een poup-blocker die voor deze editor te streng omgaat met popups. Om het venster toch te tonen, zult u uw popup-blocker zo in moeten stellen dat het popups van deze website toestaat.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/nn.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/nn.js
new file mode 100644 (file)
index 0000000..74462e2
--- /dev/null
@@ -0,0 +1,41 @@
+// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+bold_desc : 'Feit',
+italic_desc : 'Kursiv',
+underline_desc : 'Understreking',
+striketrough_desc : 'Gjennomstreking',
+justifyleft_desc : 'Venstrestill',
+justifycenter_desc : 'Sentrer',
+justifyright_desc : 'H&oslash;grestill',
+justifyfull_desc : 'Blokkjustering',
+bullist_desc : 'Punktliste',
+numlist_desc : 'Nummerliste',
+outdent_desc : 'Reduser innrykk',
+indent_desc : 'Auk innrykk',
+undo_desc : 'Angre',
+redo_desc : 'Gjer om',
+link_desc : 'Opprett/endre lenke',
+unlink_desc : 'Fjern lenke',
+image_desc : 'Sett inn/endre bilde',
+cleanup_desc : 'Rens grisete kode',
+focus_alert : 'Editoren m&aring; v&aelig;re i fokus f&oslash;r du benytter denne kommando.',
+edit_confirm : 'Vil du benytte WYSIWYG editoren for dette tekstfelt?',
+insert_link_title : 'Opprett/endre lenke',
+insert : 'Sett inn',
+update : 'Oppdater',
+cancel : 'Avbryt',
+insert_link_url : 'Lenkens URL',
+insert_link_target : 'Vindu',
+insert_link_target_same : '&Aring;pne i samme vindauge',
+insert_link_target_blank : '&Aring;pne i nytt vindauge',
+insert_image_title : 'Opprett/endre bilde',
+insert_image_src : 'Bildets URL',
+insert_image_alt : 'Bildets beskrivelse',
+help_desc : 'Hjelp',
+bold_img : 'bold_de_se.gif',
+italic_img : 'italic_de_se.gif',
+underline_img : 'underline.gif',
+clipboard_msg : 'Klipp ut/Kopier/Lim inn fungerer ikkje i Mozilla og Firefox. Vil du vite meir om dette?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/pl.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/pl.js
new file mode 100644 (file)
index 0000000..4037dba
--- /dev/null
@@ -0,0 +1,44 @@
+// PL lang variables
+// fixed by Wooya
+// http://www.mfusion.prv.pl
+// fixed by lemiel 26.10.2005
+
+tinyMCE.addToLang('',{
+bold_desc : 'Pogrubienie (Ctrl+B)',
+italic_desc : 'Pochylenie (Ctrl+I)',
+underline_desc : 'Podkre¶lenie (Ctrl+U)',
+striketrough_desc : 'Przekre¶lenie',
+justifyleft_desc : 'Wyrównaj do lewej',
+justifycenter_desc : 'Wyrównaj do ¶rodka',
+justifyright_desc : 'Wyrównaj do prawej',
+justifyfull_desc : 'Wyrównaj na ca³o¶ci',
+bullist_desc : 'Lista nienumerowana',
+numlist_desc : 'Lista numerowana',
+outdent_desc : 'Zmniejsz wciêcie',
+indent_desc : 'Zwiêksz wciêcie',
+undo_desc : 'Cofnij (Ctrl+Z)',
+redo_desc : 'Ponów (Ctrl+Y)',
+link_desc : 'Wstaw/edytuj link',
+unlink_desc : 'Usuñ link',
+image_desc : 'Wstaw/edytuj obrazek',
+cleanup_desc : 'Usuñ zbêdny kod',
+focus_alert : 'Instancja edytora musi byæ aktywna przed u¿yciem tego polecenia.',
+edit_confirm : 'Czy chcesz u¿yæ edytora WYSIWYG dla tego pola tekstowego?',
+insert_link_title : 'Wstaw/edytuj link',
+insert : 'Wstaw',
+update : 'Aktualizuj',
+cancel : 'Anuluj',
+insert_link_url : 'URL linku',
+insert_link_target : 'Cel',
+insert_link_target_same : 'Otwórz link w tym samym oknie',
+insert_link_target_blank : 'Otwórz link w nowym oknie',
+insert_image_title : 'Wstaw/edytuj obrazek',
+insert_image_src : 'URL obrazka',
+insert_image_alt : 'Opis obrazka',
+help_desc : 'Pomoc',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Kopiuj/Wytnij/Wklej nie jest dostêpne dla przegl±darek Mozilla i Firefox.\nCzy chcesz uzyskaæ o tym wiêcej informacji?',
+popup_blocked : 'Niestety, ale odnotowano, ¿e Twoja przegl±darka ma w³±czon± blokadê okienek popup. Musisz wy³±czyæ opcjê blokowania okienek dla tej strony, aby TinyMCE móg³ pracowaæ z pe³n± funkcjonalno¶ci±.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/pt.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/pt.js
new file mode 100644 (file)
index 0000000..9e9cc26
--- /dev/null
@@ -0,0 +1,42 @@
+// PT lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Negrito',
+italic_desc : 'Itálico',
+underline_desc : 'Sublinhar',
+striketrough_desc : 'Riscado',
+justifyleft_desc : 'Alinhar á esquerda',
+justifycenter_desc : 'Alinhar ao centro',
+justifyright_desc : 'Alinhar á direita',
+justifyfull_desc : 'Justificado',
+bullist_desc : 'Lista não ordenada',
+numlist_desc : 'Lista ordenada',
+outdent_desc : 'Retirar indentação',
+indent_desc : 'Indentar',
+undo_desc : 'Desfazer',
+redo_desc : 'Refazer',
+link_desc : 'Inserir Hiperligação',
+unlink_desc : 'Remover hiperligação',
+image_desc : 'Inserir Referência a imagem externa',
+object_desc : 'Inserir Objecto Multimédia da Galeria',
+cleanup_desc : 'Limpeza de código',
+focus_alert : 'Uma instância do editor deverá estar seleccionada antes de utilizar este comando.',
+edit_confirm : 'Deseja utilizar o modo visual de edição para ezta área de texto?',
+insert_link_title : 'Inserir/editar hiperligação',
+insert : 'Inserir',
+update : 'Actualizar',
+cancel : 'Cancelar',
+insert_link_url : 'URL de hiperligação',
+insert_link_target : 'Destino',
+insert_link_target_same : 'Abrir endereço na mesma janela',
+insert_link_target_blank : 'Abrir endereço numa nova janela',
+insert_image_title : 'Inserir/editar imagem',
+insert_image_src : 'Endereço da imagem',
+insert_image_alt : 'Descrição alt.',
+help_desc : 'Ajuda',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copiar/Cortar/Colar não está disponível em Mozilla and Firefox.\nPretende obter mais informação acerca desta questão?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/pt_br.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/pt_br.js
new file mode 100644 (file)
index 0000000..89cd62d
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * pt_br lang variables
+ * Brazilian Portuguese
+ *
+ * Authors : ????
+ * Revision and modifications:
+ *           Marcio Barbosa (mpg) <mpg@mpg.com.br>
+ * Last Updated : November 26, 2005
+ * TinyMCE Version : 2.0RC4
+ */
+tinyMCE.addToLang('',{
+bold_desc : 'Negrito (Ctrl+B)',
+italic_desc : 'Itálico (Ctrl+I)',
+underline_desc : 'Sublinhar (Ctrl+U)',
+striketrough_desc : 'Riscado',
+justifyleft_desc : 'Alinhar à esquerda',
+justifycenter_desc : 'Centralizado',
+justifyright_desc : 'Alinhar à direita',
+justifyfull_desc : 'Justificado',
+bullist_desc : 'Lista não ordenada',
+numlist_desc : 'Lista ordenada',
+outdent_desc : 'Retirar indentação',
+indent_desc : 'Indentar',
+undo_desc : 'Desfazer (Ctrl+Z)',
+redo_desc : 'Refazer (Ctrl+Y)',
+link_desc : 'Inserir link',
+unlink_desc : 'Remover link',
+image_desc : 'Inserir Referência a imagem externa',
+object_desc : 'Inserir Objeto Multimídia da Galeria',
+cleanup_desc : 'Limpeza de código',
+focus_alert : 'Uma instância do editor deverá estar selecionada antes de utilizar este comando.',
+edit_confirm : 'Deseja utilizar o Modo Visual (WYSIWYG) de edição para esta área de texto?',
+insert_link_title : 'Inserir/editar link',
+insert : 'Inserir',
+update : 'Atualizar',
+cancel : 'Cancelar',
+insert_link_url : 'URL do link',
+insert_link_target : 'Destino',
+insert_link_target_same : 'Abrir link na mesma janela',
+insert_link_target_blank : 'Abrir link em uma nova janela',
+insert_image_title : 'Inserir/editar imagem',
+insert_image_src : 'Endereço (URL) da imagem',
+insert_image_alt : 'Descrição da imagem',
+help_desc : 'Ajuda',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copiar/Cortar/Colar não está disponível no Mozilla e Firefox.\nPretende obter mais informação sobre esta questão?',
+popup_blocked : 'Desculpe, mas sabemos que seu bloqueador de popup desativou uma que permite a funcionabilidade desta aplicação. Você precisa desativar seu bloqueador de popup neste site para que possa ser utilizado todos os recursos desta ferramenta.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/langs/readme.txt
new file mode 100644 (file)
index 0000000..2e1965c
--- /dev/null
@@ -0,0 +1,2 @@
+The language pack codes are based on ISO-639-2
+http://www.loc.gov/standards/iso639-2/englangn.html
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ru.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ru.js
new file mode 100644 (file)
index 0000000..1789b7a
--- /dev/null
@@ -0,0 +1,43 @@
+// Russian windows-1251 translation by Vladimir Vitkovsky
+// admin@transport.su
+// www.webgui.uanet.biz
+
+tinyMCE.addToLang('',{
+bold_desc : 'Ïîëóæèðíûé',
+italic_desc : 'Êóðñèâ',
+underline_desc : 'Ïîä÷åðêíóòûé',
+striketrough_desc : 'Ïåðå÷åðêíóòûé',
+justifyleft_desc : 'Âûðàâíèâàíèå âëåâî',
+justifycenter_desc : 'Âûðàâíèâàíèå ïî öåíòðó',
+justifyright_desc : 'Âûðàâíèâàíèå âïðàâî',
+justifyfull_desc : 'Ðàâíîìåðíîå çàïîëíåíèå',
+bullist_desc : 'Ìàðêèðîâàííûé ñïèñîê',
+numlist_desc : 'Íóìåðîâàííûé ñïèñîê',
+outdent_desc : 'Óìåíüøèòü îòñòóï',
+indent_desc : 'Óâåëè÷èòü îòñïóò',
+undo_desc : 'Îòìåíèòü',
+redo_desc : 'Âåðíóòü',
+link_desc : 'Âñòàâèòü/èçìåíèòü ññûëêó',
+unlink_desc : 'Óáðàòü ññûëêó',
+image_desc : 'Âñòàâèòü/èçìåíèòü èçîáðàæåíèå',
+cleanup_desc : 'Ïîä÷èñòèòü èçáûòî÷íûé êîä',
+focus_alert : 'Äëÿ èñïîëüçîâàíèÿ äàííîé êîìàíäû Âû äîëæíû íàõîäèòñÿ â ïîëå ðåäàêòîðà.',
+edit_confirm : 'Õîòèòå ëè Âû ðåäàêòèðîâàòü â âèçóàëüíîì (WYSIWYG) ðåæèìå?',
+insert_link_title : 'Âñòàâèòü/èçìåíèòü ññûëêó',
+insert : 'Âñòàâèòü',
+update : 'Ïðèìåíèòü',
+cancel : 'Îòìåíèòü',
+insert_link_url : 'Àäðåñ ññûëêè',
+insert_link_target : 'Îòêðûòü â...:',
+insert_link_target_same : 'òîì æå îêíå',
+insert_link_target_blank : 'íîâîì îêíå',
+insert_image_title : 'Âñòàâèòü/èçìåíèòü èçîáðàæåíèå',
+insert_image_src : 'Àäðåñ êàðòèíêè',
+insert_image_alt : 'Îïèñàíèå êàðòèíêè',
+help_desc : 'Ïîìîùü',
+bold_img : "bold_ru.gif",
+italic_img : "italic_ru.gif",
+underline_img : "underline_ru.gif",
+clipboard_msg : 'Êîïèðîâàòü/Âûðåçàòü/Âñòàâèòü íåäîñòóïíû äëÿ Mozilla è Firefox.\nÕîòèòå óçíàòü îá ýòîì ïîäðîáíåå?',
+popup_blocked : 'Èçâèíèòå, íî â Âàøåì áðàóçåðå çàáëîêèðîâàíû âñïëûâàþùèå îêíà. Äëÿ òîãî, ÷òîáû èìåòü âîçìîæíîñòü âîñïîëüçîâàòüñÿ âñåìè âîçìîæíîñòÿìè ðåäàêòîðà, íåîáõîäèìî îòêëþ÷èòü áëîêèðîâêó âñïëûâàþùèõ îêîí äëÿ ýòîãî ñàéòà.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ru_KOI8-R.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ru_KOI8-R.js
new file mode 100644 (file)
index 0000000..135f8e9
--- /dev/null
@@ -0,0 +1,43 @@
+// Russian KOI8-R translation by Vladimir Vitkovsky
+// admin@transport.su
+// www.webgui.uanet.biz
+
+tinyMCE.addToLang('',{
+bold_desc : 'ðÏÌÕÖÉÒÎÙÊ',
+italic_desc : 'ëÕÒÓÉ×',
+underline_desc : 'ðÏÄÞÅÒËÎÕÔÙÊ',
+striketrough_desc : 'ðÅÒÅÞÅÒËÎÕÔÙÊ',
+justifyleft_desc : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ ×ÌÅ×Ï',
+justifycenter_desc : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ ÐÏ ÃÅÎÔÒÕ',
+justifyright_desc : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ ×ÐÒÁ×Ï',
+justifyfull_desc : 'òÁ×ÎÏÍÅÒÎÏÅ ÚÁÐÏÌÎÅÎÉÅ',
+bullist_desc : 'íÁÒËÉÒÏ×ÁÎÎÙÊ ÓÐÉÓÏË',
+numlist_desc : 'îÕÍÅÒÏ×ÁÎÎÙÊ ÓÐÉÓÏË',
+outdent_desc : 'õÍÅÎØÛÉÔØ ÏÔÓÔÕÐ',
+indent_desc : 'õ×ÅÌÉÞÉÔØ ÏÔÓÐÕÔ',
+undo_desc : 'ïÔÍÅÎÉÔØ',
+redo_desc : '÷ÅÒÎÕÔØ',
+link_desc : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÓÓÙÌËÕ',
+unlink_desc : 'õÂÒÁÔØ ÓÓÙÌËÕ',
+image_desc : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ',
+cleanup_desc : 'ðÏÄÞÉÓÔÉÔØ ÉÚÂÙÔÏÞÎÙÊ ËÏÄ',
+focus_alert : 'äÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÄÁÎÎÏÊ ËÏÍÁÎÄÙ ÷Ù ÄÏÌÖÎÙ ÎÁÈÏÄÉÔÓÑ × ÐÏÌÅ ÒÅÄÁËÔÏÒÁ.',
+edit_confirm : 'èÏÔÉÔÅ ÌÉ ÷Ù ÒÅÄÁËÔÉÒÏ×ÁÔØ × ×ÉÚÕÁÌØÎÏÍ (WYSIWYG) ÒÅÖÉÍÅ?',
+insert_link_title : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÓÓÙÌËÕ',
+insert : '÷ÓÔÁ×ÉÔØ',
+update : 'ðÒÉÍÅÎÉÔØ',
+cancel : 'ïÔÍÅÎÉÔØ',
+insert_link_url : 'áÄÒÅÓ ÓÓÙÌËÉ',
+insert_link_target : 'ïÔËÒÙÔØ ×...:',
+insert_link_target_same : 'ÔÏÍ ÖÅ ÏËÎÅ',
+insert_link_target_blank : 'ÎÏ×ÏÍ ÏËÎÅ',
+insert_image_title : '÷ÓÔÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ',
+insert_image_src : 'áÄÒÅÓ ËÁÒÔÉÎËÉ',
+insert_image_alt : 'ïÐÉÓÁÎÉÅ ËÁÒÔÉÎËÉ',
+help_desc : 'ðÏÍÏÝØ',
+bold_img : "bold_ru.gif",
+italic_img : "italic_ru.gif",
+underline_img : "underline_ru.gif",
+clipboard_msg : 'ëÏÐÉÒÏ×ÁÔØ/÷ÙÒÅÚÁÔØ/÷ÓÔÁ×ÉÔØ ÎÅÄÏÓÔÕÐÎÙ ÄÌÑ Mozilla É Firefox.\nèÏÔÉÔÅ ÕÚÎÁÔØ Ï ÜÔÏÍ ÐÏÄÒÏÂÎÅÅ?',
+popup_blocked : 'éÚ×ÉÎÉÔÅ, ÎÏ × ÷ÁÛÅÍ ÂÒÁÕÚÅÒÅ ÚÁÂÌÏËÉÒÏ×ÁÎÙ ×ÓÐÌÙ×ÁÀÝÉÅ ÏËÎÁ. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ×ÓÅÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ ÒÅÄÁËÔÏÒÁ, ÎÅÏÂÈÏÄÉÍÏ ÏÔËÌÀÞÉÔØ ÂÌÏËÉÒÏ×ËÕ ×ÓÐÌÙ×ÁÀÝÉÈ ÏËÏΠÄÌÑ ÜÔÏÇÏ ÓÁÊÔÁ.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/ru_UTF-8.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/ru_UTF-8.js
new file mode 100644 (file)
index 0000000..1464e56
--- /dev/null
@@ -0,0 +1,43 @@
+// Russian UTF-8 translation by Vladimir Vitkovsky
+// admin@transport.su
+// www.webgui.uanet.biz
+
+tinyMCE.addToLang('',{
+bold_desc : 'Полужирный',
+italic_desc : 'Курсив',
+underline_desc : 'Подчеркнутый',
+striketrough_desc : 'Перечеркнутый',
+justifyleft_desc : 'Выравнивание влево',
+justifycenter_desc : 'Выравнивание по центру',
+justifyright_desc : 'Выравнивание вправо',
+justifyfull_desc : 'Равномерное заполнение',
+bullist_desc : 'Маркированный список',
+numlist_desc : 'Нумерованный список',
+outdent_desc : 'Уменьшить отступ',
+indent_desc : 'Увеличить отспут',
+undo_desc : 'Отменить',
+redo_desc : 'Вернуть',
+link_desc : 'Вставить/изменить ссылку',
+unlink_desc : 'Убрать ссылку',
+image_desc : 'Вставить/изменить изображение',
+cleanup_desc : 'Подчистить избыточный код',
+focus_alert : 'Для использования данной команды Вы должны находится в поле редактора.',
+edit_confirm : 'Хотите ли Вы редактировать в визуальном (WYSIWYG) режиме?',
+insert_link_title : 'Вставить/изменить ссылку',
+insert : 'Вставить',
+update : 'Применить',
+cancel : 'Отменить',
+insert_link_url : 'Адрес ссылки',
+insert_link_target : 'Открыть в...:',
+insert_link_target_same : 'том же окне',
+insert_link_target_blank : 'новом окне',
+insert_image_title : 'Вставить/изменить изображение',
+insert_image_src : 'Адрес картинки',
+insert_image_alt : 'Описание картинки',
+help_desc : 'Помощь',
+bold_img : "bold_ru.gif",
+italic_img : "italic_ru.gif",
+underline_img : "underline_ru.gif",
+clipboard_msg : 'Копировать/Вырезать/Вставить недоступны для Mozilla и Firefox.\nХотите узнать об этом подробнее?',
+popup_blocked : 'Извините, но в Вашем браузере заблокированы всплывающие окна. Для того, чтобы иметь возможность воспользоваться всеми возможностями редактора, необходимо отключить блокировку всплывающих окон для этого сайта.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/sk.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/sk.js
new file mode 100644 (file)
index 0000000..908f8d2
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * Slovak lang variables 
+ * encoding: utf-8
+ * 
+ * @author Vladimir VASIL vvasil@post.sk
+ *    
+ * $Id: sk.js,v 1.1 2006-10-02 05:37:06 shizuki Exp $ 
+ */  
+
+
+tinyMCE.addToLang('',{
+bold_desc : 'Tučné',
+italic_desc : 'Kurzivá',
+underline_desc : 'Podčiarknutie',
+striketrough_desc : 'Preškrtnutie',
+justifyleft_desc : 'Zarovnanie vľavo',
+justifycenter_desc : 'Zarovnanie na stred',
+justifyright_desc : 'Zarovnanie vpravo',
+justifyfull_desc : 'Zarovnanie do bloku',
+bullist_desc : 'Zoznam s odrážkami',
+numlist_desc : 'Číslovaný zoznam',
+outdent_desc : 'Snížiť odsadenie',
+indent_desc : 'Zvýšiť odsadenie',
+undo_desc : 'Zpäť',
+redo_desc : 'Znovu',
+link_desc : 'Vložiť odkaz',
+unlink_desc : 'Zrušiť odkaz',
+image_desc : 'Vložiť obrázok',
+cleanup_desc : 'Vyčistiť kód',
+focus_alert : 'Pred použitím tohoto príkazu musí byť kurzor v okne editora.',
+edit_confirm : 'Chcete použiť WYSIWYG editáciu pre tento text?',
+insert_link_title : 'Vložiť/upraviť odkaz',
+insert : 'Vložiť',
+update : 'Zmeniť',
+cancel : 'Zrušiť',
+insert_link_url : 'URL odkazu',
+insert_link_target : 'Cieľ',
+insert_link_target_same : 'Otvoriť odkaz v rovnakom okne',
+insert_link_target_blank : 'Otvoriť odkaz v novom okne',
+insert_image_title : 'Vložiť/upraviť obrázok',
+insert_image_src : 'URL obrázku',
+insert_image_alt : 'Popis obrázku',
+help_desc : 'Nápoveda',
+bold_img : 'bold.gif',
+italic_img : 'italic.gif',
+underline_img : "underline.gif",
+clipboard_msg : 'Funkcia Kopírovať/vysrihnúť/vložiť niesú použiteľné v Mozille a Firefoxe.\nChcete viac informácií o tomto probléme?',
+popup_blocked : 'Ospravedlňujeme sa, ale blokovač vyskakovacích okien neumožnil otvoriť okno, ktoré zprostredkovává funkčnosť aplikáce. Musíte vypnuť blokovanie vyskakovacích okien na tomto webe, abyste využili jeho plnú funkčnosť.'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/sv.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/sv.js
new file mode 100644 (file)
index 0000000..22feb7e
--- /dev/null
@@ -0,0 +1,43 @@
+// SE lang variables
+
+tinyMCE.addToLang('',{
+bold_desc : 'Fet',
+italic_desc : 'Kursiv',
+underline_desc : 'Understruken',
+striketrough_desc : 'Genomstruken',
+justifyleft_desc : 'V&auml;nsterjustera',
+justifycenter_desc : 'Centrera',
+justifyright_desc : 'H&ouml;gerjustera',
+justifyfull_desc : 'Kantjustera',
+bullist_desc : 'Punktlista',
+numlist_desc : 'Nummerlista',
+outdent_desc : 'Utdrag',
+indent_desc : 'Indrag',
+undo_desc : '&Aring;ngra',
+redo_desc : 'G&ouml;r om',
+link_desc : 'Skapa l&auml;nk',
+unlink_desc : 'Ta bort l&auml;nk',
+image_desc : 'Skapa/redigera bild',
+cleanup_desc : 'Rensa skr&auml;pkod',
+focus_alert : 'Flytta mark&ouml;ren till en textyta innan du anv&auml;nder detta kommando.',
+edit_confirm : 'Vill du anv&auml;nda WYSIWYG-editorn f&ouml;r detta textf&auml;lt?',
+insert_link_title : 'Skapa/redigera l&auml;nk',
+insert : 'Skapa',
+update : 'Uppdatera',
+cancel : 'Avbryt',
+insert_link_url : 'L&auml;nkens URL',
+insert_link_target : 'F&ouml;nster',
+insert_link_target_same : '&Ouml;ppna l&auml;nken i samma f&ouml;nster',
+insert_link_target_blank : '&Ouml;ppna l&auml;nken i ett nytt f&ouml;nster',
+insert_link_delta_width : 20,
+insert_link_delta_height : 10,
+insert_image_title : 'Skapa/redigera bild',
+insert_image_src : 'Bildens URL',
+insert_image_alt : 'Bildens beskrivning',
+bold_img : 'bold_de_se.gif',
+italic_img : 'italic_de_se.gif',
+underline_img : "underline.gif",
+clipboard_msg : 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?',
+help_desc : "Hj&auml;lp",
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/th.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/th.js
new file mode 100644 (file)
index 0000000..3b78806
--- /dev/null
@@ -0,0 +1,40 @@
+// TH lang variables Thai contributed by Innozent
+
+tinyMCE.addToLang('',{
+bold_desc : 'µÑÇ˹Ò',
+italic_desc : 'µÑÇéàÍÕ§',
+underline_desc : '¢Õ´àÊé¹ãµé',
+striketrough_desc : '¢Õ´¤&Aring;èÍÁ',
+justifyleft_desc : 'ªÔ´¢Íº«éÒÂ',
+justifycenter_desc : '¡&Ouml;觡&Aring;Ò§',
+justifyright_desc : 'ªÔ´¢Íº¢ÇÒ',
+justifyfull_desc : '¨Ñ´ªÔ´¢Íº',
+bullist_desc : 'ÊÑ­&Aring;ѡɳìáÊ´§ËÑÇ¢éÍÂèÍÂ',
+numlist_desc : '&Aring;ӴѺà&Aring;¢',
+outdent_desc : '&Aring;´¡ÒÃàÂ×éͧ',
+indent_desc : 'à¾ÔèÁ¡ÒÃàÂ×éͧ',
+undo_desc : 'à&Aring;Ô¡·Ó',
+redo_desc : '·ÓãËÁè',
+link_desc : 'à¾ÔèÁ&Aring;Ô§¤ì',
+unlink_desc : '&Aring;º&Aring;Ô§¤ì',
+image_desc : 'ãÊèÃÙ»',
+cleanup_desc : '·Ó¤ÇÒÁÊÐÍÒ´¢éͤÇÒÁ',
+focus_alert : 'µéͧà&Aring;×Í¡¡&Aring;èͧ¢éͤÇÒÁ¡è͹·Õè¨Ðãªé¤ÓÊÑ觹Õé',
+edit_confirm : '¤Ø³µéͧ¡Ò÷Õè¨Ðãªé WYSIWYG mode ÊÓËÃѺ¡&Aring;èͧ¢éͤÇÒÁ¹ÕéËÃ×Í&auml;Áè?',
+insert_link_title : 'à¾ÔèÁ/á¡é&auml;¢ &Aring;Ô§¤ì',
+insert : 'à¾ÔèÁ',
+cancel : '¡à&Aring;Ô¡',
+insert_link_url : 'Link URL',
+insert_link_target : 'à»Ô´&Aring;Ô§¤ìã¹',
+insert_link_target_same : '˹éÒµèÒ§à´ÕÂǡѹ',
+insert_link_target_blank : '˹éÒµèÒ§ãËÁè',
+insert_image_title : 'à¾ÔèÁ/á¡é&auml;¢ ÃÙ»',
+insert_image_src : 'URL ¢Í§ÃÙ»',
+insert_image_alt : '¤Ó͸ԺÒÂÃÙ»',
+help_desc : 'ªèÇÂàË&Aring;×Í',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/zh_cn.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/zh_cn.js
new file mode 100644 (file)
index 0000000..c7b7545
--- /dev/null
@@ -0,0 +1,41 @@
+// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com)
+
+tinyMCE.addToLang('',{
+bold_desc : 'ºÚÌå (Ctrl+B)',
+italic_desc : 'бÌå (Ctrl+I)',
+underline_desc : 'Ï»®Ïß (Ctrl+U)',
+striketrough_desc : 'ɾ³ýÏß',
+justifyleft_desc : '×ó¶ÔÆë',
+justifycenter_desc : '¾ÓÖжÔÆë',
+justifyright_desc : 'ÓÒ¶ÔÆë',
+justifyfull_desc : 'Á½¶Ë¶ÔÆë',
+bullist_desc : 'ÎÞÐòÁбí',
+numlist_desc : 'ÓÐÐòÁбí',
+outdent_desc : '¼õÉÙËõ½ø',
+indent_desc : 'Ôö¼ÓËõ½ø',
+undo_desc : '³·Ïû (Ctrl+Z)',
+redo_desc : 'ÖØ×ö (Ctrl+Y)',
+link_desc : '²åÈë/±à¼­ Á´½Ó',
+unlink_desc : 'ɾ³ýÁ´½Ó',
+image_desc : '²åÈë/±à¼­ Í¼Ïñ',
+cleanup_desc : 'ɾ³ýÈßÓà´úÂë',
+focus_alert : 'ÇëÏÈÑ¡Ôñ±à¼­Çø',
+edit_confirm : 'ÄúÏëÔڱ༭ÇøÓòÉÏʹÓÃËù¼û¼´ËùµÃ±à¼­Æ÷ô£¿',
+insert_link_title : '²åÈë/±à¼­ Á´½Ó',
+insert : '²åÈë',
+update : '¸üÐÂ',
+cancel : 'È¡Ïû',
+insert_link_url : 'Á´½ÓµØÖ·',
+insert_link_target : 'Á´½ÓÄ¿±ê',
+insert_link_target_same : 'ÔÚͬһ´°¿ÚÖдò¿ªÁ´½Ó',
+insert_link_target_blank : 'ÔÚд°¿ÚÖдò¿ªÁ´½Ó',
+insert_image_title : '²åÈë/±à¼­ Í¼Ïñ',
+insert_image_src : 'ͼÏñµØÖ·',
+insert_image_alt : 'ͼÏñÃèÊö',
+help_desc : '°ïÖú',
+bold_img : "bold.gif",
+italic_img : "italic.gif",
+underline_img : "underline.gif",
+clipboard_msg : '¼ôÇÐ/¸´ÖÆ/Õ³Ìù¹¦ÄÜÔÚ Mozilla ºÍ Firefox ä¯ÀÀÆ÷Öв»Ö§³Ö¡£ÄúÏ£Íû»ñµÃ¸ü¶àµÄÐÅÏ¢Âð£¿',
+popup_blocked : '¶Ô²»Æð, ÄúµÄä¯ÀÀÆ÷½ûÖ¹Á˵¯³öʽ´°¿Ú¡£ÎªÁËÈÃÄúʹÓõ½×îÍêÉƵŦÄÜ£¬Çë¶Ô±¾ÍøÕ¾µÄµ¯³öʽ´°¿Ú½â³ý½ûÖ¹¡£'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/zh_tw.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/zh_tw.js
new file mode 100644 (file)
index 0000000..507cdf8
--- /dev/null
@@ -0,0 +1,42 @@
+// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com
+
+tinyMCE.addToLang('',{
+bold_desc : '²ÊÅé¡]Ctrl+B¡^',
+italic_desc : '±×Åé¡]Ctrl+I¡^',
+underline_desc : '¥[©³½u¡]Ctrl+U¡^',
+striketrough_desc : '§R°£½u',
+justifyleft_desc : '¾a¥ª',
+justifycenter_desc : '¸m¤¤',
+justifyright_desc : '¾a¥k',
+justifyfull_desc : '¾ã½g¹ï»ô',
+bullist_desc : '¶µ¥Ø¤è¦¡±ø¦C',
+numlist_desc : '½s¸¹¤è¦¡±ø¦C',
+outdent_desc : 'ÂX¤jÁY±Æ',
+indent_desc : '´î¤pÁY±Æ',
+undo_desc : '´_­ì¡]Ctrl+Z¡^',
+redo_desc : '­«½Æ¡]Ctrl+Y¡^',
+link_desc : '´¡¤J©Î½s¿è³sµ²',
+unlink_desc : '§R°£³sµ²',
+image_desc : '´¡¤J©Î½s¿è¹ÏÀÉ',
+cleanup_desc : '²M°£¤¾½X',
+focus_alert : '¨Ï¥Î¦¹«ü¥O«e¶·¥ý«ü©w½s¿è¾¹',
+edit_confirm : '­n©ó¦¹¤å¦r¿é¤J°Ï¤¤±Ä¥Î©Òµø§Y±o¼Ò¦¡¶Ü¡H',
+insert_link_title : '´¡¤J©Î½s¿è³sµ²',
+insert : '´¡¤J',
+update : '§ó·s',
+cancel : '¨ú®ø',
+insert_link_url : '³sµ²ºô§}',
+insert_link_target : '¹ï¶H',
+insert_link_target_same : '©ó¦Pµøµ¡¤¤¶}±Ò³sµ²',
+insert_link_target_blank : '¥H·sµøµ¡¤¤¶}±Ò³sµ²',
+insert_image_title : '´¡¤J©Î½s¿è¹ÏÀÉ',
+insert_image_src : '¹ÏÀɺô§}',
+insert_image_alt : '¹ÏÀÉ»¡©ú',
+help_desc : '¨ó§U',
+bold_img : "bold_tw.gif",
+italic_img : "italic_tw.gif",
+underline_img : "underline_tw.gif",
+clipboard_msg : '¦b Mozilla ©M Firefox ¤¤µLªk¨Ï¥Î½Æ»s©Î°Å¤U©Î¶K¤W¥\¯à¡C\n»Ý­n§ó¦hÃö©ó¦¹ªº°T®§¶Ü¡H',
+popup_blocked : '³á¡I±z¦³³]¸m¸õ²{µøµ¡¹jµ´¾÷¨î¡A¤w±N¥\¯à¸õ²{µøµ¡µ¹¹jµ´¤F¡C\n½Ð½Õ¾ã¸õ²{µøµ¡¹jµ´¾÷¨îªº³]©w¡A¤~¯à¥¿±`¨Ï¥Î¦¹¥\¯à¡C'
+});
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/langs/zh_tw_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/langs/zh_tw_utf8.js
new file mode 100644 (file)
index 0000000..b99d1ba
--- /dev/null
@@ -0,0 +1,42 @@
+// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com
+
+tinyMCE.addToLang('',{
+bold_desc : '粗體(Ctrl+B)',
+italic_desc : '斜體(Ctrl+I)',
+underline_desc : '加底線(Ctrl+U)',
+striketrough_desc : '刪除線',
+justifyleft_desc : '靠左',
+justifycenter_desc : '置中',
+justifyright_desc : '靠右',
+justifyfull_desc : '整篇對齊',
+bullist_desc : '項目方式條列',
+numlist_desc : '編號方式條列',
+outdent_desc : '擴大縮排',
+indent_desc : '減小縮排',
+undo_desc : '復原(Ctrl+Z)',
+redo_desc : '重複(Ctrl+Y)',
+link_desc : '插入或編輯連結',
+unlink_desc : '刪除連結',
+image_desc : '插入或編輯圖檔',
+cleanup_desc : '清除冗碼',
+focus_alert : '使用此指令前須先指定編輯器',
+edit_confirm : '要於此文字輸入區中採用所視即得模式嗎?',
+insert_link_title : '插入或編輯連結',
+insert : '插入',
+update : '更新',
+cancel : '取消',
+insert_link_url : '連結網址',
+insert_link_target : '對象',
+insert_link_target_same : '於同視窗中開啟連結',
+insert_link_target_blank : '以新視窗中開啟連結',
+insert_image_title : '插入或編輯圖檔',
+insert_image_src : '圖檔網址',
+insert_image_alt : '圖檔說明',
+help_desc : '協助',
+bold_img : "bold_tw.gif",
+italic_img : "italic_tw.gif",
+underline_img : "underline_tw.gif",
+clipboard_msg : '在 Mozilla 和 Firefox 中無法使用複製或剪下或貼上功能。\n需要更多關於此的訊息嗎?',
+popup_blocked : '喔!您有設置跳現視窗隔絕機制,已將功能跳現視窗給隔絕了。\n請調整跳現視窗隔絕機制的設定,才能正常使用此功能。'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/license.txt b/trunk/NP_TinyMCE2j/tinymce2j/license.txt
new file mode 100644 (file)
index 0000000..32c3aa4
--- /dev/null
@@ -0,0 +1,437 @@
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1991 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 library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                           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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+.
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/editor_plugin.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/editor_plugin.js
new file mode 100644 (file)
index 0000000..68f2c42
--- /dev/null
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('emotions','en,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_emotions_getInfo(){return{longname:'Emotions',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_emotions_getControlHTML(control_name){switch(control_name){case "emotions":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');return false;';return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" target="_self" onmousedown="return false;"><img id="{$editor_id}_emotions" src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';}return "";}function TinyMCE_emotions_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=160;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;}return false;}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/editor_plugin_src.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..e9a879f
--- /dev/null
@@ -0,0 +1,51 @@
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('emotions', 'en,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk');
+
+function TinyMCE_emotions_getInfo() {
+       return {
+               longname : 'Emotions',
+               author : 'Moxiecode Systems',
+               authorurl : 'http://tinymce.moxiecode.com',
+               infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',
+               version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+       };
+};
+
+/**
+ * Returns the HTML contents of the emotions control.
+ */
+function TinyMCE_emotions_getControlHTML(control_name) {
+       switch (control_name) {
+               case "emotions":
+                       var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');return false;';
+                       return '<a href="javascript:' + cmd + '" onclick="' + cmd + '" target="_self" onmousedown="return false;"><img id="{$editor_id}_emotions" src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';
+       }
+
+       return "";
+}
+
+/**
+ * Executes the mceEmotion command.
+ */
+function TinyMCE_emotions_execCommand(editor_id, element, command, user_interface, value) {
+       // Handle commands
+       switch (command) {
+               case "mceEmotion":
+                       var template = new Array();
+
+                       template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
+                       template['width'] = 160;
+                       template['height'] = 160;
+
+                       // Language specific width and height addons
+                       template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0);
+                       template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0);
+
+                       tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+
+                       return true;
+       }
+
+       // Pass to next handler in chain
+       return false;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/emotions.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/emotions.htm
new file mode 100644 (file)
index 0000000..c5d2f81
--- /dev/null
@@ -0,0 +1,40 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_emotions_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
+       <base target="_self" />
+</head>
+<body style="display: none">
+       <div align="center">
+               <div class="title">{$lang_emotions_title}:<br /><br /></div>
+
+               <table border="0" cellspacing="0" cellpadding="4">
+                 <tr>
+                       <td><a href="javascript:insertEmotion('smiley-cool.gif','lang_emotions_cool');"><img src="images/smiley-cool.gif" width="18" height="18" border="0" alt="{$lang_emotions_cool}" title="{$lang_emotions_cool}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-cry.gif','lang_emotions_cry');"><img src="images/smiley-cry.gif" width="18" height="18" border="0" alt="{$lang_emotions_cry}" title="{$lang_emotions_cry}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-embarassed.gif','lang_emotions_embarassed');"><img src="images/smiley-embarassed.gif" width="18" height="18" border="0" alt="{$lang_emotions_embarassed}" title="{$lang_emotions_embarassed}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-foot-in-mouth.gif','lang_emotions_foot_in_mouth');"><img src="images/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_foot_in_mouth}" title="{$lang_emotions_foot_in_mouth}" /></a></td>
+                 </tr>
+                 <tr>
+                       <td><a href="javascript:insertEmotion('smiley-frown.gif','lang_emotions_frown');"><img src="images/smiley-frown.gif" width="18" height="18" border="0" alt="{$lang_emotions_frown}" title="{$lang_emotions_frown}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-innocent.gif','lang_emotions_innocent');"><img src="images/smiley-innocent.gif" width="18" height="18" border="0" alt="{$lang_emotions_innocent}" title="{$lang_emotions_innocent}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-kiss.gif','lang_emotions_kiss');"><img src="images/smiley-kiss.gif" width="18" height="18" border="0" alt="{$lang_emotions_kiss}" title="{$lang_emotions_kiss}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-laughing.gif','lang_emotions_laughing');"><img src="images/smiley-laughing.gif" width="18" height="18" border="0" alt="{$lang_emotions_laughing}" title="{$lang_emotions_laughing}" /></a></td>
+                 </tr>
+                 <tr>
+                       <td><a href="javascript:insertEmotion('smiley-money-mouth.gif','lang_emotions_money_mouth');"><img src="images/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_money_mouth}" title="{$lang_emotions_money_mouth}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-sealed.gif','lang_emotions_sealed');"><img src="images/smiley-sealed.gif" width="18" height="18" border="0" alt="{$lang_emotions_sealed}" title="{$lang_emotions_sealed}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-smile.gif','lang_emotions_smile');"><img src="images/smiley-smile.gif" width="18" height="18" border="0" alt="{$lang_emotions_smile}" title="{$lang_emotions_smile}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-surprised.gif','lang_emotions_surprised');"><img src="images/smiley-surprised.gif" width="18" height="18" border="0" alt="{$lang_emotions_surprised}" title="{$lang_emotions_surprised}" /></a></td>
+                 </tr>
+                 <tr>
+                       <td><a href="javascript:insertEmotion('smiley-tongue-out.gif','lang_emotions_tongue_out');"><img src="images/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{$lang_emotions_tongue-out}" title="{$lang_emotions_tongue_out}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-undecided.gif','lang_emotions_undecided');"><img src="images/smiley-undecided.gif" width="18" height="18" border="0" alt="{$lang_emotions_undecided}" title="{$lang_emotions_undecided}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-wink.gif','lang_emotions_wink');"><img src="images/smiley-wink.gif" width="18" height="18" border="0" alt="{$lang_emotions_wink}" title="{$lang_emotions_wink}" /></a></td>
+                       <td><a href="javascript:insertEmotion('smiley-yell.gif','lang_emotions_yell');"><img src="images/smiley-yell.gif" width="18" height="18" border="0" alt="{$lang_emotions_yell}" title="{$lang_emotions_yell}" /></a></td>
+                 </tr>
+               </table>
+       </div>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/emotions.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/emotions.gif
new file mode 100644 (file)
index 0000000..26adbe6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/emotions.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/readme.txt
new file mode 100644 (file)
index 0000000..cc2cf3f
--- /dev/null
@@ -0,0 +1,2 @@
+These emotions where taken from Mozilla Thunderbird.
+I hope they don't get angry if I use them here after all this is a open source project aswell.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cool.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cool.gif
new file mode 100644 (file)
index 0000000..ba90cc3
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cool.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cry.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cry.gif
new file mode 100644 (file)
index 0000000..74d897a
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-cry.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-embarassed.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-embarassed.gif
new file mode 100644 (file)
index 0000000..963a96b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-embarassed.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-foot-in-mouth.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-foot-in-mouth.gif
new file mode 100644 (file)
index 0000000..16f68cc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-foot-in-mouth.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-frown.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-frown.gif
new file mode 100644 (file)
index 0000000..716f55e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-frown.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-innocent.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-innocent.gif
new file mode 100644 (file)
index 0000000..334d49e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-innocent.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-kiss.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-kiss.gif
new file mode 100644 (file)
index 0000000..4efd549
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-kiss.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-laughing.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-laughing.gif
new file mode 100644 (file)
index 0000000..1606c11
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-laughing.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-money-mouth.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-money-mouth.gif
new file mode 100644 (file)
index 0000000..ca2451e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-money-mouth.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-sealed.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-sealed.gif
new file mode 100644 (file)
index 0000000..b33d3cc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-sealed.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-smile.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-smile.gif
new file mode 100644 (file)
index 0000000..e6a9e60
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-smile.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-surprised.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-surprised.gif
new file mode 100644 (file)
index 0000000..cb99cdd
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-surprised.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-tongue-out.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-tongue-out.gif
new file mode 100644 (file)
index 0000000..2075dc1
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-tongue-out.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-undecided.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-undecided.gif
new file mode 100644 (file)
index 0000000..bef7e25
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-undecided.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-wink.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-wink.gif
new file mode 100644 (file)
index 0000000..9faf1af
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-wink.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-yell.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-yell.gif
new file mode 100644 (file)
index 0000000..648e6e8
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/images/smiley-yell.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/jscripts/functions.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/jscripts/functions.js
new file mode 100644 (file)
index 0000000..41e6dfa
--- /dev/null
@@ -0,0 +1,21 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+}
+
+function insertEmotion(file_name, title) {
+       title = tinyMCE.getLang(title);
+
+       if (title == null)
+               title = "";
+
+       // XML encode
+       title = title.replace(/&/g, '&amp;');
+       title = title.replace(/\"/g, '&quot;');
+       title = title.replace(/</g, '&lt;');
+       title = title.replace(/>/g, '&gr;');
+
+       var html = '<img src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" mce_src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" border="0" alt="' + title + '" />';
+
+       tinyMCE.execCommand('mceInsertContent', false, html);
+       tinyMCEPopup.close();
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/langs/en.js
new file mode 100644 (file)
index 0000000..5d9ee60
--- /dev/null
@@ -0,0 +1,22 @@
+// UK lang variables
+
+tinyMCE.addToLang('emotions',{
+title : 'Insert emotion',
+desc : 'Emotions',
+cool : 'Cool',
+cry : 'Cry',
+embarassed : 'Embarassed',
+foot_in_mouth : 'Foot in mouth',
+frown : 'Frown',
+innocent : 'Innocent',
+kiss : 'Kiss',
+laughing : 'Laughing',
+money_mouth : 'Money mouth',
+sealed : 'Sealed',
+smile : 'Smile',
+surprised : 'Surprised',
+tongue_out : 'Tongue out',
+undecided : 'Undecided',
+wink : 'Wink',
+yell : 'Yell'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/emotions/readme.txt
new file mode 100644 (file)
index 0000000..6bc6d7d
--- /dev/null
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/config.inc.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/config.inc.php
new file mode 100644 (file)
index 0000000..c46abe5
--- /dev/null
@@ -0,0 +1,195 @@
+<?php
+/***********************************************************************
+** Title.........:    Insert File Dialog, File Manager
+** Version.......:    1.1
+** Authors.......:    Al Rashid <alrashid@klokan.sk>
+**                    Xiang Wei ZHUO <wei@zhuo.org>
+** Filename......:    config.php
+** URL...........:    http://alrashid.klokan.sk/insFile/
+** Last changed..:    23 July 2004
+***********************************************************************/
+
+
+// some changes to work fine with nucleus
+include('../../../../../../config.php');
+
+$media_path = str_replace ($_SERVER["DOCUMENT_ROOT"],'',substr ($DIR_MEDIA, 0, -1) );
+
+/*
+ MY_DOCUMENT_ROOT
+ File system path to the directory you want to manage the files and folders
+ NOTE: This directory requires write permission by PHP. That is,
+       PHP must be able to create files in this directory.
+ NOTE2: without trailing slash
+*/
+$MY_DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] . $media_path; //* system path to the directory you want to manage the files and folders
+
+/* MY_BASE_URL  */
+$MY_BASE_URL      = 'http://' . $_SERVER['SERVER_NAME'] . $media_path;
+
+
+/*
+ MY_URL_TO_OPEN_FILE
+ The URL to the MY_DOCUMENT_ROOT path, the web browser needs to be able to see it.
+ It can be protected via .htaccess on apache or directory permissions on IIS,
+ check you web server documentation for futher information on directory protection
+ If this directory needs to be publicly accessiable, remove scripting capabilities
+ for this directory (i.e. disable PHP, Perl, CGI). We only want to store documents
+ in this directory and its subdirectories.
+ NOTE: without trailing slash
+*/
+$MY_URL_TO_OPEN_FILE  = "http://localhost/tinymce142/resource/insfile"; 
+
+/* MY_ALLOW_CREATE   Boolean (false or true) whether creating folders is allowed or not. */
+$MY_ALLOW_CREATE     = true;
+/* $MY_ALLOW_DELETE  Boolean (false or true) whether deleting files and folders is allowed or not. */
+$MY_ALLOW_DELETE     = true;
+/* $MY_ALLOW_RENAME  Boolean (false or true) whether renaming files and folders is allowed or not. */
+$MY_ALLOW_RENAME     = true;
+/* $MY_ALLOW_MOVE    Boolean (false or true) whether moving files and folders is allowed or not. */
+$MY_ALLOW_MOVE       = true;
+/* $MY_ALLOW_UPLOAD  Boolean (false or true) whether uploading files is allowed or not. */
+$MY_ALLOW_UPLOAD     = true;
+/* MY_LIST_EXTENSIONS This array specifies which files are listed in dialog. Setting to null causes that all files are listed,case insensitive. */
+$MY_LIST_EXTENSIONS  = array(
+                                               'html', 'htm', 'txt',                           // HTML
+                                               'pdf', 'doc', 'rtf', 'xls', 'csv',      // Office
+                                               'zip', 'rar', '7z',     'gz',                   // Archives
+                                               'gif', 'jpg', 'jpeg', 'png', 'tif',     // Images
+                                               'mp3', 'mp4', 'aac', 'wav',                     // Audio
+                                               'avi', 'mpeg', 'mpg', 'mov', 'divx'     // Video
+                                               );
+/*
+ MY_ALLOW_EXTENSIONS
+ MY_DENY_EXTENSIONS
+ MY_ALLOW_EXTENSIONS and MY_DENY_EXTENSIONS arrays specify which file types can be uploaded.
+ Setting to null skips this check. The scheme is:
+ 1) If MY_DENY_EXTENSIONS is not null check if it does _not_ contain file extension of the file to be uploaded.
+    If it does skip the upload procedure.
+ 2) If MY_ALLOW_EXTENSIONS is not null check if it _does_ contain file extension of the file to be uploaded.
+    If it doesn't skip the upload procedure.
+ 3) Upload file.
+ NOTE: File extensions arrays are case insensitive.
+        You should always include server side executable file types in MY_DENY_EXTENSIONS !!!
+*/
+$MY_ALLOW_EXTENSIONS = array(
+                                               'html', 'htm', 'txt',                           // HTML
+                                               'pdf', 'doc', 'rtf', 'xls', 'csv',      // Office
+                                               'zip', 'rar', '7z',     'gz',                   // Archives
+                                               'gif', 'jpg', 'jpeg', 'png', 'tif',     // Images
+                                               'mp3', 'mp4', 'aac', 'wav',                     // Audio
+                                               'avi', 'mpeg', 'mpg', 'mov', 'divx'     // Video
+                                               );
+$MY_DENY_EXTENSIONS  = array('php', 'php3', 'php4', 'phtml', 'shtml', 'cgi', 'pl');
+/*
+ $MY_ALLOW_UPLOAD
+ Maximum allowed size for uploaded files (in bytes).
+ NOTE2: see also upload_max_filesize setting in your php.ini file
+ NOTE: 2*1024*1024 means 2 MB (megabytes) which is the default php.ini setting
+*/
+$MY_MAX_FILE_SIZE                 = 2*1024*1024;
+
+/*
+ $MY_LANG
+ Interface language. See the lang directory for translation files.
+ NOTE: You should set appropriately MY_CHARSET and $MY_DATETIME_FORMAT variables
+*/
+$MY_LANG                = 'en';
+
+/*
+ $MY_CHARSET
+ Character encoding for all Insert File dialogs.
+ WARNING: For non english and non iso-8859-1 / utf8 users mostly !!!
+ This setting affect also how the name of folder you create via Insert File Dialog
+ and the name of file uploaded via Insert File Dialog will be encoded on your remote
+ server filesystem. Note also the difference between how file names in multipart/data
+ form are encoded by Internet Explorer (plain text depending on the webpage charset)
+ and Mozilla (encoded according to RFC 1738).
+ This should be fixed in next versions. Any help is VERY appreciated.
+*/
+$MY_CHARSET             = 'iso-8859-1';
+
+/*
+ MY_DATETIME_FORMAT
+ Datetime format for displaying file modification time in Insert File Dialog and in inserted link, see MY_LINK_FORMAT
+*/
+$MY_DATETIME_FORMAT                = "d.m.Y H:i";
+
+/*
+ MY_LINK_FORMAT
+ The string to be inserted into textarea.
+ This is the most crucial setting. I apologize for not using the DOM functions any more,
+ but inserting raw string allow more customization for everyone.
+ The following strings are replaced by corresponding values of selected files/folders:
+ _editor_url  the url of htmlarea root folder - you should set it in your document (see htmlarea help)
+ IF_ICON      file type icon filename (see plugins/InsertFile/icons directory)
+ IF_URL       relative path to file relative to $MY_DOCUMENT_ROOT
+ IF_CAPTION   file/folder name
+ IF_SIZE      file size in (B, kB, or MB)
+ IF_DATE      last modification time acording to $MY_DATETIME_FORMAT format
+*/
+$MY_LINK_FORMAT         = '<span class="filelink"><img src="editor_url/plugins/filemanager/InsertFile/IF_ICON" alt="IF_URL" border="0">&nbsp;<a href="IF_URL">IF_CAPTION</a> &nbsp;<span style="font-size:70%">IF_SIZE &nbsp;IF_DATE</span></span>&nbsp;';
+
+/* parse_icon function  please insert additional file types (extensions) and theis corresponding icons in switch statement */
+function parse_icon($ext) {
+        switch (strtolower($ext)) {
+            case 'doc':
+                       case 'rtf':
+                                       return 'doc_small.gif'; break;
+            case 'xls':
+                       case 'csv':
+                                       return 'xls_small.gif'; break;
+            case 'txt':
+                                       return 'txt_small.gif'; break;
+            case 'ppt':
+                                       return 'ppt_small.gif'; break;
+            case 'html':
+                       case 'htm' :
+                                       return 'html_small.gif'; break;
+            case 'php':
+                       case 'php3':
+                       case 'cgi':
+                                       return 'script_small.gif'; break;
+            case 'pdf':
+                                       return 'pdf_small.gif'; break;
+            case 'rar':
+                                       return 'rar_small.gif'; break;
+            case 'zip':
+                                       return 'zip_small.gif'; break;
+            case 'gz':
+                                       return 'gz_small.gif'; break;
+            case 'jpg':
+                       case 'jpeg':
+                                       return 'jpg_small.gif'; break;
+            case 'gif':
+                                       return 'gif_small.gif'; break;
+            case 'png':
+                                       return 'png_small.gif'; break;
+            case 'bmp':
+                                       return 'image_small.gif'; break;
+            case 'exe':
+                       case 'bin':
+                                       return 'binary_small.gif'; break;
+            case 'avi':
+            case 'mpg':
+                       case 'mpeg':
+                       case 'mov':
+                                       return 'mov_small.gif'; break;
+                       case 'mp3':
+                       case 'mp4':
+                       case 'aac':
+                       case 'wav':
+                                       return 'sound_small.gif'; break;
+               default:
+                                       return 'def_small.gif';         
+        }
+}
+// DO NOT EDIT BELOW
+$MY_NAME = 'insertfiledialog';
+$lang_file = 'lang/lang-'.$MY_LANG.'.php';
+if (is_file($lang_file)) require($lang_file);
+else require('lang/lang-en.php');
+$MY_PATH = '/';
+$MY_UP_PATH = '/';
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/selectableelements.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/selectableelements.js
new file mode 100644 (file)
index 0000000..fd86958
--- /dev/null
@@ -0,0 +1,375 @@
+/*----------------------------------------------------------------------------\
+|                          Selectable Elements 1.02                           |
+|-----------------------------------------------------------------------------|
+|                         Created by Erik Arvidsson                           |
+|                  (http://webfx.eae.net/contact.html#erik)                   |
+|                      For WebFX (http://webfx.eae.net/)                      |
+|-----------------------------------------------------------------------------|
+|          A script that allows children of any element to be selected        |
+|-----------------------------------------------------------------------------|
+|                  Copyright (c) 1999 - 2004 Erik Arvidsson                   |
+|-----------------------------------------------------------------------------|
+| This software is provided "as is", without warranty of any kind, express or |
+| implied, including  but not limited  to the warranties of  merchantability, |
+| fitness for a particular purpose and noninfringement. In no event shall the |
+| authors or  copyright  holders be  liable for any claim,  damages or  other |
+| liability, whether  in an  action of  contract, tort  or otherwise, arising |
+| from,  out of  or in  connection with  the software or  the  use  or  other |
+| dealings in the software.                                                   |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| This  software is  available under the  three different licenses  mentioned |
+| below.  To use this software you must chose, and qualify, for one of those. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Non-Commercial License          http://webfx.eae.net/license.html |
+| Permits  anyone the right to use the  software in a  non-commercial context |
+| free of charge.                                                             |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Commercial license           http://webfx.eae.net/commercial.html |
+| Permits the  license holder the right to use  the software in a  commercial |
+| context. Such license must be specifically obtained, however it's valid for |
+| any number of  implementations of the licensed software.                    |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| GPL - The GNU General Public License    http://www.gnu.org/licenses/gpl.txt |
+| Permits anyone the right to use and modify the software without limitations |
+| as long as proper  credits are given  and the original  and modified source |
+| code are included. Requires  that the final product, software derivate from |
+| the original  source or any  software  utilizing a GPL  component, such  as |
+| this, is also licensed under the GPL license.                               |
+|-----------------------------------------------------------------------------|
+| 2002-09-19 | Original Version Posted.                                       |
+| 2002-09-27 | Fixed a bug in IE when mouse down and up occured on different  |
+|            | rows.                                                          |
+| 2003-02-11 | Minor problem with addClassName and removeClassName that       |
+|            | triggered a bug in Opera 7. Added destroy method               |
+|-----------------------------------------------------------------------------|
+| Created 2002-09-04 | All changes are in the log above. | Updated 2003-02-11 |
+\----------------------------------------------------------------------------*/
+
+function SelectableElements(oElement, bMultiple) {
+       if (oElement == null)
+               return;
+
+       this._htmlElement = oElement;
+       this._multiple = Boolean(bMultiple);
+
+       this._selectedItems = [];
+       this._fireChange = true;
+
+       var oThis = this;
+       this._onclick = function (e) {
+               if (e == null) e = oElement.ownerDocument.parentWindow.event;
+               oThis.click(e);
+       };
+
+       if (oElement.addEventListener)
+               oElement.addEventListener("click", this._onclick, false);
+       else if (oElement.attachEvent)
+               oElement.attachEvent("onclick", this._onclick);
+}
+
+SelectableElements.prototype.setItemSelected = function (oEl, bSelected) {
+       if (!this._multiple) {
+               if (bSelected) {
+                       var old = this._selectedItems[0]
+                       if (oEl == old)
+                               return;
+                       if (old != null)
+                               this.setItemSelectedUi(old, false);
+                       this.setItemSelectedUi(oEl, true);
+                       this._selectedItems = [oEl];
+                       this.fireChange();
+               }
+               else {
+                       if (this._selectedItems[0] == oEl) {
+                               this.setItemSelectedUi(oEl, false);
+                               this._selectedItems = [];
+                       }
+               }
+       }
+       else {
+               if (Boolean(oEl._selected) == Boolean(bSelected))
+                       return;
+
+               this.setItemSelectedUi(oEl, bSelected);
+
+               if (bSelected)
+                       this._selectedItems[this._selectedItems.length] = oEl;
+               else {
+                       // remove
+                       var tmp = [];
+                       var j = 0;
+                       for (var i = 0; i < this._selectedItems.length; i++) {
+                               if (this._selectedItems[i] != oEl)
+                                       tmp[j++] = this._selectedItems[i];
+                       }
+                       this._selectedItems = tmp;
+               }
+               this.fireChange();
+       }
+};
+
+// This method updates the UI of the item
+SelectableElements.prototype.setItemSelectedUi = function (oEl, bSelected) {
+       if (bSelected)
+               addClassName(oEl, "selected");
+       else
+               removeClassName(oEl, "selected");
+
+       oEl._selected = bSelected;
+};
+
+SelectableElements.prototype.getItemSelected = function (oEl) {
+       return Boolean(oEl._selected);
+};
+
+SelectableElements.prototype.fireChange = function () {
+       if (!this._fireChange)
+               return;
+       if (typeof this.onchange == "string")
+               this.onchange = new Function(this.onchange);
+       if (typeof this.onchange == "function")
+               this.onchange();
+};
+
+
+SelectableElements.prototype.click = function (e) {
+       var oldFireChange = this._fireChange;
+       this._fireChange = false;
+
+       // create a copy to compare with after changes
+       var selectedBefore = this.getSelectedItems();   // is a cloned array
+
+       // find row
+       var el = e.target != null ? e.target : e.srcElement;
+       while (el != null && !this.isItem(el))
+               el = el.parentNode;
+
+       if (el == null) {       // happens in IE when down and up occur on different items
+               this._fireChange = oldFireChange;
+               return;
+       }
+
+       var rIndex = el;
+       var aIndex = this._anchorIndex;
+
+       // test whether the current row should be the anchor
+       if (this._selectedItems.length == 0 || (e.ctrlKey && !e.shiftKey && this._multiple)) {
+               aIndex = this._anchorIndex = rIndex;
+       }
+
+       if (!e.ctrlKey && !e.shiftKey || !this._multiple) {
+               // deselect all
+               var items = this._selectedItems;
+               for (var i = items.length - 1; i >= 0; i--) {
+                       if (items[i]._selected && items[i] != el)
+                               this.setItemSelectedUi(items[i], false);
+               }
+               this._anchorIndex = rIndex;
+               if (!el._selected) {
+                       this.setItemSelectedUi(el, true);
+               }
+               this._selectedItems = [el];
+       }
+
+       // ctrl
+       else if (this._multiple && e.ctrlKey && !e.shiftKey) {
+               this.setItemSelected(el, !el._selected);
+               this._anchorIndex = rIndex;
+       }
+
+       // ctrl + shift
+       else if (this._multiple && e.ctrlKey && e.shiftKey) {
+               // up or down?
+               var dirUp = this.isBefore(rIndex, aIndex);
+
+               var item = aIndex;
+               while (item != null && item != rIndex) {
+                       if (!item._selected && item != el)
+                               this.setItemSelected(item, true);
+                       item = dirUp ? this.getPrevious(item) : this.getNext(item);
+               }
+
+               if (!el._selected)
+                       this.setItemSelected(el, true);
+       }
+
+       // shift
+       else if (this._multiple && !e.ctrlKey && e.shiftKey) {
+               // up or down?
+               var dirUp = this.isBefore(rIndex, aIndex);
+
+               // deselect all
+               var items = this._selectedItems;
+               for (var i = items.length - 1; i >= 0; i--)
+                       this.setItemSelectedUi(items[i], false);
+               this._selectedItems = [];
+
+               // select items in range
+               var item = aIndex;
+               while (item != null) {
+                       this.setItemSelected(item, true);
+                       if (item == rIndex)
+                               break;
+                       item = dirUp ? this.getPrevious(item) : this.getNext(item);
+               }
+       }
+
+       // find change!!!
+       var found;
+       var changed = selectedBefore.length != this._selectedItems.length;
+       if (!changed) {
+               for (var i = 0; i < selectedBefore.length; i++) {
+                       found = false;
+                       for (var j = 0; j < this._selectedItems.length; j++) {
+                               if (selectedBefore[i] == this._selectedItems[j]) {
+                                       found = true;
+                                       break;
+                               }
+                       }
+                       if (!found) {
+                               changed = true;
+                               break;
+                       }
+               }
+       }
+
+       this._fireChange = oldFireChange;
+       if (changed && this._fireChange)
+               this.fireChange();
+};
+
+SelectableElements.prototype.getSelectedItems = function () {
+       //clone
+       var items = this._selectedItems;
+       var l = items.length;
+       var tmp = new Array(l);
+       for (var i = 0; i < l; i++)
+               tmp[i] = items[i];
+       return tmp;
+};
+
+SelectableElements.prototype.isItem = function (node) {
+       return node != null && node.nodeType == 1 && node.parentNode == this._htmlElement;
+};
+
+SelectableElements.prototype.destroy = function () {
+       if (this._htmlElement.removeEventListener)
+               this._htmlElement.removeEventListener("click", this._onclick, false);
+       else if (this._htmlElement.detachEvent)
+               this._htmlElement.detachEvent("onclick", this._onclick);
+
+       this._htmlElement = null;
+       this._onclick = null;
+       this._selectedItems = null;
+};
+
+/* Traversable Collection Interface */
+
+SelectableElements.prototype.getNext = function (el) {
+       var n = el.nextSibling;
+       if (n == null || this.isItem(n))
+               return n;
+       return this.getNext(n);
+};
+
+SelectableElements.prototype.getPrevious = function (el) {
+       var p = el.previousSibling;
+       if (p == null || this.isItem(p))
+               return p;
+       return this.getPrevious(p);
+};
+
+SelectableElements.prototype.isBefore = function (n1, n2) {
+       var next = this.getNext(n1);
+       while (next != null) {
+               if (next == n2)
+                       return true;
+               next = this.getNext(next);
+       }
+       return false;
+};
+
+/* End Traversable Collection Interface */
+
+/* Indexable Collection Interface */
+
+SelectableElements.prototype.getItems = function () {
+       var tmp = [];
+       var j = 0;
+       var cs = this._htmlElement.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               if (cs[i].nodeType == 1)
+                       tmp[j++] = cs[i]
+       }
+       return tmp;
+};
+
+SelectableElements.prototype.getItem = function (nIndex) {
+       var j = 0;
+       var cs = this._htmlElement.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               if (cs[i].nodeType == 1) {
+                       if (j == nIndex)
+                               return cs[i];
+                       j++;
+               }
+       }
+       return null;
+};
+
+SelectableElements.prototype.getSelectedIndexes = function () {
+       var items = this.getSelectedItems();
+       var l = items.length;
+       var tmp = new Array(l);
+       for (var i = 0; i < l; i++)
+               tmp[i] = this.getItemIndex(items[i]);
+       return tmp;
+};
+
+
+SelectableElements.prototype.getItemIndex = function (el) {
+       var j = 0;
+       var cs = this._htmlElement.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               if (cs[i] == el)
+                       return j;
+               if (cs[i].nodeType == 1)
+                       j++;
+       }
+       return -1;
+};
+
+/* End Indexable Collection Interface */
+
+
+
+function addClassName(el, sClassName) {
+       var s = el.className;
+       var p = s.split(" ");
+       if (p.length == 1 && p[0] == "")
+               p = [];
+
+       var l = p.length;
+       for (var i = 0; i < l; i++) {
+               if (p[i] == sClassName)
+                       return;
+       }
+       p[p.length] = sClassName;
+       el.className = p.join(" ");
+}
+
+function removeClassName(el, sClassName) {
+       var s = el.className;
+       var p = s.split(" ");
+       var np = [];
+       var l = p.length;
+       var j = 0;
+       for (var i = 0; i < l; i++) {
+               if (p[i] != sClassName)
+                       np[j++] = p[i];
+       }
+       el.className = np.join(" ");
+}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/selectabletablerows.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/selectabletablerows.js
new file mode 100644 (file)
index 0000000..d2b34e8
--- /dev/null
@@ -0,0 +1,78 @@
+/*----------------------------------------------------------------------------\
+|                          Selectable Elements 1.02                           |
+|-----------------------------------------------------------------------------|
+|                         Created by Erik Arvidsson                           |
+|                  (http://webfx.eae.net/contact.html#erik)                   |
+|                      For WebFX (http://webfx.eae.net/)                      |
+|-----------------------------------------------------------------------------|
+|          A script that allows children of any element to be selected        |
+|-----------------------------------------------------------------------------|
+|                  Copyright (c) 1999 - 2004 Erik Arvidsson                   |
+|-----------------------------------------------------------------------------|
+| This software is provided "as is", without warranty of any kind, express or |
+| implied, including  but not limited  to the warranties of  merchantability, |
+| fitness for a particular purpose and noninfringement. In no event shall the |
+| authors or  copyright  holders be  liable for any claim,  damages or  other |
+| liability, whether  in an  action of  contract, tort  or otherwise, arising |
+| from,  out of  or in  connection with  the software or  the  use  or  other |
+| dealings in the software.                                                   |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| This  software is  available under the  three different licenses  mentioned |
+| below.  To use this software you must chose, and qualify, for one of those. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Non-Commercial License          http://webfx.eae.net/license.html |
+| Permits  anyone the right to use the  software in a  non-commercial context |
+| free of charge.                                                             |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Commercial license           http://webfx.eae.net/commercial.html |
+| Permits the  license holder the right to use  the software in a  commercial |
+| context. Such license must be specifically obtained, however it's valid for |
+| any number of  implementations of the licensed software.                    |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| GPL - The GNU General Public License    http://www.gnu.org/licenses/gpl.txt |
+| Permits anyone the right to use and modify the software without limitations |
+| as long as proper  credits are given  and the original  and modified source |
+| code are included. Requires  that the final product, software derivate from |
+| the original  source or any  software  utilizing a GPL  component, such  as |
+| this, is also licensed under the GPL license.                               |
+|-----------------------------------------------------------------------------|
+| 2002-09-19 | Original Version Posted.                                       |
+| 2002-09-27 | Fixed a bug in IE when mouse down and up occured on different  |
+|            | rows.                                                          |
+| 2003-02-11 | Minor problem with addClassName and removeClassName that       |
+|            | triggered a bug in Opera 7. Added destroy method               |
+|-----------------------------------------------------------------------------|
+| Created 2002-09-04 | All changes are in the log above. | Updated 2003-02-11 |
+\----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------\
+| This file requires that SelectableElements is first defined. This class can |
+| be found in the file selectableelements.js at WebFX                         |
+\----------------------------------------------------------------------------*/
+
+function SelectableTableRows(oTableElement, bMultiple) {
+       SelectableElements.call(this, oTableElement, bMultiple);
+}
+SelectableTableRows.prototype = new SelectableElements;
+
+SelectableTableRows.prototype.isItem = function (node) {
+       return node != null && node.tagName == "TR" &&
+               node.parentNode.tagName == "TBODY" &&
+               node.parentNode.parentNode == this._htmlElement;
+};
+
+/* Indexable Collection Interface */
+
+SelectableTableRows.prototype.getItems = function () {
+       return this._htmlElement.rows;
+};
+
+SelectableTableRows.prototype.getItemIndex = function (el) {
+       return el.rowIndex;
+};
+
+SelectableTableRows.prototype.getItem = function (i) {
+       return this._htmlElement.rows[i];
+};
+
+/* End Indexable Collection Interface */
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/sortabletable.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/css/sortabletable.css
new file mode 100644 (file)
index 0000000..ed94b38
--- /dev/null
@@ -0,0 +1,44 @@
+.sort-table {
+       font:           Icon;
+       border:         0px Solid Window;                               
+       background:     Window;
+       color:          WindowText;
+}
+
+.sort-table thead {
+       background:     ButtonFace;
+}
+
+.sort-table td {
+       padding:        2px 5px;
+}
+
+.sort-table thead td {
+       border:                 1px solid;
+       border-color:   ButtonHighlight ButtonShadow
+                                       ButtonShadow ButtonHighlight;
+       cursor:                 pointer;
+}
+
+.sort-table thead td:active {
+       border-color:   ButtonShadow ButtonHighlight 
+                                       ButtonHighlight ButtonShadow;
+       padding:                3px 4px 1px 6px;
+}
+
+.sort-arrow {
+       width:                                  11px;
+       height:                                 11px;
+       background-position:    center center;
+       background-repeat:              no-repeat;
+       margin:                                 0 2px;
+}
+
+.sort-arrow.descending {
+       background-image:               url("../img/downsimple.png");
+       
+}
+
+.sort-arrow.ascending {
+       background-image:               url("../img/upsimple.png");
+}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/files.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/files.php
new file mode 100644 (file)
index 0000000..7f95354
--- /dev/null
@@ -0,0 +1,625 @@
+<?php
+/***********************************************************************
+** Title.........:    Insert File Dialog, File Manager
+** Version.......:    1.1
+** Authors.......:    Al Rashid <alrashid@klokan.sk>
+**                    Xiang Wei ZHUO <wei@zhuo.org>
+** URL...........:    http://alrashid.klokan.sk/insFile/
+** Filename......:    files.php
+** Last changed..:    23 July 2004
+***********************************************************************/
+require('config.inc.php');
+require('functions.php');
+
+//Reset auth variables
+
+$refresh_dirs = false;
+$clear_upload = false;
+$err = false;
+
+
+if (isset($_REQUEST['refresh'])) {
+        $refresh_dirs = true;
+}
+if (isset($_REQUEST['path'])) {
+        //$path = $_REQUEST['path'];
+        $path = checkName($_REQUEST['path']);
+        $path = unsanitize($path);
+        $path = pathSlashes($path);
+} else {
+        $path = '/';
+}
+
+$MY_PATH = $path;
+$MY_UP_PATH = substr($MY_PATH,0,strrpos(substr($MY_PATH,0,strlen($MY_PATH)-1),'/'))."/";
+//echo "PATH:".$MY_PATH;
+//echo "<br>UPP:".$MY_UP_PATH;
+
+function createFolder() {
+        global $MY_ALLOW_CREATE, $MY_MESSAGES, $MY_DOCUMENT_ROOT, $refresh_dirs;
+        global $MY_PATH;
+        if (!$MY_ALLOW_CREATE) return ($MY_MESSAGES['nopermtocreatefolder']);
+        if (!(is_dir($MY_DOCUMENT_ROOT.$MY_PATH))) return ($MY_MESSAGES['pathnotfound']);
+        if ( !isset($_REQUEST['file'])) return ($MY_MESSAGES['foldernamemissing']);
+        $Folder = checkName($_REQUEST['file']);
+        //$Folder = utf8RawUrlDecode($Folder);
+        $newFolder = $MY_DOCUMENT_ROOT.$MY_PATH.$Folder;
+        if (is_dir($newFolder)) return ($MY_MESSAGES['folderalreadyexists']);
+        $newFolder = unsanitize($newFolder);
+        if (!(@mkdir($newFolder,0755))) return ($MY_MESSAGES['mkdirfailed']);
+        chmod($newFolder,0755);
+        $refresh_dirs = true;
+        return false;
+}
+
+function deleteFile() {
+        $error = false;
+        global $MY_ALLOW_DELETE, $MY_MESSAGES, $MY_DOCUMENT_ROOT, $MY_PATH ;
+        if (!$MY_ALLOW_DELETE) return ($MY_MESSAGES['nopermtodelete']);
+        if (isset($_REQUEST['folders']) && is_array($_REQUEST['folders'])) {
+            foreach ($_REQUEST['folders'] as $folder) {
+                        $folder = unsanitize($folder);
+                        deldir($MY_DOCUMENT_ROOT.$MY_PATH.$folder);
+            }
+        }
+        if (isset($_REQUEST['files']) && is_array($_REQUEST['files'])) {
+            foreach ($_REQUEST['files'] as $file) {
+                        $file = unsanitize($file);
+                        $delFile = $MY_DOCUMENT_ROOT.$MY_PATH.$file;
+                        if (is_file($delFile)) {
+                                if (!(unlink($delFile))) $error = $error.'\n'.alertSanitize($MY_MESSAGES['unlinkfailed'].' ('.$delFile.')');
+                        } else {
+                                $error = $error.'\n'.alertSanitize($MY_MESSAGES['filenotfound'].' ('.$delFile.')');
+                        }
+            }
+        }
+        $refresh_dirs = true;
+        return $error;
+}
+
+function deldir($dir){
+ $current_dir = opendir($dir);
+ while (false !== ($entryname = readdir($current_dir))) {
+    if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")){
+       deldir("${dir}/${entryname}");
+    }elseif($entryname != "." and $entryname!=".."){
+       unlink("${dir}/${entryname}");
+    }
+ }
+ closedir($current_dir);
+ rmdir($dir);
+}
+
+function renameFile() {
+        global $MY_ALLOW_RENAME, $MY_MESSAGES, $MY_DOCUMENT_ROOT, $MY_PATH, $refresh_dirs;
+        global $MY_ALLOW_EXTENSIONS, $MY_DENY_EXTENSIONS ;
+        $error = false;
+        if (!$MY_ALLOW_RENAME) return ($MY_MESSAGES['nopermtorename']);
+        if (isset($_REQUEST['folders']) && is_array($_REQUEST['folders'])) {
+            foreach ($_REQUEST['folders'] as $file) {
+                        $oldname = checkName(unsanitize($file['oldname']));
+                        $newname = checkName(unsanitize($file['newname']));
+                           $oldFile = $MY_DOCUMENT_ROOT.$MY_PATH.$oldname;
+                           $newFile = $MY_DOCUMENT_ROOT.$MY_PATH.$newname;
+                        if (is_dir($oldFile)) {
+                                if (is_dir($newFile)) {
+                                        $error = $error.'\n'.alertSanitize($MY_MESSAGES['folderalreadyexists'].' ('.$oldFile.' -> '.$newFile.')');
+                                } else {
+                                        if (!rename($oldFile, $newFile)) $error = $error.'\n'.alertSanitize($MY_MESSAGES['renamefailed'].' ('.$oldFile.' -> '.$newFile.')');
+                                }
+                        } else {
+                                $error = $error.'\n'.alertSanitize($MY_MESSAGES['foldernotfound'].' ('.$oldFile.')');
+                        }
+            }
+         }
+
+        if (isset($_REQUEST['files']) && is_array($_REQUEST['files'])) {
+            foreach ($_REQUEST['files'] as $file) {
+                        $oldname = checkName(unsanitize($file['oldname']));
+                        $newname = checkName(unsanitize($file['newname']));
+                        $parts = explode('.', $newname);
+                        $ext = strtolower($parts[count($parts)-1]);
+                        if (is_array($MY_DENY_EXTENSIONS )) {
+                                if (in_array($ext, $MY_DENY_EXTENSIONS)) $error = $error.'\n'.$MY_MESSAGES['extnotallowed'];
+                        }
+                        if (is_array($MY_ALLOW_EXTENSIONS )) {
+                                if (!in_array($ext, $MY_ALLOW_EXTENSIONS)) $error = $error.'\n'.$MY_MESSAGES['extnotallowed'];
+                        }
+                           $oldFile = $MY_DOCUMENT_ROOT.$MY_PATH.$oldname;
+                           $newFile = $MY_DOCUMENT_ROOT.$MY_PATH.$newname;
+                        if (is_file($oldFile)) {
+                                if (is_file($newFile)) {
+                                        $error = $error.'\n'.alertSanitize($MY_MESSAGES['filealreadyexists'].' ('.$oldFile.' -> '.$newFile.')');
+                                } else {
+                                        if (!rename($oldFile, $newFile)) $error = $error.'\n'.alertSanitize($MY_MESSAGES['renamefailed'].' ('.$oldFile.' -> '.$newFile.')');
+                                }
+                    } else {
+                                $error = $error.'\n'.alertSanitize($MY_MESSAGES['filenotfound'].' ('.$oldFile.')');
+                        }
+            }
+         }
+
+        $refresh_dirs = true;
+        return $error;
+}
+
+function moveFile() {
+        global $MY_ALLOW_MOVE, $MY_MESSAGES, $MY_DOCUMENT_ROOT, $MY_PATH, $refresh_dirs;
+        global $MY_ALLOW_EXTENSIONS, $MY_DENY_EXTENSIONS ;
+        $error = false;
+        if (!$MY_ALLOW_MOVE) return ($MY_MESSAGES['nopermtomove']);
+        $newPath = pathSlashes(checkName($_REQUEST['newpath']));
+         if (!(is_dir($MY_DOCUMENT_ROOT.$newPath))) return ($MY_MESSAGES['pathnotfound']);
+        if (isset($_REQUEST['folders']) && is_array($_REQUEST['folders'])) {
+            foreach ($_REQUEST['folders'] as $file) {
+                        $name = checkName(unsanitize($file));
+                      $oldFile = $MY_DOCUMENT_ROOT.$MY_PATH.$name;
+                      $newFile = $MY_DOCUMENT_ROOT.$newPath.$name;
+                        if (is_dir($oldFile)) {
+                            if (is_dir($newFile)) {
+                                        $error = $error.'\n'.alertSanitize($MY_MESSAGES['folderalreadyexists'].' ('.$oldFile.' -> '.$newFile.')');
+                                } else {
+                                        if (!rename($oldFile, $newFile)) $error = $error.'\n'.alertSanitize($MY_MESSAGES['renamefailed'].' ('.$oldFile.' -> '.$newFile.')');
+                                }
+                        } else {
+                                $error = $error.'\n'.alertSanitize($MY_MESSAGES['foldernotfound'].' ('.$oldFile.')');
+                        }
+            }
+         }
+        if (isset($_REQUEST['files']) && is_array($_REQUEST['files'])) {
+            foreach ($_REQUEST['files'] as $file) {
+                        $name = checkName(unsanitize($file));
+                           $oldFile = $MY_DOCUMENT_ROOT.$MY_PATH.$name;
+                           $newFile = $MY_DOCUMENT_ROOT.$newPath.$name;
+                        if (is_file($oldFile)) {
+                            if (is_file($newFile)) {
+                                        $error = $error.'\n'.alertSanitize($MY_MESSAGES['filealreadyexists'].' ('.$oldFile.' -> '.$newFile.')');
+                                } else {
+                                        if (!rename($oldFile, $newFile)) $error = $error.'\n'.alertSanitize($MY_MESSAGES['renamefailed'].' ('.$oldFile.' -> '.$newFile.')');
+                                }
+                        } else {
+                                $error = $error.'\n'.alertSanitize($MY_MESSAGES['filenotfound'].' ('.$oldFile.')');
+                        }
+            }
+         }
+        $refresh_dirs = true;
+        return $error;
+}
+
+function uploadFile() {
+        global $MY_ALLOW_UPLOAD, $MY_MESSAGES, $MY_DOCUMENT_ROOT, $MY_PATH, $clear_upload;
+        global $MY_ALLOW_EXTENSIONS, $MY_DENY_EXTENSIONS, $MY_MAX_FILE_SIZE ;
+        if (!$MY_ALLOW_UPLOAD) return ($MY_MESSAGES['nopermtoupload']);
+        if (!(is_dir($MY_DOCUMENT_ROOT.$MY_PATH))) return ($MY_MESSAGES['pathnotfound']);
+        $filename = checkName($_FILES['uploadFile']['name']);
+        $newFile = $MY_DOCUMENT_ROOT.$MY_PATH.$filename;
+        $parts = explode('.', $filename);
+        $ext = strtolower($parts[count($parts)-1]);
+        if (is_file($newFile))  return ($MY_MESSAGES['uploadfilealreadyexists']);
+        if (is_array($MY_DENY_EXTENSIONS )) {
+                if (in_array($ext, $MY_DENY_EXTENSIONS)) return ($MY_MESSAGES['extnotallowed']);
+        }
+        if (is_array($MY_ALLOW_EXTENSIONS )) {
+                if (!in_array($ext, $MY_ALLOW_EXTENSIONS)) return ($MY_MESSAGES['extnotallowed']);
+        }
+        if ($MY_MAX_FILE_SIZE) {
+                if ($_FILES['uploadFile']['size'] > $MY_MAX_FILE_SIZE) return ($MY_MESSAGES['filesizeexceedlimit'].' of '.($MY_MAX_FILE_SIZE/1024).'kB.');
+        }
+        if (!is_file($_FILES['uploadFile']['tmp_name']))  return ($MY_MESSAGES['filenotuploaded']);
+        move_uploaded_file($_FILES['uploadFile']['tmp_name'], $newFile);
+        chmod($newFile, 0666);
+        $clear_upload = true;
+        return false;
+}
+
+if (isset($_REQUEST['action'])) {
+        if ('delete' == $_REQUEST['action'])        $err = deleteFile();
+        if ('rename' == $_REQUEST['action'])        $err = renameFile();
+        if ('move' == $_REQUEST['action'])          $err = moveFile();
+        if ('createFolder' == $_REQUEST['action'])  $err = createFolder();
+}
+if (isset($_FILES['uploadFile']) && is_array($_FILES['uploadFile']))        $err = uploadFile();
+
+
+function parse_size($size) {
+        if($size < 1024)
+                return $size.' bytes';
+        else if($size >= 1024 && $size < 1024*1024) {
+                return sprintf('%01.2f',$size/1024.0).' KB';
+        } else {
+                return sprintf('%01.2f',$size/(1024.0*1024)).' MB';
+        }
+}
+
+function parse_time($timestamp) {
+        global $MY_DATETIME_FORMAT;
+        return date($MY_DATETIME_FORMAT, $timestamp);
+}
+
+
+function draw_no_results() {
+        global $MY_MESSAGES;
+        echo '<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" style="background-color:Window;"> <tr>
+            <td><div align="center" style="font-size:large;font-weight:bold;color:#CCCCCC;font-family: Helvetica, sans-serif;">';
+        echo $MY_MESSAGES['nofiles'];
+        echo '</div></td></tr></table>';
+}
+
+function draw_no_dir() {
+        global $MY_MESSAGES;
+        global $MY_DOCUMENT_ROOT;
+        echo '<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" style="background-color:Window;"><tr>
+            <td><div align="center" style="font-size:small;font-weight:bold;color:#CC0000;font-family: Helvetica, sans-serif;">';
+        echo $MY_MESSAGES['configproblem']." ".$MY_DOCUMENT_ROOT;
+        echo '</div></td></tr></table>';
+}
+
+?>
+<html>
+        <head>
+                <title>File Browser</title>
+                <?php
+                        echo '<meta http-equiv="content-language" content="'.$MY_LANG.'" />'."\n";
+                        echo '<meta http-equiv="Content-Type" content="text/html; charset='.$MY_CHARSET.'" />'."\n";
+                        echo '<meta name="author" content="AlRashid, www: http://alrashid.klokan.sk; mailto:alrashid@klokan.sk" />'."\n";
+                ?>
+
+                <style type="text/css">
+                        <!--
+                        body {
+                                font-family:        Verdana, Helvetica, Arial, Sans-Serif;
+                                font:        message-box;
+                                background:        ThreedFace;
+                        }
+                        code {
+                                font-size:        1em;
+                        }
+
+                        a {
+                                color: black;
+                        }
+
+                        a:visited {
+                                color: black;
+                        }
+                        .selected a {
+        background:        Highlight;
+        color:                HighlightText;
+                        }
+                        .selected a:visited {
+        background:        Highlight;
+        color:                HighlightText;
+                        }
+
+
+.selected {
+        background:        Highlight;
+        color:                HighlightText;
+}
+
+
+/*
+table {
+        border-collapse:        collapse;
+        border:                                1px solid ThreeDShadow;
+        border:                                1px solid;
+        border-color:                ThreeDShadow ThreeDHighLight
+                                                ThreeDHighLight ThreeDShadow;
+
+        background:                        Window;
+}
+*/
+td {
+        font:                                icon;
+        padding:                        2px 5px;
+        cursor:                                default;
+        -moz-user-select:        none;
+}
+                        -->
+                </style>
+        <link type="text/css" rel="StyleSheet" href="css/sortabletable.css" />
+        <script type="text/javascript" src="js/sortabletable.js"></script>
+        <script type="text/javascript" src="js/selectableelements.js"></script>
+        <script type="text/javascript" src="js/selectabletablerows.js"></script>
+
+
+        <script language="JavaScript" type="text/JavaScript">
+/*<![CDATA[*/
+
+function MM_findObj(n, d) { //v4.01
+  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
+    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
+  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
+  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
+  if(!x && d.getElementById) x=d.getElementById(n); return x;
+}
+
+function MM_showHideLayers() { //v6.0
+  var i,p,v,obj,args=MM_showHideLayers.arguments;
+  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i],window.top.document))!=null) { v=args[i+2];
+    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
+    obj.visibility=v; }
+}
+
+function changeLoadingStatus(state) {
+        var statusText = null;
+        if(state == 'load') {
+                statusText = '<?php echo $MY_MESSAGES['loading']; ?>';
+        }
+        else if(state == 'upload') {
+                statusText = '<?php echo $MY_MESSAGES['uploading']; ?>';
+        }
+        if(statusText != null) {
+                var obj = MM_findObj('loadingStatus', window.top.document);
+                if (obj != null && obj.innerHTML != null)
+                        obj.innerHTML = statusText;
+                MM_showHideLayers('loading','','show')
+        }
+}
+
+function changeDir(nb) {
+        changeLoadingStatus('load');
+        var postForm2 = document.getElementById('form2');
+        postForm2.elements["action"].value="changeDir";
+        postForm2.elements["path"].value=postForm2.elements["path"].value+folderJSArray[nb][1];
+        postForm2.submit();
+}
+
+function setSortBy(column, noclick) {
+        switch (column) {
+            case 0: st2.sort(4);
+                    if (noclick) st.sort(0);
+                                 break;
+                  case 2: st2.sort(5);
+                          if (noclick) st.sort(2);
+                                break;
+                case 3: st1.sort(6);
+                        st2.sort(6);
+                        if (noclick) st.sort(3);
+                        break;
+                default: st1.sort(1);
+                         st2.sort(1);
+                         if (noclick) st.sort(1);
+        }
+        var topDoc = window.top.document.forms[0];
+        topDoc.sortby.value = column;
+}
+
+function getSortBy() {
+        var topDoc = window.top.document.forms[0];
+        return (topDoc.sortby.value);
+}
+
+function fileSelected(filename, caption) {
+        var topDoc = window.top.document.forms[0];
+        topDoc.f_url.value = filename;
+        topDoc.f_caption.value = caption;
+}
+
+function updateDir() {
+        var newPath = "<?php echo $MY_PATH; ?>";
+        if(window.top.document.forms[0] != null) {
+                var allPaths = window.top.document.forms[0].path.options;
+                for(i=0; i<allPaths.length; i++)  {
+                        allPaths.item(i).selected = false;
+                        if((allPaths.item(i).value)==newPath) {
+                                allPaths.item(i).selected = true;
+                        }
+                }
+        }
+}
+
+<?php
+ if($clear_upload) {
+        echo '
+                var topDoc = window.top.document.forms[0];
+                topDoc.uploadFile.value = null;
+                ';
+}
+if ($refresh_dirs) { ?>
+function refreshDirs() {
+        var allPaths = window.top.document.forms[0].path.options;
+        var fields = ['/' <?php dirs($MY_DOCUMENT_ROOT,'');?>];
+        var newPath = '<?php echo sanitize($MY_PATH); ?>';
+         for(i = allPaths.length; i > 0; i--) {
+                        allPaths[i-1]=null;
+                }
+
+        for(i=0; i<fields.length; i++) {
+                var newElem =        document.createElement("OPTION");
+                var newValue = fields[i];
+                newElem.text = newValue;
+                newElem.value = newValue;
+                if(newValue == newPath)
+                        newElem.selected = true;
+                else
+                        newElem.selected = false;
+                allPaths.add(newElem);
+        }
+}
+refreshDirs();
+<?php
+}
+if ($err) {
+        echo 'alert(\''.$err.'\');';
+}
+ ?>
+
+
+        /*]]>*/
+</script>
+</head>
+<body onload="updateDir();">
+<form action="files.php?dialogname=<?php echo $MY_NAME; ?>&refresh=1" id="form2" name="form2" method="post" enctype="multipart/form-data">
+ <input type="hidden" name="action" id="action" value="" />
+ <input type="hidden" name="path" id="path" value="<?php echo $MY_PATH; ?>" />
+ <input type="hidden" name="uppath" id="uppath" value="<?php echo $MY_UP_PATH; ?>" />
+ <input type="hidden" name="newpath" id="newpath" value="" />
+ <input type="hidden" name="file" id="file" value="" />
+</form>
+
+<?php
+$d = @dir($MY_DOCUMENT_ROOT.$MY_PATH);
+if($d) {
+        $t_header = '<table class="sort-table" id="tableHeader" cellspacing="0" width="100%"  border="0" >
+        <col />
+        <col />
+        <col style="text-align: right" />
+        <col />
+        <thead>
+                <tr>
+                        <td width="4%" id="sortmefirst" onclick="setSortBy(0, false);">'.$MY_MESSAGES['type'].'</td>
+                        <td width="50%" title="CaseInsensitiveString" onclick="setSortBy(1, false);">'.$MY_MESSAGES['name'].'</td>
+                        <td width="13%" onclick="setSortBy(2, false);">'.$MY_MESSAGES['size'].'</td>
+                        <td width="25%" onclick="setSortBy(3, false);">'.$MY_MESSAGES['datemodified'].'</td>
+                </tr>
+        </thead>
+        <tbody style="display: none;"  >
+                <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                </tr>
+        </tbody>
+</table>
+';
+$t_folders = '<table class="sort-table" id="tableFolders" onselectstart="return false" cellspacing="0" width="100%" border="0" >
+        <col />
+        <col />
+        <col style="text-align: right" />
+        <col />
+        <col />
+        <col />
+        <col />
+        <thead style="display: none;">
+                <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                </tr>
+        </thead>
+        <tbody>
+';
+        $t_files='<table class="sort-table" id="tableFiles" onselectstart="return false" cellspacing="0" width="100%" border="0" >
+        <col />
+        <col />
+        <col style="text-align: right" />
+        <col />
+        <col />
+        <col />
+        <col />
+        <thead style="display: none;">
+                <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                </tr>
+        </thead>
+        <tbody>';
+
+
+        $entries_cnt = 0;
+        $fileNb=0;
+        $folderNb=0;
+        $fileJSArray='var fileJSArray = [';
+        $folderJSArray='var folderJSArray = [';
+        while (false !== ($entry = $d->read())) {
+                if(substr($entry,0,1) != '.') {
+                        $relativePath = $MY_PATH.$entry;
+                        $absolutePath = $MY_DOCUMENT_ROOT.$relativePath;
+                        if (is_dir($absolutePath)) {
+                                $entries_cnt++;
+                                $time = filemtime($absolutePath);
+                                $parsed_time = parse_time($time);
+                                $t_folders .= '<tr id="D'.$folderNb.'">
+                                <td width="4%"><img src="icons/folder_small.gif" width="16" height="16" border="0" alt="'.$entry.'" /></td>
+                                <td width="50%"><div style="height:15px; overflow:hidden;"><a href="javascript:changeDir('.$folderNb.');" title="'.$entry.'">'.$entry.'</a></div></td>
+                                <td width="18%" align="right">'.$MY_MESSAGES['folder'].'</td>
+                                <td width="25%">'.$parsed_time.'</td>
+                                <td width="0px" style="display: none;">&nbsp;</td>
+                                <td width="0px" style="display: none;">&nbsp;</td>
+                            <td width="0px" style="display: none;">'.$time.'</td>
+                                </tr>';
+                                $folderJSArray .= "['icons/folder_small.gif', '".sanitize($entry)."', '".$MY_MESSAGES['folder']."', '".$parsed_time."'],\n";
+                $folderNb++;
+                        } else {
+                                $entries_cnt++;
+                                $ext = substr(strrchr($entry, '.'), 1);
+                                if (is_array($MY_LIST_EXTENSIONS)) {
+                                                if (!in_array(strtolower($ext), $MY_LIST_EXTENSIONS)) continue;
+                                }
+                                $size = filesize($absolutePath);
+                                $time = filemtime($absolutePath);
+                                $parsed_size = parse_size($size);
+                                $parsed_time = parse_time($time);
+                                $parsed_icon = 'icons/'.parse_icon($ext);
+                                $t_files .= '<tr id="F'.$fileNb++.'">
+                                <td width="4%"><img src="'.$parsed_icon.'" width="16" height="16" border="0" alt="'.$entry.'" /></td>
+                                <td width="50%"><div style="height:15px; overflow:hidden;"><a href="javascript:;" onClick="javascript:fileSelected(\''.$MY_BASE_URL.$relativePath.'\',\''.$entry.'\');">'.$entry.'</div></td>
+                                <td width="18%" align="right">'.$parsed_size.'</td>
+                                <td width="25%">'.$parsed_time.'</td>
+                                <td width="0px" style="display: none;">'.$ext.'</td>
+                                <td width="0px" style="display: none;">'.$size.'</td>
+                                <td width="0px" style="display: none;">'.$time.'</td>
+                                </tr>';
+                                $fileJSArray .= "['".$parsed_icon."', '".sanitize($entry)."', '".$parsed_size."', '".$parsed_time."'],\n";
+                        }
+                }
+        }
+        $d->close();
+        $folderJSArray .= "['', '', '', '']];\n";
+        $fileJSArray .= "['', '', '', '']];\n";
+
+
+        $t_folders .= '</tbody> </table>';
+        $t_files .= '</tbody> </table>';
+
+
+        if ($entries_cnt) {
+                echo $t_header."\n<div style=\"height:90%; overflow: auto; overflow-y: scroll; background-color:window;\">".$t_folders."\n".$t_files."</div>"."\n";
+?>
+
+<script type="text/javascript">
+        /*<![CDATA[*/
+        var st = new SortableTable(document.getElementById("tableHeader"), ["CaseInsensitiveString", "CaseInsensitiveString", "Number", "Number"]);
+        var st1 = new SortableTable(document.getElementById("tableFolders"), ["None", "CaseInsensitiveString", "None", "None", "CaseInsensitiveString", "Number", "Number"]);
+        var st2 = new SortableTable(document.getElementById("tableFiles"), ["None", "CaseInsensitiveString", "None", "None", "CaseInsensitiveString", "Number", "Number"]);
+        var sta = new SelectableTableRows(document.getElementById("tableFolders"), true);
+        var stb = new SelectableTableRows(document.getElementById("tableFiles"), true);
+
+        var colmn = parseInt(getSortBy());
+        setSortBy(colmn, true);
+        <?php
+                echo $folderJSArray;
+                echo $fileJSArray;
+         ?>
+        /*]]>*/
+</script>
+<?php
+        } else {
+        draw_no_results();
+        }
+}
+else
+{
+ draw_no_dir();
+}
+
+?>
+
+<script language="JavaScript" type="text/JavaScript">
+/*<![CDATA[*/
+        MM_showHideLayers('loading','','hide')
+/*]]>*/
+</script>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/functions.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/functions.php
new file mode 100644 (file)
index 0000000..a725c90
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+/***********************************************************************
+** Title.........:    Insert File Dialog, File Manager
+** Version.......:    1.1
+** Authors.......:    Al Rashid <alrashid@klokan.sk>
+**                    Xiang Wei ZHUO <wei@zhuo.org>
+** Filename......:    functions.php
+** URL...........:    http://alrashid.klokan.sk/insFile/
+** Last changed..:    23 July 2004
+***********************************************************************/
+
+
+function dirs($dir,$abs_path) {
+        $d = dir($dir);
+        $dirs = array();
+        while (false !== ($entry = $d->read())) {
+                if(is_dir($dir.'/'.$entry) && substr($entry,0,1) != '.')  {
+                        $path['path'] = $dir.'/'.$entry;
+                        $path['name'] = $entry;
+                        $dirs[$entry] = $path;
+                }
+        }
+        $d->close();
+        ksort($dirs);
+        $cntDir = count($dirs);
+        for($i=0; $i<$cntDir; $i++) {
+                $name = key($dirs);
+                $current_dir = $abs_path.'/'.$dirs[$name]['name'];
+                echo ", '".sanitize($current_dir)."/'\n";
+                dirs($dirs[$name]['path'],$current_dir);
+                next($dirs);
+        }
+}
+
+function checkName($name) {
+        $name = str_replace('../', '', $name);
+        $name = str_replace('./', '', $name);
+        return $name;
+}
+function sanitize($name) {
+        return str_replace("'", "\'", $name);
+}
+
+function unsanitize($name) {
+        return str_replace("\'", "'", $name);
+}
+
+function pathSlashes($path) {
+        if ('/' != substr($path,0,1)) $path =  '/'.$path;
+        if ('/' != substr($path,-1,1)) $path = $path.'/';
+        return $path;
+}
+function alertSanitize($path) {
+        return ( sanitize(str_replace("\\", "\\\\", $path)) );
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/binary_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/binary_small.gif
new file mode 100644 (file)
index 0000000..947c219
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/binary_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/def_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/def_small.gif
new file mode 100644 (file)
index 0000000..491bc79
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/def_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/doc_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/doc_small.gif
new file mode 100644 (file)
index 0000000..a343a3c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/doc_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/folder_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/folder_small.gif
new file mode 100644 (file)
index 0000000..b4ada55
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/folder_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gif_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gif_small.gif
new file mode 100644 (file)
index 0000000..8377473
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gif_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gz_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gz_small.gif
new file mode 100644 (file)
index 0000000..586f857
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/gz_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/html_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/html_small.gif
new file mode 100644 (file)
index 0000000..b6abcd3
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/html_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/image_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/image_small.gif
new file mode 100644 (file)
index 0000000..94e6ffa
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/image_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/jpg_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/jpg_small.gif
new file mode 100644 (file)
index 0000000..a6a4e78
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/jpg_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/mov_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/mov_small.gif
new file mode 100644 (file)
index 0000000..956ef89
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/mov_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/no_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/no_small.gif
new file mode 100644 (file)
index 0000000..45b7594
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/no_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/pdf_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/pdf_small.gif
new file mode 100644 (file)
index 0000000..f192df5
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/pdf_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/png_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/png_small.gif
new file mode 100644 (file)
index 0000000..f2684ac
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/png_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/ppt_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/ppt_small.gif
new file mode 100644 (file)
index 0000000..f37bb09
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/ppt_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/rar_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/rar_small.gif
new file mode 100644 (file)
index 0000000..a31aa10
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/rar_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/script_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/script_small.gif
new file mode 100644 (file)
index 0000000..6604078
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/script_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/sound_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/sound_small.gif
new file mode 100644 (file)
index 0000000..063356c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/sound_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/txt_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/txt_small.gif
new file mode 100644 (file)
index 0000000..6d129ee
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/txt_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/xls_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/xls_small.gif
new file mode 100644 (file)
index 0000000..347c0c3
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/xls_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/zip_small.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/zip_small.gif
new file mode 100644 (file)
index 0000000..586f857
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/icons/zip_small.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/blank.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/blank.png
new file mode 100644 (file)
index 0000000..cee9cd3
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/blank.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_Corner.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_Corner.gif
new file mode 100644 (file)
index 0000000..6585990
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_Corner.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_create.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_create.gif
new file mode 100644 (file)
index 0000000..1e1fc43
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_create.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_delete.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_delete.gif
new file mode 100644 (file)
index 0000000..f54ebaa
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_delete.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_move.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_move.gif
new file mode 100644 (file)
index 0000000..9f561ff
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_move.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_open.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_open.gif
new file mode 100644 (file)
index 0000000..3495a7b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_open.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_rename.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_rename.gif
new file mode 100644 (file)
index 0000000..5a21f3e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_rename.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_up.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_up.gif
new file mode 100644 (file)
index 0000000..a0d1a7f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/btn_up.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/downsimple.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/downsimple.png
new file mode 100644 (file)
index 0000000..4accf92
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/downsimple.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/unlocked.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/unlocked.gif
new file mode 100644 (file)
index 0000000..fe4e0d4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/unlocked.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/upsimple.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/upsimple.png
new file mode 100644 (file)
index 0000000..c82b76f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/img/upsimple.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/insert_file.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/insert_file.php
new file mode 100644 (file)
index 0000000..5170c83
--- /dev/null
@@ -0,0 +1,554 @@
+<?php
+/***********************************************************************
+** Title.........:    Insert File Dialog, File Manager
+** Version.......:    1.1
+** Authors.......:    Al Rashid <alrashid@klokan.sk>
+**                    Xiang Wei ZHUO <wei@zhuo.org>
+** Filename......:    insert_file.php
+** URL...........:    http://alrashid.klokan.sk/insFile/
+** Last changed..:    23 July 2004
+***********************************************************************/
+require('config.inc.php');
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+        <head>
+        <title>Insert File</title>
+        <?php
+                echo '<META HTTP-EQUIV="Pragma" CONTENT="no-cache">'."\n";
+                echo '<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">'."\n";
+                echo '<META HTTP-EQUIV="Expires" CONTENT="Fri, Oct 24 1976 00:00:00 GMT">'."\n";
+                echo '<meta http-equiv="content-language" content="'.$MY_LANG.'" />'."\n";
+                echo '<meta http-equiv="Content-Type" content="text/html; charset='.$MY_CHARSET.'" />'."\n";
+                echo '<meta name="author" content="AlRashid, www: http://alrashid.klokan.sk; mailto:alrashid@klokan.sk" />'."\n";
+        ?>
+        <script type="text/javascript" src="js/popup.js"></script>
+        <script type="text/javascript" src="js/dialog.js"></script>
+        <script language="javascript" src="../../../tiny_mce_popup.js"></script>
+        <style type="text/css">
+                body { padding: 5px; }
+                table {
+                  font: 11px Tahoma,Verdana,sans-serif;
+                }
+                form p {
+                  margin-top: 5px;
+                  margin-bottom: 5px;
+                }
+                fieldset { padding: 0px 10px 5px 5px; }
+                select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+                button { width: 70px; }
+
+                .title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+                border-bottom: 1px solid black; letter-spacing: 2px;
+                }
+                form { padding: 0px; margin: 0px; }
+                a { padding: 2px; border: 1px solid ButtonFace;        }
+                a img        { border: 0px; vertical-align:bottom; }
+                a:hover { border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; }
+
+        </style>
+
+        <script language="JavaScript" type="text/JavaScript">
+        /*<![CDATA[*/
+                var preview_window = null;
+                var resize_iframe_constant = 150;
+                <?php
+                if (is_array($MY_DENY_EXTENSIONS)) {
+                        echo 'var DenyExtensions = [';
+                        foreach($MY_DENY_EXTENSIONS as $value) echo '"'.$value.'", ';
+                        echo '""];
+                        ';
+                }
+                if (is_array($MY_ALLOW_EXTENSIONS)) {
+                        echo 'var AllowExtensions = [';
+                        foreach($MY_ALLOW_EXTENSIONS as $value) echo '"'.$value.'", ';
+                        echo '""];
+                        ';
+                }
+                ?>
+
+                function Init() {
+                };
+
+                function onOK() {
+                         if (window.opener) {
+                         var required = {
+                         "f_url": "You must enter the URL",
+                         "f_caption": "Please enter the caption text"
+                         };
+                        for (var i in required) {
+                              var el = MM_findObj(i);
+                              if (!el.value) {
+                              alert(required[i]);
+                              el.focus();
+                              return false;
+                        }
+                }
+
+                        var myPath = fileManager.document.getElementById('form2').elements["path"].value;
+                        var fileItems = fileManager.stb.getSelectedItems();
+                        var fileItemsLength = fileItems.length;
+                        var returnFiles = new Array();
+
+                        for (var i=0; i<fileItemsLength; i++) {
+                                        var strId = fileItems[i].getAttribute("id").toString();
+                                        var trId = parseInt(strId.substring(1, strId.length));
+                                        returnFiles[i] = new Array();
+                                        returnFiles[i][0] = fileManager.fileJSArray[trId][0];
+                                        returnFiles[i][1] = fileManager.fileJSArray[trId][1];
+                                        returnFiles[i][2] = fileManager.fileJSArray[trId][2];
+                                        returnFiles[i][3] = fileManager.fileJSArray[trId][3];
+                        }
+
+                var formObj = document.forms[0];
+                   var base_path = '<?php echo $MY_BASE_URL; ?>';
+                   var files     = returnFiles;
+                   var path      = base_path+myPath;
+                   editor_url    = tinyMCE.baseURL;
+                   plugin_url    = "/plugins/filemanager/InsertFile/";
+                   var f_url = formObj.f_url.value;
+                   var f_caption = formObj.f_caption.value;
+
+               for (var k in files){
+                        var fileValues = files[k];
+                        var f_icon = editor_url+plugin_url+fileValues[0];
+                                               var f_size = fileValues[2];
+                        var f_date = fileValues[3];
+               }
+
+                var icon = "";
+                var caption = "";
+
+                if (formObj.f_addicon.checked==true) {
+                        icon = '<img src="' + f_icon + '" alt="' + f_caption + '">&nbsp;';
+                }
+                if (formObj.f_addsize.checked==true || formObj.f_adddate.checked==true) caption = caption + ' (<span style="font-size:80%">';
+                if (formObj.f_addsize.checked==true) caption = caption + f_size;
+                if (formObj.f_adddate.checked==true) caption = caption + ' ' + f_date;
+                if (formObj.f_addsize.checked==true || formObj.f_adddate.checked==true) caption = caption + '</span>) ';
+                alink = icon + '<a href="' + f_url + '">' + f_caption + '</a>' + caption;
+
+                        tinyMCE.execCommand("mceInsertContent",true,alink);
+                        top.close();
+                }
+
+        };
+
+                function onCancel() {
+                  top.close();
+                  return false;
+                };
+
+                function changeDir(selection) {
+                        changeLoadingStatus('load');
+                        var newDir = selection.options[selection.selectedIndex].value;
+                        var postForm2 = fileManager.document.getElementById('form2');
+                        postForm2.elements["action"].value="changeDir";
+                        postForm2.elements["path"].value=newDir;
+                        postForm2.submit();
+                }
+
+                function goUpDir() {
+                        var selection = document.forms[0].path;
+                        var dir = selection.options[selection.selectedIndex].value;
+                        if(dir != '/'){
+                            changeLoadingStatus('load');
+                                var postForm2 = fileManager.document.getElementById('form2');
+                                postForm2.elements["action"].value="changeDir";
+                                postForm2.elements["path"].value=postForm2.elements["uppath"].value;
+                                postForm2.submit();
+                        }
+                }
+
+                function newFolder() {
+                        var selection = document.forms[0].path;
+                        var path = selection.options[selection.selectedIndex].value;
+                        var folder = prompt('<?php echo $MY_MESSAGES['newfolder']; ?>','');
+                        if (folder) {
+                            changeLoadingStatus('load');
+                                var postForm2 = fileManager.document.getElementById('form2');
+                                postForm2.elements["action"].value="createFolder";
+                                postForm2.elements["file"].value=folder;
+                                postForm2.submit();
+                        }
+                        return false
+                }
+
+                function deleteFile() {
+                        var folderItems = fileManager.sta.getSelectedItems();
+                        var folderItemsLength = folderItems.length;
+                        var fileItems = fileManager.stb.getSelectedItems();
+                        var fileItemsLength = fileItems.length;
+                        var message = "<?php echo $MY_MESSAGES['delete']; ?>";
+            if ((folderItemsLength == 0) && (fileItemsLength == 0)) return false;
+                        if (folderItemsLength > 0) {
+                                message = message + " " + folderItemsLength + " " + "<?php echo $MY_MESSAGES['folders']; ?>";
+                        }
+                        if (fileItemsLength > 0) {
+                                message = message + " " + fileItemsLength + " " + "<?php echo $MY_MESSAGES['files']; ?>";
+                        }
+                        if (confirm(message+" ?")) {
+                                var postForm2 = fileManager.document.getElementById('form2');
+                                for (var i=0; i<folderItemsLength; i++) {
+                                        var strId = folderItems[i].getAttribute("id").toString();
+                                        var trId = parseInt(strId.substring(1, strId.length));
+                                           var i_field = fileManager.document.createElement('INPUT');
+                                        i_field.type = 'hidden';
+                                        i_field.name = 'folders[' + i.toString() + ']';
+                                          i_field.value = fileManager.folderJSArray[trId][1];
+                                        postForm2.appendChild(i_field);
+                                }
+                                for (var i=0; i<fileItemsLength; i++) {
+                                        var strId = fileItems[i].getAttribute("id").toString();
+                                        var trId = parseInt(strId.substring(1, strId.length));
+                                           var i_field = fileManager.document.createElement('INPUT');
+                                        i_field.type = 'hidden';
+                                        i_field.name = 'files[' + i.toString() + ']';
+                                          i_field.value = fileManager.fileJSArray[trId][1];
+                                        postForm2.appendChild(i_field);
+                                }
+                                changeLoadingStatus('load');
+                                postForm2.elements["action"].value="delete";
+                                postForm2.submit();
+                        }
+                }
+
+                function renameFile() {
+                        var folderItems = fileManager.sta.getSelectedItems();
+                        var folderItemsLength = folderItems.length;
+                        var fileItems = fileManager.stb.getSelectedItems();
+                        var fileItemsLength = fileItems.length;
+                        var postForm2 = fileManager.document.getElementById('form2');
+                        if ((folderItemsLength == 0) && (fileItemsLength == 0)) return false;
+                        if (!confirm('<?php echo $MY_MESSAGES['renamewarning']; ?>')) return false;
+                        for (var i=0; i<folderItemsLength; i++) {
+                                var strId = folderItems[i].getAttribute("id").toString();
+                                var trId = parseInt(strId.substring(1, strId.length));
+                var newname = prompt('<?php echo $MY_MESSAGES['renamefolder']; ?>', fileManager.folderJSArray[trId][1]);
+                                if (!newname) continue;
+                                if (!newname == fileManager.folderJSArray[trId][1]) continue;
+                                var i_field = fileManager.document.createElement('INPUT');
+                                i_field.type = 'hidden';
+                                i_field.name = 'folders[' + i.toString() + '][oldname]';
+                                  i_field.value = fileManager.folderJSArray[trId][1];
+                                postForm2.appendChild(i_field);
+                                var ii_field = fileManager.document.createElement('INPUT');
+                                ii_field.type = 'hidden';
+                                ii_field.name = 'folders[' + i.toString() + '][newname]';
+                                  ii_field.value = newname;
+                                postForm2.appendChild(ii_field);
+                        }
+                        for (var i=0; i<fileItemsLength; i++) {
+                                var strId = fileItems[i].getAttribute("id").toString();
+                                var trId = parseInt(strId.substring(1, strId.length));
+                                var        newname = getNewFileName(fileManager.fileJSArray[trId][1]);
+                                if (!newname) continue;
+                                if (newname == fileManager.fileJSArray[trId][1]) continue;
+                                   var i_field = fileManager.document.createElement('INPUT');
+                                i_field.type = 'hidden';
+                                i_field.name = 'files[' + i.toString() + '][oldname]';
+                                  i_field.value = fileManager.fileJSArray[trId][1];
+                                postForm2.appendChild(i_field);
+                                var ii_field = fileManager.document.createElement('INPUT');
+                                ii_field.type = 'hidden';
+                                ii_field.name = 'files[' + i.toString() + '][newname]';
+                                  ii_field.value = newname;
+                                postForm2.appendChild(ii_field);
+                        }
+                        changeLoadingStatus('load');
+                        postForm2.elements["action"].value="rename";
+                        postForm2.submit();
+                   }
+
+                function moveFile() {
+                        var folderItems = fileManager.sta.getSelectedItems();
+                        var folderItemsLength = folderItems.length;
+                        var fileItems = fileManager.stb.getSelectedItems();
+                        var fileItemsLength = fileItems.length;
+                        var postForm2 = fileManager.document.getElementById('form2');
+                        if ((folderItemsLength == 0) && (fileItemsLength == 0)) return false;
+                        if (!confirm('<?php echo $MY_MESSAGES['renamewarning']; ?>')) return false;
+                        var postForm2 = fileManager.document.getElementById('form2');
+                        Dialog("move.php", function(param) {
+                                if (!param) // user must have pressed Cancel
+                                        return false;
+                                else {
+                                    postForm2.elements["newpath"].value=param['newpath'];
+                                    moveFiles();
+                                }
+                        }, null);
+                }
+
+        function moveFiles() {
+                        var folderItems = fileManager.sta.getSelectedItems();
+                        var folderItemsLength = folderItems.length;
+                        var fileItems = fileManager.stb.getSelectedItems();
+                        var fileItemsLength = fileItems.length;
+                        var postForm2 = fileManager.document.getElementById('form2');
+                        for (var i=0; i<folderItemsLength; i++) {
+                                var strId = folderItems[i].getAttribute("id").toString();
+                                var trId = parseInt(strId.substring(1, strId.length));
+                                   var i_field = fileManager.document.createElement('INPUT');
+                                i_field.type = 'hidden';
+                                i_field.name = 'folders[' + i.toString() + ']';
+                                  i_field.value = fileManager.folderJSArray[trId][1];
+                                postForm2.appendChild(i_field);
+                        }
+                        for (var i=0; i<fileItemsLength; i++) {
+                                var strId = fileItems[i].getAttribute("id").toString();
+                                var trId = parseInt(strId.substring(1, strId.length));
+                                var i_field = fileManager.document.createElement('INPUT');
+                                i_field.type = 'hidden';
+                                i_field.name = 'files[' + i.toString() + ']';
+                                  i_field.value = fileManager.fileJSArray[trId][1];
+                                postForm2.appendChild(i_field);
+                        }
+                        changeLoadingStatus('load');
+                        postForm2.elements["action"].value="move";
+                        postForm2.submit();
+                }
+
+                function openFile() {
+                        var urlPrefix = "<?php echo $MY_URL_TO_OPEN_FILE; ?>";
+                        var myPath = fileManager.document.getElementById('form2').elements["path"].value;
+                        var folderItems = fileManager.sta.getSelectedItems();
+                        var folderItemsLength = folderItems.length;
+                        var fileItems = fileManager.stb.getSelectedItems();
+                        var fileItemsLength = fileItems.length;
+
+                        for (var i=0; i<folderItemsLength; i++) {
+                                var strId = folderItems[i].getAttribute("id").toString();
+                                var trId = parseInt(strId.substring(1, strId.length));
+                            window.open(urlPrefix+myPath+fileManager.folderJSArray[trId][1],'','');
+                          }
+                        for (var i=0; i<fileItemsLength; i++) {
+                                var strId = fileItems[i].getAttribute("id").toString();
+                                var trId = parseInt(strId.substring(1, strId.length));
+                                  window.open(urlPrefix+myPath+fileManager.fileJSArray[trId][1],'','');
+                        }
+                }
+
+                function doUpload() {
+                        var isOK = 1;
+                        var fileObj = document.forms[0].uploadFile;
+                        if (fileObj == null) return false;
+
+                        newname = fileObj.value;
+                        isOK = checkExtension(newname);
+                        if (isOK == -2) {
+                                 alert('<?php echo $MY_MESSAGES['extnotallowed']; ?>');
+                                 return false;
+                        }
+                        if (isOK == -1) {
+                                alert('<?php echo $MY_MESSAGES['extmissing']; ?>');
+                                return false;
+                        }
+                        changeLoadingStatus('upload');
+                }
+
+                function checkExtension(name) {
+                        var regexp = /\/|\\/;
+                        var parts = name.split(regexp);
+                        var filename = parts[parts.length-1].split(".");
+                        if (filename.length <= 1) {
+                                return(-1);
+                        }
+                        var ext = filename[filename.length-1].toLowerCase();
+
+                        for (i=0; i<DenyExtensions.length; i++) {
+                                if (ext == DenyExtensions[i]) return(-2);
+                        }
+                        for (i=0; i<AllowExtensions.length; i++) {
+                                if (ext == AllowExtensions[i])        return(1);
+                        }
+                        return(-2);
+                }
+
+                function getNewFileName(name) {
+                        var isOK = 1;
+                        var newname='';
+                        do {
+                                newname = prompt('<?php echo $MY_MESSAGES['renamefile']; ?>', name);
+                                if (!newname) return false;
+                                isOK = checkExtension(newname);
+                                if (isOK == -2) alert('<?php echo $MY_MESSAGES['extnotallowed']; ?>');
+                                if (isOK == -1) alert('<?php echo $MY_MESSAGES['extmissing']; ?>');
+                        } while (isOK != 1);
+                          return(newname);
+                }
+
+                function selectFolder() {
+                        Dialog("move.php", function(param) {
+                                if (!param) // user must have pressed Cancel
+                                        return false;
+                                else {
+                                        var postForm2 = fileManager.document.getElementById('form2');
+                                        postForm2.elements["newpath"].value=param['newpath'];
+                                }
+                        }, null);
+
+                }
+
+                function refreshPath(){
+                        var selection = document.forms[0].path;
+                        changeDir(selection);
+                }
+
+                function winH() {
+                   if (window.innerHeight)
+                      return window.innerHeight;
+                   else if
+                   (document.documentElement &&
+                   document.documentElement.clientHeight)
+                      return document.documentElement.clientHeight;
+                   else if
+                   (document.body && document.body.clientHeight)
+                      return document.body.clientHeight;
+                   else
+                      return null;
+                }
+
+                function resize_iframe() {
+                        document.getElementById("fileManager").height=winH()-resize_iframe_constant;//resize the iframe according to the size of the window
+                }
+
+                function MM_findObj(n, d) { //v4.01
+                  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
+                    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
+                  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
+                  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
+                  if(!x && d.getElementById) x=d.getElementById(n); return x;
+                }
+
+                function MM_showHideLayers() { //v6.0
+                  var i,p,v,obj,args=MM_showHideLayers.arguments;
+                  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
+                    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
+                    obj.visibility=v; }
+                }
+
+                function changeLoadingStatus(state) {
+                        var statusText = null;
+                        if(state == 'load') {
+                                statusText = '<?php echo $MY_MESSAGES['loading']; ?> ';
+                        }
+                        else if(state == 'upload') {
+                                statusText = '<?php echo $MY_MESSAGES['uploading']; ?>';
+                        }
+                        if(statusText != null) {
+                                var obj = MM_findObj('loadingStatus');
+                                if (obj != null && obj.innerHTML != null)
+                                        obj.innerHTML = statusText;
+                                MM_showHideLayers('loading','','show')
+                        }
+                }
+
+         /*]]>*/
+        </script>
+</head>
+<body onload="Init();">
+                <div class="title"><img src="../images/filemanager.gif" border="0" align="absmiddle">
+                        <?php echo $MY_MESSAGES['insertfile']; ?>
+                </div>
+                <form action="files.php?dialogname=<?php echo $MY_NAME; ?>" name="form1" method="post" target="fileManager" enctype="multipart/form-data">
+                        <div id="loading" style="position:absolute; left:200px; top:130px; width:184px; height:48px; z-index:1" class="statusLayer">
+                                <div id= "loadingStatus" align="center" style="font-size:large;font-weight:bold;color:#CCCCCC;font-family: Helvetica, sans-serif; z-index:2;  ">
+                                <?php echo $MY_MESSAGES['loading']; ?>
+                                </div>
+                        </div>
+                          <fieldset>
+                                <legend>
+                                        <?php
+                                        echo $MY_MESSAGES['filemanager'];
+                                        echo '<span style="font-size:x-small; "> - '.$MY_MESSAGES['ctrlshift'].'</span>';
+                                        ?>
+                                </legend>
+                                <div style="margin:5px;">
+                                        <label for="path">
+                                                <?php echo $MY_MESSAGES['directory']; ?>
+                                        </label>
+                                          <select name="path" id="path" style="width:35em" onChange="changeDir(this)">
+                                                  <option value="/">/</option>
+                                        </select>
+
+                                        <?php
+                                                echo '<a href="#" onClick="javascript:goUpDir();"><img src="img/btn_up.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['up'].'" /></a>';
+                                                if ($MY_ALLOW_CREATE) {
+                                                        echo '<a href="#" onClick="javascript:newFolder();"><img src="img/btn_create.gif"  width="18" height="18" border="0" title="'.$MY_MESSAGES['newfolder'].'" /></a>';
+                                                }
+                                                if ($MY_ALLOW_DELETE) {
+                                                        echo '<a href="#" onClick="javascript:deleteFile();"><img src="img/btn_delete.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['delete'].'" /></a>';
+                                                }
+                                                if ($MY_ALLOW_RENAME) {
+                                                        echo '<a href="#" onClick="javascript:renameFile();"><img src="img/btn_rename.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['rename'].'" /></a>';
+                                                }
+                                                if ($MY_ALLOW_MOVE) {
+                                                        echo '<a href="#" onClick="javascript:moveFile();"><img src="img/btn_move.gif" width="18" height="18" border="0" title="'.$MY_MESSAGES['move'].'" /></a>';
+                                                }
+                                                echo '<a href="#" onClick="javascript:openFile();"><img src="img/btn_open.gif"  width="18" height="18" border="0" title="'.$MY_MESSAGES['openfile'].'" /></a>';
+
+                                     ?>
+
+                                                        <input id="sortby" type="hidden" value="0" />
+                                </div>
+
+                                <div style="margin:5px;">
+                                <!--
+                                        <iframe src="files.php?dialogname=<?php echo $MY_NAME; ?>&amp;refresh=1" name="fileManager" id="fileManager" background: Window;" marginwidth="0" marginheight="0" align="top" scrolling="no" frameborder="0" hspace="0" vspace="0" width="100%"></iframe>
+                                        -->
+                                   <iframe src="files.php?dialogname=<?php echo $MY_NAME; ?>&amp;refresh=1" name="fileManager" id="fileManager" background="Window" marginwidth="0" marginheight="0" valign:"top" scrolling="no" frameborder="0" hspace="0" vspace="0" width="600px" height="250px" style="background-color: Window; margin:0px; padding:0px; border:0px; vertical-align:top;"></iframe>
+                                </div>
+      <table border="0" align="center" cellpadding="2" cellspacing="2">
+          <tr>
+            <td nowrap><div align="right">URL</div></td>
+            <td><input name="url" id="f_url" type="text" style="width:20em" size="30"></td>
+            <td nowrap><div align="right">Caption</div></td>
+            <td><input name="caption" id="f_caption" type="text" style="width:20em" size="30"></td>
+          </tr>
+      </table>
+          <table border="0" align="center" cellpadding="2" cellspacing="2">
+          <tr>
+            <td>
+             <input id="f_addicon" value="f_addicon" type="checkbox">
+            </td><td>
+                                <div align="left">Insert filetype icon</div>
+                        </td>
+                       <td>
+                               <input id="f_addsize" value="f_addsize" type="checkbox">
+            </td><td>
+                                <div align="left">Insert file size</div>
+                        </td>
+                       <td>
+                               <input id="f_adddate" value="f_adddate" type="checkbox">
+            </td><td>
+                                <div align="left">Insert file modification date</div>
+                        </td>
+                  </tr>
+      </table>
+                                <div style="text-align:center; padding:2px;">
+                    <?php
+                                if ($MY_ALLOW_UPLOAD) {
+                        ?>
+                                        <label for="uploadFile">
+                                        <?php echo $MY_MESSAGES['upload']; ?>
+                                        </label>
+                                           <input name="uploadFile" type="file" id="uploadFile" size="72" />
+                            <input type="submit" style="width:5em" value="<?php echo $MY_MESSAGES['upload']; ?>" onClick="javascript:return doUpload();" />
+                    <?php
+                                 }
+                        ?>
+                                </div>
+                    </fieldset>
+
+                         <div style="text-align: right; margin-top:5px;">
+                                  <input type="button" name="refresh" value="Refresh" onclick="return refreshPath();">
+                                  <input type="button" name="cancel" value="Cancel" onclick="return onCancel();">
+                                  <input type="reset" name="reset" value="Reset">
+                                  <input type="button" name="ok" value="OK" onclick="return onOK();">
+                     </div>
+                     <div style="position:absolute; bottom:-5px; right:-3px;">
+                                 <img src="img/btn_Corner.gif" width="14" height="14" border="0" alt="" />
+                           </div>
+                </form>
+        </body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/dialog.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/dialog.js
new file mode 100644 (file)
index 0000000..aaad7b4
--- /dev/null
@@ -0,0 +1,111 @@
+// Dialog v3.0 - Copyright (c) 2003-2004 interactivetools.com, inc.
+// This copyright notice MUST stay intact for use (see license.txt).
+//
+// Portions (c) dynarch.com, 2003-2004
+//
+// A free WYSIWYG editor replacement for <textarea> fields.
+// For full source code and docs, visit http://www.interactivetools.com/
+//
+// Version 3.0 developed by Mihai Bazon.
+//   http://dynarch.com/mishoo
+//
+// $Id: dialog.js,v 1.1 2006-10-02 05:37:17 shizuki Exp $
+
+// Though "Dialog" looks like an object, it isn't really an object.  Instead
+// it's just namespace for protecting global symbols.
+
+function Dialog(url, action, init) {
+       if (typeof init == "undefined") {
+               init = window;  // pass this window object by default
+       }
+       Dialog._geckoOpenModal(url, action, init);
+};
+
+Dialog._parentEvent = function(ev) {
+       setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50);
+       if (Dialog._modal && !Dialog._modal.closed) {
+               Dialog._stopEvent(ev);
+       }
+};
+
+
+// should be a function, the return handler of the currently opened dialog.
+Dialog._return = null;
+
+// constant, the currently opened dialog
+Dialog._modal = null;
+
+// the dialog will read it's args from this variable
+Dialog._arguments = null;
+
+Dialog._geckoOpenModal = function(url, action, init) {
+       //var urlLink = "hadialog"+url.toString();
+       var myURL = "hadialog"+url;
+       var regObj = /\W/g;
+       myURL = myURL.replace(regObj,'_');
+       var dlg = window.open(url, myURL,
+                             "toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
+                             "scrollbars=no,resizable=yes,modal=yes,dependable=yes");
+       Dialog._modal = dlg;
+       Dialog._arguments = init;
+
+       // capture some window's events
+       function capwin(w) {
+               Dialog._addEvent(w, "click", Dialog._parentEvent);
+               Dialog._addEvent(w, "mousedown", Dialog._parentEvent);
+               Dialog._addEvent(w, "focus", Dialog._parentEvent);
+       };
+       // release the captured events
+       function relwin(w) {
+               Dialog._removeEvent(w, "click", Dialog._parentEvent);
+               Dialog._removeEvent(w, "mousedown", Dialog._parentEvent);
+               Dialog._removeEvent(w, "focus", Dialog._parentEvent);
+       };
+       capwin(window);
+       // capture other frames
+       for (var i = 0; i < window.frames.length; capwin(window.frames[i++]));
+       // make up a function to be called when the Dialog ends.
+       Dialog._return = function (val) {
+               if (val && action) {
+                       action(val);
+               }
+               relwin(window);
+               // capture other frames
+               for (var i = 0; i < window.frames.length; relwin(window.frames[i++]));
+               Dialog._modal = null;
+       };
+};
+
+
+// event handling
+
+Dialog._addEvent = function(el, evname, func) {
+       if (Dialog.is_ie) {
+               el.attachEvent("on" + evname, func);
+       } else {
+               el.addEventListener(evname, func, true);
+       }
+};
+
+
+Dialog._removeEvent = function(el, evname, func) {
+       if (Dialog.is_ie) {
+               el.detachEvent("on" + evname, func);
+       } else {
+               el.removeEventListener(evname, func, true);
+       }
+};
+
+
+Dialog._stopEvent = function(ev) {
+       if (Dialog.is_ie) {
+               ev.cancelBubble = true;
+               ev.returnValue = false;
+       } else {
+               ev.preventDefault();
+               ev.stopPropagation();
+       }
+};
+
+Dialog.agt = navigator.userAgent.toLowerCase();
+Dialog.is_ie      = ((Dialog.agt.indexOf("msie") != -1) && (Dialog.agt.indexOf("opera") == -1));
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/functions.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/functions.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/popup.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/popup.js
new file mode 100644 (file)
index 0000000..d3db0a5
--- /dev/null
@@ -0,0 +1,123 @@
+// htmlArea v3.0 - Copyright (c) 2002, 2003 interactivetools.com, inc.
+// This copyright notice MUST stay intact for use (see license.txt).
+//
+// Portions (c) dynarch.com, 2003
+//
+// A free WYSIWYG editor replacement for <textarea> fields.
+// For full source code and docs, visit http://www.interactivetools.com/
+//
+// Version 3.0 developed by Mihai Bazon.
+//   http://dynarch.com/mishoo
+//
+// $Id: popup.js,v 1.1 2006-10-02 05:37:17 shizuki Exp $
+
+// Slightly modified for the ImageManager, window resizing is done only
+// by each window's script. Added translation for a few other HTML elements.
+
+function getAbsolutePos(el) {
+       var r = { x: el.offsetLeft, y: el.offsetTop };
+       if (el.offsetParent) {
+               var tmp = getAbsolutePos(el.offsetParent);
+               r.x += tmp.x;
+               r.y += tmp.y;
+       }
+       return r;
+};
+
+function comboSelectValue(c, val) {
+       var ops = c.getElementsByTagName("option");
+       for (var i = ops.length; --i >= 0;) {
+               var op = ops[i];
+               op.selected = (op.value == val);
+       }
+       c.value = val;
+};
+
+function __dlg_onclose() {
+       if(opener.Dialog._return)
+               opener.Dialog._return(null);
+};
+
+function __dlg_init(bottom) {
+       var body = document.body;
+       var body_height = 0;
+       if (typeof bottom == "undefined") {
+               var div = document.createElement("div");
+               body.appendChild(div);
+               var pos = getAbsolutePos(div);
+               body_height = pos.y;
+       } else {
+               var pos = getAbsolutePos(bottom);
+               body_height = pos.y + bottom.offsetHeight;
+       }
+       if(opener && opener.Dialog && opener.Dialog._arguments)
+               window.dialogArguments = opener.Dialog._arguments;
+       if (!document.all) {
+               //window.sizeToContent();
+               //window.sizeToContent();       // for reasons beyond understanding,
+                                       // only if we call it twice we get the
+                                       // correct size.
+               window.addEventListener("unload", __dlg_onclose, true);
+               // center on parent
+               var x = opener.screenX + (opener.outerWidth - window.outerWidth) / 2;
+               var y = opener.screenY + (opener.outerHeight - window.outerHeight) / 2;
+               window.moveTo(x, y);
+               //window.innerWidth = body.offsetWidth + 5;
+               //window.innerHeight = body_height + 2;
+       } else {
+               // window.dialogHeight = body.offsetHeight + 50 + "px";
+               // window.dialogWidth = body.offsetWidth + "px";
+               //window.resizeTo(body.offsetWidth, body_height);
+               var ch = body.clientHeight;
+               var cw = body.clientWidth;
+               //window.resizeBy(body.offsetWidth - cw, body_height - ch);
+               var W = body.offsetWidth;
+               var H = 2 * body_height - ch;
+               if(ch <= 0) H = body_height;
+               var x = (screen.availWidth - W) / 2;
+               var y = (screen.availHeight - H) / 2;
+               
+               window.moveTo(x, y);
+       }
+       document.body.onkeypress = __dlg_close_on_esc;
+};
+
+function __dlg_translate(i18n) {
+       var types = ["span", "option", "td", "button", "div", "label", "a","img", "legend"];
+       for (var type in types) {
+               var spans = document.getElementsByTagName(types[type]);
+               for (var i = spans.length; --i >= 0;) {
+                       var span = spans[i];
+                       if (span.firstChild && span.firstChild.data) {                          
+                               var txt = i18n[span.firstChild.data];
+                               if (txt) span.firstChild.data = txt;
+                       }
+                       if(span.title){
+                               var txt = i18n[span.title];
+                               if(txt) span.title = txt;
+                       }
+                       if(span.alt){
+                               var txt = i18n[span.alt];
+                               if(txt) span.alt = txt;
+                       }
+               }
+       }
+       var txt = i18n[document.title];
+       if (txt)
+               document.title = txt;
+};
+
+// closes the dialog and passes the return info upper.
+function __dlg_close(val) {
+       opener.Dialog._return(val);
+       window.close();
+};
+
+function __dlg_close_on_esc(ev) {
+       ev || (ev = window.event);
+       if (ev.keyCode == 27) {
+               window.close();
+               return false;
+       }
+       return true;
+};
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/selectableelements.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/selectableelements.js
new file mode 100644 (file)
index 0000000..fd86958
--- /dev/null
@@ -0,0 +1,375 @@
+/*----------------------------------------------------------------------------\
+|                          Selectable Elements 1.02                           |
+|-----------------------------------------------------------------------------|
+|                         Created by Erik Arvidsson                           |
+|                  (http://webfx.eae.net/contact.html#erik)                   |
+|                      For WebFX (http://webfx.eae.net/)                      |
+|-----------------------------------------------------------------------------|
+|          A script that allows children of any element to be selected        |
+|-----------------------------------------------------------------------------|
+|                  Copyright (c) 1999 - 2004 Erik Arvidsson                   |
+|-----------------------------------------------------------------------------|
+| This software is provided "as is", without warranty of any kind, express or |
+| implied, including  but not limited  to the warranties of  merchantability, |
+| fitness for a particular purpose and noninfringement. In no event shall the |
+| authors or  copyright  holders be  liable for any claim,  damages or  other |
+| liability, whether  in an  action of  contract, tort  or otherwise, arising |
+| from,  out of  or in  connection with  the software or  the  use  or  other |
+| dealings in the software.                                                   |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| This  software is  available under the  three different licenses  mentioned |
+| below.  To use this software you must chose, and qualify, for one of those. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Non-Commercial License          http://webfx.eae.net/license.html |
+| Permits  anyone the right to use the  software in a  non-commercial context |
+| free of charge.                                                             |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Commercial license           http://webfx.eae.net/commercial.html |
+| Permits the  license holder the right to use  the software in a  commercial |
+| context. Such license must be specifically obtained, however it's valid for |
+| any number of  implementations of the licensed software.                    |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| GPL - The GNU General Public License    http://www.gnu.org/licenses/gpl.txt |
+| Permits anyone the right to use and modify the software without limitations |
+| as long as proper  credits are given  and the original  and modified source |
+| code are included. Requires  that the final product, software derivate from |
+| the original  source or any  software  utilizing a GPL  component, such  as |
+| this, is also licensed under the GPL license.                               |
+|-----------------------------------------------------------------------------|
+| 2002-09-19 | Original Version Posted.                                       |
+| 2002-09-27 | Fixed a bug in IE when mouse down and up occured on different  |
+|            | rows.                                                          |
+| 2003-02-11 | Minor problem with addClassName and removeClassName that       |
+|            | triggered a bug in Opera 7. Added destroy method               |
+|-----------------------------------------------------------------------------|
+| Created 2002-09-04 | All changes are in the log above. | Updated 2003-02-11 |
+\----------------------------------------------------------------------------*/
+
+function SelectableElements(oElement, bMultiple) {
+       if (oElement == null)
+               return;
+
+       this._htmlElement = oElement;
+       this._multiple = Boolean(bMultiple);
+
+       this._selectedItems = [];
+       this._fireChange = true;
+
+       var oThis = this;
+       this._onclick = function (e) {
+               if (e == null) e = oElement.ownerDocument.parentWindow.event;
+               oThis.click(e);
+       };
+
+       if (oElement.addEventListener)
+               oElement.addEventListener("click", this._onclick, false);
+       else if (oElement.attachEvent)
+               oElement.attachEvent("onclick", this._onclick);
+}
+
+SelectableElements.prototype.setItemSelected = function (oEl, bSelected) {
+       if (!this._multiple) {
+               if (bSelected) {
+                       var old = this._selectedItems[0]
+                       if (oEl == old)
+                               return;
+                       if (old != null)
+                               this.setItemSelectedUi(old, false);
+                       this.setItemSelectedUi(oEl, true);
+                       this._selectedItems = [oEl];
+                       this.fireChange();
+               }
+               else {
+                       if (this._selectedItems[0] == oEl) {
+                               this.setItemSelectedUi(oEl, false);
+                               this._selectedItems = [];
+                       }
+               }
+       }
+       else {
+               if (Boolean(oEl._selected) == Boolean(bSelected))
+                       return;
+
+               this.setItemSelectedUi(oEl, bSelected);
+
+               if (bSelected)
+                       this._selectedItems[this._selectedItems.length] = oEl;
+               else {
+                       // remove
+                       var tmp = [];
+                       var j = 0;
+                       for (var i = 0; i < this._selectedItems.length; i++) {
+                               if (this._selectedItems[i] != oEl)
+                                       tmp[j++] = this._selectedItems[i];
+                       }
+                       this._selectedItems = tmp;
+               }
+               this.fireChange();
+       }
+};
+
+// This method updates the UI of the item
+SelectableElements.prototype.setItemSelectedUi = function (oEl, bSelected) {
+       if (bSelected)
+               addClassName(oEl, "selected");
+       else
+               removeClassName(oEl, "selected");
+
+       oEl._selected = bSelected;
+};
+
+SelectableElements.prototype.getItemSelected = function (oEl) {
+       return Boolean(oEl._selected);
+};
+
+SelectableElements.prototype.fireChange = function () {
+       if (!this._fireChange)
+               return;
+       if (typeof this.onchange == "string")
+               this.onchange = new Function(this.onchange);
+       if (typeof this.onchange == "function")
+               this.onchange();
+};
+
+
+SelectableElements.prototype.click = function (e) {
+       var oldFireChange = this._fireChange;
+       this._fireChange = false;
+
+       // create a copy to compare with after changes
+       var selectedBefore = this.getSelectedItems();   // is a cloned array
+
+       // find row
+       var el = e.target != null ? e.target : e.srcElement;
+       while (el != null && !this.isItem(el))
+               el = el.parentNode;
+
+       if (el == null) {       // happens in IE when down and up occur on different items
+               this._fireChange = oldFireChange;
+               return;
+       }
+
+       var rIndex = el;
+       var aIndex = this._anchorIndex;
+
+       // test whether the current row should be the anchor
+       if (this._selectedItems.length == 0 || (e.ctrlKey && !e.shiftKey && this._multiple)) {
+               aIndex = this._anchorIndex = rIndex;
+       }
+
+       if (!e.ctrlKey && !e.shiftKey || !this._multiple) {
+               // deselect all
+               var items = this._selectedItems;
+               for (var i = items.length - 1; i >= 0; i--) {
+                       if (items[i]._selected && items[i] != el)
+                               this.setItemSelectedUi(items[i], false);
+               }
+               this._anchorIndex = rIndex;
+               if (!el._selected) {
+                       this.setItemSelectedUi(el, true);
+               }
+               this._selectedItems = [el];
+       }
+
+       // ctrl
+       else if (this._multiple && e.ctrlKey && !e.shiftKey) {
+               this.setItemSelected(el, !el._selected);
+               this._anchorIndex = rIndex;
+       }
+
+       // ctrl + shift
+       else if (this._multiple && e.ctrlKey && e.shiftKey) {
+               // up or down?
+               var dirUp = this.isBefore(rIndex, aIndex);
+
+               var item = aIndex;
+               while (item != null && item != rIndex) {
+                       if (!item._selected && item != el)
+                               this.setItemSelected(item, true);
+                       item = dirUp ? this.getPrevious(item) : this.getNext(item);
+               }
+
+               if (!el._selected)
+                       this.setItemSelected(el, true);
+       }
+
+       // shift
+       else if (this._multiple && !e.ctrlKey && e.shiftKey) {
+               // up or down?
+               var dirUp = this.isBefore(rIndex, aIndex);
+
+               // deselect all
+               var items = this._selectedItems;
+               for (var i = items.length - 1; i >= 0; i--)
+                       this.setItemSelectedUi(items[i], false);
+               this._selectedItems = [];
+
+               // select items in range
+               var item = aIndex;
+               while (item != null) {
+                       this.setItemSelected(item, true);
+                       if (item == rIndex)
+                               break;
+                       item = dirUp ? this.getPrevious(item) : this.getNext(item);
+               }
+       }
+
+       // find change!!!
+       var found;
+       var changed = selectedBefore.length != this._selectedItems.length;
+       if (!changed) {
+               for (var i = 0; i < selectedBefore.length; i++) {
+                       found = false;
+                       for (var j = 0; j < this._selectedItems.length; j++) {
+                               if (selectedBefore[i] == this._selectedItems[j]) {
+                                       found = true;
+                                       break;
+                               }
+                       }
+                       if (!found) {
+                               changed = true;
+                               break;
+                       }
+               }
+       }
+
+       this._fireChange = oldFireChange;
+       if (changed && this._fireChange)
+               this.fireChange();
+};
+
+SelectableElements.prototype.getSelectedItems = function () {
+       //clone
+       var items = this._selectedItems;
+       var l = items.length;
+       var tmp = new Array(l);
+       for (var i = 0; i < l; i++)
+               tmp[i] = items[i];
+       return tmp;
+};
+
+SelectableElements.prototype.isItem = function (node) {
+       return node != null && node.nodeType == 1 && node.parentNode == this._htmlElement;
+};
+
+SelectableElements.prototype.destroy = function () {
+       if (this._htmlElement.removeEventListener)
+               this._htmlElement.removeEventListener("click", this._onclick, false);
+       else if (this._htmlElement.detachEvent)
+               this._htmlElement.detachEvent("onclick", this._onclick);
+
+       this._htmlElement = null;
+       this._onclick = null;
+       this._selectedItems = null;
+};
+
+/* Traversable Collection Interface */
+
+SelectableElements.prototype.getNext = function (el) {
+       var n = el.nextSibling;
+       if (n == null || this.isItem(n))
+               return n;
+       return this.getNext(n);
+};
+
+SelectableElements.prototype.getPrevious = function (el) {
+       var p = el.previousSibling;
+       if (p == null || this.isItem(p))
+               return p;
+       return this.getPrevious(p);
+};
+
+SelectableElements.prototype.isBefore = function (n1, n2) {
+       var next = this.getNext(n1);
+       while (next != null) {
+               if (next == n2)
+                       return true;
+               next = this.getNext(next);
+       }
+       return false;
+};
+
+/* End Traversable Collection Interface */
+
+/* Indexable Collection Interface */
+
+SelectableElements.prototype.getItems = function () {
+       var tmp = [];
+       var j = 0;
+       var cs = this._htmlElement.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               if (cs[i].nodeType == 1)
+                       tmp[j++] = cs[i]
+       }
+       return tmp;
+};
+
+SelectableElements.prototype.getItem = function (nIndex) {
+       var j = 0;
+       var cs = this._htmlElement.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               if (cs[i].nodeType == 1) {
+                       if (j == nIndex)
+                               return cs[i];
+                       j++;
+               }
+       }
+       return null;
+};
+
+SelectableElements.prototype.getSelectedIndexes = function () {
+       var items = this.getSelectedItems();
+       var l = items.length;
+       var tmp = new Array(l);
+       for (var i = 0; i < l; i++)
+               tmp[i] = this.getItemIndex(items[i]);
+       return tmp;
+};
+
+
+SelectableElements.prototype.getItemIndex = function (el) {
+       var j = 0;
+       var cs = this._htmlElement.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               if (cs[i] == el)
+                       return j;
+               if (cs[i].nodeType == 1)
+                       j++;
+       }
+       return -1;
+};
+
+/* End Indexable Collection Interface */
+
+
+
+function addClassName(el, sClassName) {
+       var s = el.className;
+       var p = s.split(" ");
+       if (p.length == 1 && p[0] == "")
+               p = [];
+
+       var l = p.length;
+       for (var i = 0; i < l; i++) {
+               if (p[i] == sClassName)
+                       return;
+       }
+       p[p.length] = sClassName;
+       el.className = p.join(" ");
+}
+
+function removeClassName(el, sClassName) {
+       var s = el.className;
+       var p = s.split(" ");
+       var np = [];
+       var l = p.length;
+       var j = 0;
+       for (var i = 0; i < l; i++) {
+               if (p[i] != sClassName)
+                       np[j++] = p[i];
+       }
+       el.className = np.join(" ");
+}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/selectabletablerows.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/selectabletablerows.js
new file mode 100644 (file)
index 0000000..d2b34e8
--- /dev/null
@@ -0,0 +1,78 @@
+/*----------------------------------------------------------------------------\
+|                          Selectable Elements 1.02                           |
+|-----------------------------------------------------------------------------|
+|                         Created by Erik Arvidsson                           |
+|                  (http://webfx.eae.net/contact.html#erik)                   |
+|                      For WebFX (http://webfx.eae.net/)                      |
+|-----------------------------------------------------------------------------|
+|          A script that allows children of any element to be selected        |
+|-----------------------------------------------------------------------------|
+|                  Copyright (c) 1999 - 2004 Erik Arvidsson                   |
+|-----------------------------------------------------------------------------|
+| This software is provided "as is", without warranty of any kind, express or |
+| implied, including  but not limited  to the warranties of  merchantability, |
+| fitness for a particular purpose and noninfringement. In no event shall the |
+| authors or  copyright  holders be  liable for any claim,  damages or  other |
+| liability, whether  in an  action of  contract, tort  or otherwise, arising |
+| from,  out of  or in  connection with  the software or  the  use  or  other |
+| dealings in the software.                                                   |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| This  software is  available under the  three different licenses  mentioned |
+| below.  To use this software you must chose, and qualify, for one of those. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Non-Commercial License          http://webfx.eae.net/license.html |
+| Permits  anyone the right to use the  software in a  non-commercial context |
+| free of charge.                                                             |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Commercial license           http://webfx.eae.net/commercial.html |
+| Permits the  license holder the right to use  the software in a  commercial |
+| context. Such license must be specifically obtained, however it's valid for |
+| any number of  implementations of the licensed software.                    |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| GPL - The GNU General Public License    http://www.gnu.org/licenses/gpl.txt |
+| Permits anyone the right to use and modify the software without limitations |
+| as long as proper  credits are given  and the original  and modified source |
+| code are included. Requires  that the final product, software derivate from |
+| the original  source or any  software  utilizing a GPL  component, such  as |
+| this, is also licensed under the GPL license.                               |
+|-----------------------------------------------------------------------------|
+| 2002-09-19 | Original Version Posted.                                       |
+| 2002-09-27 | Fixed a bug in IE when mouse down and up occured on different  |
+|            | rows.                                                          |
+| 2003-02-11 | Minor problem with addClassName and removeClassName that       |
+|            | triggered a bug in Opera 7. Added destroy method               |
+|-----------------------------------------------------------------------------|
+| Created 2002-09-04 | All changes are in the log above. | Updated 2003-02-11 |
+\----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------\
+| This file requires that SelectableElements is first defined. This class can |
+| be found in the file selectableelements.js at WebFX                         |
+\----------------------------------------------------------------------------*/
+
+function SelectableTableRows(oTableElement, bMultiple) {
+       SelectableElements.call(this, oTableElement, bMultiple);
+}
+SelectableTableRows.prototype = new SelectableElements;
+
+SelectableTableRows.prototype.isItem = function (node) {
+       return node != null && node.tagName == "TR" &&
+               node.parentNode.tagName == "TBODY" &&
+               node.parentNode.parentNode == this._htmlElement;
+};
+
+/* Indexable Collection Interface */
+
+SelectableTableRows.prototype.getItems = function () {
+       return this._htmlElement.rows;
+};
+
+SelectableTableRows.prototype.getItemIndex = function (el) {
+       return el.rowIndex;
+};
+
+SelectableTableRows.prototype.getItem = function (i) {
+       return this._htmlElement.rows[i];
+};
+
+/* End Indexable Collection Interface */
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/sortabletable.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/js/sortabletable.js
new file mode 100644 (file)
index 0000000..6cccefd
--- /dev/null
@@ -0,0 +1,323 @@
+
+/*----------------------------------------------------------------------------\
+|                            Sortable Table 1.04                              |
+|-----------------------------------------------------------------------------|
+|                         Created by Erik Arvidsson                           |
+|                  (http://webfx.eae.net/contact.html#erik)                   |
+|                      For WebFX (http://webfx.eae.net/)                      |
+|-----------------------------------------------------------------------------|
+| A DOM 1 based script that allows an ordinary HTML table to be sortable.     |
+|-----------------------------------------------------------------------------|
+|                  Copyright (c) 1998 - 2002 Erik Arvidsson                   |
+|-----------------------------------------------------------------------------|
+| This software is provided "as is", without warranty of any kind, express or |
+| implied, including  but not limited  to the warranties of  merchantability, |
+| fitness for a particular purpose and noninfringement. In no event shall the |
+| authors or  copyright  holders be  liable for any claim,  damages or  other |
+| liability, whether  in an  action of  contract, tort  or otherwise, arising |
+| from,  out of  or in  connection with  the software or  the  use  or  other |
+| dealings in the software.                                                   |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| This  software is  available under the  three different licenses  mentioned |
+| below.  To use this software you must chose, and qualify, for one of those. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Non-Commercial License          http://webfx.eae.net/license.html |
+| Permits  anyone the right to use the  software in a  non-commercial context |
+| free of charge.                                                             |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Commercial license           http://webfx.eae.net/commercial.html |
+| Permits the  license holder the right to use  the software in a  commercial |
+| context. Such license must be specifically obtained, however it's valid for |
+| any number of  implementations of the licensed software.                    |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| GPL - The GNU General Public License    http://www.gnu.org/licenses/gpl.txt |
+| Permits anyone the right to use and modify the software without limitations |
+| as long as proper  credits are given  and the original  and modified source |
+| code are included. Requires  that the final product, software derivate from |
+| the original  source or any  software  utilizing a GPL  component, such  as |
+| this, is also licensed under the GPL license.                               |
+|-----------------------------------------------------------------------------|
+| 2003-01-10 | First version                                                  |
+| 2003-01-19 | Minor changes to the date parsing                              |
+| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator)               |
+| 2003-02-01 | Sloppy typo like error fixed in getInnerText                   |
+| 2003-07-04 | Added workaround for IE cellIndex bug.                         |
+|-----------------------------------------------------------------------------|
+| Created 2003-01-10 | All changes are in the log above. | Updated 2003-07-04 |
+\----------------------------------------------------------------------------*/
+
+
+function SortableTable(oTable, oSortTypes) {
+
+       this.element = oTable;
+       this.tHead = oTable.tHead;
+       this.tBody = oTable.tBodies[0];
+       this.document = oTable.ownerDocument || oTable.document;
+
+       this.sortColumn = null;
+       this.descending = null;
+
+       var oThis = this;
+       this._headerOnclick = function (e) {
+               oThis.headerOnclick(e);
+       };
+
+
+       // only IE needs this
+       var win = this.document.defaultView || this.document.parentWindow;
+       this._onunload = function () {
+               oThis.destroy();
+       };
+       if (win && typeof win.attachEvent != "undefined") {
+               win.attachEvent("onunload", this._onunload);
+       }
+
+       this.initHeader(oSortTypes || []);
+}
+
+SortableTable.gecko = navigator.product == "Gecko";
+SortableTable.msie = /msie/i.test(navigator.userAgent);
+// Mozilla is faster when doing the DOM manipulations on
+// an orphaned element. MSIE is not
+SortableTable.removeBeforeSort = SortableTable.gecko;
+
+SortableTable.prototype.onsort = function () {};
+
+// adds arrow containers and events
+// also binds sort type to the header cells so that reordering columns does
+// not break the sort types
+SortableTable.prototype.initHeader = function (oSortTypes) {
+       var cells = this.tHead.rows[0].cells;
+       var l = cells.length;
+       var img, c;
+       for (var i = 0; i < l; i++) {
+               c = cells[i];
+               img = this.document.createElement("IMG");
+               img.src = "img/blank.png";
+               c.appendChild(img);
+               if (oSortTypes[i] != null) {
+                       c._sortType = oSortTypes[i];
+               }
+               if (typeof c.addEventListener != "undefined")
+                       c.addEventListener("click", this._headerOnclick, false);
+               else if (typeof c.attachEvent != "undefined")
+                       c.attachEvent("onclick", this._headerOnclick);
+       }
+       this.updateHeaderArrows();
+};
+
+// remove arrows and events
+SortableTable.prototype.uninitHeader = function () {
+       var cells = this.tHead.rows[0].cells;
+       var l = cells.length;
+       var c;
+       for (var i = 0; i < l; i++) {
+               c = cells[i];
+               c.removeChild(c.lastChild);
+               if (typeof c.removeEventListener != "undefined")
+                       c.removeEventListener("click", this._headerOnclick, false);
+               else if (typeof c.detachEvent != "undefined")
+                       c.detachEvent("onclick", this._headerOnclick);
+       }
+};
+
+SortableTable.prototype.updateHeaderArrows = function () {
+       var cells = this.tHead.rows[0].cells;
+       var l = cells.length;
+       var img;
+       for (var i = 0; i < l; i++) {
+               img = cells[i].lastChild;
+               if (i == this.sortColumn)
+                       img.className = "sort-arrow " + (this.descending ? "descending" : "ascending");
+               else
+                       img.className = "sort-arrow";
+       }
+};
+
+SortableTable.prototype.headerOnclick = function (e) {
+       // find TD element
+       var el = e.target || e.srcElement;
+       while (el.tagName != "TD")
+               el = el.parentNode;
+
+       this.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);
+};
+
+// IE returns wrong cellIndex when columns are hidden
+SortableTable.getCellIndex = function (oTd) {
+       var cells = oTd.parentNode.childNodes
+       var l = cells.length;
+       var i;
+       for (i = 0; cells[i] != oTd && i < l; i++)
+               ;
+       return i;
+};
+
+SortableTable.prototype.getSortType = function (nColumn) {
+       var cell = this.tHead.rows[0].cells[nColumn];
+       var val = cell._sortType;
+       if (val != "")
+               return val;
+       return "String";
+};
+
+// only nColumn is required
+// if bDescending is left out the old value is taken into account
+// if sSortType is left out the sort type is found from the sortTypes array
+
+SortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {
+       if (sSortType == null)
+               sSortType = this.getSortType(nColumn);
+
+       // exit if None
+       if (sSortType == "None")
+               return;
+
+       if (bDescending == null) {
+               if (this.sortColumn != nColumn)
+                       this.descending = true;
+               else
+                       this.descending = !this.descending;
+       }
+
+       this.sortColumn = nColumn;
+
+       if (typeof this.onbeforesort == "function")
+               this.onbeforesort();
+
+       var f = this.getSortFunction(sSortType, nColumn);
+       var a = this.getCache(sSortType, nColumn);
+       var tBody = this.tBody;
+
+       a.sort(f);
+
+       if (this.descending)
+               a.reverse();
+
+       if (SortableTable.removeBeforeSort) {
+               // remove from doc
+               var nextSibling = tBody.nextSibling;
+               var p = tBody.parentNode;
+               p.removeChild(tBody);
+       }
+
+       // insert in the new order
+       var l = a.length;
+       for (var i = 0; i < l; i++)
+               tBody.appendChild(a[i].element);
+
+       if (SortableTable.removeBeforeSort) {
+               // insert into doc
+               p.insertBefore(tBody, nextSibling);
+       }
+
+       this.updateHeaderArrows();
+
+       this.destroyCache(a);
+
+       if (typeof this.onsort == "function")
+               this.onsort();
+};
+
+SortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {
+       var oThis = this;
+       this._asyncsort = function () {
+               oThis.sort(nColumn, bDescending, sSortType);
+       };
+       window.setTimeout(this._asyncsort, 1);
+};
+
+SortableTable.prototype.getCache = function (sType, nColumn) {
+       var rows = this.tBody.rows;
+       var l = rows.length;
+       var a = new Array(l);
+       var r;
+       for (var i = 0; i < l; i++) {
+               r = rows[i];
+               a[i] = {
+                       value:          this.getRowValue(r, sType, nColumn),
+                       element:        r
+               };
+       };
+       return a;
+};
+
+SortableTable.prototype.destroyCache = function (oArray) {
+       var l = oArray.length;
+       for (var i = 0; i < l; i++) {
+               oArray[i].value = null;
+               oArray[i].element = null;
+               oArray[i] = null;
+       }
+}
+
+SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {
+       var s;
+       var c = oRow.cells[nColumn];
+       if (typeof c.innerText != "undefined")
+               s = c.innerText;
+       else
+               s = SortableTable.getInnerText(c);
+       return this.getValueFromString(s, sType);
+};
+
+SortableTable.getInnerText = function (oNode) {
+       var s = "";
+       var cs = oNode.childNodes;
+       var l = cs.length;
+       for (var i = 0; i < l; i++) {
+               switch (cs[i].nodeType) {
+                       case 1: //ELEMENT_NODE
+                               s += SortableTable.getInnerText(cs[i]);
+                               break;
+                       case 3: //TEXT_NODE
+                               s += cs[i].nodeValue;
+                               break;
+               }
+       }
+       return s;
+}
+
+SortableTable.prototype.getValueFromString = function (sText, sType) {
+       switch (sType) {
+               case "Number":
+                       return Number(sText);
+               case "CaseInsensitiveString":
+                       return sText.toUpperCase();
+               case "Date":
+                       var parts = sText.split("-");
+                       var d = new Date(0);
+                       d.setFullYear(parts[0]);
+                       d.setDate(parts[2]);
+                       d.setMonth(parts[1] - 1);
+                       return d.valueOf();
+       }
+       return sText;
+};
+
+SortableTable.prototype.getSortFunction = function (sType, nColumn) {
+       return function compare(n1, n2) {
+               if (n1.value < n2.value)
+                       return -1;
+               if (n2.value < n1.value)
+                       return 1;
+               return 0;
+       };
+};
+
+SortableTable.prototype.destroy = function () {
+       this.uninitHeader();
+       var win = this.document.parentWindow;
+       if (win && typeof win.detachEvent != "undefined") {     // only IE needs this
+               win.detachEvent("onunload", this._onunload);
+       }
+       this._onunload = null;
+       this.element = null;
+       this.tHead = null;
+       this.tBody = null;
+       this.document = null;
+       this._headerOnclick = null;
+       this.sortTypes = null;
+       this._asyncsort = null;
+       this.onsort = null;
+};
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/en.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/en.js
new file mode 100644 (file)
index 0000000..084bdc8
--- /dev/null
@@ -0,0 +1,21 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Al Rashid, http://alrashid.klokan.sk
+
+// FOR TRANSLATORS:
+//
+//   1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
+//      (at least a valid email address)
+//
+//   2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
+//      (if this is not possible, please include a comment
+//       that states what encoding is necessary.)
+
+InsertFile.I18N = {
+       "InsertFileTooltip"                             : "Insert link to file"
+};
+/*
+
+
+*/
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-de.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-de.php
new file mode 100644 (file)
index 0000000..ddcccd7
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+// $Id: lang-de.php,v 1.1 2006-10-02 05:37:06 shizuki Exp $
+/**
+* HTMLArea3 XTD addon - FileManager
+* Based on AlRashid's FileManager
+* @package Mambo Open Source
+* @Copyright © 2004 Bernhard Pfeifer aka novocaine
+* @ All rights reserved
+* @ Mambo Open Source is Free Software
+* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html
+* @version $Revision: 1.1 $
+**/
+$MY_MESSAGES = array();
+$MY_MESSAGES['extmissing'] = 'Bitte laden Sie eine Datei mit einer Dateiendung hoch, z. B. "bild.jpg".';
+$MY_MESSAGES['loading'] = 'Lade Dateien...';
+$MY_MESSAGES['uploading'] = 'Lade hoch...';
+$MY_MESSAGES['nopermtodeletefile'] = 'Keine ausreichende Berechtigung zum Löschen der Datei.';
+$MY_MESSAGES['filenotfound'] = 'Datei nicht gefunden.';
+$MY_MESSAGES['unlinkfailed'] = 'Löschen fehlgeschlagen.';
+$MY_MESSAGES['rmdirfailed'] = 'Verzeichnis löschen fehlgeschlagen.';
+$MY_MESSAGES['nopermtodeletefolder'] = 'Keine ausreichende Berechtigung zum Löschen des Verzeichnisses.';
+$MY_MESSAGES['foldernotfound'] = 'Verzeichnis nicht gefunden.';
+$MY_MESSAGES['foldernotempty'] = 'Verzeichnis ist nicht leer.\nBitte löschen Sie zuerst alle darin enthaltenen Dateien.';
+$MY_MESSAGES['nopermtocreatefolder'] = 'Keine ausreichende Berechtigung zum Erstellen eines Verzeichnisses.';
+$MY_MESSAGES['pathnotfound'] = 'Pfad nicht gefunden.';
+$MY_MESSAGES['foldernamemissing'] = 'Verzeichnisname fehlt.';
+$MY_MESSAGES['folderalreadyexists'] = 'Verzeichnis existiert bereits.';
+$MY_MESSAGES['mkdirfailed'] = 'Verzeichnis erstellen fehlgeschlagen.';
+$MY_MESSAGES['nopermtoupload'] = 'Keine ausreichende Berechtigung zum Hochladen von Dateien.';
+$MY_MESSAGES['extnotallowed'] = 'Dateien mit dieser Dateiendung sind nicht erlaubt.';
+$MY_MESSAGES['filesizeexceedlimit'] = 'Datei überschreitet die zulässige Kapazität.';
+$MY_MESSAGES['filenotuploaded'] = 'Datei wurde nicht hochgeladen.';
+$MY_MESSAGES['nofiles'] = 'Keine Dateien...';
+$MY_MESSAGES['configproblem'] = 'Konfigurationsproblem ';
+$MY_MESSAGES['deletefile'] = 'Datei löschen';
+$MY_MESSAGES['deletefolder'] = 'Verzeichnis löschen';
+$MY_MESSAGES['refresh'] = 'Aktualisieren';
+$MY_MESSAGES['folder'] = 'Verzeichnis';
+$MY_MESSAGES['type'] = 'Typ';
+$MY_MESSAGES['name'] = 'Name';
+$MY_MESSAGES['size'] = 'Grösse';
+$MY_MESSAGES['datemodified'] = 'Geändert am';
+$MY_MESSAGES['url'] = 'Pfad';
+$MY_MESSAGES['comment'] = 'Kommentar';
+$MY_MESSAGES['caption'] = 'Text';
+$MY_MESSAGES['upload'] = 'Hochladen';
+$MY_MESSAGES['insertfile'] = "Datei einfügen";
+$MY_MESSAGES['filemanager'] = "Datei Manager";
+$MY_MESSAGES['directory'] = "Verzeichnis";
+$MY_MESSAGES['enterurl'] = "Bitte geben Sie eine URL ein.";
+$MY_MESSAGES['entercaption'] = 'Bitte geben Sie einen Text für die Datei ein.';
+$MY_MESSAGES['inserticon'] = 'Icon für Dateityp hinzufügen';
+$MY_MESSAGES['insertsize'] = 'Angaben über Dateigrösse hinzufügen';
+$MY_MESSAGES['insertdate'] = 'Angaben über Änderungsdatum hinzufügen';
+$MY_MESSAGES['newfolder'] = 'Name des Verzeichnisses:';
+$MY_MESSAGES['cancel'] = 'Abbrechen';
+
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-en.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-en.php
new file mode 100644 (file)
index 0000000..dc751a7
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+/***********************************************************************
+** Title.........:    Insert File Dialog, File Manager
+** Version.......:    1.1
+** Author........:    Al Rashid <alrashid@klokan.sk>
+** Filename......:    lang-en.php (english language file)
+** URL...........:    http://alrashid.klokan.sk/insFile/
+** Last changed..:    8 Jun 2004
+***********************************************************************/
+$MY_MESSAGES = array();
+$MY_MESSAGES['extmissing'] = 'Only files with extensions are permited, e.g. "imagefile.jpg".';
+$MY_MESSAGES['loading'] = 'Loading files';
+$MY_MESSAGES['uploading'] = 'Uploading...';
+$MY_MESSAGES['nopermtodelete'] = 'No permission to delete file.';
+$MY_MESSAGES['filenotfound'] = 'File not found.';
+$MY_MESSAGES['unlinkfailed'] = 'Unlink failed.';
+$MY_MESSAGES['rmdirfailed'] = 'Rmdir failed.';
+$MY_MESSAGES['foldernotfound'] = 'Folder not found.';
+$MY_MESSAGES['nopermtocreatefolder'] = 'No permission to create folder.';
+$MY_MESSAGES['pathnotfound'] = 'Path not found.';
+$MY_MESSAGES['foldernamemissing'] = 'Folder name missing.';
+$MY_MESSAGES['folderalreadyexists'] = 'Folder already exists.';
+$MY_MESSAGES['mkdirfailed'] = 'Mkdir failed.';
+$MY_MESSAGES['nopermtoupload'] = 'No permission to upload.';
+$MY_MESSAGES['extnotallowed'] = 'Files with this extension are not allowed.';
+$MY_MESSAGES['filesizeexceedlimit'] = 'File exceeds the size limit';
+$MY_MESSAGES['filenotuploaded'] = 'File was not uploaded.';
+$MY_MESSAGES['nofiles'] = 'No files...';
+$MY_MESSAGES['configproblem'] = 'Configuration problem ';
+$MY_MESSAGES['delete'] = 'Delete';
+$MY_MESSAGES['folders'] = 'folder(s)';
+$MY_MESSAGES['files'] = 'file(s)';
+$MY_MESSAGES['refresh'] = 'Refresh';
+$MY_MESSAGES['folder'] = 'Folder';
+$MY_MESSAGES['type'] = '';
+$MY_MESSAGES['name'] = 'Name';
+$MY_MESSAGES['size'] = 'Size';
+$MY_MESSAGES['datemodified'] = 'Date Modified';
+$MY_MESSAGES['url'] = 'URL';
+$MY_MESSAGES['comment'] = 'Comment';
+$MY_MESSAGES['caption'] = 'Caption';
+$MY_MESSAGES['upload'] = 'Upload';
+$MY_MESSAGES['insertfile'] = "Insert File";
+$MY_MESSAGES['filemanager'] = "File manager";
+$MY_MESSAGES['directory'] = "Directory";
+$MY_MESSAGES['enterurl'] = "You must enter the URL";
+$MY_MESSAGES['entercaption'] = 'Please enter the caption text';
+$MY_MESSAGES['newfolder'] = 'New folder';
+$MY_MESSAGES['newfoldernamemissing'] = 'New folder name missing!';
+$MY_MESSAGES['renamefolder'] = 'New folder name:';
+$MY_MESSAGES['renamewarning'] = 'Warning!\n Renaming or moving folders and files will break existing links in your documents. Continue?';
+$MY_MESSAGES['renamefile'] = 'New file name:';
+$MY_MESSAGES['nopermtorename'] = 'No permission to rename files and folders.';
+$MY_MESSAGES['newfilenamemissing'] = 'New file name missing!';
+$MY_MESSAGES['filealreadyexists'] = 'File with specified new name already exists. File was not renamed/moved.';
+$MY_MESSAGES['folderalreadyexists'] = 'Folder with specified new name already exists. Folder was not renamed/moved.';
+$MY_MESSAGES['uploadfilealreadyexists'] = 'File already exists. File was not uploaded.';
+$MY_MESSAGES['cancel'] = 'Cancel';
+$MY_MESSAGES['ok'] = 'OK';
+$MY_MESSAGES['openfile'] = 'Open file in new window';
+$MY_MESSAGES['up'] = 'Up';
+$MY_MESSAGES['rename'] = 'Rename';
+$MY_MESSAGES['renamefailed'] = 'Rename failed';
+$MY_MESSAGES['move'] = 'Move';
+$MY_MESSAGES['nopermtomove'] = 'No permission to move files and folders.';
+$MY_MESSAGES['selectfolder'] = 'Choose directory to move selected folders and files to.';
+$MY_MESSAGES['ctrlshift'] = 'Use Ctrl and/or Shift to select multiple items.';
+$MY_MESSAGES['filename'] = 'File:';
+?>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-nl.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/lang/lang-nl.php
new file mode 100644 (file)
index 0000000..bfc5cf6
--- /dev/null
@@ -0,0 +1,55 @@
+<?php 
+/*********************************************************************** 
+** Title.........: Insert File Dialog, File Manager 
+** Version.......: 1.00 
+** Author........: Thomas van Ditzhuijsen, ditzhuijsen@hotmail.com 
+** Filename......: lang-nl.php 
+** Last changed..: 8 Jan 2004 
+dutch language file 
+***********************************************************************/ 
+$MY_MESSAGES = array(); 
+$MY_MESSAGES['extmissing'] = 'Het te upload bestand moet een extensie (iets achter de punt) hebben, bijv. "imagefile.jpg".'; 
+$MY_MESSAGES['loading'] = 'Bestanden worden geladen'; 
+$MY_MESSAGES['uploading'] = 'Uploaden...'; 
+$MY_MESSAGES['nopermtodeletefile'] = 'Je hebt niet de rechten om bestanden te verwijderen.'; 
+$MY_MESSAGES['filenotfound'] = 'Bestand niet gevonden.'; 
+$MY_MESSAGES['unlinkfailed'] = 'Verwijderen niet gelukt.'; 
+$MY_MESSAGES['rmdirfailed'] = 'Verwijderen van de map is niet gelukt.'; 
+$MY_MESSAGES['nopermtodeletefolder'] = 'Je hebt niet de rechten om een map te verwijderen.'; 
+$MY_MESSAGES['foldernotfound'] = 'map niet gevonden.'; 
+$MY_MESSAGES['foldernotempty'] = 'Folder is niet leeg. Verwijder alle bestanden aub eerst.'; 
+$MY_MESSAGES['nopermtocreatefolder'] = 'Je hebt niet de rechten om een folder te maken.'; 
+$MY_MESSAGES['pathnotfound'] = 'map niet gevonden.'; 
+$MY_MESSAGES['foldernamemissing'] = 'map naam ontbreekt.'; 
+$MY_MESSAGES['folderalreadyexists'] = 'map bestaat al.'; 
+$MY_MESSAGES['mkdirfailed'] = 'Het maken van de map is niet gelukt.'; 
+$MY_MESSAGES['nopermtoupload'] = 'Je hebt niet de rechten om te uploaden.'; 
+$MY_MESSAGES['extnotallowed'] = 'Bestanden met deze extensie zijn niet toegestaan.'; 
+$MY_MESSAGES['filesizeexceedlimit'] = 'Bestand is groter dan de maximale bestands grootte.'; 
+$MY_MESSAGES['filenotuploaded'] = 'Bestand is niet geupload.'; 
+$MY_MESSAGES['nofiles'] = 'Geen bestanden...'; 
+$MY_MESSAGES['configproblem'] = 'Configuratie probleem '; 
+$MY_MESSAGES['deletefile'] = 'Verwijder bestand'; 
+$MY_MESSAGES['deletefolder'] = 'Verwijdermap'; 
+$MY_MESSAGES['refresh'] = 'Vernieuw'; 
+$MY_MESSAGES['folder'] = 'Map'; 
+$MY_MESSAGES['type'] = ''; 
+$MY_MESSAGES['name'] = 'Naam'; 
+$MY_MESSAGES['size'] = 'Grootte'; 
+$MY_MESSAGES['datemodified'] = 'Datum gewijzigd'; 
+$MY_MESSAGES['url'] = 'URL'; 
+$MY_MESSAGES['comment'] = 'Commentaar'; 
+$MY_MESSAGES['caption'] = 'Titel'; 
+$MY_MESSAGES['upload'] = 'Upload'; 
+$MY_MESSAGES['insertfile'] = "Voeg bestand toe"; 
+$MY_MESSAGES['filemanager'] = "Bestands beheer"; 
+$MY_MESSAGES['directory'] = "map"; 
+$MY_MESSAGES['enterurl'] = "Je moet een URL invoeren"; 
+$MY_MESSAGES['entercaption'] = 'Type aub een Titel tekst'; 
+$MY_MESSAGES['inserticon'] = 'Insert filetype icon';
+$MY_MESSAGES['insertsize'] = 'Insert file size';
+$MY_MESSAGES['insertdate'] = 'Insert file modification date';
+$MY_MESSAGES['newfolder'] = 'New folder name:';
+
+
+?> 
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/move.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/InsertFile/move.php
new file mode 100644 (file)
index 0000000..0ce7bf6
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+/***********************************************************************
+** Title.........:    Insert File Dialog, File Manager
+** Version.......:    1.1
+** Authors.......:    Al Rashid <alrashid@klokan.sk>
+**                    Xiang Wei ZHUO <wei@zhuo.org>
+** Filename......:    move.php
+** URL...........:    http://alrashid.klokan.sk/insFile/
+** Last changed..:    23 July 2004
+***********************************************************************/
+
+require('config.inc.php');
+require('functions.php');
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+        <head>
+        <title>Folder dialog</title>
+        <?php
+                echo '<meta http-equiv="content-language" content="'.$MY_LANG.'" />'."\n";
+                echo '<meta http-equiv="Content-Type" content="text/html; charset='.$MY_CHARSET.'" />'."\n";
+                echo '<meta name="author" content="AlRashid, www: http://alrashid.klokan.sk; mailto:alrashid@klokan.sk" />'."\n";
+        ?>
+
+<style type="text/css">
+ /*<![CDATA[*/
+ html, body {  background-color: ButtonFace;  color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; margin: 0; padding: 0;}
+body { padding: 5px; }
+ .title { background-color: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px  solid black; letter-spacing: 2px;}
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+.buttons { width: 70px; text-align: center; }
+form { padding: 0px;  margin: 0;}
+form .elements{
+        padding: 10px; text-align: center;
+}
+ /*]]>*/
+ </style>
+        <script type="text/javascript" src="js/popup.js"></script>
+        <script type="text/javascript">
+        /*<![CDATA[*/
+                window.resizeTo(550, 200);
+
+                  function onCancel() {
+                        __dlg_close(null);
+                        return false;
+                }
+
+                function onOK() {
+                        // pass data back to the calling window
+                        var param = new Object();
+                        var selection = document.forms[0].newpath;
+                        var newDir = selection.options[selection.selectedIndex].value;
+                        param['newpath'] = newDir;
+                          __dlg_close(param);
+                          return false;
+                }
+
+                function Init() {
+                        __dlg_init();
+                }
+
+                function refreshDirs() {
+                        var allPaths = document.forms[0].newpath.options;
+                        var fields = ["/" <?php dirs($MY_DOCUMENT_ROOT,'');?>];
+                        for(i=0; i<fields.length; i++) {
+                                var newElem =        document.createElement("OPTION");
+                                var newValue = fields[i];
+                                newElem.text = newValue;
+                                newElem.value = newValue;
+                                allPaths.add(newElem);
+                        }
+                }
+/*]]>*/
+</script>
+</head>
+<body onload="Init()">
+        <div class="title"><?php echo $MY_MESSAGES['selectfolder']; ?></div>
+        <form action="">
+                <div class="elements">
+                        <label for="newpath">
+                                        <?php echo $MY_MESSAGES['directory']; ?>
+                        </label>
+                        <select name="newpath" id="newpath" style="width:35em">
+                        </select>
+                </div>
+                <div style="text-align: right;">
+                         <hr />
+                        <button type="button" class="buttons" onclick="return onCancel();"><?php echo $MY_MESSAGES['cancel']; ?></button>
+                        <button type="button" class="buttons" onclick="return onOK();"><?php echo $MY_MESSAGES['ok']; ?></button>
+                </div>
+        </form>
+        <script type="text/javascript">
+        /*<![CDATA[*/
+                refreshDirs();
+        /*]]>*/
+        </script>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/editor_plugin.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/editor_plugin.js
new file mode 100644 (file)
index 0000000..ab87a2c
--- /dev/null
@@ -0,0 +1,31 @@
+/* Import theme specific language pack */
+tinyMCE.importPluginLanguagePack('filemanager', 'en');
+
+function TinyMCE_filemanager_getControlHTML(control_name) {
+    switch (control_name) {
+        case "filemanager":
+            return '<img id="{$editor_id}_filemanager" src="{$pluginurl}/images/filemanager.gif" title="{$lang_insert_filemanager}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFilemanager\');" />';
+    }
+    return "";
+}
+
+/**
+ * Executes the mceFilemanager command.
+ */
+function TinyMCE_filemanager_execCommand(editor_id, element, command, user_interface, value) {
+    // Handle commands
+    switch (command) {
+        case "mceFilemanager":
+            var template = new Array();
+            template['file']   = '../../plugins/filemanager/InsertFile/insert_file.php'; // Relative to theme
+            template['width']  = 660;
+            template['height'] = 500;
+
+            tinyMCE.openWindow(template, {editor_id : editor_id});
+       return true;
+   }
+   // Pass to next handler in chain
+   return false;
+}
+
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/images/filemanager.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/images/filemanager.gif
new file mode 100644 (file)
index 0000000..4a9fcc4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/images/filemanager.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/langs/en.js
new file mode 100644 (file)
index 0000000..5ab884e
--- /dev/null
@@ -0,0 +1,3 @@
+// UK lang variables
+
+tinyMCELang['lang_insert_filemanager'] = 'Insert File Link';
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/filemanager/readme.txt
new file mode 100644 (file)
index 0000000..fd3a4cf
--- /dev/null
@@ -0,0 +1,34 @@
+ file Manager plugin for TinyMCE
+---------------------------------
+
+Installation instructions:
+  * Copy the ibrowser directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
+  * Add plugin to TinyMCE plugin option list example: plugins : "filemanager".
+  * Add the ibrowser button name to button list, example: theme_advanced_buttons3_add : "filemanager".
+  * Modify the ..../jscripts/tiny_mce/plugins/filemanager/insertfile/config.inc.php
+
+Configuration example:
+$MY_DOCUMENT_ROOT     = 'C:/appserv/www/tinymce142/resource/insfile'; //* system path to the directory you want to manage the files and folders
+$MY_BASE_URL          = "http://localhost/tinymce142/resource/insfile";
+$MY_URL_TO_OPEN_FILE  = "http://localhost/tinymce142/resource/insfile"; 
+$MY_ALLOW_EXTENSIONS = array('html', 'doc', 'xls', 'txt', 'gif', 'jpeg', 'jpg', 'png', 'pdf', 'zip', 'pdf');
+$MY_DENY_EXTENSIONS  = array('php', 'php3', 'php4', 'phtml', 'shtml', 'cgi', 'pl');
+$MY_LIST_EXTENSIONS  = array('html', 'doc', 'xls', 'txt', 'gif', 'jpeg', 'jpg', 'png', 'pdf', 'zip', 'pdf');
+$MY_ALLOW_CREATE     = true; // Boolean (false or true) whether creating folders is allowed or not.
+$MY_ALLOW_DELETE     = true; // Boolean (false or true) whether deleting files and folders is allowed or not.
+$MY_ALLOW_RENAME     = true; // Boolean (false or true) whether renaming files and folders is allowed or not.
+$MY_ALLOW_MOVE       = true; // Boolean (false or true) whether moving files and folders is allowed or not.
+$MY_ALLOW_UPLOAD     = true; // Boolean (false or true) whether uploading files is allowed or not.
+
+
+
+Initialization example:
+  tinyMCE.init({
+    theme : "advanced",
+    elements: "ta",
+    mode : "exact",
+    plugins : "filemanager",
+    theme_advanced_buttons3_add : "filemanager"
+  });
+
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/config/config.inc.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/config/config.inc.php
new file mode 100644 (file)
index 0000000..49f7f1a
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - configuration
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.3                   Date: 08/12/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // INSTRUCTIONS:
+       //
+       //      Please make sure that all of the following directories have writing permissions:
+       //      1. image libraries (chmod 0755 or 0777)
+       //      2. ibrowser/scripts/phpThumb/cache  (chmod 0755 or 0777)
+       //      3. ibrowser/temp (chmod 0755 or 0777)
+       
+       //  see readme.txt for further instructions     
+       
+       //-------------------------------------------------------------------------     
+
+
+// some changes to work fine with nucleus
+$i   = basename ($_SERVER['PHP_SELF']);
+$rel = ($i == 'ibrowser.php' || $i == 'index.php') ? '' : '../';
+include ($rel.'../../../../../config.php');
+
+$media_path = str_replace ($_SERVER["DOCUMENT_ROOT"],'',$DIR_MEDIA);
+
+
+       $cfg['lang']            = 'en';                                                                                                         // default language; e.g. 'en'          
+       $cfg['valid']           = array('gif', 'jpg', 'jpeg', 'png');                                           // valid extentions for image files     
+       $cfg['upload']          = true;                                                                                                         // allow uploading of image: 'true' or 'false'
+       $cfg['umax']            = 1;                                                                                                            // max. number of image files to be uploaded; default: 1; value > 1
+       $cfg['create']          = true;                                                                                                         // allow to create directory: 'true' or 'false'
+       $cfg['delete']          = true;                                                                                                         // allow deletion of image: 'true' or 'false'   
+       $cfg['rename']          = true;                                                                                                         // allow renaming of image: 'true' or 'false'
+       $cfg['attrib']          = false;                                                                                                        // allow changing image attributes: 'true' or 'false'; default = false;         
+       $cfg['furl']            = true;                                                                                                         // default: true; if set to true, full url incl. domain will be added to image src
+       $cfg['random']      = '&w=150&h=150&zc=1';                                                                              // random image parameters (see phpThumb readme for more information)
+       $cfg['style'] = array (                                                                                                                 // css styles for images ('class' => 'descr'); - please make sure that the classes exist in your css file
+                       'left'                          => 'align left',                                                                        // image: float left
+                       'right'                         => 'align right',                                                                       // image: float right
+                       'capDivRightBrd'        => 'align right, border',                                                       // caption: float right with border
+                       'capDivRight'           => 'align right',                                                                       // caption: float right
+                       'capDivLeftBrd'         => 'align left, border',                                                        // caption: float left with border
+                       'capDivLeft'            => 'align left',                                                                        // caption: float left
+       );
+       $cfg['list']            = true;                                                                                                         // default: true; if set to true, image selection will be shown as list; if set to false, image selection will show thumbnails
+       //-------------------------------------------------------------------------
+       // set image formats    
+       $cfg['thumbs'] = array (                                                                                                                        
+               /* array (                                                                                                                                      //                              settings                                                                                                                                        
+                       'size'          => '*',                                                                                                         //                              'size' = if set to '*' or '0', no image resizing will be done, otherwise set to desired width or height, e.g. 640
+                       'ext'           => '*',                                                                                                         //                              'ext'  = if set to '*' width or height will be set as identifier. If set to '', no identifier will be set.
+                       'crop'          => false,                                                                                                       //                              'crop' = if set to true, image will be zoom cropped resulting in a square image                       
+               ), */
+               /*      array (                                                                                                                                         
+                       'size'          => 1280,                                                                                                
+                       'ext'           => '*',
+                       'crop'          => false,
+               ),
+               array (
+                       'size'          => 1024,                                                                                                
+                       'ext'           => '*',
+                       'crop'          => false,
+               ),
+               array (
+                       'size'          => 640,                                                                                         
+                       'ext'           => '*',
+                       'crop'          => false,
+               ),
+               array (
+                       'size'          => 512,                                                                                         
+                       'ext'           => '*',
+                       'crop'          => false,
+               ), */
+               array (
+                       'size'          => 400,                                                                                         
+                       'ext'           => '*',
+                       'crop'          => false,
+               ),
+               array (
+                       'size'          => 400,                                                                                         
+                       'ext'           => '*',
+                       'crop'          => true,
+               ),
+               array (
+                       'size'          => 120,                                                                                         
+                       'ext'           => '*',
+                       'crop'          => false,
+               ),
+/*             array (
+                       'size'          => 75,                                                                                          
+                       'ext'           => '*',
+                       'crop'          => false,
+               ), */
+       );
+       //-------------------------------------------------------------------------
+       // use static image libraries   
+       $cfg['ilibs'] = array (                                                                                                                         // image library path with slashes; absolute to root directory - please make sure that the directories have write permissions   
+               array (
+                       'value'         => $media_path,                                 
+                       'text'          => 'Media',
+               ),      
+       );
+       //-------------------------------------------------------------------------
+       // use dynamic image libraries - if $cfg['ilibs_inc'] is set, static image libraries above are ignored
+       // image directories to be scanned
+       $cfg['ilibs_dir']          = array('$media_path');                                                      // image library path with slashes; absolute to root directory - please make sure that the directories have write permissions
+       $cfg['ilibs_dir_show'] = true;                                                                                                          // show main library (true) or only sub-dirs (false)
+       //$cfg['ilibs_inc']      = realpath(dirname(__FILE__) . '/../scripts/rdirs.php');       // file to include in ibrowser.php (useful for setting $cfg['ilibs] dynamically
+       //-------------------------------------------------------------------------
+       // you shouldn't need to make any changes to the config variable beyond this line!
+       //-------------------------------------------------------------------------
+       $osslash = ((strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') ? '\\' : '/');
+       $cfg['ver']             = '1.3 - build 09122005';                                                                               // iBrowser version     
+       $cfg['root_dir']        = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace($osslash, '/', dirname(__FILE__))));
+       //$cfg['root_dir']    = ((@$_SERVER['DOCUMENT_ROOT'] && file_exists(@$_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'])) ? $_SERVER['DOCUMENT_ROOT'] : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace('\\', '/', realpath('.'))));
+       $cfg['base_url']        = 'http://' . $_SERVER['SERVER_NAME'];                                                  // base url; e.g. 'http://localhost/'   
+       $cfg['main_dir']        = dirname($_SERVER['PHP_SELF']);                                                                // iBrowser main dir; e.g. '/home/domain/public_html/ibrowser/' 
+       $cfg['scripts']         = $cfg['main_dir'] . '/scripts/';                                                               // scripts dir; e.g. '/home/domain/public_html/ibrowser/scripts/'       
+       $cfg['pop_url']         = $cfg['scripts'] . 'popup.php';                                                                // popup dir; relative to 'script' dir  
+       $cfg['temp']            = realpath(dirname(__FILE__) . '/../temp');                                     // temp dir; e.g. 'D:/www/temp' 
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/config/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/config/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/css/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/css/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/css/style.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/css/style.css
new file mode 100644 (file)
index 0000000..cb166ef
--- /dev/null
@@ -0,0 +1,655 @@
+/* ================================================
+// PHP image browser - iBrowser 
+// ================================================
+// iBrowser - style definitions
+// ================================================
+// Developed: net4visions.com
+// Copyright: net4visions.com
+// License: GPL - see license.txt
+// (c)2005 All rights reserved.
+// ================================================
+// Revision: 1.0                   Date: 08/03/2005
+// ================================================*/
+
+body {
+   margin: 5px;
+   padding: 0px;
+   color: #333333;
+       background-color: #efefef;
+       scrollbar-3dlight-color:#f5f5f5;
+       scrollbar-arrow-color:#666666;
+       scrollbar-base-color:#F0F0EE;
+       scrollbar-darkshadow-color:#DDDDDD;
+       scrollbar-face-color:#E0E0DD;
+       scrollbar-highlight-color:#F0F0EE;
+       scrollbar-shadow-color:#F0F0EE;
+       scrollbar-track-color:#F5F5F5;
+}
+/* ---------------------------------------------------------------
+- font settings
+*/
+body, form, table {
+       font-size:10px; 
+       font-family:Verdana,Arial,Helvetica,sans-serif;
+       font-weight: normal;    
+}
+body {
+       color: #000000;
+       background-color: #efefef;
+       filter:progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#D7D7D7,endcolorstr=#FCFBFF);    
+}
+body p {
+       line-height: 18px;
+       margin-top: 0px;
+}
+/* ---------------------------------------------------------------
+- links
+*/
+a:link, a:visited, a:active {
+       color: #666666;
+       background-color: transparent;
+}
+a:hover {
+       color: #000000;
+       background-color: transparent;
+       text-decoration: none;
+}
+/* ---------------------------------------------------------------
+- page layout
+*/
+/* outer div */
+#outerDivWrap {        
+       width: 640px;
+}
+/* main- and sub content */
+#mainDivWrap {
+       margin-left: 110px;
+}
+/* menu- and main div */
+#menuDiv, #mainDiv { /* Firefox */
+       min-height: 320px;      
+}
+*html #menuDiv, *html #mainDiv { /* IE */
+       height: 320px;
+}
+/* footer div */
+#ftDivWrap {   
+       margin-left: 110px;     
+       margin-top: 10px;
+       padding: 10px;
+}
+#ftDiv {
+       text-align: center;
+}
+/* menu wrap */
+#menuDivWrap { 
+       width: 100px;   
+       position: absolute;
+       z-index:1;
+}
+/* border and padding */
+div.brdPad {
+       padding: 10px;
+       border: 1px solid #003399;      
+}
+/* headers */
+#outerDivWrap .headerDiv {
+       background-image:url(../images/buttonbar.gif);
+       background-repeat:repeat-x;
+       color: #003399;
+       background-color: #96b3de; 
+}
+#menuDivWrap .headerDiv, #mainDivWrap .headerDiv, #dialog .headerDiv {
+       background-image:url(../images/buttonbar_gs.gif);
+       background-repeat:repeat-x;
+       color: #003399;
+       background-color: #ff9900;              
+}
+div.headerDiv {        
+       padding-left: 10px;
+       padding-right: 10px;
+       border: 1px solid #003399;
+       border-bottom: none;
+       line-height: 22px;      
+       font-weight: bold;
+       vertical-align: middle; 
+}
+/* columns */
+div.colLeft {          
+       float: left;
+       width: 300px;   
+       margin-right: 10px;     
+}
+div.colRight { 
+       margin-left: 310px;
+       width: 176px;   
+}
+* html div.colLeft {
+       margin-right: 7px;
+}
+* html div.colRight {
+       margin-left: 307px;
+}
+/* float wrap */
+div.floatWrap {
+       display: inline-block;
+       margin-bottom: 10px;    
+}
+/* IE Win only Hack \*/
+* html div.floatWrap {
+       height: 1%;
+}
+div.floatWrap {
+       display: block;
+}
+/* end IE Hack */
+div.floatWrap:after {
+       content: ".";
+       display: block;
+       height: 0px;
+       clear: both;
+       visibility: hidden;     
+}
+/* ---------------------------------------------------------------
+- main menu buttons
+*/
+#menuBarDiv {
+       color:#000000;  
+       background-color:transparent;
+       border-top:1px solid threedshadow;
+       border-bottom:1px solid threedhighlight;
+       border-left:1px solid threedshadow;
+       border-right:1px solid threedhighlight; 
+}
+#menuBarDiv ul {
+       list-style-type:none;
+       margin: 0px;
+       padding: 0px;   
+}
+#menuBarDiv li {       
+       text-align: center;
+       height: 75px;
+       cursor: pointer;        
+}
+#menuBarDiv li img {
+       margin-top: 10px;       
+}
+#menuBarDiv li div {
+       margin-bottom: 0px;     
+}
+/* ---------------------------------------------------------------
+- menu buttons
+*/
+li.btnUp {     
+       border: 1px solid threedface;
+       /* background-color: threedface; */
+       background-color: #efefef;
+       filter:progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#FCFBFF,endcolorstr=#D7D7D7);    
+}
+li.btnDown {   
+       border-top: 1px solid buttonshadow;
+       border-left: 1px solid buttonshadow;
+       border-bottom: 1px solid buttonhighlight;
+       border-right: 1px solid buttonhighlight;
+       background-color: #efefef;      
+       filter:progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#D7D7D7,endcolorstr=#FCFBFF);    
+}
+li.btnOver {   
+       border-bottom: 1px solid buttonshadow;
+       border-right: 1px solid buttonshadow;
+       border-top: 1px solid buttonhighlight;
+       border-left: 1px solid buttonhighlight;
+       background-color: threedface;   
+       filter:progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#D7D7D7,endcolorstr=#FCFBFF);    
+}
+/* ---------------------------------------------------------------
+- form settings
+*/
+form, fieldset, label, input, select {
+       font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+       font-weight: normal;
+}
+fieldset {
+       border: none;
+       padding: 0px;
+       margin: 0px;
+}
+div.rowDiv {
+       clear: left;
+       float: none;            
+}
+div.rowDiv label, div.rowDiv input, div.rowDiv select, span.frmText {
+       display: block;
+       float: left;
+       margin-bottom: 2px;
+}
+div.rowDiv label {
+       width: 100px;
+       margin-right: 5px;
+       padding-top: 3px;
+       padding-bottom: 3px;    
+}
+div.rowDiv label span.title {
+       color: #666666;
+       background-color:transparent;
+       font-weight: bold;
+}
+div.rowDiv input, div.rowDiv select {
+       border: 1px solid #cccccc;
+       color: #333333;
+       background-color: #ffffff;
+}
+div.rowDiv input {
+       height: 14px;
+}
+* html div.rowDiv input {      
+       height: 19px;           
+}
+div.rowDiv input.chkBox {
+       border: none;
+       background-color: transparent;
+}
+* html div.rowDiv input.chkBox {
+       margin-left: -3px;
+}
+div.rowDiv input.readonly {
+       color: #666666;
+       background-color: #efefef;      
+       border: 1px solid #cccccc;      
+}
+div.rowDiv input[type="file"] { /* firefox */
+       background-color: #efefef;
+       height: auto;   
+}
+div.rowDiv span.frmText {
+       margin-left: 5px;
+       padding-top: 3px;
+       padding-bottom: 3px;
+}
+div.rowDiv input.fldlg, div.rowDiv select.fldlg {
+       width: 355px;
+}
+* html div.rowDiv input.fldlg, * html div.rowDiv select.fldlg {
+       width: 357px;
+}
+div.rowDiv input.fldmlg {
+       width: 334px;
+}
+*html div.rowDiv input.fldmlg {
+       width: 336px;
+}
+div.rowDiv input.fldm, div.rowDiv select.fldm {
+       width: 98px;
+}
+*html div.rowDiv input.fldm, *html div.rowDiv select.fldm {
+       width: 100px;
+}
+div.rowDiv input.fldsm, div.rowDiv select.fldsm {
+       width: 58px;
+}
+* html div.rowDiv input.fldsm, * html div.rowDiv select.fldsm {
+       width: 60px;
+}
+/* save/cancel buttons */
+input.btn {    
+       width: 70px;
+       color: #666666;
+       border: 1px solid #cccccc;      
+       cursor: pointer;        
+       padding-top: 1px;
+       padding-bottom: 1px;    
+       filter:progid:dximagetransform.microsoft.gradient(gradienttype=0,startcolorstr=#D7D7D7,endcolorstr=#FCFBFF);
+       margin-left: 0px;       
+}
+/* ---------------------------------------------------------------
+- preview frames
+*/
+#inPrevDiv, #atPrevDiv {
+       width: 150px;
+       height: 150px;  
+       margin: 0px;
+       border: 1px solid #cccccc;      
+       color: #333333;
+       background-color: #ffffff;
+       overflow: hidden;       
+}
+/* attributes preview */
+#atPrevDiv {
+       line-height: normal;    
+}
+#atPrevDiv p {
+       padding: 5px;
+       margin: 0px;
+       font-size: 8px; 
+       line-height: normal;
+}
+* html #inPrevDiv, * html #atPrevDiv {
+       float: left;
+}
+/* ---------------------------------------------------------------
+- image selection
+*/
+#inSelDiv {
+       width: 274px;
+       height: 150px;  
+       margin: 0px;
+       border: 1px solid #cccccc;      
+}
+/* ---------------------------------------------------------------
+- image list (frame)
+*/
+div#iselDiv { /* IE, Firefox */
+       color: #000000; 
+       background-color: #ffffff;      
+       margin: 0px;
+       height: 150px;
+       width: 274px;
+       overflow: auto; 
+}
+* html div#iselDiv {
+       margin-left: -1px;
+}
+div#iselDiv ul {
+       white-space: nowrap;
+       line-height: 12px;
+       list-style: none;
+       cursor: pointer;
+       margin: 0px;
+       padding: 0px;
+       margin-top: 2px;        
+       margin-bottom: 2px;     
+}
+li.cimgover {
+       color: #000000;
+       background-color: #e4e4e4;
+}
+li.cimgout {
+       color: #000000;
+       background-color: #ffffff;
+}
+li.cimgdown {
+       color: #000000;
+       background-color: #e4e4e4;
+}
+li.cimgup {
+       color: #000000;
+       background-color: #ffffff;
+}
+/* ---------------------------------------------------------------
+- select image formats
+*/
+#fmtDiv {      
+       margin-top: 0px;
+       margin-bottom: 0px;
+       margin-right: 0px;      
+       width: 357px;
+       height: auto;   
+       clear: none;
+       float: left;
+}
+#fmtDiv div {
+       float:left;
+       clear: none;
+       margin-right: 10px;
+       margin-bottom: 5px;
+       white-space: nowrap;    
+       width: 90px;
+       display: block; 
+       overflow: hidden;       
+}
+#fmtDiv input.chkBox { 
+       margin-left: 0px;       
+}
+* html #fmtDiv input.chkBox {
+       margin-left: -3px;
+}
+#fmtDiv img {
+       cursor: pointer;
+       margin-left: 5px; 
+}
+#fileDiv {
+       margin-top: 10px;
+}
+/* ---------------------------------------------------------------
+- load message
+*/
+#dialogLoadMessage {
+       position:absolute; 
+       z-index:1000; 
+       display:block;
+       width:100%; 
+       height:100%;
+}
+#loadMessage {
+       background-color:#96b3de; 
+       border:1px solid #003399; 
+       padding: 10px; 
+       width: 150px; 
+       color:#ffffff; 
+       font-family: verdana,arial,helvetica,sans-serif; 
+       font-size:12px; 
+       font-weight:bold
+}
+/* ---------------------------------------------------------------
+- info div
+*/
+#infoDiv {     
+       position: absolute;     
+       width:140px;    
+       z-index:1;              
+       left: 0px;
+       top: 0px;
+       border: 1px solid #cccccc;
+       color: #000000;
+       background-color: #f1f1f1;
+       padding: 5px;
+       font-size: 9px; 
+       filter:alpha(opacity=90); 
+       -moz-opacity:0.9;
+}
+* html div#infoDiv {
+       width: 150px;
+}
+#infoDiv div { 
+       clear: both;
+       margin-bottom: 2px;     
+}
+#infoDiv label  {
+       width: 55px;
+       display: block; 
+       float: left;
+       overflow: hidden;       
+       padding: 0px;   
+}
+#infoDiv span {
+       width: 75px;
+       display: block; 
+       text-align: right;      
+       overflow: hidden;       
+}
+/* ---------------------------------------------------------------
+- popupWrap
+*/
+div#poDelDiv {
+       clear: left;
+}
+div.poPrevDiv {
+       background-color: #ffffff;
+       border: 1px solid #cccccc;      
+       width: 80px;
+       height: 60px;
+       float: right;   
+       overflow: hidden;
+       margin-bottom: 2px;     
+}
+/* ---------------------------------------------------------------
+- version info
+*/
+span.ver {
+       font-size: 9px;
+       color: #adadad;
+       background-color: transparent;
+}
+/* ---------------------------------------------------------------
+- show/hide 
+*/
+.showit {
+       display: inline-block;
+}
+.hideit {
+       display: none;
+}
+/* ---------------------------------------------------------------
+- padding
+*/
+.pad5 {
+       padding-left: 5px;
+}
+.pad10 {
+       padding-left: 10px;
+}
+.pad20 {
+       padding-left: 20px;
+}
+.pad30 {
+       padding-left: 30px;
+}
+/* ---------------------------------------------------------------
+- margin
+*/
+.mtop5 {
+       margin-top: 5px;
+}
+.mtop10 {
+       margin-top: 10px;
+}
+.mtop15 {
+       margin-top: 15px;
+}
+.mbottom5 {
+       margin-bottom: 5px;
+}
+/* ---------------------------------------------------------------
+- clear floats
+*/
+.clrFloat {
+       clear: both;    
+       visibility: hidden;     
+}
+.clrFloatRight {
+       clear: right;
+       visibility: hidden;
+}
+/* ---------------------------------------------------------------
+- image buttons
+*/
+div.btnRight { 
+       float: right;   
+}
+div.btnRight img {
+       cursor: pointer;
+       margin-left: 5px;
+       margin-top: 1px;                
+}
+/* - help button - */
+div.btnRight img.hlpBtn {
+       cursor: help;
+       margin-left: 8px;       
+}
+div.btnRight span img {
+       margin-bottom: 5px;     
+}
+/* ---------------------------------------------------------------
+- image orientation
+*/
+img.left {
+       float: left;
+       margin-bottom: 5px;
+       margin-right: 5px;
+}
+img.right {
+       float: right;
+       margin-bottom: 5px;
+       margin-left: 5px;
+}
+/* --------------------------------------------------------------- 
+- symbols (special characters
+*/
+.charmap, .charmapOver {
+       color: #000000;
+       border: 1px solid #cccccc;      
+       cursor: pointer;
+       text-align: center;
+       vertical-align: middle; 
+}
+.charmapOver {
+       border: 1px solid #ff9900;      
+       background-color: #efefef;
+}
+a.charmap {
+       color: #000000;
+       text-decoration: none
+}
+/* - character preview - */
+td.charPrev {
+        font-size: 25px;
+        height: 60px;
+        background-color: #ffffff;
+        border: 1px solid #cccccc;
+        text-align: center;
+        vertical-align: middle;
+}
+/* --------------------------------------------------------------- 
+- hilight color
+*/
+.hilight {
+       color: #FF9933;
+}
+/* --------------------------------------------------------------- 
+- image caption
+*/
+div.capDivRightBrd {
+       float: right;
+       border: 1px solid #666666;
+       background-color: #efefef;
+       padding: 5px;   
+       height: auto;
+       margin-left: 10px;
+       margin-bottom: 5px;
+}
+div.capDivRight {
+       float: right;
+       padding: 5px;   
+       height: auto;
+       margin-left: 10px;
+       margin-bottom: 5px;
+}
+div.capDivLeftBrd {
+       float: left;
+       border: 1px solid #666666;
+       background-color: #efefef;
+       padding: 5px;   
+       height: auto;
+       margin-right: 10px;
+       margin-bottom: 5px;
+}
+div.capDivLeft {
+       float: left;
+       padding: 5px;   
+       height: auto;
+       margin-right: 10px;
+       margin-bottom: 5px;
+}
+div p.caption {
+       font-family: Geneva, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+       text-align: center;     
+       line-height: 12px;      
+       color: #333333;
+       background-color: transparent;
+       margin: 0px;
+       margin-top: 5px;        
+       padding: 0px;   
+}
+/* EOF STYLES */
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/changelog.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/changelog.txt
new file mode 100644 (file)
index 0000000..e165b8c
--- /dev/null
@@ -0,0 +1,126 @@
+09/12/2005 - release of iBrowser V 1.3 build 09122005
+- fixed an issue with the full size preview popup
+- updated phpThumb to latest version
+
+08/12/2005 - release of iBrowser V 1.3 build 08122005
+
+- fixed some issues with German umlauts in alert boxes (escapeHTML added)
+
+08/06/2005 - release of iBrowser V 1.3 build 08062005
+
+- fixed some issues when iBrowser was used together with iManager
+- added reset of width and height when switched to random
+- language pack added: french - provided by Gazou
+- language pack added: german - provided by Schnappi
+- language pack added: spanish - provided by Diego
+
+08/05/2005 - release of iBrowser V 1.3 build 08052005
+
+- updated phpThumb to V 1.6 - please see phpThumb changelog for details
+- simplified the WYSIWYG editor interface files
+- added interface file for the HTMLarea editor
+- added random image - parameters: $cfg['random'];
+  please see phpThumb readme for detailed settings
+- added image caption function
+
+07/07/2005 - release of iBrowser V 1.2 build 07072005
+
+- image selection: added a button to switch between thumbnail- and list view
+- added message when uploading image
+
+06/28/2005 - release of iBrowser V 1.2 build 06282005
+
+- fixed an issue with the full size preview window
+- fixed an issue with the tinyMCE file and the 'onclick' event
+- fixed an issue with all the interface files if iBrowser is used together with iManager
+
+06/23/2005 - release of iBrowser V 1.2 build 06232005
+
+- changed tinyMCE file to be compatible with V 1.45
+  if you like to use iBrowser with an earlier version of tinyMCE, please change 
+  'urlconverter_callback' to 'urlconvertor_callback' in the editor_plugin.js file
+- language pack added: danish - provided by Kim Michael Nielsen
+
+06/14/2005 - release of iBrowser V 1.2 build 06142005
+
+- some layout changes
+- added $cfg['list'] parameter (default = true); if set to false, image selection dropdown will show thumbnail instead   of image list
+- some code simplifications
+- some bug fixes
+- added rotating function while uploading files
+- fixed an issue with the language class - thanks to René de Kat and Henry-Paul Benveniste
+- fixed some upload issues when image is smaller than pre-defined size
+
+--------------------------------------
+06/07/2005 - release of iBrowser V 1.1 build 06072005
+
+- language pack added: simplyfied chinese - provided by cube316
+
+--------------------------------------
+06/01/2005 - release of iBrowser V 1.1 build 06012005
+
+- language pack added: dutch - provided by René de Kat
+- fixed a bug when $cfg['upload'] was set to 'false'; thanks to - René de Kat
+- fixed the appearance of the file div although, all file functions were set to false
+- fixed some minor bugs if $cfg[''delete'] and $cfg['rename'] were set to false
+
+--------------------------------------
+05/27/2005 - release of iBrowser V 1.1 build 05272005
+
+- updated phpThumb to 1.5.4
+- changed readme file for SPAW installation
+
+--------------------------------------
+05/24/2005 - release of iBrowser V 1.1 build 05242005
+
+- rewrote the uploading procedure, allowing a user to set multiple 
+  images to be created while uploading
+- fixed an issue with the renaming of images
+
+--------------------------------------
+05/19/2005 - release of iBrowser V 1.1 build 05192005
+
+- added interface file for Xinha
+- fixed create directory procedure
+
+--------------------------------------
+05/15/2005 - release of iBrowser V 1.1 build 05152005
+
+- added interface file for FCKeditor
+
+--------------------------------------
+05/13/2005 - release of iBrowser V 1.1 build 05132005
+
+- fixed an issue with the popup window
+- resize window fixed when clicking upload button
+
+--------------------------------------
+05/10/2005 - release of iBrowser V 1.1 build 05102005
+
+- fixed some minor path issues
+- fixed bug with info layer
+
+--------------------------------------
+05/09/2005 - release of iBrowser V 1.1 build 05092005
+
+- added multiple image upload
+- update phpThumb to latest version
+
+--------------------------------------
+05/08/2005 - release of iBrowser V 1.1 build 05082005
+
+- added config parameter: $cfg['attrib']; if set to true, image width and height can be changed in the properties screen.
+
+--------------------------------------
+05/07/2005 - release of iBrowser V 1.1 build 05072005
+
+- improved layout
+- creating thumbnails while uploading
+- resizing images and thumbnails
+- renaming and deleting images
+- creating directories/libraries
+- creating image popup
+- supporting css tags for image tags
+
+--------------------------------------
+12/10/2004 - release of iBrowser V 1.0
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/license.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/license.txt
new file mode 100644 (file)
index 0000000..300d17e
--- /dev/null
@@ -0,0 +1,133 @@
+iBrowser
+License:       GNU General Public Licence (GPL) - http://www.gnu.org/copyleft/gpl.html
+Copyright:     (c) 2005, net4visions.com
+Information:   http://www.net4visions.com
+
+Copyright:     © 2005 net4visions.com
+
+This iBrowser script is free software - you can redistribute
+it and/or modify it under the terms of the GNU General Public
+Licence (GPL) as published by the Free Software Foundation;
+either version 2.1 of the License, or any later version.
+
+This script is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public Licence (GPL)for more details.
+
+You should have received a copy of the GNU General Public Licence (GPL)
+along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+-------------------------------------------------------------------
+Licenses of used scripts:
+
+- SPAW         (WYSIWYG-Editor)
+  License:     GNU General Public Licence (GPL)
+  Copyright:   (c) 2003, Solmetra
+  Information: http://www.solmetra.com/spaw
+    
+- tinyMCE      (WYSIWYG-Editor)
+  License:     GNU General Public Licence (LGPL)
+  Copyright:   (c) 2004, MoxieCode Systems AB 
+  Information: http://tinymce.moxiecode.com
+  
+- phpThumb     (create/edit thumbnails) 
+  License:     GNU General Public Licence (GPL)
+  Copyright:   (c) 2004 James Heinrich  
+  Information: http://phpthumb.sourceforge.net
+
+-------------------------------------------------------------------
+
+
+GNU GENERAL PUBLIC LICENSE
+Version 2, June 1991 
+
+Copyright (C) 1989, 1991 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.
+
+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 Library 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. 
+
+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
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/docs/readme.txt
new file mode 100644 (file)
index 0000000..659c5a6
--- /dev/null
@@ -0,0 +1,222 @@
+// ================================================
+// PHP image browser - iBrowser 
+// ================================================
+// iBrowser - readme.txt
+// ================================================
+// Developed: net4visions.com
+// Copyright: net4visions.com
+// License: GPL - see readme.txt
+// (c)2005 All rights reserved.
+// ================================================
+// Revision: 1.0                   Date: 08/03/2005
+// ================================================
+
+---------------------------------------------------
+ - Thank you
+---------------------------------------------------
+
+Let me take this opportunity to thank everbody who has contributed
+to iBrowser - I could not have realized this project without the 
+patient help of James, Alan, Johan(Spoke), and Slava.
+
+
+---------------------------------------------------
+ - Introduction
+---------------------------------------------------
+
+iBrowser allows you to manage your image files on your webserver.
+You can create directories, upload file, rename and delete them. It also
+helps you to change the image properties.
+
+
+iBrowser currently works with tinyMCE, SPAW, FCKeditor, Xinha, and HTMLarea.
+
+If you're using the random picture function, please see the phpThumb readme for the parameter settings.
+
+If you need more features like image processing, please have a look at the
+net4visions.com iManager.
+
+---------------------------------------------------
+ - Installation
+---------------------------------------------------
+
+iBrowser has been confirmed to work with the latest version of
+Microsoft Internet Explorer and Firefox.
+
+
+1. Prerequisites
+---------------------------------------------------
+   You will need to compile PHP with the GD library of image functions for iBrowser to work.
+   If you use CSS styles for images and/or image caption, please make sure that the used css styles also exist in 
+   your site's stylesheet AND the wysiwyg editor content area stylesheet.
+
+   
+2. Permission settings
+---------------------------------------------------
+   Make sure the following directories have writing
+   permission (chmod to 0755):
+
+       ibrowser/scripts/phpThumb/cache - should there be any files already, plese delete those!!!
+       ibrowser/temp
+
+       all the image libraries you set up in the iBrowser config file!
+
+
+3. Configuration
+---------------------------------------------------
+   Check configuration settings
+   The configuration of iBrowser if fairly easy - it depends a little
+   on what wysiwyg editor you're using
+
+   Setting up image libraries:
+   ---------------------------
+
+   You can set up your image libraries in two ways (static or dynamically):
+
+   - static: set your libraries like:
+       $cfg['ilibs'] = array ( 
+               array (
+                       'value'         => '/dev/im/assets/images/',                            
+                       'text'          => 'Site Pictures',
+               ),
+               array (
+                       'value'         => '/dev/im/assets/gallery/',                           
+                       'text'          => 'Gallery',
+               ),
+       );
+       
+
+
+   - dynamically: set your libraries like:
+       uncomment the following line in your config file - the following settings will
+       automatically override the static libary settings
+
+       $cfg['ilibs_dir']       = array('/dev/pictures/','/dev/images/');
+       
+
+       The aforementioned main directories will be scanned for sub-directories and
+       all directories found will be listed as directories.
+
+
+4. WYSIWYG editor interfaces
+---------------------------------------------------
+
+   You'll find some predefined files in the ibrowser/interfaces directory.
+   As per now, interfaces for tinyMCE, SPAW, FCKeditor, Xinha, and HTMLarea
+   are provided.
+
+
+   tinyMCE interface
+   -----------------
+
+   copy the provided interface file: tinyMCE.editor_plugin.js file into your iBrowser plugin
+   directory and rename it to "editor_plugin.js".
+
+   adding plugin to tinyMCE:
+
+       tinyMCE.init({ 
+               ... 
+               plugins : "ibrowser", 
+               theme_advanced_buttons3_add : "ibrowser",
+       
+       }); 
+
+   For further information on how to use a plugin with tinyMCE be it iBrowser or any other plugin,
+   please see the tinyMCE instructions manual!
+
+
+   FCKeditor interface
+   -------------------
+
+   copy the provided interface file: FCKeditor.editor_plugin.js file into your FCKeditor iBrowser plugin
+   directory and rename it to "fckplugin.js".
+
+   In the fckconfig.js file, add 'ibrowser' to the FCKConfig.ToolbarSets. Register the iBrowser plugin with
+   the following statement: FCKConfig.Plugins.Add( 'ibrowser') ; 
+
+   For further information on how to use a plugin with FCKeditor, be it iBrowser or any other plugin,
+   please see the FCKeditor instructions manual!
+
+
+   Xinha interface
+   -------------------
+
+   copy the provided interface file: xinha.editor_plugin.js file into your Xinha iBrowser plugin
+   directory and rename it to "ibrowser.js".
+
+   add iBrowser to the following array: xinha_plugins = xinha_plugins ? xinha_plugins :
+      [
+       'CharacterMap',
+       'ContextMenu',       
+       'ListType',       
+       'Stylist',      
+       'TableOperations',
+       'ibrowser'
+      ];
+
+
+   For further information on how to use a plugin with Xinha, be it iBrowser or any other plugin,
+   please see the Xinha instructions manual!
+
+   HTMLarea interface
+   -------------------
+
+   copy the provided interface file: HTMLarea.editor_plugin.js file into your HTMLarea iBrowser plugin
+   directory and rename it to "ibrowser.js".
+
+   load the iBrowser plugin as follows:
+       HTMLArea.loadPlugin("ibrowser");
+
+   register the iBrowser plugin as follows:
+       editor.registerPlugin(ibrowser);
+
+
+   For further information on how to use a plugin with HTMLarea, be it iBrowser or any other plugin,
+   please see the HTMLarea instructions manual!
+
+
+   SPAW interface
+   --------------
+
+   unfortunately, the plugin integration into SPAW isn't as easy as with tinyMCE or other editors. However, if you follow the next
+   steps, it shouldn't be a problem to get iBrowser to work with SPAW either.
+
+       1. in the spaw directory, create a directory called "plugins" with a sub-directory called "ibrowser".
+          unzip all the ibrowser files into the "ibrowser" directory
+       
+       2. edit the following two files in the spaw/class directory and add the iBrowser include just before the
+           SPAW_showColorPicker(editor,curcolor) line:
+
+               IE: scripts.js.php
+                       <?php include $spaw_root . 'plugins/ibrowser/interface/SPAW.editor_plugin.js'; ?>
+
+               Firefox: scripts+gecko.js.php           
+                       <?php include $spaw_root . 'plugins/ibrowser/interface/SPAW.editor_plugin.js'; ?>
+
+
+       3. edit the following two file in the spaw/lib/toolbars/default directory
+          (if you don't use the default toolbar, use the one you use)
+               - default_toolbar_data_inc.php
+               - default_toolbar_data.gecko.inc.php
+
+               array(
+                       'name' => 'ibrowser',
+                       'type' => SPAW_TBI_BUTTON
+               ),
+
+               if you like to not longer use the regular SPAW image function, just comment those lines.
+
+       4. copy the four button images in the ibrowser/interface/images/spaw directory into the spaw/libs/themes/img directory
+
+       5. in the spaw/lib/lang/en directory, edit the "en_lang_data.inc.php" file and add the following:
+
+               'ibrowser' => array(
+                  'title' => 'iBrowser'
+               ),
+
+               This will create the title for the toolbar image button.        
+
+  
+
+               
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/editor_plugin.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/editor_plugin.js
new file mode 100644 (file)
index 0000000..7599940
--- /dev/null
@@ -0,0 +1,327 @@
+// ================================================
+// PHP image browser - iBrowser 
+// ================================================
+// iBrowser - tinyMCE editor interface (IE & Gecko)
+// ================================================
+// Developed: net4visions.com
+// Copyright: net4visions.com
+// License: GPL - see license.txt
+// (c)2005 All rights reserved.
+// ================================================
+// Revision: 1.0                   Date: 06/28/2005
+// ================================================
+
+       function TinyMCE_ibrowser_getControlHTML(control_name) {
+               switch (control_name) {
+                       case 'ibrowser':
+                               return '<img id="{$editor_id}_ibrowser" src="{$pluginurl}/images/ibrowser.gif" title="iBrowser" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="(iBrowser_click(\'{$editor_id}\'));">';
+               }       
+               return '';
+       }
+       //-------------------------------------------------------------------------
+       // starting iBrowser
+       function iBrowser_click(editor, sender) {       
+               var wArgs = {};                         
+               if (tinyMCE.selectedElement != null) {
+                       if(tinyMCE.selectedElement.nodeName.toLowerCase() == 'img') { // selected object is image               
+                               if(tinyMCE.selectedElement.parentNode.nodeName.toLowerCase() == 'a') {
+                                       var a = tinyMCE.selectedElement.parentNode; 
+                               } else {
+                                       var im = tinyMCE.selectedElement;
+                               }
+                       } else if (tinyMCE.selectedElement.nodeName.toLowerCase() == 'a') { // selected object is link
+                               var a = tinyMCE.selectedElement;
+                       }
+               }               
+               //-------------------------------------------------------------------------
+               if (a) { // selected object is link                     
+                       wArgs.a = a;                            
+                       //var str = a.attributes['onclick'].value;      
+                       var str = a.mce_onclick;                        
+                       wArgs.popSrc = unescape(str.substring(str.indexOf('?url=')+5, str.indexOf('&')));       // popup image src                                                      
+                       wArgs.popTitle     = a.title;
+                       wArgs.popClassName = a.className;       
+                       
+                       // set image popup properties
+                       children = (a.childNodes);
+                       for (var i = 0; i < children.length; i++) {
+                               if (children[i].tagName == 'IMG') {                             
+                                       //wArgs.src             = children[i].src;                                      
+                                       //
+                                       tsrc = children[i].src;                         
+                                       if (tsrc.lastIndexOf('?') >= 0) { // dynamic thumbnail                          
+                                               var str = tsrc.substring(tsrc.lastIndexOf('?')+1,tsrc.length);
+                                               firstIndexOf = str.indexOf('&');
+                                               tstr = str.substring(4, firstIndexOf);
+                                               wArgs.src  = tstr; // image part of src
+                                               wArgs.tsrc = tsrc; // full src incl. dynamic parameters
+                                       } else { // regular image
+                                               wArgs.src = tsrc;                                                       
+                                       }               
+                                       
+                                       //
+                                       wArgs.alt               = children[i].alt;
+                                       wArgs.title     = children[i].title;
+                                       wArgs.width     = children[i].style.width  ? children[i].style.width  : children[i].width;
+                                       wArgs.height    = children[i].style.height ? children[i].style.height : children[i].height;
+                                       wArgs.border    = children[i].border;
+                                       wArgs.align     = children[i].align;
+                                       wArgs.hspace    = children[i].hspace;
+                                       wArgs.vspace    = children[i].vspace;
+                                       wArgs.className = children[i].className;
+                               }
+                       }                       
+                       
+               //-------------------------------------------------------------------------
+               } else if (im) { // selected object is image                    
+                       tsrc = im.src;                          
+                       if (tsrc.lastIndexOf('?') >= 0) { // dynamic thumbnail                          
+                               var str = tsrc.substring(tsrc.lastIndexOf('?')+1,tsrc.length);
+                               firstIndexOf = str.indexOf('&');
+                               tstr = str.substring(4, firstIndexOf);
+                               wArgs.src  = tstr; // image part of src
+                               wArgs.tsrc = tsrc; // full src incl. dynamic parameters
+                       } else { // regular image
+                               wArgs.src = tsrc;                                                       
+                       }               
+                       wArgs.alt               = im.alt;
+                       wArgs.title     = im.title;
+                       wArgs.width     = im.style.width  ? im.style.width  : im.width;
+                       wArgs.height    = im.style.height ? im.style.height : im.height;
+                       wArgs.border    = im.border;
+                       wArgs.align     = im.align;
+                       wArgs.className = im.className;
+                       if (im.hspace >= 0) {
+                               // (-1 when not set under gecko for some reason)
+                               wArgs.hspace = im.attributes['hspace'].nodeValue;
+                       }
+                       if (im.vspace >= 0) {
+                               // (-1 when not set under gecko for some reason)
+                               wArgs.vspace = im.attributes['vspace'].nodeValue;
+                       }                       
+               }               
+               //-------------------------------------------------------------------------
+               // open iBrowser dialog
+               var winUrl = tinyMCE.baseURL + '/plugins/ibrowser/ibrowser.php?lang=' + tinyMCE.settings['language'];
+               if (tinyMCE.isMSIE) { // IE
+                       var rArgs = showModalDialog(winUrl, wArgs, 'dialogHeight:500px; dialogWidth:580px; scrollbars: no; menubar: no; toolbar: no; resizable: no; status: no;');  
+                       //-------------------------------------------------------------------------
+                       // returning from iBrowser (IE) and calling callback function
+                       if (rArgs) {                            
+                               iBrowser_callback(editor, sender, rArgs);
+                       }
+               } else if (tinyMCE.isGecko) { // Gecko 
+                       var wnd = window.open(winUrl + '?editor=' + editor + '&callback=iBrowser_callback', 'ibrowser', 'status=no, modal=yes, width=625, height=530');
+                       wnd.dialogArguments = wArgs;
+               }
+       }
+       //-------------------------------------------------------------------------
+       // iBrowser callback
+       function iBrowser_callback(editor, sender, iArgs) {
+               var ed = tinyMCE.getInstanceById(editor);
+               ed.contentWindow.focus();
+               if (iArgs) { // IE                      
+                       var rArgs = iArgs;
+               } else { // Gecko
+                       var rArgs = sender.returnValue;
+               }
+               
+               if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == 'img') { // is current cell a image ?
+                       var im = tinyMCE.selectedElement;
+               }
+               if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == 'a') { // is current cell a link ?
+                       var a = tinyMCE.selectedElement;
+               }       
+               
+               if (rArgs) {
+                       if (!rArgs.action) { // no action set - image                           
+                               if (!im) { // new image// no image - create new image                                                           
+                                       this.selectedElement = getFocusElement(editor, sender);
+                                       this.selectedInstance = ed;
+                                       this.selectedInstance.contentDocument.execCommand('insertimage', false, rArgs.src);
+                                       im = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, 'img', 'src', rArgs.src);                                      
+                               }
+                               // set image attributes
+                               rArgs.src = eval(tinyMCE.settings['urlconverter_callback'] + "(rArgs.src, im);");
+                               setAttrib(im, 'src', rArgs.src, true);                          
+                               setAttrib(im, 'alt', rArgs.alt, true);
+                               setAttrib(im, 'title', rArgs.title, true);
+                               setAttrib(im, 'align', rArgs.align, true);
+                               setAttrib(im, 'border', rArgs.border);
+                               setAttrib(im, 'hspace', rArgs.hspace);
+                               setAttrib(im, 'vspace', rArgs.vspace);
+                               setAttrib(im, 'width', rArgs.width);
+                               setAttrib(im, 'height', rArgs.height);                          
+                               setAttrib(im, 'className', rArgs.className, true); 
+                       
+                       } else if (rArgs.action == 1) { // action set - image popup                                                             
+                               if (a) { // edit popup                                                          
+                                       a.href        = "javascript:void(0);";
+                                       rArgs.popSrc  = escape(rArgs.popSrc);                                   
+                                       setAttrib(a, 'title', rArgs.popTitle, true);
+                                       setAttrib(a, 'className', rArgs.popClassName, true);                                            
+       
+                                       if (tinyMCE.isMSIE) { // IE
+                                               a.onclick="window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image', 'width=550, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;";
+                                       } else if (tinyMCE.isGecko) { // Gecko
+                                               a.setAttribute("onclick","window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image','width=550, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;");     
+                                       }
+                               } else { // create new popup                                                                    
+                                       var a;
+                                       a = document.createElement('A');
+                                       a.href = "javascript:void(0)";
+                                       rArgs.popSrc  = escape(rArgs.popSrc);                           
+                                       setAttrib(a, 'title', rArgs.popTitle, true);
+                                       setAttrib(a, 'className', rArgs.popClassName, true);                                            
+                                       if (tinyMCE.isMSIE) { // IE
+                                               a.onclick="window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image', 'width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;";
+                                               if (ed.contentWindow.document.selection.type == 'Control') {
+                                                       var selection = ed.contentWindow.document.selection.createRange();
+                                                       a.innerHTML = selection(0).outerHTML;
+                                                       selection(0).outerHTML = a.outerHTML;
+                                               } else {
+                                                       var selection = ed.contentWindow.document.selection.createRange();
+                                                       if (selection.text == '') {                                                             
+                                                               a.innerHTML = '#';
+                                                       } else {
+                                                               a.innerHTML = selection.htmlText;                                                               
+                                                       }
+                               selection.pasteHTML(a.outerHTML);                                                       
+                                               }
+                                       } else if (tinyMCE.isGecko) { // Gecko
+                                               a.setAttribute("onclick","window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image','width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;");     
+                                               if (ed.contentWindow.getSelection().rangeCount > 0 && ed.contentWindow.getSelection().getRangeAt(0).startOffset != ed.contentWindow.getSelection().getRangeAt(0).endOffset) {
+                                                       a.appendChild(ed.contentWindow.getSelection().getRangeAt(0).cloneContents());
+                                               } else {                                                        
+                                                       a.innerHTML = '#';
+                                               }        
+                                               insertNodeAtSelection(ed.contentWindow, a);
+                                       }
+                               }
+                       //-------------------------------------------------------------------------
+                       } else if (rArgs.action == 2) { // action set - delete popup link                               
+                               ed.contentDocument.execCommand('Unlink');                                                               
+                       }
+               }
+               tinyMCE.triggerNodeChange();
+               return;
+       }
+       //-------------------------------------------------------------------------
+       function getFocusElement(editor, sender) {              
+               var ed = tinyMCE.getInstanceById(editor);               
+               var sel = '' + (window.getSelection ? ed.contentWindow.getSelection() : document.getSelection ? ed.contentWindow.document.getSelection() : ed.contentWindow.document.selection.createRange().text);
+               var elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
+               if (ed.selectedElement != null && ed.selectedElement.nodeName.toLowerCase() == "img") {
+                       elm = ed.selectedElement;
+               }
+               return elm;
+       }
+       //-------------------------------------------------------------------------
+       function getElementByAttributeValue(node, element_name, attrib, value) {
+               var elements = this.getElementsByAttributeValue(node, element_name, attrib, value);
+               if (elements.length == 0) {
+                       return null;
+               } 
+               return elements[0];
+       }
+       //-------------------------------------------------------------------------
+       function getElementsByAttributeValue(node, element_name, attrib, value) {
+               var elements = new Array();
+               if (node && node.nodeName.toLowerCase() == element_name) {
+                       if (node.getAttribute(attrib) && node.getAttribute(attrib).indexOf(value) !=  - 1) {
+                               elements[elements.length] = node;
+                       } 
+               }
+               if (node.hasChildNodes) {
+                       for (var x = 0; x < node.childNodes.length; x++) {
+                               var childElements = this.getElementsByAttributeValue(node.childNodes[x], element_name, attrib, value);
+                               for (var i = 0; i < childElements.length; i++) {
+                                       elements[elements.length] = childElements[i];
+                               } 
+                       }
+               }
+               return elements;
+       }
+       //-------------------------------------------------------------------------
+       function setAttrib(element, name, value, fixval) { // set element attributes
+               if (!fixval && value != null) {
+                       var re = new RegExp('[^0-9%]', 'g');
+                       value = value.replace(re, '');
+               }
+               if (value != null && value != '') {
+                       element.setAttribute(name, value);
+               } else {
+                       element.removeAttribute(name);
+               }
+       }
+       //-------------------------------------------------------------------------
+        function insertNodeAtSelection(win, insertNode) { // Gecko
+                 // get current selection
+                 var sel = win.getSelection();
+       
+                 // get the first range of the selection
+                 // (there's almost always only one range)
+                 var range = sel.getRangeAt(0);
+       
+                 // deselect everything
+                 sel.removeAllRanges();
+       
+                 // remove content of current selection from document
+                 range.deleteContents();
+       
+                 // get location of current selection
+                 var container = range.startContainer;
+                 var pos = range.startOffset;
+       
+                 // make a new range for the new selection
+                 range = document.createRange();
+       
+                 if (container.nodeType == 3 && insertNode.nodeType == 3) {    
+                               // if we insert text in a textnode, do optimized insertion
+                               container.insertData(pos, insertNode.nodeValue);
+               
+                               // put cursor after inserted text
+                               range.setEnd(container, pos+insertNode.length);
+                               range.setStart(container, pos+insertNode.length);       
+                 } else {      
+                               var afterNode;
+                               if (container.nodeType==3) {    
+                                 // when inserting into a textnode
+                                 // we create 2 new textnodes
+                                 // and put the insertNode in between
+               
+                                 var textNode = container;
+                                 container = textNode.parentNode;
+                                 var text = textNode.nodeValue;
+               
+                                 // text before the split
+                                 var textBefore = text.substr(0,pos);
+                                 // text after the split
+                                 var textAfter = text.substr(pos);
+               
+                                 var beforeNode = document.createTextNode(textBefore);
+                                 var afterNode = document.createTextNode(textAfter);
+               
+                                 // insert the 3 new nodes before the old one
+                                 container.insertBefore(afterNode, textNode);
+                                 container.insertBefore(insertNode, afterNode);
+                                 container.insertBefore(beforeNode, insertNode);
+               
+                                 // remove the old node
+                                 container.removeChild(textNode);
+       
+                       } else {        
+                                 // else simply insert the node
+                                 afterNode = container.childNodes[pos];
+                                 container.insertBefore(insertNode, afterNode);
+                       }
+       
+                       range.setEnd(afterNode, 0);
+                       range.setStart(afterNode, 0);
+                 }
+       
+                 sel.addRange(range);
+                 
+                 // remove all ranges
+                 win.getSelection().removeAllRanges();
+         };
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/editor_plugin.js2 b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/editor_plugin.js2
new file mode 100644 (file)
index 0000000..2f0e297
--- /dev/null
@@ -0,0 +1,327 @@
+// ================================================
+// PHP image browser - iBrowser 
+// ================================================
+// iBrowser - tinyMCE editor interface (IE & Gecko)
+// ================================================
+// Developed: net4visions.com
+// Copyright: net4visions.com
+// License: GPL - see license.txt
+// (c)2005 All rights reserved.
+// ================================================
+// Revision: 1.0                   Date: 06/28/2005
+// ================================================
+
+       function TinyMCE_ibrowser_getControlHTML(control_name) {
+               switch (control_name) {
+                       case 'ibrowser':
+                               return '<img id="{$editor_id}_ibrowser" src="{$pluginurl}/images/ibrowser.gif" title="iBrowser" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="(iBrowser_click(\'{$editor_id}\'));">';
+               }       
+               return '';
+       }
+       //-------------------------------------------------------------------------
+       // starting iBrowser
+       function iBrowser_click(editor, sender) {       
+               var wArgs = {};                         
+               if (tinyMCE.selectedElement != null) {
+                       if(tinyMCE.selectedElement.nodeName.toLowerCase() == 'img') { // selected object is image               
+                               if(tinyMCE.selectedElement.parentNode.nodeName.toLowerCase() == 'a') {
+                                       var a = tinyMCE.selectedElement.parentNode; 
+                               } else {
+                                       var im = tinyMCE.selectedElement;
+                               }
+                       } else if (tinyMCE.selectedElement.nodeName.toLowerCase() == 'a') { // selected object is link
+                               var a = tinyMCE.selectedElement;
+                       }
+               }               
+               //-------------------------------------------------------------------------
+               if (a) { // selected object is link                     
+                       wArgs.a = a;                            
+                       //var str = a.attributes['onclick'].value;      
+                       var str = a.mce_onclick;                        
+                       wArgs.popSrc = unescape(str.substring(str.indexOf('?url=')+5, str.indexOf('&')));       // popup image src                                                      
+                       wArgs.popTitle     = a.title;
+                       wArgs.popClassName = a.className;       
+                       
+                       // set image popup properties
+                       children = (a.childNodes);
+                       for (var i = 0; i < children.length; i++) {
+                               if (children[i].tagName == 'IMG') {                             
+                                       //wArgs.src             = children[i].src;                                      
+                                       //
+                                       tsrc = children[i].src;                         
+                                       if (tsrc.lastIndexOf('?') >= 0) { // dynamic thumbnail                          
+                                               var str = tsrc.substring(tsrc.lastIndexOf('?')+1,tsrc.length);
+                                               firstIndexOf = str.indexOf('&');
+                                               tstr = str.substring(4, firstIndexOf);
+                                               wArgs.src  = tstr; // image part of src
+                                               wArgs.tsrc = tsrc; // full src incl. dynamic parameters
+                                       } else { // regular image
+                                               wArgs.src = tsrc;                                                       
+                                       }               
+                                       
+                                       //
+                                       wArgs.alt               = children[i].alt;
+                                       wArgs.title     = children[i].title;
+                                       wArgs.width     = children[i].style.width  ? children[i].style.width  : children[i].width;
+                                       wArgs.height    = children[i].style.height ? children[i].style.height : children[i].height;
+                                       wArgs.border    = children[i].border;
+                                       wArgs.align     = children[i].align;
+                                       wArgs.hspace    = children[i].hspace;
+                                       wArgs.vspace    = children[i].vspace;
+                                       wArgs.className = children[i].className;
+                               }
+                       }                       
+                       
+               //-------------------------------------------------------------------------
+               } else if (im) { // selected object is image                    
+                       tsrc = im.src;                          
+                       if (tsrc.lastIndexOf('?') >= 0) { // dynamic thumbnail                          
+                               var str = tsrc.substring(tsrc.lastIndexOf('?')+1,tsrc.length);
+                               firstIndexOf = str.indexOf('&');
+                               tstr = str.substring(4, firstIndexOf);
+                               wArgs.src  = tstr; // image part of src
+                               wArgs.tsrc = tsrc; // full src incl. dynamic parameters
+                       } else { // regular image
+                               wArgs.src = tsrc;                                                       
+                       }               
+                       wArgs.alt               = im.alt;
+                       wArgs.title     = im.title;
+                       wArgs.width     = im.style.width  ? im.style.width  : im.width;
+                       wArgs.height    = im.style.height ? im.style.height : im.height;
+                       wArgs.border    = im.border;
+                       wArgs.align     = im.align;
+                       wArgs.className = im.className;
+                       if (im.hspace >= 0) {
+                               // (-1 when not set under gecko for some reason)
+                               wArgs.hspace = im.attributes['hspace'].nodeValue;
+                       }
+                       if (im.vspace >= 0) {
+                               // (-1 when not set under gecko for some reason)
+                               wArgs.vspace = im.attributes['vspace'].nodeValue;
+                       }                       
+               }               
+               //-------------------------------------------------------------------------
+               // open iBrowser dialog
+               var winUrl = tinyMCE.baseURL + '/plugins/ibrowser/ibrowser.php';
+               if (tinyMCE.isMSIE) { // IE
+                       var rArgs = showModalDialog(winUrl, wArgs, 'dialogHeight:500px; dialogWidth:580px; scrollbars: no; menubar: no; toolbar: no; resizable: no; status: no;');  
+                       //-------------------------------------------------------------------------
+                       // returning from iBrowser (IE) and calling callback function
+                       if (rArgs) {                            
+                               iBrowser_callback(editor, sender, rArgs);
+                       }
+               } else if (tinyMCE.isGecko) { // Gecko 
+                       var wnd = window.open(winUrl + '?editor=' + editor + '&callback=iBrowser_callback', 'ibrowser', 'status=no, modal=yes, width=625, height=530');
+                       wnd.dialogArguments = wArgs;
+               }
+       }
+       //-------------------------------------------------------------------------
+       // iBrowser callback
+       function iBrowser_callback(editor, sender, iArgs) {
+               var ed = tinyMCE.getInstanceById(editor);
+               ed.contentWindow.focus();
+               if (iArgs) { // IE                      
+                       var rArgs = iArgs;
+               } else { // Gecko
+                       var rArgs = sender.returnValue;
+               }
+               
+               if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == 'img') { // is current cell a image ?
+                       var im = tinyMCE.selectedElement;
+               }
+               if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == 'a') { // is current cell a link ?
+                       var a = tinyMCE.selectedElement;
+               }       
+               
+               if (rArgs) {
+                       if (!rArgs.action) { // no action set - image                           
+                               if (!im) { // new image// no image - create new image                                                           
+                                       this.selectedElement = getFocusElement(editor, sender);
+                                       this.selectedInstance = ed;
+                                       this.selectedInstance.contentDocument.execCommand('insertimage', false, rArgs.src);
+                                       im = this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, 'img', 'src', rArgs.src);                                      
+                               }
+                               // set image attributes
+                               rArgs.src = eval(tinyMCE.settings['urlconverter_callback'] + "(rArgs.src, im);");
+                               setAttrib(im, 'src', rArgs.src, true);                          
+                               setAttrib(im, 'alt', rArgs.alt, true);
+                               setAttrib(im, 'title', rArgs.title, true);
+                               setAttrib(im, 'align', rArgs.align, true);
+                               setAttrib(im, 'border', rArgs.border);
+                               setAttrib(im, 'hspace', rArgs.hspace);
+                               setAttrib(im, 'vspace', rArgs.vspace);
+                               setAttrib(im, 'width', rArgs.width);
+                               setAttrib(im, 'height', rArgs.height);                          
+                               setAttrib(im, 'className', rArgs.className, true); 
+                       
+                       } else if (rArgs.action == 1) { // action set - image popup                                                             
+                               if (a) { // edit popup                                                          
+                                       a.href        = "javascript:void(0);";
+                                       rArgs.popSrc  = escape(rArgs.popSrc);                                   
+                                       setAttrib(a, 'title', rArgs.popTitle, true);
+                                       setAttrib(a, 'className', rArgs.popClassName, true);                                            
+       
+                                       if (tinyMCE.isMSIE) { // IE
+                                               a.onclick="window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image', 'width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;";
+                                       } else if (tinyMCE.isGecko) { // Gecko
+                                               a.setAttribute("onclick","window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image','width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;");     
+                                       }
+                               } else { // create new popup                                                                    
+                                       var a;
+                                       a = document.createElement('A');
+                                       a.href = "javascript:void(0)";
+                                       rArgs.popSrc  = escape(rArgs.popSrc);                           
+                                       setAttrib(a, 'title', rArgs.popTitle, true);
+                                       setAttrib(a, 'className', rArgs.popClassName, true);                                            
+                                       if (tinyMCE.isMSIE) { // IE
+                                               a.onclick="window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image', 'width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;";
+                                               if (ed.contentWindow.document.selection.type == 'Control') {
+                                                       var selection = ed.contentWindow.document.selection.createRange();
+                                                       a.innerHTML = selection(0).outerHTML;
+                                                       selection(0).outerHTML = a.outerHTML;
+                                               } else {
+                                                       var selection = ed.contentWindow.document.selection.createRange();
+                                                       if (selection.text == '') {                                                             
+                                                               a.innerHTML = '#';
+                                                       } else {
+                                                               a.innerHTML = selection.htmlText;                                                               
+                                                       }
+                               selection.pasteHTML(a.outerHTML);                                                       
+                                               }
+                                       } else if (tinyMCE.isGecko) { // Gecko
+                                               a.setAttribute("onclick","window.open('" + rArgs.popUrl + "?url=" + rArgs.popSrc + '&clTxt=' + rArgs.popTxt + "','Image','width=500, height=300, scrollbars=no, toolbar=no, location=no, status=no, resizable=yes, screenX=100, screenY=100'); return false;");     
+                                               if (ed.contentWindow.getSelection().rangeCount > 0 && ed.contentWindow.getSelection().getRangeAt(0).startOffset != ed.contentWindow.getSelection().getRangeAt(0).endOffset) {
+                                                       a.appendChild(ed.contentWindow.getSelection().getRangeAt(0).cloneContents());
+                                               } else {                                                        
+                                                       a.innerHTML = '#';
+                                               }        
+                                               insertNodeAtSelection(ed.contentWindow, a);
+                                       }
+                               }
+                       //-------------------------------------------------------------------------
+                       } else if (rArgs.action == 2) { // action set - delete popup link                               
+                               ed.contentDocument.execCommand('Unlink');                                                               
+                       }
+               }
+               tinyMCE.triggerNodeChange();
+               return;
+       }
+       //-------------------------------------------------------------------------
+       function getFocusElement(editor, sender) {              
+               var ed = tinyMCE.getInstanceById(editor);               
+               var sel = '' + (window.getSelection ? ed.contentWindow.getSelection() : document.getSelection ? ed.contentWindow.document.getSelection() : ed.contentWindow.document.selection.createRange().text);
+               var elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
+               if (ed.selectedElement != null && ed.selectedElement.nodeName.toLowerCase() == "img") {
+                       elm = ed.selectedElement;
+               }
+               return elm;
+       }
+       //-------------------------------------------------------------------------
+       function getElementByAttributeValue(node, element_name, attrib, value) {
+               var elements = this.getElementsByAttributeValue(node, element_name, attrib, value);
+               if (elements.length == 0) {
+                       return null;
+               } 
+               return elements[0];
+       }
+       //-------------------------------------------------------------------------
+       function getElementsByAttributeValue(node, element_name, attrib, value) {
+               var elements = new Array();
+               if (node && node.nodeName.toLowerCase() == element_name) {
+                       if (node.getAttribute(attrib) && node.getAttribute(attrib).indexOf(value) !=  - 1) {
+                               elements[elements.length] = node;
+                       } 
+               }
+               if (node.hasChildNodes) {
+                       for (var x = 0; x < node.childNodes.length; x++) {
+                               var childElements = this.getElementsByAttributeValue(node.childNodes[x], element_name, attrib, value);
+                               for (var i = 0; i < childElements.length; i++) {
+                                       elements[elements.length] = childElements[i];
+                               } 
+                       }
+               }
+               return elements;
+       }
+       //-------------------------------------------------------------------------
+       function setAttrib(element, name, value, fixval) { // set element attributes
+               if (!fixval && value != null) {
+                       var re = new RegExp('[^0-9%]', 'g');
+                       value = value.replace(re, '');
+               }
+               if (value != null && value != '') {
+                       element.setAttribute(name, value);
+               } else {
+                       element.removeAttribute(name);
+               }
+       }
+       //-------------------------------------------------------------------------
+        function insertNodeAtSelection(win, insertNode) { // Gecko
+                 // get current selection
+                 var sel = win.getSelection();
+       
+                 // get the first range of the selection
+                 // (there's almost always only one range)
+                 var range = sel.getRangeAt(0);
+       
+                 // deselect everything
+                 sel.removeAllRanges();
+       
+                 // remove content of current selection from document
+                 range.deleteContents();
+       
+                 // get location of current selection
+                 var container = range.startContainer;
+                 var pos = range.startOffset;
+       
+                 // make a new range for the new selection
+                 range = document.createRange();
+       
+                 if (container.nodeType == 3 && insertNode.nodeType == 3) {    
+                               // if we insert text in a textnode, do optimized insertion
+                               container.insertData(pos, insertNode.nodeValue);
+               
+                               // put cursor after inserted text
+                               range.setEnd(container, pos+insertNode.length);
+                               range.setStart(container, pos+insertNode.length);       
+                 } else {      
+                               var afterNode;
+                               if (container.nodeType==3) {    
+                                 // when inserting into a textnode
+                                 // we create 2 new textnodes
+                                 // and put the insertNode in between
+               
+                                 var textNode = container;
+                                 container = textNode.parentNode;
+                                 var text = textNode.nodeValue;
+               
+                                 // text before the split
+                                 var textBefore = text.substr(0,pos);
+                                 // text after the split
+                                 var textAfter = text.substr(pos);
+               
+                                 var beforeNode = document.createTextNode(textBefore);
+                                 var afterNode = document.createTextNode(textAfter);
+               
+                                 // insert the 3 new nodes before the old one
+                                 container.insertBefore(afterNode, textNode);
+                                 container.insertBefore(insertNode, afterNode);
+                                 container.insertBefore(beforeNode, insertNode);
+               
+                                 // remove the old node
+                                 container.removeChild(textNode);
+       
+                       } else {        
+                                 // else simply insert the node
+                                 afterNode = container.childNodes[pos];
+                                 container.insertBefore(insertNode, afterNode);
+                       }
+       
+                       range.setEnd(afterNode, 0);
+                       range.setStart(afterNode, 0);
+                 }
+       
+                 sel.addRange(range);
+                 
+                 // remove all ranges
+                 win.getSelection().removeAllRanges();
+         };
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/ibrowser.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/ibrowser.php
new file mode 100644 (file)
index 0000000..3423087
--- /dev/null
@@ -0,0 +1,1510 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser dialog
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // File: ibrowser.php
+       // ================================================
+       // Revision: 1.3                   Date: 09/12/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // unset $cfg['ilibs_incl'] - dynamic image library
+       if (isset($cfg['ilibs_inc'])) {
+               unset($cfg['ilibs_inc']);
+       }
+       //-------------------------------------------------------------------------
+       // include configuration settings
+       include dirname(__FILE__) . '/config/config.inc.php';
+       include dirname(__FILE__) . '/langs/lang.class.php';
+       //-------------------------------------------------------------------------
+       // language settings    
+       $l = (isset($_REQUEST['lang']) ? new PLUG_Lang($_REQUEST['lang']) : new PLUG_Lang($cfg['lang']));
+       $l->setBlock('ibrowser');       
+       //-------------------------------------------------------------------------
+       // if set, include file specified in $cfg['ilibs_incl']; hardcoded libraries will be ignored!   
+       if (!empty($cfg['ilibs_inc'])) {
+               include $cfg['ilibs_inc'];
+       }       
+       //-------------------------------------------------------------------------             
+       // set current image library    
+       $clib = (isset($_REQUEST['clib']) ? $_REQUEST['clib'] : '');
+       //-------------------------------------------------------------------------     
+       $value_found = false;
+       // callback function for preventing listing of non-library directory
+       function is_array_value($value, $key, $tlib) {
+               global $value_found;
+               if (is_array($value)) {
+                       array_walk($value, 'is_array_value', $tlib);
+               }
+               if ($value == $tlib) {
+                       $value_found = true;
+               }
+       }       
+       //-------------------------------------------------------------------------     
+       array_walk($cfg['ilibs'], 'is_array_value', $clib);     
+       if (!$value_found || empty($clib)) {
+               $clib = $cfg['ilibs'][0]['value'];
+       }               
+       //-------------------------------------------------------------------------
+       // create library dropdown
+       $lib_options = liboptions($cfg['ilibs'], '', $clib,'');
+?>
+<!-- do not delete this line - it's need for proper working of the resizeDialogToContent() function -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<head>
+<title><?php echo $l->m('im_002'); ?></title>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $l->getCharset(); ?>">
+<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
+<style type="text/css">
+<!--
+       @import url("css/style.css");
+-->
+</style>
+<script language="javascript" type="text/javascript" src="scripts/resizeDialog.js"></script>
+<script language="JavaScript" type="text/javascript" src="scripts/validateForm.js"></script>
+<script language="JavaScript" type="text/JavaScript">
+<!--
+// ============================================================
+// = global instance V 1.0, date: 04/07/2005                  =
+// ============================================================
+       function iBrowser() {
+               // browser check
+               this.isMSIE  = (navigator.appName == 'Microsoft Internet Explorer');
+               this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;              
+       };
+       var iBrowser = new iBrowser();
+
+// ============================================================
+// = iBrowser init V 1.0, date: 12/03/2004                    =
+// ============================================================
+       function init() {                       
+               var formObj = document.forms[0];                
+               btnInit();       // init menu buttons           
+               document.getElementById('mainDivHeader').innerHTML = setTitle('imDiv');                 
+               //-------------------------------------------------------------------------                     
+               // hide library selection if there is only one library available!
+               if (formObj.ilibs.options.length > 1) {
+                       changeClass(0,'ilibsDiv','showit');
+               }
+               //-------------------------------------------------------------------------
+               // window arguments                     
+               var args = window.dialogArguments;              
+               if (args) {                                                                             // if dialog argument are available
+                       if (args.src) {                                                         // source is image and maybe also link                          
+                               initImageArgs();                                                // init and set image attributes                                        
+                       } else if (args.a) {                                            // source is popup image only
+                               setImagePopup(args.popSrc);                             // update popup preview                         
+                               formObj.popSrc.value = args.popSrc;             // popup image url
+                               formObj.popTitle.value = args.popTitle; // link title
+                               for (var i = 0; i < formObj.popClassName.options.length; i++) { // CLASS value
+                                       if (formObj.popClassName.options[i].value == args.popClassName) {
+                                               formObj.popClassName.options.selectedIndex = i;                         
+                                       }
+                               }
+                               if (args.rsrc) {                                                // random image with popup link
+                                       setRandom(0);
+                               }               
+                       } else if (args.rsrc) {                                         // random image
+                               setRandom(0);
+                       }
+               }
+                                
+               //-------------------------------------------------------------------------
+               preloadImages('images/firefox.gif','images/explorer.gif','images/img_in.gif','images/img_at.gif','images/img_po.gif','images/help.gif','images/help_off.gif','images/about.gif','images/about_off.gif','images/im.gif','images/dir_off.gif','images/dir.gif','images/prev_off.gif','images/prev.gif','images/symbols_off.gif','images/symbols.gif','images/alert_off.gif','images/alert.gif','images/dirview_off.gif','images/dirview.gif'); // preload images                          
+               btnStage();
+               resizeDialogToContent();                
+               window.focus();         
+       }
+// ============================================================
+// = image buttons init V 1.0, date: 05/27/2005               =
+// ============================================================
+       function btnInit() {            
+               var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className   == 'btnUp') {
+                               x[i].onmouseover = btn_over;
+                               x[i].onmouseout  = btn_out;
+                               x[i].onmousedown = btn_down;
+                               x[i].onclick     = btn_click;
+                       }
+               }               
+       }
+// ============================================================
+// = menu buttons V 1.0, date: 06/03/2005                     =
+// ============================================================        
+       function btn_over() {   // menu button hover
+               if (this.className != 'btnDown') {
+                       this.className  = 'btnOver';
+               }
+       }       
+       function btn_out() {    // menu button out
+               if (this.className != 'btnDown') {
+                       this.className  = 'btnUp';
+               }
+       }
+       function btn_down() {   // menu button down
+               if (this.className != 'btnDown') {
+                       this.className  = 'btnDown';
+               }
+       }
+       function btn_click() {  // menu button click            
+               var formObj = document.forms[0];
+               var args = btn_click.arguments;
+               if(document.getElementById(args[0]) != null) {                          
+                       this.id = document.getElementById(args[0]).id;                          
+               }
+               var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className == 'btnDown') {                              
+                               if (x[i].id != this.id) {                                       
+                                       x[i].className = 'btnUp';
+                               }
+                       }
+               }       
+                               
+               // check whether image has been selected or not
+               if (this.id == 'mbtn_at') { // properties functions
+                       if(!btnStage()) {
+                               var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                               alert(msg);
+                               this.className = 'btnUp';
+                               return;
+                       }
+               }
+               
+               // reset all classes to "hideit"
+               changeClass(0,'imDiv','hideit','inDiv','hideit','atDiv','hideit','hideit','raDiv','hideit');            
+               // get element, set title                       
+               elm = this.id.substring(this.id.length-2, this.id.length);                      
+               elm = elm + 'Div';                      
+               document.getElementById('mainDivHeader').innerHTML = setTitle(elm);
+                       
+               if (this.id == 'mbtn_po') {                     
+                       var iProps = window.dialogArguments;                    
+                       if (iProps && iProps.a) { // show remove link only if link                       
+                               changeClass(1,'fileDivWrap','hideit','fileDiv','hideit','img_ren','hideit','img_del','hideit','inDiv','showit','poDiv','showit','poDelDiv','showit','raDiv','hideit');
+                       } else {
+                               changeClass(1,'fileDivWrap','hideit','fileDiv','hideit','img_ren','hideit','img_del','hideit','inDiv','showit','poDiv','showit','poDelDiv','hideit','raDiv','hideit');
+                       }
+               } else {                                                
+                       <?php if (($cfg['create'] && isset($cfg['ilibs_inc'])) || $cfg['upload'] || $cfg['rename'] || $cfg['delete']) { ?>
+                               changeClass(1,'poDiv','hideit','fileDivWrap','showit','img_ren','showit','img_del','showit',elm,'showit','raDiv','showit');
+                       <?php } else { ?>
+                               changeClass(1,'poDiv','hideit','fileDivWrap','hideit','img_ren','showit','img_del','showit',elm,'showit','raDiv','showit');
+                       <?php }; ?>
+               }
+       }
+// ============================================================
+// = set title - V 1.0, date: 06/03/2005                      =
+// ============================================================
+       function setTitle(elm) {
+               var retstr;
+               switch(elm) {
+                       case 'imDiv':
+                               retstr = '<?php echo $l->m('im_004'); ?>';
+                               break;          
+                       case 'inDiv':
+                               retstr = '<?php echo $l->m('im_008'); ?>';
+                               break;
+                       case 'atDiv':
+                               retstr = '<?php echo $l->m('im_010'); ?>';
+                               break;
+                       case 'poDiv':
+                               retstr = '<?php echo $l->m('im_014'); ?>';
+                               break;
+                       default:
+                               retstr = '<?php echo $l->m('im_016'); ?>';              
+               }
+               return retstr;  
+       }
+// ============================================================
+// = get image path and update ilist V 1.0, date: 04/25/2005  =
+// ============================================================
+       function initImageArgs() {
+               var formObj = document.forms[0];                
+               var args = window.dialogArguments;
+               
+               // in case of full url, remove 'http://
+               var pos = args.src.indexOf('://');
+               if (pos != -1) {                        
+                       pos = args.src.indexOf('/', pos + 3 ); // + length of '://'                     
+                       args.src = args.src.substring(pos);                     
+               }       
+               
+               // set current image file, and library
+               var pos   = args.src.lastIndexOf('/');
+               var cfile = args.src.slice(pos+1,args.src.length);              
+               var clib  = absPath(args.src.slice(0,pos+1)); // relative path to library               
+               // set current directory/library & update image list
+               for (var i = 0; i < formObj.ilibs.options.length; i++) {
+                       if (formObj.ilibs.options[i].value == clib) {
+                               formObj.ilibs.options.selectedIndex = i;        
+                               formObj.param.value = 'update' + '|' + cfile;                   
+                               formObj.submit();                                               
+                       }
+               }               
+       }
+// ============================================================
+// = set image properties V 1.0, date: 04/25/2005             =
+// ============================================================                
+       function setImageArgs() {
+               var formObj = document.forms[0];                
+               var args = window.dialogArguments;                                      
+               
+               if (args.tsrc) {                                                                                        // dynamic thumbnail
+                       formObj.pr_src.value = args.tsrc;
+                       changeClass(0,'alertImg','showit');                                             // show warning         
+               }
+               if (args.rset) {
+                       formObj.pr_src.value = args.rsrc;
+               }
+               
+               formObj.pr_width.value  = args.width  ? args.width  : '';       // WIDTH value          
+               formObj.pr_height.value = args.height ? args.height : '';       // HEIGHT value
+               formObj.pr_alt.value    = args.alt;                                                     // ALT text             
+               formObj.pr_title.value  = args.title;                                           // DESCR text
+               formObj.pr_border.value = args.border ? args.border : '';       // BORDER value 
+               formObj.pr_vspace.value = args.vspace ? args.vspace : '';       // VSPACE value                         
+               formObj.pr_hspace.value = args.hspace ? args.hspace : '';       // HSPACE value
+               
+               if (args.caption == 1) { // if image caption
+                       formObj.pr_chkCaption.checked = true;
+                       for (var i = 0; i < formObj.pr_captionClass.options.length; i++) {      // CLASS value
+                               if (formObj.pr_captionClass.options[i].value == args.captionClass) {
+                                       formObj.pr_captionClass.options.selectedIndex = i;                              
+                               }
+                       }
+               }
+               
+               for (var i = 0; i < formObj.pr_align.options.length; i++) {     // ALIGN value 
+                       if (formObj.pr_align.options[i].value == args.align) {
+                               formObj.pr_align.options.selectedIndex = i;                             
+                       }
+               }
+               
+               for (var i = 0; i < formObj.pr_class.options.length; i++) {     // CLASS value
+                       if (formObj.pr_class.options[i].value == args.className) {
+                               formObj.pr_class.options.selectedIndex = i;                             
+                       }
+               }
+               // set popup preview in case it's a popup
+               if (args.popSrc) {                                      
+                       setImagePopup(args.popSrc);                             // update popup preview                 
+                       formObj.popTitle.value = args.popTitle; // link title
+                       for (var i = 0; i < formObj.popClassName.options.length; i++) { // CLASS value
+                               if (formObj.popClassName.options[i].value == args.popClassName) {
+                                       formObj.popClassName.options.selectedIndex = i;                         
+                               }
+                       }               
+               }
+               formObj.param.value = ''; // resetting param value              
+       }
+// ============================================================
+// = set popup image src preview V 1.0, date: 05/13/2005      =
+// ============================================================        
+       function setImagePopup(popSrc) {                
+               var formObj = document.forms[0];
+               var src = '<?php echo $cfg['scripts']; ?>' + 'phpThumb/phpThumb.php'; // command                        
+               src     = src + '?src=' + popSrc;                                       // popup source image                           
+               src     = src + '&w=80';                                                        // image width
+               src     = src + '&h=60';                                                        // image height
+               src     = src + '&zc=1';                                                        // zoom crop                    
+               document.getElementById('poPrevFrame').src = src;       // update preview       
+               formObj.popSrc.value = popSrc;
+       }
+// ============================================================
+// = insertImage, date: 08/03/2005                            =
+// ============================================================
+       function insertImage() {
+               var formObj = document.forms[0];
+               var args = {};
+               // get active menu button
+               var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className == 'btnDown') {
+                               if (x[i].id == 'mbtn_po') { // popup mode
+                                       if(formObj.chkP.checked) {                                                              
+                                               args.action    = 2; // delete popup link
+                                       } else { // create / edit link to popup image
+                                               args.action    = 1; 
+                                               args.popUrl    = '<?php echo $cfg['pop_url']; ?>'; // link to popup.php                                         
+                                               args.popSrc    = (formObj.popSrc.value)   ? (formObj.popSrc.value)   : '';                                              
+                                               args.popTitle  = (formObj.popTitle.value) ? (formObj.popTitle.value) : '';
+                                               args.popTxt    = '<?php echo $l->m('in_036'); ?>';
+                                               if (formObj.popClassName.selectedIndex > 0) { // if class style is selected
+                                                       args.popClassName = (formObj.popClassName.options[formObj.popClassName.selectedIndex].value) ? (formObj.popClassName.options[formObj.popClassName.selectedIndex].value) : '';
+                                               }
+                                               // caption parameters
+                                               args.caption      = formObj.pr_chkCaption.checked ? formObj.pr_chkCaption.value : '';
+                                               args.captionClass = (formObj.pr_captionClass.options[formObj.pr_captionClass.selectedIndex].value) ? (formObj.pr_captionClass.options[formObj.pr_captionClass.selectedIndex].value) : '';
+                                       }                                                       
+                               }
+                       }
+               }
+               //-------------------------------------------------------------------------
+               // check if valid image is selected             
+               if (!args.action) { // if not popup     mode, check whether there is a valid image selected             
+                       if (formObj.pr_src.value == '') { // no valid picture has been selected                         
+                               var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                               alert(msg);
+                               return;
+                       }
+                       
+                       args.src = (formObj.pr_src.value) ? (formObj.pr_src.value) : '';                                                                        
+                       if ('<?php echo $cfg['furl']; ?>' == true) { // create full url incl. e.g. http://localhost....
+                               args.src = '<?php echo $cfg['base_url']; ?>' + args.src;                                
+                       }
+                                               
+                       args.width  = (formObj.pr_width.value)  ? (formObj.pr_width.value)  : '';
+                       args.height = (formObj.pr_height.value) ? (formObj.pr_height.value) : '';                               
+                       args.align      = (formObj.pr_align.value)  ? (formObj.pr_align.value)  : '';
+                       args.border = (formObj.pr_border.value) ? (formObj.pr_border.value) : '';                               
+                       args.alt        = (formObj.pr_alt.value)    ? (formObj.pr_alt.value)    : '';
+                       args.title      = (formObj.pr_title.value)  ? (formObj.pr_title.value)  : '';
+                       args.hspace = (formObj.pr_hspace.value) ? (formObj.pr_hspace.value) : '';
+                       args.vspace = (formObj.pr_vspace.value) ? (formObj.pr_vspace.value) : ''; 
+                       if (formObj.pr_class.selectedIndex > 0) { // if class style is selected
+                               args.className = (formObj.pr_class.options[formObj.pr_class.selectedIndex].value) ? (formObj.pr_class.options[formObj.pr_class.selectedIndex].value) : '';
+                       }
+                       // caption parameters
+                       args.caption = formObj.pr_chkCaption.checked ? formObj.pr_chkCaption.value : '';
+                       args.captionClass = (formObj.pr_captionClass.options[formObj.pr_captionClass.selectedIndex].value) ? (formObj.pr_captionClass.options[formObj.pr_captionClass.selectedIndex].value) : '';
+               } else { // check whether there is valid popup image
+                       if (formObj.popSrc.value == '') { // no valid picture has been selected                         
+                               var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                               alert(msg);
+                               return;
+                       }
+               }               
+                                                       
+               //-------------------------------------------------------------------------     
+               // save image to wysiwyg editor and close window                
+               window.returnValue = args;
+               window.close();                         
+               
+               if (iBrowser.isGecko) { // Gecko                                
+                       <?php                                   
+                               if (!empty($_REQUEST['callback'])) {                                    
+                                       echo "opener." . @$_REQUEST['callback'] . "('" . @$_REQUEST['editor'] . "',this);\n";
+                               };
+                       ?>      
+               }       
+       }
+// ============================================================
+// = image change - set attributes V 1.0, date: 12/03/2004    =
+// ============================================================
+       function imageChange() {                
+               var formObj = document.forms[0];
+               var args        = imageChange.arguments;                                                                                                // image change arguments - set by rfiles.php                                           
+               var clib    = absPath(formObj.ilibs.options[formObj.ilibs.selectedIndex].value);        // current library - absolute path              
+               var cfile   = document.getElementById('cimg').attributes['cfile'].value;                        // get current image
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;                       // get current width    
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;                      // get current height           
+               var csize   = document.getElementById('cimg').attributes['csize'].value.split('|');     // get current size (array)
+               var ctype   = document.getElementById('cimg').attributes['ctype'].value.split('|');     // get current type (array)     
+                       
+               //-------------------------------------------------------------------------
+               // set default image attributes
+               formObj.pr_src.value    = clib + cfile;         
+               formObj.pr_width.value  = cwidth;
+               formObj.pr_height.value = cheight;              
+               formObj.pr_size.value   = csize[0];             
+               formObj.pr_align.options.selectedIndex = 0;
+               formObj.pr_class.options.selectedIndex = 0;
+               document.getElementById('pr_sizeUnit').innerHTML = csize[1]; // e.g. kb         
+               formObj.pr_alt.value    = cfile.substr(0, cfile.length-4);
+               formObj.pr_title.value  = cfile.substr(0, cfile.length-4);              
+               changeClass(0,'alertImg','hideit');
+               //-------------------------------------------------------------------------
+               // update preview window        
+               var sizes = resizePreview(cwidth, cheight, 175, 175);           
+               var src = '<?php echo $cfg['scripts']; ?>' + 'phpThumb/phpThumb.php'; // command
+               src = src + '?src=' + clib + cfile; // source file
+               src = src + '&w=' + sizes['w']; // width                
+               document.getElementById('inPrevFrame').src = src; // update regular preview
+               
+               //-------------------------------------------------------------------------
+               // reset rename and delete info
+               if ('<?php echo $cfg['rename']; ?>' == true) {
+                       formObj.in_srcnew.value  = cfile.substr(0, cfile.length-4); // default rename value                     
+               }
+               if ('<?php echo $cfg['delete']; ?>' == true) {
+                       formObj.in_delinfo.value = cfile;                                                       // default delete value
+               }
+               
+               //-------------------------------------------------------------------------
+               // change image attributes in case it's an existing image               
+               if (args[0] == 'update') {      // if argument from rfiles.php received                         
+                       setImageArgs();                 // update image attributes
+               } else if (args[0] == 'delete') { // image was deleted
+                       document.getElementById('cimg').attributes['cfile'].value = '';                 
+                       document.getElementById('in_srcnew').value  = '';
+                       document.getElementById('in_delinfo').value = '';                       
+                       document.getElementById('inPrevFrame').src = 'images/noImg.gif'; // update preview
+               }
+                       
+               //-------------------------------------------------------------------------
+               // update popup preview and set popup default attributes
+               if (document.getElementById('mbtn_po').className == 'btnDown') {
+                       var popSrc = clib + cfile; 
+                       setImagePopup(popSrc);                  
+                       formObj.popTitle.value = cfile.substr(0, cfile.length-4);                       
+               }
+               //-------------------------------------------------------------------------
+               // random image
+               formObj.chkRandom.checked = false; // uncheck random on image change
+               changeClass(1,'raParamDiv','hideit');
+               //-------------------------------------------------------------------------
+               updateStyle();          
+               btnStage();     
+       }
+// ============================================================
+// = update style frame V 1.0, date: 12/13/2004               =
+// ============================================================        
+       function updateStyle() {
+               var formObj = document.forms[0];                        
+               document.getElementById('atPrevImg').align              = formObj.pr_align.options[formObj.pr_align.selectedIndex].value;                       
+               document.getElementById('atPrevImg').vspace     = formObj.pr_vspace.value;
+               document.getElementById('atPrevImg').hspace     = formObj.pr_hspace.value;
+               document.getElementById('atPrevImg').border     = formObj.pr_border.value;
+               document.getElementById('atPrevImg').alt                = formObj.pr_alt.value;
+               document.getElementById('atPrevImg').title              = formObj.pr_title.value;
+               document.getElementById('atPrevImg').className  = formObj.pr_class.options[formObj.pr_class.selectedIndex].value;       
+       }
+// ============================================================
+// = enable/disable menu buttons, date: 03/21/2005            =
+// ============================================================ 
+       function btnStage() {
+               var formObj = document.forms[0];                                        
+               var cfile   = document.getElementById('cimg').attributes['cfile'].value; // current image       
+               if (cfile  == '') {                     
+                       formObj.img_at.src = 'images/img_at_off.gif';                   
+                       if (formObj.img_cr) {
+                               formObj.img_cr.src = 'images/img_cr_off.gif';   
+                       }               
+                       return false;
+               }
+               formObj.img_at.src = 'images/img_at.gif';
+               if (formObj.img_cr) {
+                       formObj.img_cr.src = 'images/img_cr.gif';
+               }
+               return true;            
+       }
+// ============================================================
+// = resize image to fit preview V 1.0, date: 12/19/2004      =
+// ============================================================        
+       function resizePreview(w,h,mw,mh) { // width, height, max width, max height                             
+               var sizes = new Array();                
+               if (w > mw || h > mh) { // thumbnailing required
+                       f = w / h; // proportions of image: (f > 1) = landscape; (f < 1) = portrait; (f = 1) = square                   
+                       if (f > 1) { // landscape and square
+                               w = mw;
+                               h = Math.round(w / f);                  
+                       } else if (f <= 1) {    // portrait
+                               h = mh;                         
+                               w = Math.round(h * f);                  
+                       }       
+               }                               
+               sizes['w'] = w;
+               sizes['h'] = h;
+               return sizes;
+       }
+// ============================================================
+// = insert special characters V 1.0, date: 03/31/2005        =
+// ============================================================                
+       function selSymbol(elm) {                               
+               var wArgs = {};
+               wArgs.iBrowser = iBrowser;
+               wArgs.elm = elm;        // passing calling element to function
+               if ((iBrowser.isMSIE)) { 
+                       var rArgs = showModalDialog('<?php echo $cfg['scripts']; ?>symbols.php?lang=<?php echo $l->lang; ?>', wArgs, 
+                       'dialogHeight:300px; dialogWidth:400px; scrollbars: no; menubar: no; toolbar: no; resizable: no; status: no;');                                                                                                 
+                       if (rArgs) {                            
+                               setSymbol(null, null, rArgs);
+                       }                       
+               } else if (iBrowser.isGecko) {
+                       var wnd = window.open('<?php echo $cfg['scripts']; ?>symbols.php?lang=<?php echo $l->lang; ?>&callback=setSymbol', 'symbols', 'status=no, modal=yes, width=400, height=300');                           
+                       wnd.dialogArguments = wArgs;
+               }               
+       }
+       // set symbol callback
+       function setSymbol(editor, sender, rArgs) {             
+               if (!rArgs) { // Gecko          
+                       var rArgs = sender.returnValue;                         
+               }
+               if (rArgs.chr != null) {
+                       var chr = rArgs.chr;
+                       var elm = rArgs.elm;                            
+                       chr = String.fromCharCode(chr.substring(2, chr.length -1)); // e.g. returns &#220;              
+                       document.getElementById(elm).value = document.getElementById(elm).value + ' ' + chr;
+               }                       
+  }             
+// ============================================================
+// = preload Images, date: 11/13/2004                         =
+// ============================================================                
+       function preloadImages() {
+               var d=document;
+               if(d.images) {
+                       if(!d.MM_p)
+                               d.MM_p = new Array();
+                       var i,j=d.MM_p.length,a = preloadImages.arguments;
+                               for(i= 0; i < a.length; i++)
+                               if (a[i].indexOf("#") != 0) {
+                                               d.MM_p[j] = new Image;
+                                               d.MM_p[j++].src = a[i];
+                       }
+               }
+       }
+// ============================================================
+// = change image library V 1.0, date: 04/22/2005             =
+// ============================================================
+       function ilibsClick() {         
+               var formObj = document.forms[0];                
+               formObj.param.value = ''; // clear param values;                
+               formObj.submit();       
+               // reset values 
+               document.getElementById('inPrevFrame').src = 'images/noImg.gif'; // update preview
+               document.getElementById('cimg').attributes['cfile'].value = '';
+               btnStage();                     
+       }
+// ============================================================
+// = upload image, date: 05/24/2005                           =
+// ============================================================
+       function uploadClick() {
+               var formObj = document.forms[0];                
+               if (!checkUpload()) {
+                       var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_023'); ?>');
+                       alert(msg);
+                       return;
+               }
+               if (confirm('<?php echo $l->m('er_021'); ?>')) {                        
+                       formObj.param.value = 'upload'; // parameter: <action>                  
+                       showloadmessage();
+                       formObj.submit();                                               
+               }
+       }
+       // check whether image file is selected for uploading
+       function checkUpload() {                
+               var formObj = document.forms[0];        
+               var upload = false;
+               var x = document.getElementById('fiUplDiv').getElementsByTagName('input');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].type == 'file') {
+                               if (x[i].value != '') { // check whether files has been selected for upload                                     
+                                       
+                                       for (z=0; document.getElementById('chkThumbSize['+ z +']'); z++) {                                              
+                                               if(document.getElementById('chkThumbSize['+ z +']').checked) {
+                                                       upload = true;                                                  
+                                               }                                               
+                                       }
+                               }
+                       }                       
+               }
+               return upload;  
+       }
+// ============================================================
+// = delete image V 1.0, date: 04/22/2005                     =
+// ============================================================
+       function deleteClick() {
+               var formObj = document.forms[0];                
+               var cfile = document.getElementById('cimg').attributes['cfile'].value;
+               if (cfile == '') { // check if image is selected        
+                       var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                       alert(msg);
+                       return;
+               }
+                               
+               if (confirm('<?php echo $l->m('er_008'); ?> ' + cfile + '!')) {                         
+                       formObj.param.value = 'delete' + '|' + cfile; // parameter: <action>|<file>                             
+                       formObj.submit();       
+               }               
+       } 
+// ============================================================
+// = rename image V 1.0, date: 04/22/2005                     =
+// ============================================================
+       function renameClick() {
+               var formObj = document.forms[0];
+               var clib =  formObj.ilibs.options[formObj.ilibs.selectedIndex].value; // current library
+               var cfile = document.getElementById('cimg').attributes['cfile'].value;          
+               var ctype = document.getElementById('cimg').attributes['ctype'].value.split('|');               
+                               
+               if (cfile == '') { // check if image is selected
+                       var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                       alert(msg);
+                       return;
+               }               
+               
+               var ctype = '.' + imageType(ctype[0]);          
+               if (formObj.in_srcnew.value == '' || formObj.in_srcnew.value + ctype == cfile) { // new name is either empty or hasn't changed
+                       var msg = escapeHTML('<?php echo $l->m('er_011'); ?>');
+                       alert(msg);
+                       return;
+               }
+                               
+               if (confirm('<?php echo $l->m('er_010'); ?>: ' + formObj.in_srcnew.value + ctype)) { // do rename                                       
+                       var nfile = formObj.in_srcnew.value + ctype;                             
+                       formObj.param.value = 'rename' + '|' + cfile + '|' + nfile; // parameter: <action>|<filename>|<newname>         
+                       formObj.submit();                               
+               }                       
+       }
+// ============================================================
+// = switch list view V 1.0, date: 07/06/2005                 =
+// ============================================================
+       function switchList() {
+               var formObj = document.forms[0];                        
+               if (formObj.flist.value == 1) { // check if image is selected   
+                       formObj.flist.value = 0;
+               } else {
+                       formObj.flist.value = 1;
+               }               
+               // refresh list view            
+               var cfile = document.getElementById('cimg').attributes['cfile'].value;
+               if (cfile.length > 0) {
+                       formObj.param.value = 'switch' + '|' + cfile;   
+               }
+               formObj.submit();       
+       } 
+// ============================================================
+// = create directory V 1.0, date: 04/22/2005                 =
+// ============================================================
+       function createClick() {
+               var formObj = document.forms[0];
+               var clib    = formObj.ilibs.options[formObj.ilibs.selectedIndex].value;                 // current library
+               
+               if (clib == '') { // check if library is selected
+                       var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                       alert(msg);
+                       return;
+               }                       
+               if (formObj.in_dirnew.value == '') { // check if user has entered a new directory name
+                       var msg = escapeHTML('<?php echo $l->m('er_011'); ?>');
+                       alert(msg);
+                       return;
+               }
+                               
+               if (confirm('<?php echo $l->m('in_026'); ?>: ' + clib + formObj.in_dirnew.value)) {                                     
+                       var nfile = formObj.in_dirnew.value;                                             
+                       formObj.param.value = 'create' + '|' + nfile; // parameter: <action>|<newdir>           
+                       formObj.submit();                               
+               }                               
+       }
+// ============================================================
+// = set random image, date: 07/17/2005                       =
+// ============================================================
+       function setRandom() {
+               var formObj = document.forms[0];
+               var action = setRandom.arguments;
+               if (action[0] == 0) { // set arguments on init
+                       var args = window.dialogArguments;      
+                       var formObj = document.forms[0];
+                       
+                       for (var i = 0; i < formObj.ilibs.options.length; i++) { // random library
+                               var pos = args.rlib.indexOf(formObj.ilibs.options[i].value);
+                               if (pos != -1) {
+                                       formObj.ilibs.options.selectedIndex = i;        
+                               }
+                       }
+                       
+                       ilibsClick();
+                       formObj.chkRandom.checked = true;
+                       formObj.randomParam.value = args.rset;
+                       var src = 'images/randomImg.gif';
+                       document.getElementById('inPrevFrame').src = src;
+                       document.getElementById('cimg').attributes['cfile'].value = src;
+                       changeClass(1,'raParamDiv','showit');
+                       setImageArgs();
+                       btnStage();
+               } else if (action[0] == 1) {
+                       if (formObj.chkRandom.checked) {
+                               document.getElementById('inPrevFrame').src = 'images/randomImg.gif'; // update preview
+                               var clib= formObj.ilibs.options[formObj.ilibs.selectedIndex].value; 
+                               var src = '<?php echo $cfg['scripts']; ?>' + 'random.php'; // command                                   
+                               src     = src + unescape('?dir=<?php echo str_replace('\\','/', $cfg['root_dir']); ?>' + clib);
+                               src     = src + formObj.randomParam.value;                              
+                               formObj.pr_src.value    = src;
+                               formObj.pr_alt.value    = '<?php echo $l->m('in_053'); ?>';
+                               formObj.pr_title.value  = '<?php echo $l->m('in_053'); ?>';
+                               formObj.pr_width.value  = '';
+                               formObj.pr_height.value = '';
+                               changeClass(1,'raParamDiv','showit');
+                               document.getElementById('cimg').attributes['cfile'].value = src;                                
+                               btnStage();
+                               formObj.param.value = '';
+                               formObj.submit();       
+                       } else {
+                               document.getElementById('inPrevFrame').src = 'images/noImg.gif'; // update preview
+                               formObj.param.value = '';
+                               formObj.pr_src.value = '';
+                               changeClass('raParamDiv','hideit');
+                               document.getElementById('cimg').attributes['cfile'].value = '';
+                               btnStage();
+                               formObj.submit();               
+                       }
+               } else if (action[0] == 2) { // resetting parameter values to config value
+                       formObj.randomParam.value = '<?php echo $cfg['random']; ?>';
+               }
+       }
+
+// ============================================================
+// = full size preview V 1.0, date: 12/18/2004                =
+// ============================================================        
+       function fullSizeView() {
+               var formObj = document.forms[0];                
+               var clib    = formObj.ilibs.options[formObj.ilibs.selectedIndex].value;         // current library
+               var cfile   = document.getElementById('cimg').attributes['cfile'].value;        // current image                        
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;       // current width
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;      // current height
+               if (cfile != '') {      
+                       var sizes;              
+                       sizes = resizePreview(cwidth,cheight,512,512);                  
+                       if (sizes['w'] > 175 || sizes['h'] > 175) { // open external window if size &gt; 175 which is the size of the preview window                    
+                       } else {
+                               var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_032'); ?>');
+                               alert(msg);
+                               return;
+                       }
+                       var src;                                                
+                       src = '<?php echo $cfg['scripts']; ?>' + 'phpThumb/phpThumb.php'; // command                                                    
+                       src = src + '?src=' + absPath(clib) + cfile; // source image
+                       src = src + '&w='+sizes['w']; //image width                                             
+               
+                       var windowName = 'fullView';                                                    
+                       var features =
+                       'width='        + sizes['w'] +
+                       ',height='      + sizes['h'] +                  
+                       ',top='         + '10'  +
+                       ',left='        + '10'  +
+                       ',location='    + 'no'  +
+                       ',menubar='     + 'no'  +
+                       ',scrollbars='  + 'no'  +
+                       ',status='      + 'no'  +
+                       ',toolbar='     + 'no'  +
+                       ',resizable='   + 'no';                 
+                       // open full view popup window
+                       window.open('<?php echo $cfg['pop_url']; ?>?url=' + escape(src) + '&clTxt=' + '<?php echo $l->m('in_036'); ?>', windowName, features);                          
+               }
+       }
+// ============================================================
+// = change class, date: 12/01/2004                           =
+// ============================================================
+       function changeClass() {                
+               var args = changeClass.arguments;               
+               if (args[0] == 0 || args[0] == 1) { // 0 = no resizeDialogToContent; 1 = resizeDialogToContent
+                       var start = 1;
+               } else {
+                       var start = 0;
+               }
+               
+               for(var i = start; i < args.length; i += 2) {
+                       if(document.getElementById(args[i]) != null) {                          
+                               document.getElementById(args[i]).className = args[i+1];
+                       }
+               }
+               // resize dialog to content
+               if (args[0] == 1) {                                     
+                       resizeDialogToContent();
+               }               
+       }       
+// ============================================================
+// = image dimension change, date: 05/08/2005                 =
+// ============================================================                
+       function changeDim(sel) {               
+               var formObj = document.forms[0];
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;                       // get current width    
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;                      // get current height   
+               
+               if (eval(formObj.pr_width.value) > cwidth || eval(formObj.pr_height.value) > cheight) {                 // check for enlarging                  
+                       var msg = escapeHTML('<?php echo $l->m('er_001') . ': ' . $l->m('er_035'); ?>');
+                       alert(msg);
+                       resetDim();
+                       return;
+               }               
+               
+               f = cheight/cwidth; // factor           
+               if (sel == 1) {                                                                                                                                         // height changed                               
+                       formObj.pr_width.value  = Math.round(formObj.pr_height.value / f);
+               } else if (sel == 0) {                                                                                                                          // width changed                        
+                       formObj.pr_height.value = Math.round(formObj.pr_width.value * f);                       
+               }               
+       }
+       
+       function resetDim() { // reset dimensions
+               var formObj = document.forms[0];
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;                       // get current width    
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;                      // get current height   
+               formObj.pr_width.value  = cwidth;
+               formObj.pr_height.value = cheight;
+       }                       
+// ============================================================
+// = show about, date: 06/04/2005                             =
+// ============================================================        
+       function about() {              
+               var formObj = document.forms[0];                
+               if (document.getElementById('imDiv').className == 'hideit') {
+                       var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+                       for (var i = 0; i < x.length; i++) {
+                               if (x[i].className == 'btnDown') {                              
+                                       formObj.param.value = (x[i].id);
+                                       elm = x[i].id.substring(x[i].id.length-2, x[i].id.length);                      
+                                       if (elm == 'po') { // popup windows - uses inDiv
+                                               elm = 'in'
+                                       }
+                                       elm = elm + 'Div';
+                                       document.getElementById('mainDivHeader').innerHTML = setTitle('imDiv');                 
+                                       changeClass(1,elm,'hideit','imDiv','showit');                                                                                   
+                               }
+                       }
+               } else if (document.getElementById('imDiv').className == 'showit' && formObj.param.value != '') {
+                       elm = formObj.param.value;                      
+                       btn_click(elm);                 
+               }
+       }
+// ============================================================
+// = image file type extension V 1.0, date: 11/27/2004        =
+// ============================================================        
+       function imageType(type) {              
+               var ext;                
+               switch(parseInt(type)) {
+                       case 1 : ext = 'gif'; break;
+                       case 2 : ext = 'jpg'; break;
+                       case 3 : ext = 'png'; break;
+                       case 6 : ext = 'bmp'; break;
+                       default: ext = 'unknown';               
+               }               
+               return ext;
+       }
+// ============================================================
+// = show/hide load message, date: 07/07/2005                 =
+// ============================================================
+       function showloadmessage() {
+               document.getElementById('dialogLoadMessage').style.display = 'block';
+       }       
+       function hideloadmessage() {
+               document.getElementById('dialogLoadMessage').style.display = 'none';
+       }       
+// ============================================================
+// = show image info layer, date: 04/22/2005                  =
+// ============================================================
+       function showInfo() {
+               var formObj = document.forms[0];
+               if (formObj.chkRandom.checked) { // random image
+                       return false;
+               }               
+               if (document.getElementById('cimg').attributes['cfile'].value != '') {                  
+                       var obj  = document.getElementById('inPrevDiv');
+                       var oDiv = document.getElementById('infoDiv');                          
+                       
+                       if (oDiv.className == 'showit') {
+                               changeClass(0,oDiv.id,'hideit');
+                       } else {
+                               document.getElementById('inf_cwidth').innerHTML  = document.getElementById('cimg').attributes['cwidth'].value  + ' px';
+                               document.getElementById('inf_cheight').innerHTML = document.getElementById('cimg').attributes['cheight'].value + ' px';
+                               ctype = document.getElementById('cimg').attributes['ctype'].value.split('|'); 
+                               document.getElementById('inf_ctype').innerHTML   = ctype[1];            
+                               csize = document.getElementById('cimg').attributes['csize'].value.split('|');
+                               document.getElementById('inf_csize').innerHTML   = csize[0] + ' ' + csize[1];                           
+                               document.getElementById('inf_ccdate').innerHTML  = document.getElementById('cimg').attributes['ccdate'].value; 
+                               document.getElementById('inf_cmdate').innerHTML  = document.getElementById('cimg').attributes['cmdate'].value;          
+                               if (iBrowser.isMSIE) {
+                                       moveInfoTo(obj, oDiv, 0, 0); // object to move to (destination), object being moved, x offset, y offset         
+                               } else if (iBrowser.isGecko) {
+                                       moveInfoTo(obj, oDiv, 0, 0); // object to move to (destination), object being moved, x offset, y offset
+                               }                                               
+                               changeClass(0, oDiv.id, 'showit');
+                       }
+               }       
+       }
+// ============================================================
+// = move layer/div to object, date: 04/22/2005               =
+// ============================================================
+       function moveInfoTo(obj, oDiv, ox, oy) {                        
+                       var newX = getPosX(obj) + ox;
+                       var newY = getPosY(obj) + oy;                   
+                       document.getElementById(oDiv.id).style.left = newX + 'px';
+                       document.getElementById(oDiv.id).style.top  = newY + 'px';                                      
+       }
+// ============================================================
+// = get object's position, date: 04/22/2005                  =
+// ============================================================
+       function getPosX(obj) { // get X position
+               var cleft = 0;
+               if (obj.offsetParent) {
+                       while (obj.offsetParent) {
+                               cleft += obj.offsetLeft
+                               obj    = obj.offsetParent;
+                       }
+               } else if (obj.x) {
+                       cleft += obj.x;
+               }
+               return cleft;           
+       }
+
+       function getPosY(obj) { // get Y position
+               var ctop = 0;
+               if (obj.offsetParent) {
+                       while (obj.offsetParent) {
+                               ctop += obj.offsetTop
+                               obj   = obj.offsetParent;
+                       }
+               } else if (obj.y) {
+                       ctop += obj.y;
+               }
+               return ctop;
+       }
+// ============================================================
+// = returns absolute path, date: 04/22/2005                  =
+// ============================================================
+       function absPath(path) {
+               if (path.charAt(0) != '/') {
+                       path = '/' + path;                      
+               }
+               return path;
+       }
+// ============================================================
+// = escapeHTML, date: 08/12/2005                             =
+// ============================================================
+       function escapeHTML(str) {              
+               var divElm = document.createElement('div');
+               divElm.innerHTML = str; 
+               str = divElm.innerHTML;
+               return str;
+       }
+//-->
+</script>
+</head>
+<body onLoad="init(); hideloadmessage();" dir="<?php echo $l->getDir(); ?>">
+<?php include dirname(__FILE__) . '/scripts/loadmsg.php'; ?>
+<!- image info layer (cimg) -->
+<div id="infoDiv" class="hideit">
+  <div>
+    <label><?php echo $l->m('in_028'); ?>:</label>
+    <span id="inf_cwidth"> </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_029'); ?>:</label>
+    <span id="inf_cheight"> </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_030'); ?>:</label>
+    <span id="inf_ctype"> </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_031'); ?>:</label>
+    <span id="inf_csize"> </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_033'); ?>:</label>
+    <span id="inf_ccdate"> </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_034'); ?>:</label>
+    <span id="inf_cmdate"> </span>
+  </div>
+</div>
+<form id="iBrowser" name="iBrowser" method="post" action="scripts/rfiles.php" enctype="multipart/form-data" target="inSelFrame">
+  <input type="hidden" name="lang" value="<?php echo $l->lang; ?>" />
+  <input type="hidden" id="param" name="param" value="" />
+  <input type="hidden" id="flist" name="flist" value="<?php echo $cfg['list']; ?>" />
+  <input type="hidden" id="cimg" name="cimg" value="" cfile="" cwidth="" cheight="" csize="" ctype="" ccdate="" cmdate="" />
+  <div id="outerDivWrap">
+    <div class="headerDiv">
+      <div class="btnRight">
+        <img src="images/about_off.gif" alt="<?php echo $l->m('im_015'); ?>" width="16" height="16" border="0" align="middle" title="<?php echo $l->m('im_015'); ?>" onClick="about();" onMouseOver="this.src='images/about.gif';" onMouseOut="this.src='images/about_off.gif';" />
+      </div>
+      <?php echo $l->m('im_002'); ?>
+    </div>
+    <div class="brdPad">
+      <!- MAIN MENU --------------------------------------------------------- -->
+      <div id="menuDivWrap">
+        <div class="headerDiv">
+          <?php echo $l->m('im_003'); ?>
+        </div>
+        <div class="brdPad">
+          <div id="menuDiv">
+            <div id="menuBarDiv" >
+              <ul>
+                <li id="mbtn_in" class="btnUp"><img id="img_in" src="images/img_in.gif" width="40" height="40" />
+                  <div>
+                    <?php echo $l->m('im_007'); ?>
+                  </div>
+                </li>
+                <li id="mbtn_at" class="btnUp"><img id="img_at" src="images/img_at.gif" width="40" height="40" />
+                  <div>
+                    <?php echo $l->m('im_009'); ?>
+                  </div>
+                </li>               
+                <li id="mbtn_po" class="btnUp"><img id="img_po" src="images/img_po.gif" width="40" height="40" />
+                  <div>
+                    <?php echo $l->m('im_013'); ?>
+                  </div>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </div>
+      </div>
+      <!- // menuDivWrap -->
+      <!- MAIN CONTENT ------------------------------------------------------ -->
+      <div id="mainDivWrap">
+        <div id="mainDivHeader" class="headerDiv">
+          <?php echo $l->m('im_016'); ?>
+        </div>
+        <div class="brdPad">
+          <div id="mainDiv">
+            <!- WELCOME ----------------------------------------------------------- -->
+            <div id="imDiv" class="showit">
+              <p><img class="right" src="images/ib.gif" alt="<?php echo $l->m('im_001'); ?>" title="<?php echo $l->m('im_001'); ?>" width="48" height="48" border="0" /><strong>net<span class="hilight">4</span>visions.com</strong> - the image browser plugin for WYSIWYG editors like FCKeditor, SPAW, tinyMCE, Xinha, and HTMLarea!</p>
+              <p> <strong> <span class="hilight">i</span>Browser</strong> does upload images and supply file management functions. Images can be resized on the fly. If you need even more advanced features, have a look at <strong> <span class="hilight">i</span>Manager</strong>, another <strong>net<span class="hilight">4</span>visions.com</strong> plugin - it adds truecolor image editing functions like: resize, flip, crop, add text, gamma correct, merge into other image, and many others.</p>
+              <p><strong> <span class="hilight">i</span>Browser</strong> is written and distributed under the GNU General Public License which means that its source code is freely-distributed and available to the general public.</p>
+              <p>&nbsp;</p>
+              <p>
+              <div class="btnRight">
+                <img src="images/firefox.gif" alt="" title="" width="80" height="15" align="absmiddle" /><img src="images/explorer.gif" alt="" title="" width="80" height="15" align="absmiddle" />
+              </div>
+              <span class="ver"> Version: <?php echo $cfg['ver']; ?> </span>
+              </p>
+            </div>
+            <!- // imDiv -->
+            <!- INSERT/CHANGE ----------------------------------------------------- -->
+            <div id="inDiv" class="hideit">
+              <fieldset>
+              <!- select library ---------------------------------------------------- -->
+              <div id="ilibsDiv" class="showit">
+                <div class="rowDiv">
+                  <div class="btnRight">
+                    <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('in_003'); ?>" alt="<?php echo $l->m('in_003'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label for="ilibs"> <span class="title"> <?php echo $l->m('in_002'); ?> </span> </label>
+                  <select class="fldlg" id="ilibs" name="ilibs" size="1" onChange="ilibsClick(this);">
+                    <?php echo $lib_options; ?>
+                  </select>
+                </div>
+              </div>
+              </fieldset>
+              <div class="floatWrap">
+                <!- left column ------------------------------------------------------- -->
+                <div class="colLeft">
+                  <fieldset>
+                  <!- select image ------------------------------------------------------ -->
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <img id="alertImg" class="hideit" src="images/alert_off.gif" onClick="alert(this.alt);" onMouseOver="this.src='images/alert.gif';" onMouseOut="this.src='images/alert_off.gif';" alt="<?php echo $l->m('in_051'); ?>" title="<?php echo $l->m('in_051'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label> <span class="title"> <?php echo $l->m('in_004'); ?> </span> </label>
+                  </div>
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <span><img src="images/info_off.gif" onMouseOver="this.src='images/info.gif'; showInfo();" onMouseOut="this.src='images/info_off.gif'; showInfo();" alt="" title="" width="16" height="16" border="0" /><br />
+                      <img src="images/dirview_off.gif" onClick="switchList();" onMouseOver="this.src='images/dirview.gif';" onMouseOut="this.src='images/dirview_off.gif';" alt="<?php echo $l->m('in_052'); ?>" title="<?php echo $l->m('in_052'); ?>" width="16" height="16" border="0" /></span>
+                    </div>
+                    <div id="inSelDiv">
+                      <iframe name="inSelFrame" id="inSelFrame" src="scripts/rfiles.php?clib=<?php echo $clib; ?>" style="width: 100%; height: 100%;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
+                    </div>
+                  </div>
+                  </fieldset>
+                </div>
+                <!- // colLeft -->
+                <!- right column ----------------------------------------------------- -->
+                <div class="colRight">
+                  <fieldset>
+                  <!- preview image ---------------------------------------------------- -->
+                  <div class="rowDiv">
+                    <label> <span class="title"> <?php echo $l->m('in_005'); ?> </span> </label>
+                  </div>
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <img onClick="fullSizeView('in'); return false;" src="images/prev_off.gif" onMouseOver="this.src='images/prev.gif';" onMouseOut="this.src='images/prev_off.gif';" alt="<?php echo $l->m('in_007'); ?>" title="<?php echo $l->m('in_007'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <div id="inPrevDiv">
+                      <iframe name="inPrevFrame" id="inPrevFrame" src="images/noImg.gif" style="width: 100%; height: 100%;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
+                    </div>
+                  </div>
+                  </fieldset>
+                </div>
+              </div>
+              <!- // colRight -->
+              <!- random section --------------------------------------------------- -->
+              <div id="raDiv" class="showit">
+                         <div class="mbottom5">
+                <fieldset>
+                <div class="rowDiv">
+                  <div class="btnRight">
+                    <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('in_054'); ?>" title="<?php echo $l->m('in_054'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label> <span class="title"> <?php echo $l->m('in_053'); ?> </span> </label>
+                                                 <input name="chkRandom" id="chkRandom" type="checkbox" value="" class="chkBox" onClick="setRandom(1);" />
+                                <span class="frmText"> <?php echo $l->m('in_055'); ?> </span>
+                </div> 
+                               <div class="rowDiv">
+               <div id="raParamDiv" class="hideit">
+                          <div class="btnRight">
+                      <img src="images/img_size_off.gif" onMouseOver="this.src='images/img_size.gif';" onMouseOut="this.src='images/img_size_off.gif';" onClick="setRandom(2);" alt="<?php echo $l->m('in_057'); ?>" title="<?php echo $l->m('in_057'); ?>" width="16" height="16" border="0" />
+                    </div>
+                  <label for="randomParam"> <span class="pad10"> <?php echo $l->m('in_056'); ?> </span> </label>
+                  <input class="fldlg" id="randomParam" name="randomParam" type="text" value="<?php echo $cfg['random']; ?>" />
+                </div>
+                               </div>
+                </fieldset>
+                               </div>
+              </div>
+              <!- // raDiv -->
+              <!- popup section ---------------------------------------------------- -->
+              <div id="poDiv" class="hideit">
+                <fieldset>
+                <div class="btnRight">
+                  <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('in_013'); ?>" title="<?php echo $l->m('in_013'); ?>" width="16" height="16" border="0" />
+                </div>
+                <div class="poPrevDiv">
+                  <iframe id="poPrevFrame" name="poPrevFrame" src="images/noPop.gif" style="width: 100%; height: 100%;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
+                </div>
+                <div class="rowDiv">
+                  <label> <span class="title"> <?php echo $l->m('in_010'); ?> </span> </label>
+                </div>
+                <div id="poDelDiv" class="hideit">
+                  <div class="rowDiv">
+                    <label for="chkP"> <span class="pad10"> <?php echo $l->m('in_024'); ?> </span> </label>
+                    <input type="checkbox" id="chkP" name="chkP" value="" class="chkBox"/>
+                    <span class="frmText"> (<?php echo $l->m('in_014'); ?>) </span>
+                  </div>
+                </div>
+                <div class="rowDiv">
+                  <label for="popClassName"> <span class="pad10"> <?php echo $l->m('at_009'); ?> </span> </label>
+                                 <select class="fldm" id="popClassName" name="popClassName" />                  
+                  <option value="default" selected="selected"><?php echo $l->m('at_099'); ?></option>
+                 <?php echo getStyles(false); ?>
+                  </select>
+                </div>
+                <!- clear floats ------------------------------------------------------ -->
+                <div class="clrFloatRight">
+                </div>
+                <div class="rowDiv">
+                  <label for="popTitle"> <span class="pad10"> <?php echo $l->m('at_002'); ?> </span> </label>
+                  <input class="fldlg" id="popSrc" name="popSrc" type="text" value="" disabled="true" readonly="true"/>
+                </div>
+                <div class="rowDiv">
+                  <div class="btnRight">
+                    <img onClick="selSymbol('popTitle');" src="images/symbols_off.gif" onMouseOver="this.src='images/symbols.gif';" onMouseOut="this.src='images/symbols_off.gif';" title="<?php echo $l->m('at_029'); ?>" alt="<?php echo $l->m('at_029'); ?>" width="16" height="16" border="0" /><img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_004'); ?>" title="<?php echo $l->m('at_004'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label for="popTitle"> <span class="pad10"> <?php echo $l->m('at_003'); ?> </span> </label>
+                  <input class="fldmlg" id="popTitle" name="popTitle" type="text" value="" />
+                </div>
+                </fieldset>
+              </div>
+              <!- // poDiv -->
+              <!- file section ----------------------------------------------------- -->
+              <div id="fileDivWrap" class="showit">
+                <fieldset>
+                <div class="rowDiv">
+                  <div class="btnRight">
+                    <?php if ($cfg['create'] && isset($cfg['ilibs_inc'])) {; ?>
+                    <img src="images/dir_off.gif" onClick="changeClass(0,'fileDiv','showit','fiDirDiv','showit','fiUplDiv','hideit','fiRenDiv','hideit','fiDelDiv','hideit');" onMouseOver="this.src='images/dir.gif';" onMouseOut="this.src='images/dir_off.gif';" alt="<?php echo $l->m('in_027'); ?>" title="<?php echo $l->m('in_027'); ?>" width="16" height="16" />
+                    <?php }; ?>
+                    <?php if ($cfg['upload']) {; ?>
+                    <img src="images/upimg_off.gif" onClick="changeClass(1,'fileDiv','showit','fiDirDiv','hideit','fiUplDiv','showit','fiRenDiv','hideit','fiDelDiv','hideit');" onMouseOver="this.src='images/upimg.gif';" onMouseOut="this.src='images/upimg_off.gif';" alt="<?php echo $l->m('in_019'); ?>" title="<?php echo $l->m('in_019'); ?>" width="16" height="16" />
+                    <?php }; ?>
+                    <?php if ($cfg['rename']) {; ?>
+                    <img class="isecbtn"src="images/renimg_off.gif" onClick="changeClass(0,'fileDiv','showit','fiDirDiv','hideit','fiRenDiv','showit','fiUplDiv','hideit','fiDelDiv','hideit');" onMouseOver="this.src='images/renimg.gif';" onMouseOut="this.src='images/renimg_off.gif';" alt="<?php echo $l->m('in_017'); ?>" title="<?php echo $l->m('in_017'); ?>" width="16" height="16" border="0" />
+                    <?php }; ?>
+                    <?php if ($cfg['delete']) {; ?>
+                    <img src="images/delimg_off.gif" onClick="changeClass(0,'fileDiv','showit','fiDirDiv','hideit','fiDelDiv','showit','fiRenDiv','hideit','fiUplDiv','hideit');" onMouseOver="this.src='images/delimg.gif';" onMouseOut="this.src='images/delimg_off.gif';" alt="<?php echo $l->m('in_006'); ?>" title="<?php echo $l->m('in_006'); ?>" width="16" height="16" border="0" />
+                    <?php }; ?>
+                    <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('in_008'); ?>" title="<?php echo $l->m('in_008'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label> <span class="title"> <?php echo $l->m('in_015'); ?> </span> </label>
+                </div>
+                <!- clear floats ------------------------------------------------------ -->
+                <div class="clrFloatRight">
+                </div>
+                <div id="fileDiv" class="showit">
+                  <?php if ($cfg['delete']) { ?>
+                  <div id="fiDelDiv" class="hideit">
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img onClick="deleteClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_006'); ?>" title="<?php echo $l->m('in_006'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label for="in_srcnew"> <span class="pad10"> <?php echo $l->m('in_024'); ?> </span> </label>
+                      <input class="fldlg readonly" id="in_delinfo" name="in_delinfo" type="text" value="" disabled="true" readonly="true" />
+                    </div>
+                  </div>
+                  <?php }; ?>
+                  <?php if ($cfg['rename']) { ?>
+                  <div id="fiRenDiv" class="hideit">
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img onClick="renameClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_017'); ?>" title="<?php echo $l->m('in_017'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label for="in_srcnew"> <span class="pad10"> <?php echo $l->m('in_016'); ?> </span> </label>
+                      <input class="fldlg" id="in_srcnew" name="in_srcnew" type="text" value="" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \_]'); ForceLowercase(this); CharacterReplace(this, ' ', '_'); return false;"  />
+                    </div>
+                  </div>
+                  <?php }; ?>
+                  <?php if ($cfg['create']) { ?>
+                  <div id="fiDirDiv" class="hideit">
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img onClick="createClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_026'); ?>" title="<?php echo $l->m('in_026'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label for="in_srcnew"> <span class="pad10"> <?php echo $l->m('in_025'); ?> </span> </label>
+                      <input class="fldlg" id="in_dirnew" name="in_dirnew" type="text" value="" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \_]'); ForceLowercase(this); CharacterReplace(this, ' ', '_'); return false;" />
+                    </div>
+                  </div>
+                  <?php }; ?>
+                  <?php if ($cfg['upload']) {; ?>
+                  <div id="fiUplDiv" class="hideit">
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img onClick="uploadClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_019'); ?>" title="<?php echo $l->m('in_019'); ?>" width="16" height="16" />
+                      </div>
+                      <?php 
+                                                       $max = isset($cfg['umax']) && $cfg['umax'] >= 1 ? $cfg['umax'] : 1;                                     
+                                                       for($i=1; $i <= $max; $i++) {; ?>
+                      <label for="nfile"> <span class="pad10"> <?php echo $l->m('in_018'); if ($max > 1){ echo ' (' . $i . ')';} ?> </span> </label>
+                      <input name="nfile[]" type="file" class="fldlg" id="nfile[]" size="53" accept="image/*" />
+                      <?php }; ?>
+                    </div>
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('in_021'); ?>" alt="<?php echo $l->m('in_021'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label for="chkThumbSize[]"> <span class="pad20"> <?php echo $l->m('in_020'); ?> </span> </label>
+                      <div id="fmtDiv">
+                        <?php echo thumbSizes($cfg['thumbs']); ?>
+                      </div>
+                    </div>
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('in_038'); ?>" alt="<?php echo $l->m('in_038'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label for="rotateDiv"> <span class="pad20"> <?php echo $l->m('in_037'); ?> </span> </label>
+                      <select class="fldm" id="selRotate" name="selRotate">
+                        <option value="" selected="selected"><?php echo $l->m('in_041'); ?></option>
+                        <optgroup label="<?php echo $l->m('in_043'); ?>">
+                        <option value="P" ><?php echo $l->m('in_044'); ?></option>
+                        <option value="p" ><?php echo $l->m('in_045'); ?></option>
+                        </optgroup>
+                        <optgroup label="<?php echo $l->m('in_046'); ?>">
+                        <option value="l" ><?php echo $l->m('in_047'); ?></option>
+                        <option value="L"><?php echo $l->m('in_048'); ?></option>
+                        </optgroup>
+                        <optgroup label="<?php echo $l->m('in_049'); ?>">
+                        <option value="x"><?php echo $l->m('in_050'); ?></option>
+                        </optgroup>
+                      </select>
+                      <span class="frmText">(<?php echo $l->m('in_099'); ?>: <?php echo $l->m('in_042'); ?>)</span>
+                    </div>
+                  </div>
+                                 <?php }; ?>
+                </div>
+                </fieldset>
+              </div>
+              <!- // fiDiv -->
+            </div>
+            <!- // inDiv -->
+            <!- ATTRIBUTES -------------------------------------------------------- -->
+            <div id="atDiv" class="hideit">
+              <fieldset>
+              <div class="rowDiv">
+                <label for="pr_src"> <span class="title"> <?php echo $l->m('at_002'); ?> </span> </label>
+                <input class="fldlg readonly" id="pr_src" name="pr_src" type="text" value="" disabled="true" readonly="true" />
+              </div>
+              <div class="rowDiv">
+                <div class="btnRight">
+                  <img onClick="selSymbol('pr_title');" src="images/symbols_off.gif" onMouseOver="this.src='images/symbols.gif';" onMouseOut="this.src='images/symbols_off.gif';" title="<?php echo $l->m('at_029'); ?>" alt="<?php echo $l->m('at_029'); ?>" width="16" height="16" border="0" /><img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_004'); ?>" title="<?php echo $l->m('at_004'); ?>" width="16" height="16" border="0" />
+                </div>
+                <label for="pr_title"> <span class="title"> <?php echo $l->m('at_003'); ?> </span> </label>
+                <input class="fldmlg" id="pr_title" name="pr_title" type="text" value="" onChange="updateStyle()" />
+              </div>
+              <div class="rowDiv">
+                <div class="btnRight">
+                  <img onClick="selSymbol('pr_alt');" src="images/symbols_off.gif" onMouseOver="this.src='images/symbols.gif';" onMouseOut="this.src='images/symbols_off.gif';" title="<?php echo $l->m('at_030'); ?>" alt="<?php echo $l->m('at_030'); ?>" width="16" height="16" border="0" /><img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_006'); ?>" title="<?php echo $l->m('at_006'); ?>" width="16" height="16" border="0" />
+                </div>
+                <label for="pr_alt"> <span class="title"> <?php echo $l->m('at_005'); ?> </span> </label>
+                <input class="fldmlg" id="pr_alt" name="pr_alt" type="text" value="" onChange="updateStyle()" />
+              </div>
+              </fieldset>
+              <div class="floatWrap">
+                <!- left column ------------------------------------------------------ -->
+                <div class="colLeft">
+                  <fieldset>
+                  <div class="rowDiv">
+                    <label> <span class="title"> <?php echo $l->m('at_007'); ?> </span> </label>
+                  </div>
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_008'); ?>" title="<?php echo $l->m('at_008'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label for="pr_class"> <span class="pad10"> <?php echo $l->m('at_009'); ?> </span> </label>
+                    <select class="fldm" id="pr_class" name="pr_class" onChange="updateStyle()">
+                      <option value="default" selected="selected"><?php echo $l->m('at_099'); ?></option>
+                     <?php echo getStyles(false); ?>
+                    </select>
+                  </div>
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('at_011'); ?>" alt="<?php echo $l->m('at_011'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label> <span class="title"> <?php echo $l->m('at_010'); ?> </span> </label>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="pr_align"> <span class="pad10"> <?php echo $l->m('at_012'); ?> </span> </label>
+                    <select class="fldm" id="pr_align" name="pr_align" onChange="updateStyle()">
+                      <option value=""><?php echo $l->m('at_013'); ?></option>
+                      <option value="left"><?php echo $l->m('at_014'); ?></option>
+                      <option value="right"><?php echo $l->m('at_015'); ?></option>
+                      <option value="top"><?php echo $l->m('at_016'); ?></option>
+                      <option value="middle"><?php echo $l->m('at_017'); ?></option>
+                      <option value="bottom"><?php echo $l->m('at_018'); ?></option>
+                    </select>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="pr_size"> <span class="pad10"> <?php echo $l->m('at_022'); ?> </span> </label>
+                    <input class="fldsm readonly" id="pr_size" name="pr_size" type="text"value="" maxlength="8" disabled="true" readonly="true" />
+                    <span class="frmText">(<span id="pr_sizeUnit"></span>)</span>
+                  </div>
+                  <div class="rowDiv">
+                    <?php if ($cfg['attrib'] == true) {; ?>
+                    <div class="btnRight">
+                      <img src="images/img_size_off.gif" onMouseOver="this.src='images/img_size.gif';" onMouseOut="this.src='images/img_size_off.gif';" onClick="resetDim();" alt="<?php echo $l->m('at_031'); ?>" title="<?php echo $l->m('at_031'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <?php }; ?>
+                    <label for="pr_width"> <span class="pad10"> <?php echo $l->m('at_023'); ?> </span> </label>
+                    <input id="pr_width" name="pr_width" type="text"value="" maxlength="4" <?php if ($cfg['attrib'] != true) {; ?> class="fldsm readonly" disabled="true" readonly="true" <?php } else {; ?> class="fldsm" onchange="changeDim(0);" onkeyup="RemoveInvalidChars(this, '[^0-9]');" <?php }; ?> />
+                    <span class="frmText"> (px) </span>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="pr_height"> <span class="pad10"> <?php echo $l->m('at_024'); ?> </span> </label>
+                    <input id="pr_height" name="pr_height" type="text"value="" maxlength="4" <?php if ($cfg['attrib'] != true) {; ?> class="fldsm readonly" disabled="true" readonly="true" <?php } else {; ?> class="fldsm" onchange="changeDim(1);" onkeyup="RemoveInvalidChars(this, '[^0-9]');" <?php }; ?> />
+                    <span class="frmText"> (px) </span>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="pr_border"> <span class="pad10"> <?php echo $l->m('at_025'); ?> </span> </label>
+                    <input class="fldsm" id="pr_border" name="pr_border" type="text"value="" maxlength="2" onChange="updateStyle();" onKeyUp="RemoveInvalidChars(this, '[^0-9]');"  />
+                    <span class="frmText"> (px) </span>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="pr_vspace"> <span class="pad10"> <?php echo $l->m('at_026'); ?> </span> </label>
+                    <input class="fldsm" id="pr_vspace" name="pr_vspace" type="text" value="" maxlength="2" onChange="updateStyle();" onKeyUp="RemoveInvalidChars(this, '[^0-9]');" />
+                    <span class="frmText"> (px) </span>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="pr_hspace"> <span class="pad10"> <?php echo $l->m('at_027'); ?> </span> </label>
+                    <input class="fldsm" id="pr_hspace" name="pr_hspace" type="text" value="" maxlength="2" onChange="updateStyle();" onKeyUp="RemoveInvalidChars(this, '[^0-9]');" />
+                    <span class="frmText"> (px) </span>
+                  </div>
+                  </fieldset>
+                </div>
+                <!- // colLeft -->
+                <!- right column ----------------------------------------------------- -->
+                <div class="colRight">
+                  <fieldset>
+                  <div class="rowDiv">
+                    <label> <span class="title"> <?php echo $l->m('at_028'); ?> </span> </label>
+                  </div>
+                  <div class="rowDiv">
+                    <div id="atPrevDiv">
+                      <p><img id="atPrevImg" src="images/textflow.gif" width="45" height="45" alt="" title="" hspace="" vspace="" border="" class="" />Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation ullamcorper suscipit. Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>
+                    </div>
+                  </div>
+                  </fieldset>
+                </div>
+                <!- // colRight -->
+              </div>
+                          <fieldset>
+                         <div class="rowDiv">
+                  <div class="btnRight">
+                    <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_033'); ?>" title="<?php echo $l->m('at_033'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label for="pr_caption"> <span class="title">
+                  <?php echo $l->m('at_032'); ?>
+                </span> </label>
+                  <input name="pr_chkCaption" type="checkbox" class="chkBox" id="pr_chkCaption" onChange="updateStyle()" value="1" />
+                  <span class="frmText">(<?php echo $l->m('at_034'); ?>)</span>
+              </div>
+                         <div class="rowDiv">
+                    <div class="btnRight">
+                      <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_008'); ?>" title="<?php echo $l->m('at_008'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label for="pr_captionClass"> <span class="pad10"> <?php echo $l->m('at_009'); ?> </span> </label>
+                    <select class="fldm" id="pr_captionClass" name="pr_captionClass" onChange="updateStyle()">
+                      <option value="default" selected="selected"><?php echo $l->m('at_099'); ?></option>
+                      <?php echo getStyles(true); ?>
+                    </select>
+                  </div>
+                         </fieldset>
+            </div>
+            <!- // atDiv -->
+          </div>
+        </div>
+      </div>
+      <!- // mainDivWrap -->
+      <!- footer ----------------------------------------------------------- -->
+      <div id="ftDivWrap">
+        <div id="ftDiv">
+          <input type="button" value="<?php echo $l->m('im_005'); ?>" class="btn" onClick="insertImage();" />
+          <span class="pad5">
+          <input type="button" value="<?php echo $l->m('im_006'); ?>" class="btn" onClick="top.window.close();" />
+          </span>
+        </div>
+      </div>
+      <!- // ftDivWrap -->
+    </div>
+  </div>
+  <!- // outerDivWrap -->
+</form>
+</body>
+</html><?php
+// ============================================================
+// = create library list V 1.0, date: 05/10/2005              =
+// ============================================================
+       function liboptions($arr, $prefix = '', $sel = '') {
+               $retval = '';
+               foreach($arr as $lib) {                 
+               $retval .= '<option value="' . absPath($lib['value']) . '"' . (($lib['value'] == $sel) ? ' selected="selected"' : '') . '>' . $prefix . $lib['text'] . '</option>' . "\n";
+               }
+               return $retval;
+       }
+// ============================================================
+// = create thumb sizes V 1.0, date: 05/23/2005               =
+// ============================================================
+       function thumbSizes($arr, $sel = '') {
+               global $l;
+               $retval = '';
+               foreach($arr as $key => $thumb) {                       
+                       $retval .= '<div>' . '<input id="chkThumbSize[' . $key . ']" name="chkThumbSize[' . $key . ']" class="chkBox" type="checkbox" value="' . $key . '"' . (($key == 0) ? ' checked="checked"' : '') . ' />' . '<span class="frmText">' . (($thumb['size'] == '*') ? $l->m('in_022') . '&nbsp;'  : $thumb['size'] . ' px' ) . '</span>' . (($thumb['crop'] == true) ? '<img src="images/thbCrop.gif" align="absmiddle" width="10px" height="10px" alt="' . $l->m('in_023') . '" title="' . $l->m('in_023') . '" />' : '') . '</div>' . "\n";
+               }
+               return $retval;
+       }
+// ============================================================
+// = abs path - add slashes V 1.0, date: 05/10/2005           =
+// ============================================================
+       function absPath($path) {               
+               if (substr($path,-1)  != '/') $path .= '/';
+               if (substr($path,0,1) != '/') $path  = '/' . $path;
+               return $path;
+       }
+// ============================================================
+// = css styles V 1.0, date: 08/03/2005                       =
+// ============================================================
+       function getStyles($cap) {
+               $styles = '';
+               global $cfg;
+               foreach ($cfg['style'] as $key => $value) {
+                       $pos = strrpos($key,'capDiv'); // is caption style
+                       if ($cap == false && $pos === false) {
+                                       $styles .= '<option value="'. $key . '">' . $value . '</option>';
+                       } elseif ($cap == true && $pos !== false) {
+                                       $styles .= '<option value="'. $key . '">' . $value . '</option>';
+                       }
+               }
+               return $styles;
+       }
+//-------------------------------------------------------------------------
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/ibrowser.php2 b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/ibrowser.php2
new file mode 100644 (file)
index 0000000..51f6847
--- /dev/null
@@ -0,0 +1,1417 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser dialog
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.2                   Date: 07/07/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // unset $cfg['ilibs_incl'] - dynamic image library
+       if (isset($cfg['ilibs_inc'])) {
+               unset($cfg['ilibs_inc']);
+       }
+       //-------------------------------------------------------------------------
+       // include configuration settings
+       include dirname(__FILE__) . '/config/config.inc.php';
+       include dirname(__FILE__) . '/langs/lang.class.php';
+       //-------------------------------------------------------------------------
+       // language settings    
+       $l = (isset($_REQUEST['lang']) ? new PLUG_Lang($_REQUEST['lang']) : new PLUG_Lang($cfg['lang']));
+       $l->setBlock('ibrowser');       
+       //-------------------------------------------------------------------------
+       // if set, include file specified in $cfg['ilibs_incl']; hardcoded libraries will be ignored!   
+       if (!empty($cfg['ilibs_inc'])) {
+               include $cfg['ilibs_inc'];
+       }       
+       //-------------------------------------------------------------------------             
+       // set current image library    
+       $clib = (isset($_REQUEST['clib']) ? $_REQUEST['clib'] : '');
+       //-------------------------------------------------------------------------     
+       $value_found = false;
+       // callback function for preventing listing of non-library directory
+       function is_array_value($value, $key, $tlib) {
+               global $value_found;
+               if (is_array($value)) {
+                       array_walk($value, 'is_array_value', $tlib);
+               }
+               if ($value == $tlib) {
+                       $value_found = true;
+               }
+       }       
+       //-------------------------------------------------------------------------     
+       array_walk($cfg['ilibs'], 'is_array_value', $clib);     
+       if (!$value_found || empty($clib)) {
+               $clib = $cfg['ilibs'][0]['value'];
+       }               
+       //-------------------------------------------------------------------------
+       // create library dropdown
+       $lib_options = liboptions($cfg['ilibs'], '', $clib,'');
+?>
+<!-- do not delete this line - it's need for proper working of the resizeDialogToContent() function -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<head>
+<title><?php echo $l->m('im_002'); ?></title>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $l->getCharset(); ?>">
+<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
+<style type="text/css">
+<!--
+       @import url("css/style.css");
+-->
+</style>
+<script language="javascript" type="text/javascript" src="scripts/resizeDialog.js"></script>
+<script language="JavaScript" type="text/javascript" src="scripts/validateForm.js"></script>
+<script language="JavaScript" type="text/JavaScript">
+<!--
+// ============================================================
+// = global instance V 1.0, date: 04/07/2005                  =
+// ============================================================
+       function iBrowser() {
+               // browser check
+               this.isMSIE  = (navigator.appName == 'Microsoft Internet Explorer');
+               this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;              
+       };
+       var iBrowser = new iBrowser();
+
+// ============================================================
+// = iBrowser init V 1.0, date: 12/03/2004                    =
+// ============================================================
+       function init() {                       
+               var formObj = document.forms[0];                
+               btnInit();       // init menu buttons           
+               document.getElementById('mainDivHeader').innerHTML = setTitle('imDiv');                 
+               //-------------------------------------------------------------------------                     
+               // hide library selection if there is only one library available!
+               if (formObj.ilibs.options.length > 1) {
+                       changeClass(0,'ilibsDiv','showit');
+               }
+               //-------------------------------------------------------------------------
+               // window arguments                     
+               var args = window.dialogArguments;              
+               if (args) {                                                                             // if dialog argument are available
+                       if (args.src) {                                                         // source is image and maybe also link                          
+                               initImageArgs();                                                // init and set image attributes                                        
+                       } else if(args.a) {                                             // source is popup image only
+                               setImagePopup(args.popSrc);                             // update popup preview                         
+                               formObj.popSrc.value = args.popSrc;             // popup image url
+                               formObj.popTitle.value = args.popTitle; // link title
+                               for (var i = 0; i < formObj.popClassName.options.length; i++) { // CLASS value
+                                       if (formObj.popClassName.options[i].value == args.popClassName) {
+                                               formObj.popClassName.options.selectedIndex = i;                         
+                                       }
+                               }               
+                       }
+               }
+                                
+               //-------------------------------------------------------------------------
+               preloadImages('images/firefox.gif','images/explorer.gif','images/img_in.gif','images/img_at.gif','images/img_po.gif','images/help.gif','images/help_off.gif','images/about.gif','images/about_off.gif','images/im.gif','images/dir_off.gif','images/dir.gif','images/prev_off.gif','images/prev.gif','images/symbols_off.gif','images/symbols.gif','images/alert_off.gif','images/alert.gif','images/dirview_off.gif','images/dirview.gif'); // preload images                          
+               btnStage();
+               resizeDialogToContent();                
+               window.focus();         
+       }
+// ============================================================
+// = image buttons init V 1.0, date: 05/27/2005               =
+// ============================================================
+       function btnInit() {            
+               var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className   == 'btnUp') {
+                               x[i].onmouseover = btn_over;
+                               x[i].onmouseout  = btn_out;
+                               x[i].onmousedown = btn_down;
+                               x[i].onclick     = btn_click;
+                       }
+               }               
+       }
+// ============================================================
+// = menu buttons V 1.0, date: 06/03/2005                     =
+// ============================================================        
+       function btn_over() {   // menu button hover
+               if (this.className != 'btnDown') {
+                       this.className  = 'btnOver';
+               }
+       }       
+       function btn_out() {    // menu button out
+               if (this.className != 'btnDown') {
+                       this.className  = 'btnUp';
+               }
+       }
+       function btn_down() {   // menu button down
+               if (this.className != 'btnDown') {
+                       this.className  = 'btnDown';
+               }
+       }
+       function btn_click() {  // menu button click            
+               var formObj = document.forms[0];
+               var args = btn_click.arguments;
+               if(document.getElementById(args[0]) != null) {                          
+                       this.id = document.getElementById(args[0]).id;                          
+               }
+               var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className == 'btnDown') {                              
+                               if (x[i].id != this.id) {                                       
+                                       x[i].className = 'btnUp';
+                               }
+                       }
+               }       
+                               
+               // check whether image has been selected or not
+               if (this.id == 'mbtn_at') { // properties functions
+                       if(!btnStage()) {
+                               alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                               this.className = 'btnUp';
+                               return;
+                       }
+               }
+               
+               // reset all classes to "hideit"
+               changeClass(0,'imDiv','hideit','inDiv','hideit','atDiv','hideit');              
+               // get element, set title                       
+               elm = this.id.substring(this.id.length-2, this.id.length);                      
+               elm = elm + 'Div';                      
+               document.getElementById('mainDivHeader').innerHTML = setTitle(elm);
+                       
+               if (this.id == 'mbtn_po') {                     
+                       var iProps = window.dialogArguments;                    
+                       if (iProps && iProps.a) { // show remove link only if link                       
+                               changeClass(1,'fileDivWrap','hideit','fileDiv','hideit','img_ren','hideit','img_del','hideit','inDiv','showit','poDiv','showit','poDelDiv','showit');
+                       } else {
+                               changeClass(1,'fileDivWrap','hideit','fileDiv','hideit','img_ren','hideit','img_del','hideit','inDiv','showit','poDiv','showit','poDelDiv','hideit');
+                       }
+               } else {                                                
+                       <?php if (($cfg['create'] && isset($cfg['ilibs_inc'])) || $cfg['upload'] || $cfg['rename'] || $cfg['delete']) { ?>
+                               changeClass(1,'poDiv','hideit','fileDivWrap','showit','img_ren','showit','img_del','showit',elm,'showit');
+                       <?php } else { ?>
+                               changeClass(1,'poDiv','hideit','fileDivWrap','hideit','img_ren','showit','img_del','showit',elm,'showit');
+                       <?php }; ?>
+               }
+       }
+// ============================================================
+// = set title - V 1.0, date: 06/03/2005                      =
+// ============================================================
+       function setTitle(elm) {
+               var retstr;
+               switch(elm) {
+                       case 'imDiv':
+                               retstr = '<?php echo $l->m('im_004'); ?>';
+                               break;          
+                       case 'inDiv':
+                               retstr = '<?php echo $l->m('im_008'); ?>';
+                               break;
+                       case 'atDiv':
+                               retstr = '<?php echo $l->m('im_010'); ?>';
+                               break;
+                       case 'poDiv':
+                               retstr = '<?php echo $l->m('im_014'); ?>';
+                               break;
+                       default:
+                               retstr = '<?php echo $l->m('im_016'); ?>';              
+               }
+               return retstr;  
+       }
+// ============================================================
+// = get image path and update ilist V 1.0, date: 04/25/2005  =
+// ============================================================
+       function initImageArgs() {
+               var formObj = document.forms[0];                
+               var args = window.dialogArguments;
+               
+               // in case of full url, remove 'http://
+               var pos = args.src.indexOf('://');
+               if (pos != -1) {                        
+                       pos = args.src.indexOf('/', pos + 3 ); // + length of '://'                     
+                       args.src = args.src.substring(pos);                     
+               }               
+               
+               // set current image file, and library
+               var pos   = args.src.lastIndexOf('/');
+               var cfile = args.src.slice(pos+1,args.src.length);              
+               var clib  = absPath(args.src.slice(0,pos+1)); // relative path to library
+                               
+               // set current directory/library & update image list
+               for (var i = 0; i < formObj.ilibs.options.length; i++) {
+                       if(formObj.ilibs.options[i].value == clib) {
+                               formObj.ilibs.options.selectedIndex = i;        
+                               formObj.param.value = 'update' + '|' + cfile;                   
+                               formObj.submit();                                               
+                       }
+               }               
+       }
+// ============================================================
+// = set image properties V 1.0, date: 04/25/2005             =
+// ============================================================                
+       function setImageArgs() {
+               var formObj = document.forms[0];                
+               var args = window.dialogArguments;                                      
+               
+               if (args.tsrc) {                                                                                        // dynamic thumbnail
+                       formObj.pr_src.value = args.tsrc;
+                       changeClass(0,'alertImg','showit');                                             // show warning         
+               }
+               
+               formObj.pr_width.value  = args.width;                                           // WIDTH value          
+               formObj.pr_height.value = args.height;                                          // HEIGHT value
+               formObj.pr_alt.value    = args.alt;                                                     // ALT text             
+               formObj.pr_title.value  = args.title;                                           // DESCR text
+               formObj.pr_border.value = args.border ? args.border : '';       // BORDER value 
+               formObj.pr_vspace.value = args.vspace ? args.vspace : '';       // VSPACE value                         
+               formObj.pr_hspace.value = args.hspace ? args.hspace : '';       // HSPACE value
+               
+               for (var i = 0; i < formObj.pr_align.options.length; i++) {     // ALIGN value 
+                       if (formObj.pr_align.options[i].value == args.align) {
+                               formObj.pr_align.options.selectedIndex = i;                             
+                       }
+               }
+               
+               for (var i = 0; i < formObj.pr_class.options.length; i++) {     // CLASS value
+                       if (formObj.pr_class.options[i].value == args.className) {
+                               formObj.pr_class.options.selectedIndex = i;                             
+                       }
+               }
+               // set popup preview in case it's a popup
+               if (args.popSrc) {                                      
+                       setImagePopup(args.popSrc);                             // update popup preview                 
+                       formObj.popTitle.value = args.popTitle; // link title
+                       for (var i = 0; i < formObj.popClassName.options.length; i++) { // CLASS value
+                               if (formObj.popClassName.options[i].value == args.popClassName) {
+                                       formObj.popClassName.options.selectedIndex = i;                         
+                               }
+                       }               
+               }
+               formObj.param.value = ''; // resetting param value              
+       }
+// ============================================================
+// = set popup image src preview V 1.0, date: 05/13/2005      =
+// ============================================================        
+       function setImagePopup(popSrc) {                
+               var formObj = document.forms[0];
+               var src = '<?php echo $cfg['scripts']; ?>' + 'phpThumb/phpThumb.php'; // command                        
+               src     = src + '?src=' + popSrc;                                       // popup source image                           
+               src     = src + '&w=80';                                                        // image width
+               src     = src + '&h=60';                                                        // image height
+               src     = src + '&zc=1';                                                        // zoom crop                    
+               document.getElementById('poPrevFrame').src = src;       // update preview       
+               formObj.popSrc.value = popSrc;
+       }
+// ============================================================
+// = insertImage V 1.0, date: 04/25/2005                      =
+// ============================================================
+       function insertImage() {
+               var formObj = document.forms[0];
+               var args = {};
+               // get active menu button
+               var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className == 'btnDown') {
+                               if (x[i].id == 'mbtn_po') { // popup mode
+                                       if(formObj.chkP.checked) {                                                              
+                                               args.action = 2; // delete popup link
+                                       } else { // create / edit link to popup image
+                                               args.action    = 1; 
+                                               args.popUrl    = '<?php echo $cfg['pop_url']; ?>'; // link to popup.php                                         
+                                               args.popSrc    = (formObj.popSrc.value)   ? (formObj.popSrc.value)   : '';                                              
+                                               args.popTitle  = (formObj.popTitle.value) ? (formObj.popTitle.value) : '';
+                                               args.popTxt    = '<?php echo $l->m('in_036'); ?>';
+                                               if (formObj.popClassName.selectedIndex > 0) { // if class style is selected
+                                                       args.popClassName = (formObj.popClassName.options[formObj.popClassName.selectedIndex].value) ? (formObj.popClassName.options[formObj.popClassName.selectedIndex].value) : '';
+                                               }                                                                                                                                               
+                                       }                                                       
+                               }
+                       }
+               }
+               //-------------------------------------------------------------------------
+               // check if valid image is selected             
+               if (!args.action) { // if not popup     mode, check whether there is a valid image selected             
+                       if (formObj.pr_src.value == '') { // no valid picture has been selected                         
+                               alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                               return;
+                       }
+                       
+                       args.src = (formObj.pr_src.value) ? (formObj.pr_src.value) : '';                                                                        
+                       if ('<?php echo $cfg['furl']; ?>' == true) { // create full url incl. e.g. http://localhost....
+                               args.src = '<?php echo $cfg['base_url']; ?>' + args.src;                                
+                       }
+                                               
+                       args.width  = (formObj.pr_width.value)  ? (formObj.pr_width.value)  : '';
+                       args.height = (formObj.pr_height.value) ? (formObj.pr_height.value) : '';                               
+                       args.align      = (formObj.pr_align.value)  ? (formObj.pr_align.value)  : '';
+                       args.border = (formObj.pr_border.value) ? (formObj.pr_border.value) : '';                               
+                       args.alt        = (formObj.pr_alt.value)    ? (formObj.pr_alt.value)    : '';
+                       args.title      = (formObj.pr_title.value)  ? (formObj.pr_title.value)  : '';
+                       args.hspace = (formObj.pr_hspace.value) ? (formObj.pr_hspace.value) : '';
+                       args.vspace = (formObj.pr_vspace.value) ? (formObj.pr_vspace.value) : '';
+                       if (formObj.pr_class.selectedIndex > 0) { // if class style is selected
+                               args.className = (formObj.pr_class.options[formObj.pr_class.selectedIndex].value) ? (formObj.pr_class.options[formObj.pr_class.selectedIndex].value) : '';
+                       }
+               } else { // check whether there is valid popup image
+                       if (formObj.popSrc.value == '') { // no valid picture has been selected                         
+                               alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                               return;
+                       }
+               }               
+                                                       
+               //-------------------------------------------------------------------------     
+               // save image to wysiwyg editor and close window
+               window.returnValue = args;
+               window.close();                         
+               
+               if (iBrowser.isGecko) { // Gecko                                
+                       <?php                                   
+                               if (!empty($_REQUEST['callback'])) {                                    
+                                       echo "opener." . @$_REQUEST['callback'] . "('" . @$_REQUEST['editor'] . "',this);\n";
+                               };
+                       ?>      
+               }       
+       }
+// ============================================================
+// = image change - set attributes V 1.0, date: 12/03/2004    =
+// ============================================================
+       function imageChange() {                
+               var formObj = document.forms[0];
+               var args        = imageChange.arguments;                                                                                                // image change arguments - set by rfiles.php                                           
+               var clib    = absPath(formObj.ilibs.options[formObj.ilibs.selectedIndex].value);        // current library - absolute path              
+               var cfile   = document.getElementById('cimg').attributes['cfile'].value;                        // get current image
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;                       // get current width    
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;                      // get current height           
+               var csize   = document.getElementById('cimg').attributes['csize'].value.split('|');     // get current size (array)
+               var ctype   = document.getElementById('cimg').attributes['ctype'].value.split('|');     // get current type (array)     
+                       
+               //-------------------------------------------------------------------------
+               // set default image attributes
+               formObj.pr_src.value    = clib + cfile;         
+               formObj.pr_width.value  = cwidth;
+               formObj.pr_height.value = cheight;              
+               formObj.pr_size.value   = csize[0];             
+               formObj.pr_align.options.selectedIndex = 0;
+               formObj.pr_class.options.selectedIndex = 0;
+               document.getElementById('pr_sizeUnit').innerHTML = csize[1]; // e.g. kb         
+               formObj.pr_alt.value    = cfile.substr(0, cfile.length-4);
+               formObj.pr_title.value  = cfile.substr(0, cfile.length-4);              
+               changeClass(0,'alertImg','hideit');
+               //-------------------------------------------------------------------------
+               // update preview window        
+               var sizes = resizePreview(cwidth, cheight, 150, 150);           
+               var src = '<?php echo $cfg['scripts']; ?>' + 'phpThumb/phpThumb.php'; // command
+               src = src + '?src=' + clib + cfile; // source file
+               src = src + '&w=' + sizes['w']; // width                
+               document.getElementById('inPrevFrame').src = src; // update regular preview
+               
+               //-------------------------------------------------------------------------
+               // reset rename and delete info
+               if ('<?php echo $cfg['rename']; ?>' == true) {
+                       formObj.in_srcnew.value  = cfile.substr(0, cfile.length-4); // default rename value                     
+               }
+               if ('<?php echo $cfg['delete']; ?>' == true) {
+                       formObj.in_delinfo.value = cfile;                                                       // default delete value
+               }
+               
+               //-------------------------------------------------------------------------
+               // change image attributes in case it's an existing image               
+               if (args[0] == 'update') {      // if argument from rfiles.php received                         
+                       setImageArgs();                 // update image attributes
+               } else if (args[0] == 'delete') { // image was deleted
+                       document.getElementById('cimg').attributes['cfile'].value = '';                 
+                       document.getElementById('in_srcnew').value  = '';
+                       document.getElementById('in_delinfo').value = '';                       
+                       document.getElementById('inPrevFrame').src = 'images/noImg.gif'; // update preview
+               }
+                       
+               //-------------------------------------------------------------------------
+               // update popup preview and set popup default attributes
+               if (document.getElementById('mbtn_po').className == 'btnDown') {
+                       var popSrc = clib + cfile; 
+                       setImagePopup(popSrc);                  
+                       formObj.popTitle.value = cfile.substr(0, cfile.length-4);                       
+               }
+               
+               updateStyle();          
+               btnStage();     
+       }
+// ============================================================
+// = update style frame V 1.0, date: 12/13/2004               =
+// ============================================================        
+       function updateStyle() {
+               var formObj = document.forms[0];                        
+               document.getElementById('atPrevImg').align              = formObj.pr_align.options[formObj.pr_align.selectedIndex].value;                       
+               document.getElementById('atPrevImg').vspace     = formObj.pr_vspace.value;
+               document.getElementById('atPrevImg').hspace     = formObj.pr_hspace.value;
+               document.getElementById('atPrevImg').border     = formObj.pr_border.value;
+               document.getElementById('atPrevImg').alt                = formObj.pr_alt.value;
+               document.getElementById('atPrevImg').title              = formObj.pr_title.value;
+               document.getElementById('atPrevImg').className  = formObj.pr_class.options[formObj.pr_class.selectedIndex].value;       
+       }
+// ============================================================
+// = enable/disable menu buttons, date: 03/21/2005            =
+// ============================================================ 
+       function btnStage() {
+               var formObj = document.forms[0];                                        
+               var cfile   = document.getElementById('cimg').attributes['cfile'].value; // current image       
+               if (cfile  == '') {                     
+                       formObj.img_at.src = 'images/img_at_off.gif';                   
+                       return false;
+               }
+               formObj.img_at.src = 'images/img_at.gif';               
+               return true;            
+       }
+// ============================================================
+// = resize image to fit preview V 1.0, date: 12/19/2004      =
+// ============================================================        
+       function resizePreview(w,h,mw,mh) { // width, height, max width, max height                             
+               var sizes = new Array();                
+               if (w > mw || h > mh) { // thumbnailing required
+                       f = w / h; // proportions of image: (f > 1) = landscape; (f < 1) = portrait; (f = 1) = square                   
+                       if (f > 1) { // landscape and square
+                               w = mw;
+                               h = Math.round(w / f);                  
+                       } else if (f <= 1) {    // portrait
+                               h = mh;                         
+                               w = Math.round(h * f);                  
+                       }       
+               }                               
+               sizes['w'] = w;
+               sizes['h'] = h;
+               return sizes;
+       }
+// ============================================================
+// = insert special characters V 1.0, date: 03/31/2005        =
+// ============================================================                
+       function selSymbol(elm) {                               
+               var wArgs = {};
+               wArgs.iBrowser = iBrowser;
+               wArgs.elm = elm;        // passing calling element to function
+               if ((iBrowser.isMSIE)) { 
+                       var rArgs = showModalDialog('<?php echo $cfg['scripts']; ?>symbols.php?lang=<?php echo $l->lang; ?>', wArgs, 
+                       'dialogHeight:300px; dialogWidth:400px; scrollbars: no; menubar: no; toolbar: no; resizable: no; status: no;');                                                                                                 
+                       if (rArgs) {                            
+                               setSymbol(null, null, rArgs);
+                       }                       
+               } else if (iBrowser.isGecko) {
+                       var wnd = window.open('<?php echo $cfg['scripts']; ?>symbols.php?lang=<?php echo $l->lang; ?>&callback=setSymbol', 'symbols', 'status=no, modal=yes, width=400, height=300');                           
+                       wnd.dialogArguments = wArgs;
+               }               
+       }
+       // set symbol callback
+       function setSymbol(editor, sender, rArgs) {             
+               if (!rArgs) { // Gecko          
+                       var rArgs = sender.returnValue;                         
+               }
+               if (rArgs.chr != null) {
+                       var chr = rArgs.chr;
+                       var elm = rArgs.elm;                            
+                       chr = String.fromCharCode(chr.substring(2, chr.length -1)); // e.g. returns &#220;              
+                       document.getElementById(elm).value = document.getElementById(elm).value + ' ' + chr;
+               }                       
+  }             
+// ============================================================
+// = preload Images, date: 11/13/2004                         =
+// ============================================================                
+       function preloadImages() {
+               var d=document;
+               if(d.images) {
+                       if(!d.MM_p)
+                               d.MM_p = new Array();
+                       var i,j=d.MM_p.length,a = preloadImages.arguments;
+                               for(i= 0; i < a.length; i++)
+                               if (a[i].indexOf("#") != 0) {
+                                               d.MM_p[j] = new Image;
+                                               d.MM_p[j++].src = a[i];
+                       }
+               }
+       }
+// ============================================================
+// = change image library V 1.0, date: 04/22/2005             =
+// ============================================================
+       function ilibsClick() {         
+               var formObj = document.forms[0];                
+               formObj.param.value = ''; // clear param values;                
+               formObj.submit();       
+               // reset values 
+               document.getElementById('inPrevFrame').src = 'images/noImg.gif'; // update preview
+               document.getElementById('cimg').attributes['cfile'].value = '';
+               btnStage();                     
+       }
+// ============================================================
+// = upload image, date: 05/24/2005                           =
+// ============================================================
+       function uploadClick() {
+               var formObj = document.forms[0];                
+               if (!checkUpload()) {
+                       alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_023'); ?>');
+                       return;
+               }
+               if (confirm('<?php echo $l->m('er_021'); ?>')) {                        
+                       formObj.param.value = 'upload'; // parameter: <action>                  
+                       showloadmessage();
+                       formObj.submit();                                               
+               }
+       }
+       // check whether image file is selected for uploading
+       function checkUpload() {                
+               var formObj = document.forms[0];        
+               var upload = false;
+               var x = document.getElementById('fiUplDiv').getElementsByTagName('input');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].type == 'file') {
+                               if (x[i].value != '') { // check whether files has been selected for upload                                     
+                                       
+                                       for (z=0; document.getElementById('chkThumbSize['+ z +']'); z++) {                                              
+                                               if(document.getElementById('chkThumbSize['+ z +']').checked) {
+                                                       upload = true;                                                  
+                                               }                                               
+                                       }
+                               }
+                       }                       
+               }
+               return upload;  
+       }
+// ============================================================
+// = delete image V 1.0, date: 04/22/2005                     =
+// ============================================================
+       function deleteClick() {
+               var formObj = document.forms[0];                
+               var cfile = document.getElementById('cimg').attributes['cfile'].value;
+               if (cfile == '') { // check if image is selected        
+                       alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                       return;
+               }
+                               
+               if (confirm('<?php echo $l->m('er_008'); ?> ' + cfile + '!')) {                         
+                       formObj.param.value = 'delete' + '|' + cfile; // parameter: <action>|<file>                             
+                       formObj.submit();       
+               }               
+       } 
+// ============================================================
+// = rename image V 1.0, date: 04/22/2005                     =
+// ============================================================
+       function renameClick() {
+               var formObj = document.forms[0];
+               var clib =  formObj.ilibs.options[formObj.ilibs.selectedIndex].value; // current library
+               var cfile = document.getElementById('cimg').attributes['cfile'].value;          
+               var ctype = document.getElementById('cimg').attributes['ctype'].value.split('|');               
+                               
+               if (cfile == '') { // check if image is selected
+                       alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                       return;
+               }               
+               
+               var ctype = '.' + imageType(ctype[0]);          
+               if (formObj.in_srcnew.value == '' || formObj.in_srcnew.value + ctype == cfile) { // new name is either empty or hasn't changed
+                       alert('<?php echo $l->m('er_011'); ?>');
+                       return;
+               }
+                               
+               if (confirm('<?php echo $l->m('er_010'); ?>: ' + formObj.in_srcnew.value + ctype)) { // do rename                                       
+                       var nfile = formObj.in_srcnew.value + ctype;                             
+                       formObj.param.value = 'rename' + '|' + cfile + '|' + nfile; // parameter: <action>|<filename>|<newname>         
+                       formObj.submit();                               
+               }                       
+       }
+// ============================================================
+// = switch list view V 1.0, date: 07/06/2005                 =
+// ============================================================
+       function switchList() {
+               var formObj = document.forms[0];                        
+               if (formObj.flist.value == 1) { // check if image is selected   
+                       formObj.flist.value = 0;
+               } else {
+                       formObj.flist.value = 1;
+               }               
+               // refresh list view            
+               var cfile = document.getElementById('cimg').attributes['cfile'].value;
+               if (cfile.length > 0) {
+                       formObj.param.value = 'switch' + '|' + cfile;   
+               }
+               formObj.submit();       
+       } 
+// ============================================================
+// = create directory V 1.0, date: 04/22/2005                 =
+// ============================================================
+       function createClick() {
+               var formObj = document.forms[0];
+               var clib    = formObj.ilibs.options[formObj.ilibs.selectedIndex].value;                 // current library
+               
+               if (clib == '') { // check if library is selected
+                       alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_002'); ?>');
+                       return;
+               }                       
+               if (formObj.in_dirnew.value == '') { // check if user has entered a new directory name
+                       alert('<?php echo $l->m('er_011'); ?>');
+                       return;
+               }
+                               
+               if (confirm('<?php echo $l->m('in_026'); ?>: ' + clib + formObj.in_dirnew.value)) {                                     
+                       var nfile = formObj.in_dirnew.value;                                             
+                       formObj.param.value = 'create' + '|' + nfile; // parameter: <action>|<newdir>           
+                       formObj.submit();                               
+               }                               
+       }
+// ============================================================
+// = full size preview V 1.0, date: 12/18/2004                =
+// ============================================================        
+       function fullSizeView() {
+               var formObj = document.forms[0];                
+               var clib    = formObj.ilibs.options[formObj.ilibs.selectedIndex].value;         // current library
+               var cfile   = document.getElementById('cimg').attributes['cfile'].value;        // current image                        
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;       // current width
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;      // current height
+               if (cfile != '') {      
+                       var sizes;              
+                       sizes = resizePreview(cwidth,cheight,512,512);                  
+                       if (sizes['w'] > 150 || sizes['h'] > 150) { // open external window if size &gt; 150 which is the size of the preview window                    
+                       } else {
+                               alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_032'); ?>');
+                               return;
+                       }
+                       var src;                                                
+                       src = '<?php echo $cfg['scripts']; ?>' + 'phpThumb/phpThumb.php'; // command                                                    
+                       src = src + '?src=' + absPath(clib) + cfile; // source image
+                       src = src + '&w='+sizes['w']; //image width                                             
+               
+                       var windowName = 'popup';                                                       
+                       var features =
+                       'width='        + sizes['w'] +
+                       ',height='      + sizes['h'] +                  
+                       ',top='         + '10'  +
+                       ',left='        + '10'  +
+                       ',location='    + 'no'  +
+                       ',menubar='     + 'no'  +
+                       ',scrollbars='  + 'no'  +
+                       ',status='      + 'no'  +
+                       ',toolbar='     + 'no'  +
+                       ',resizable='   + 'no';                 
+                       // open full view popup window
+                       window.open('<?php echo $cfg['pop_url']; ?>?url=' + escape(src) + '&clTxt=' + '<?php echo $l->m('in_036'); ?>', windowName, features);                          
+               }
+       }
+// ============================================================
+// = change class, date: 12/01/2004                           =
+// ============================================================
+       function changeClass() {                
+               var args = changeClass.arguments;               
+               if (args[0] == 0 || args[0] == 1) { // 0 = no resizeDialogToContent; 1 = resizeDialogToContent
+                       var start = 1;
+               } else {
+                       var start = 0;
+               }
+               
+               for(var i = start; i < args.length; i += 2) {
+                       if(document.getElementById(args[i]) != null) {                          
+                               document.getElementById(args[i]).className = args[i+1];
+                       }
+               }
+               // resize dialog to content
+               if (args[0] == 1) {                                     
+                       resizeDialogToContent();
+               }               
+       }       
+// ============================================================
+// = image dimension change, date: 05/08/2005                 =
+// ============================================================                
+       function changeDim(sel) {               
+               var formObj = document.forms[0];
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;                       // get current width    
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;                      // get current height   
+               
+               if (eval(formObj.pr_width.value) > cwidth || eval(formObj.pr_height.value) > cheight) {                 // check for enlarging                  
+                       alert('<?php echo $l->m('er_001') . ': ' . $l->m('er_035'); ?>')
+                       resetDim();
+                       return;
+               }               
+               
+               f = cheight/cwidth; // factor           
+               if (sel == 1) {                                                                                                                                         // height changed                               
+                       formObj.pr_width.value  = Math.round(formObj.pr_height.value / f);
+               } else if (sel == 0) {                                                                                                                          // width changed                        
+                       formObj.pr_height.value = Math.round(formObj.pr_width.value * f);                       
+               }               
+       }
+       
+       function resetDim() { // reset dimensions
+               var formObj = document.forms[0];
+               var cwidth  = document.getElementById('cimg').attributes['cwidth'].value;                       // get current width    
+               var cheight = document.getElementById('cimg').attributes['cheight'].value;                      // get current height   
+               formObj.pr_width.value  = cwidth;
+               formObj.pr_height.value = cheight;
+       }                       
+// ============================================================
+// = show about, date: 06/04/2005                             =
+// ============================================================        
+       function about() {              
+               var formObj = document.forms[0];                
+               if (document.getElementById('imDiv').className == 'hideit') {
+                       var x = document.getElementById('menuBarDiv').getElementsByTagName('li');
+                       for (var i = 0; i < x.length; i++) {
+                               if (x[i].className == 'btnDown') {                              
+                                       formObj.param.value = (x[i].id);
+                                       elm = x[i].id.substring(x[i].id.length-2, x[i].id.length);                      
+                                       if (elm == 'po') { // popup windows - uses inDiv
+                                               elm = 'in'
+                                       }
+                                       elm = elm + 'Div';
+                                       document.getElementById('mainDivHeader').innerHTML = setTitle('imDiv');                 
+                                       changeClass(1,elm,'hideit','imDiv','showit');                                                                                   
+                               }
+                       }
+               } else if (document.getElementById('imDiv').className == 'showit' && formObj.param.value != '') {
+                       elm = formObj.param.value;                      
+                       btn_click(elm);                 
+               }
+       }
+// ============================================================
+// = image file type extension V 1.0, date: 11/27/2004        =
+// ============================================================        
+       function imageType(type) {              
+               var ext;                
+               switch(parseInt(type)) {
+                       case 1 : ext = 'gif'; break;
+                       case 2 : ext = 'jpg'; break;
+                       case 3 : ext = 'png'; break;
+                       case 6 : ext = 'bmp'; break;
+                       default: ext = 'unknown';               
+               }               
+               return ext;
+       }
+// ============================================================
+// = show/hide load message, date: 07/07/2005                 =
+// ============================================================
+       function showloadmessage() {
+               document.getElementById('dialogLoadMessage').style.display = 'block';
+       }       
+       function hideloadmessage() {
+               document.getElementById('dialogLoadMessage').style.display = 'none';
+       }       
+// ============================================================
+// = show image info layer, date: 04/22/2005                  =
+// ============================================================
+       function showInfo() {
+               if (document.getElementById('cimg').attributes['cfile'].value != '') {                  
+                       var obj  = document.getElementById('inPrevDiv');
+                       var oDiv = document.getElementById('infoDiv');                          
+                       
+                       if (oDiv.className == 'showit') {
+                               changeClass(0,oDiv.id,'hideit');
+                       } else {
+                               document.getElementById('inf_cwidth').innerHTML  = document.getElementById('cimg').attributes['cwidth'].value  + ' px';
+                               document.getElementById('inf_cheight').innerHTML = document.getElementById('cimg').attributes['cheight'].value + ' px';
+                               ctype = document.getElementById('cimg').attributes['ctype'].value.split('|'); 
+                               document.getElementById('inf_ctype').innerHTML   = ctype[1];            
+                               csize = document.getElementById('cimg').attributes['csize'].value.split('|');
+                               document.getElementById('inf_csize').innerHTML   = csize[0] + ' ' + csize[1];                           
+                               document.getElementById('inf_ccdate').innerHTML  = document.getElementById('cimg').attributes['ccdate'].value; 
+                               document.getElementById('inf_cmdate').innerHTML  = document.getElementById('cimg').attributes['cmdate'].value;          
+                               if (iBrowser.isMSIE) {
+                                       moveInfoTo(obj, oDiv, 0, 0); // object to move to (destination), object being moved, x offset, y offset         
+                               } else if (iBrowser.isGecko) {
+                                       moveInfoTo(obj, oDiv, 0, 0); // object to move to (destination), object being moved, x offset, y offset
+                               }                                               
+                               changeClass(0, oDiv.id, 'showit');
+                       }
+               }       
+       }
+// ============================================================
+// = move layer/div to object, date: 04/22/2005               =
+// ============================================================
+       function moveInfoTo(obj, oDiv, ox, oy) {                        
+                       var newX = getPosX(obj) + ox;
+                       var newY = getPosY(obj) + oy;                   
+                       document.getElementById(oDiv.id).style.left = newX + 'px';
+                       document.getElementById(oDiv.id).style.top  = newY + 'px';                                      
+       }
+// ============================================================
+// = get object's position, date: 04/22/2005                  =
+// ============================================================
+       function getPosX(obj) { // get X position
+               var cleft = 0;
+               if (obj.offsetParent) {
+                       while (obj.offsetParent) {
+                               cleft += obj.offsetLeft
+                               obj    = obj.offsetParent;
+                       }
+               } else if (obj.x) {
+                       cleft += obj.x;
+               }
+               return cleft;           
+       }
+
+       function getPosY(obj) { // get Y position
+               var ctop = 0;
+               if (obj.offsetParent) {
+                       while (obj.offsetParent) {
+                               ctop += obj.offsetTop
+                               obj   = obj.offsetParent;
+                       }
+               } else if (obj.y) {
+                       ctop += obj.y;
+               }
+               return ctop;
+       }
+// ============================================================
+// = returns absolute path, date: 04/22/2005                  =
+// ============================================================
+       function absPath(path) {
+               if (path.charAt(0) != '/') {
+                       path = '/' + path;                      
+               }
+               return path;
+       }
+//-->
+</script>
+</head>
+<body onLoad="init(); hideloadmessage();" dir="<?php echo $l->getDir(); ?>">
+<?php include dirname(__FILE__) . '/scripts/loadmsg.php'; ?>
+<!- image info layer (cimg) -->
+<div id="infoDiv" class="hideit">
+  <div>
+    <label><?php echo $l->m('in_028'); ?>:</label> <span id="inf_cwidth">
+    </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_029'); ?>:</label> <span id="inf_cheight">
+    </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_030'); ?>:</label> <span id="inf_ctype">
+    </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_031'); ?>:</label> <span id="inf_csize">
+    </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_033'); ?>:</label> <span id="inf_ccdate">
+    </span>
+  </div>
+  <div>
+    <label><?php echo $l->m('in_034'); ?>:</label> <span id="inf_cmdate">
+    </span>
+  </div>    
+</div>
+<form id="iBrowser" name="iBrowser" method="post" action="scripts/rfiles.php" enctype="multipart/form-data" target="inSelFrame">
+  <input type="hidden" name="lang" value="<?php echo $l->lang; ?>" />
+  <input type="hidden" id="param" name="param" value="" />
+  <input type="hidden" id="flist" name="flist" value="<?php echo $cfg['list']; ?>" />
+  <input type="hidden" id="cimg" name="cimg" value="" cfile="" cwidth="" cheight="" csize="" ctype="" ccdate="" cmdate="" />
+  <div id="outerDivWrap">
+    <div class="headerDiv">
+      <div class="btnRight">
+        <img src="images/about_off.gif" alt="<?php echo $l->m('im_015'); ?>" width="16" height="16" border="0" align="middle" title="<?php echo $l->m('im_015'); ?>" onClick="about();" onMouseOver="this.src='images/about.gif';" onMouseOut="this.src='images/about_off.gif';" />
+      </div>
+      <?php echo $l->m('im_002'); ?>
+    </div>
+    <div class="brdPad">
+      <!- MAIN MENU --------------------------------------------------------- -->
+      <div id="menuDivWrap">
+        <div class="headerDiv">
+          <?php echo $l->m('im_003'); ?>
+        </div>
+        <div class="brdPad">
+          <div id="menuDiv">
+            <div id="menuBarDiv">
+              <ul>
+                <li id="mbtn_in" class="btnUp"><img id="img_in" src="images/img_in.gif" width="40" height="40" />
+                  <div>
+                    <?php echo $l->m('im_007'); ?>
+                  </div>
+                </li>
+                <li id="mbtn_at" class="btnUp"><img id="img_at" src="images/img_at.gif" width="40" height="40" />
+                  <div>
+                    <?php echo $l->m('im_009'); ?>
+                  </div>
+                </li>
+                <li id="mbtn_po" class="btnUp"><img id="img_po" src="images/img_po.gif" width="40" height="40" />
+                  <div>
+                    <?php echo $l->m('im_013'); ?>
+                  </div>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </div>
+      </div>
+      <!- // menuDivWrap -->
+      <!- MAIN CONTENT ------------------------------------------------------ -->
+      <div id="mainDivWrap">
+        <div id="mainDivHeader" class="headerDiv">
+          <?php echo $l->m('im_016'); ?>
+        </div>
+        <div class="brdPad">
+          <div id="mainDiv">
+            <!- WELCOME ----------------------------------------------------------- -->
+            <div id="imDiv" class="showit">
+              <p><img class="right" src="images/ib.gif" alt="<?php echo $l->m('im_001'); ?>" title="<?php echo $l->m('im_001'); ?>" width="48" height="48" border="0" /><strong>net<span class="hilight">4</span>visions.com</strong> -
+                the image browser plugin for WYSIWYG editors like FCKeditor,
+                SPAW, tinyMCE, and Xinha!</p>
+              <p> <strong> <span class="hilight">i</span>Browser</strong> does
+                upload images and supply file management functions. Images can
+                be resized on the fly. If you need even more advanced features,
+                have a look at <strong> <span class="hilight">i</span>Manager</strong>,
+                another <strong>net<span class="hilight">4</span>visions.com</strong> plugin
+                - it adds truecolor image editing functions like: resize, flip,
+                crop, add text, gamma correct, merge into other image, and many
+                others.</p>
+              <p><strong> <span class="hilight">i</span>Browser</strong> is written
+                and distributed under the GNU General Public License which means
+                that its source code is freely-distributed and available to the
+                general public.</p>
+              <p>&nbsp;</p>
+              <p>
+              <div class="btnRight">
+                <img src="images/firefox.gif" alt="" title="" width="80" height="15" align="absmiddle" /><img src="images/explorer.gif" alt="" title="" width="80" height="15" align="absmiddle" />
+              </div>
+              <span class="ver">
+                  Version: <?php echo $cfg['ver']; ?>
+                </span>
+              </p>
+            </div>
+            <!- // imDiv -->
+            <!- INSERT/CHANGE ----------------------------------------------------- -->
+            <div id="inDiv" class="hideit">
+              <fieldset>
+                <!- select library ---------------------------------------------------- -->
+                <div id="ilibsDiv" class="showit">
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('in_003'); ?>" alt="<?php echo $l->m('in_003'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label for="ilibs"> <span class="title">
+                    <?php echo $l->m('in_002'); ?>
+                  </span> </label>
+                    <select class="fldlg" id="ilibs" name="ilibs" size="1" onChange="ilibsClick(this);">
+                      <?php echo $lib_options; ?>
+                    </select>
+                  </div>
+                </div>
+              </fieldset>
+              <div class="floatWrap">
+                <!- left column ------------------------------------------------------- -->
+                <div class="colLeft">
+                  <fieldset>
+                    <!- select image ------------------------------------------------------ -->
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                       <img id="alertImg" class="hideit" src="images/alert_off.gif" onClick="alert(this.alt);" onMouseOver="this.src='images/alert.gif';" onMouseOut="this.src='images/alert_off.gif';" alt="<?php echo $l->m('in_051'); ?>" title="<?php echo $l->m('in_051'); ?>" width="16" height="16" border="0" />
+                      </div>
+                                         <label> <span class="title">
+                      <?php echo $l->m('in_004'); ?>
+                    </span> </label>
+                    </div>
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <span><img src="images/info_off.gif" onMouseOver="this.src='images/info.gif'; showInfo();" onMouseOut="this.src='images/info_off.gif'; showInfo();" alt="" title="" width="16" height="16" border="0" /><br /><img src="images/dirview_off.gif" onClick="switchList();" onMouseOver="this.src='images/dirview.gif';" onMouseOut="this.src='images/dirview_off.gif';" alt="<?php echo $l->m('in_052'); ?>" title="<?php echo $l->m('in_052'); ?>" width="16" height="16" border="0" /></span>
+                      </div>
+                      <div id="inSelDiv">
+                        <iframe name="inSelFrame" id="inSelFrame" src="scripts/rfiles.php?clib=<?php echo $clib; ?>" style="width: 100%; height: 100%;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
+                      </div>
+                    </div>
+                  </fieldset>
+                </div>
+                <!- // colLeft -->
+                <!- right column ----------------------------------------------------- -->
+                <div class="colRight">
+                  <fieldset>
+                    <!- preview image ---------------------------------------------------- -->
+                    <div class="rowDiv">
+                      <label> <span class="title">
+                      <?php echo $l->m('in_005'); ?>
+                    </span> </label>
+                    </div>
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img onClick="fullSizeView('in'); return false;" src="images/prev_off.gif" onMouseOver="this.src='images/prev.gif';" onMouseOut="this.src='images/prev_off.gif';" alt="<?php echo $l->m('in_007'); ?>" title="<?php echo $l->m('in_007'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <div id="inPrevDiv">
+                        <iframe name="inPrevFrame" id="inPrevFrame" src="images/noImg.gif" style="width: 100%; height: 100%;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
+                      </div>
+                    </div>
+                  </fieldset>
+                </div>
+              </div>
+              <!- // colRight -->
+              <!- popup section ---------------------------------------------------- -->
+              <div id="poDiv" class="hideit">
+                <fieldset>
+                  <div class="btnRight">
+                    <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('in_013'); ?>" title="<?php echo $l->m('in_013'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <div class="poPrevDiv">
+                    <iframe id="poPrevFrame" name="poPrevFrame" src="images/noPop.gif" style="width: 100%; height: 100%;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>
+                  </div>
+                  <div class="rowDiv">
+                    <label> <span class="title">
+                    <?php echo $l->m('in_010'); ?>
+                  </span> </label>
+                  </div>
+                  <div id="poDelDiv" class="hideit">
+                    <div class="rowDiv">
+                      <label for="chkP"> <span class="pad10">
+                      <?php echo $l->m('in_024'); ?>
+                    </span> </label>
+                      <input type="checkbox" id="chkP" name="chkP" value="" class="chkBox"/>
+                      <span class="frmText">
+                      (<?php echo $l->m('in_014'); ?>)
+                    </span>
+                    </div>
+                  </div>
+                  <div class="rowDiv">
+                    <label for="popClassName"> <span class="pad10">
+                    <?php echo $l->m('at_009'); ?>
+                  </span> </label>
+                    <select class="fldm" id="popClassName" name="popClassName" />                    
+                    <option value="default" selected="selected"><?php echo $l->m('at_099'); ?></option>
+                    <?php foreach ($cfg['style'] as $key => $value) {; ?>
+                    <option value="<?php echo $key; ?>"><?php echo $value; ?></option>
+                    <?php };   ?>
+                    </select>
+                  </div>
+                  <!- clear floats ------------------------------------------------------ -->
+                  <div class="clrFloatRight">
+                  </div>
+                  <div class="rowDiv">
+                    <label for="popTitle"> <span class="pad10">
+                    <?php echo $l->m('at_002'); ?>
+                  </span> </label>
+                    <input class="fldlg" id="popSrc" name="popSrc" type="text" value="" disabled="true" readonly="true"/>
+                  </div>
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <img onClick="selSymbol('popTitle');" src="images/symbols_off.gif" onMouseOver="this.src='images/symbols.gif';" onMouseOut="this.src='images/symbols_off.gif';" title="<?php echo $l->m('at_029'); ?>" alt="<?php echo $l->m('at_029'); ?>" width="16" height="16" border="0" /><img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_004'); ?>" title="<?php echo $l->m('at_004'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label for="popTitle"> <span class="pad10">
+                    <?php echo $l->m('at_003'); ?>
+                  </span> </label>
+                    <input class="fldmlg" id="popTitle" name="popTitle" type="text" value="" />
+                  </div>
+                </fieldset>
+              </div>
+              <!- // poDiv -->
+              <!- file section ----------------------------------------------------- -->
+              <div id="fileDivWrap" class="showit">
+                <fieldset>
+                  <div class="rowDiv">
+                    <div class="btnRight">
+                      <?php if ($cfg['create'] && isset($cfg['ilibs_inc'])) {; ?>
+                      <img src="images/dir_off.gif" onClick="changeClass(0,'fileDiv','showit','fiDirDiv','showit','fiUplDiv','hideit','fiRenDiv','hideit','fiDelDiv','hideit');" onMouseOver="this.src='images/dir.gif';" onMouseOut="this.src='images/dir_off.gif';" alt="<?php echo $l->m('in_027'); ?>" title="<?php echo $l->m('in_027'); ?>" width="16" height="16" />
+                      <?php }; ?>
+                      <?php if ($cfg['upload']) {; ?>
+                      <img src="images/upimg_off.gif" onClick="changeClass(1,'fileDiv','showit','fiDirDiv','hideit','fiUplDiv','showit','fiRenDiv','hideit','fiDelDiv','hideit');" onMouseOver="this.src='images/upimg.gif';" onMouseOut="this.src='images/upimg_off.gif';" alt="<?php echo $l->m('in_019'); ?>" title="<?php echo $l->m('in_019'); ?>" width="16" height="16" />
+                      <?php }; ?>
+                      <?php if ($cfg['rename']) {; ?>
+                      <img class="isecbtn"src="images/renimg_off.gif" onClick="changeClass(0,'fileDiv','showit','fiDirDiv','hideit','fiRenDiv','showit','fiUplDiv','hideit','fiDelDiv','hideit');" onMouseOver="this.src='images/renimg.gif';" onMouseOut="this.src='images/renimg_off.gif';" alt="<?php echo $l->m('in_017'); ?>" title="<?php echo $l->m('in_017'); ?>" width="16" height="16" border="0" />
+                      <?php }; ?>
+                      <?php if ($cfg['delete']) {; ?>
+                      <img src="images/delimg_off.gif" onClick="changeClass(0,'fileDiv','showit','fiDirDiv','hideit','fiDelDiv','showit','fiRenDiv','hideit','fiUplDiv','hideit');" onMouseOver="this.src='images/delimg.gif';" onMouseOut="this.src='images/delimg_off.gif';" alt="<?php echo $l->m('in_006'); ?>" title="<?php echo $l->m('in_006'); ?>" width="16" height="16" border="0" />
+                      <?php }; ?>
+                      <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('in_008'); ?>" title="<?php echo $l->m('in_008'); ?>" width="16" height="16" border="0" />
+                    </div>
+                    <label> <span class="title">
+                    <?php echo $l->m('in_015'); ?>
+                  </span> </label>
+                  </div>
+                  <!- clear floats ------------------------------------------------------ -->
+                  <div class="clrFloatRight">
+                  </div>
+                  <div id="fileDiv" class="showit">
+                    <?php if ($cfg['delete']) { ?>
+                    <div id="fiDelDiv" class="hideit">
+                      <div class="rowDiv">
+                        <div class="btnRight">
+                          <img onClick="deleteClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_006'); ?>" title="<?php echo $l->m('in_006'); ?>" width="16" height="16" border="0" />
+                        </div>
+                        <label for="in_srcnew"> <span class="pad10">
+                      <?php echo $l->m('in_024'); ?>
+                    </span> </label>
+                        <input class="fldlg readonly" id="in_delinfo" name="in_delinfo" type="text" value="" disabled="true" readonly="true" />
+                      </div>
+                    </div>
+                    <?php }; ?>
+                    <?php if ($cfg['rename']) { ?>
+                    <div id="fiRenDiv" class="hideit">
+                      <div class="rowDiv">
+                        <div class="btnRight">
+                          <img onClick="renameClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_017'); ?>" title="<?php echo $l->m('in_017'); ?>" width="16" height="16" border="0" />
+                        </div>
+                        <label for="in_srcnew"> <span class="pad10">
+                      <?php echo $l->m('in_016'); ?>
+                    </span> </label>
+                        <input class="fldlg" id="in_srcnew" name="in_srcnew" type="text" value="" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \_]'); ForceLowercase(this); CharacterReplace(this, ' ', '_'); return false;"  />
+                      </div>
+                    </div>
+                    <?php }; ?>
+                    <?php if ($cfg['create']) { ?>
+                    <div id="fiDirDiv" class="hideit">
+                      <div class="rowDiv">
+                        <div class="btnRight">
+                          <img onClick="createClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_026'); ?>" title="<?php echo $l->m('in_026'); ?>" width="16" height="16" border="0" />
+                        </div>
+                        <label for="in_srcnew"> <span class="pad10">
+                      <?php echo $l->m('in_025'); ?>
+                    </span> </label>
+                        <input class="fldlg" id="in_dirnew" name="in_dirnew" type="text" value="" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \_]'); ForceLowercase(this); CharacterReplace(this, ' ', '_'); return false;" />
+                      </div>
+                    </div>
+                    <?php }; ?>
+                    <?php if ($cfg['upload']) {; ?>
+                    <div id="fiUplDiv" class="hideit">
+                      <div class="rowDiv">
+                        <div class="btnRight">
+                          <img onClick="uploadClick();" src="images/okclick_off.gif" onMouseOver="this.src='images/okclick.gif';" onMouseOut="this.src='images/okclick_off.gif';" alt="<?php echo $l->m('in_019'); ?>" title="<?php echo $l->m('in_019'); ?>" width="16" height="16" />
+                        </div>
+                        <?php 
+                                                       $max = isset($cfg['umax']) && $cfg['umax'] >= 1 ? $cfg['umax'] : 1;                                     
+                                                       for($i=1; $i <= $max; $i++) {; ?>
+                        <label for="nfile"> <span class="pad10">
+                        <?php echo $l->m('in_018'); if ($max > 1){ echo ' (' . $i . ')';} ?>
+                      </span> </label>
+                        <input name="nfile[]" type="file" class="fldlg" id="nfile[]" size="53" accept="image/*" />
+                        <?php }; ?>
+                      </div>
+                      <div class="rowDiv">
+                        <div class="btnRight">
+                          <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('in_021'); ?>" alt="<?php echo $l->m('in_021'); ?>" width="16" height="16" border="0" />
+                        </div>
+                        <label for="chkThumbSize[]"> <span class="pad20">
+                          <?php echo $l->m('in_020'); ?>
+                        </span> </label>
+                        <div id="fmtDiv">
+                          <?php echo thumbSizes($cfg['thumbs']); ?>
+                        </div>
+                      </div>
+                      <div class="rowDiv">
+                        <div class="btnRight">
+                          <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('in_038'); ?>" alt="<?php echo $l->m('in_038'); ?>" width="16" height="16" border="0" />
+                        </div>
+                        <label for="rotateDiv"> <span class="pad20">
+                          <?php echo $l->m('in_037'); ?>
+                        </span> </label>
+                        <select class="fldm" id="selRotate" name="selRotate">
+                          <option value="" selected="selected"><?php echo $l->m('in_041'); ?></option>
+                          <optgroup label="<?php echo $l->m('in_043'); ?>"> <option value="P" ><?php echo $l->m('in_044'); ?></option> <option value="p" ><?php echo $l->m('in_045'); ?></option> </optgroup>
+                          <optgroup label="<?php echo $l->m('in_046'); ?>"> <option value="l" ><?php echo $l->m('in_047'); ?></option> <option value="L"><?php echo $l->m('in_048'); ?></option> </optgroup>
+                          <optgroup label="<?php echo $l->m('in_049'); ?>"> <option value="x"><?php echo $l->m('in_050'); ?></option> </optgroup>
+                        </select>
+                        <span class="frmText">(<?php echo $l->m('in_099'); ?>: <?php echo $l->m('in_042'); ?>)</span>
+                      </div>
+                    </div>
+                  </div>
+                  <?php }; ?>
+                </fieldset>
+              </div>
+              <!- // fiDiv -->
+            </div>
+            <!- // inDiv -->
+            <!- ATTRIBUTES -------------------------------------------------------- -->
+            <div id="atDiv" class="hideit">
+              <fieldset>
+                <div class="rowDiv">
+                  <label for="pr_src"> <span class="title">
+                  <?php echo $l->m('at_002'); ?>
+                </span> </label>
+                  <input class="fldlg readonly" id="pr_src" name="pr_src" type="text" value="" disabled="true" readonly="true" />
+                </div>
+                <div class="rowDiv">
+                  <div class="btnRight">
+                    <img onClick="selSymbol('pr_title');" src="images/symbols_off.gif" onMouseOver="this.src='images/symbols.gif';" onMouseOut="this.src='images/symbols_off.gif';" title="<?php echo $l->m('at_029'); ?>" alt="<?php echo $l->m('at_029'); ?>" width="16" height="16" border="0" /><img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_004'); ?>" title="<?php echo $l->m('at_004'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label for="pr_title"> <span class="title">
+                  <?php echo $l->m('at_003'); ?>
+                </span> </label>
+                  <input class="fldmlg" id="pr_title" name="pr_title" type="text" value="" onChange="updateStyle()" />
+                </div>
+                <div class="rowDiv">
+                  <div class="btnRight">
+                    <img onClick="selSymbol('pr_alt');" src="images/symbols_off.gif" onMouseOver="this.src='images/symbols.gif';" onMouseOut="this.src='images/symbols_off.gif';" title="<?php echo $l->m('at_030'); ?>" alt="<?php echo $l->m('at_030'); ?>" width="16" height="16" border="0" /><img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_006'); ?>" title="<?php echo $l->m('at_006'); ?>" width="16" height="16" border="0" />
+                  </div>
+                  <label for="pr_alt"> <span class="title">
+                  <?php echo $l->m('at_005'); ?>
+                </span> </label>
+                  <input class="fldmlg" id="pr_alt" name="pr_alt" type="text" value="" onChange="updateStyle()" />
+                </div>
+              </fieldset>
+              <div class="floatWrap">
+                <!- left column ------------------------------------------------------ -->
+                <div class="colLeft">
+                  <fieldset>
+                    <div class="rowDiv">
+                      <label> <span class="title">
+                      <?php echo $l->m('at_007'); ?>
+                    </span> </label>
+                    </div>
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" alt="<?php echo $l->m('at_008'); ?>" title="<?php echo $l->m('at_008'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label for="pr_class"> <span class="pad10">
+                      <?php echo $l->m('at_009'); ?>
+                    </span> </label>
+                      <select class="fldm" id="pr_class" name="pr_class" onChange="updateStyle()">
+                        <option value="default" selected="selected"><?php echo $l->m('at_099'); ?></option>
+                        <?php foreach ($cfg['style'] as $key => $value) {; ?>
+                        <option value="<?php echo $key; ?>"><?php echo $value; ?></option>
+                        <?php }; ?>
+                      </select>
+                    </div>
+                    <div class="rowDiv">
+                      <div class="btnRight">
+                        <img class="hlpBtn" src="images/help_off.gif" onMouseOver="this.src='images/help.gif';" onMouseOut="this.src='images/help_off.gif';" onClick="alert(this.alt);" title="<?php echo $l->m('at_011'); ?>" alt="<?php echo $l->m('at_011'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <label> <span class="title">
+                      <?php echo $l->m('at_010'); ?>
+                    </span> </label>
+                    </div>
+                    <div class="rowDiv">
+                      <label for="pr_align"> <span class="pad10">
+                      <?php echo $l->m('at_012'); ?>
+                    </span> </label>
+                      <select class="fldm" id="pr_align" name="pr_align" onChange="updateStyle()">
+                        <option value=""><?php echo $l->m('at_013'); ?></option> <option value="left"><?php echo $l->m('at_014'); ?></option> <option value="right"><?php echo $l->m('at_015'); ?></option> <option value="top"><?php echo $l->m('at_016'); ?></option> <option value="middle"><?php echo $l->m('at_017'); ?></option> <option value="bottom"><?php echo $l->m('at_018'); ?></option>
+                      </select>
+                    </div>
+                    <div class="rowDiv">
+                      <label for="pr_size"> <span class="pad10">
+                      <?php echo $l->m('at_022'); ?>
+                    </span> </label>
+                      <input class="fldsm readonly" id="pr_size" name="pr_size" type="text"value="" maxlength="8" disabled="true" readonly="true" />
+                      <span class="frmText">(<span id="pr_sizeUnit"></span>)</span>
+                    </div>
+                    <div class="rowDiv">
+                      <?php if ($cfg['attrib'] == true) {; ?>
+                      <div class="btnRight">
+                        <img src="images/img_size_off.gif" onMouseOver="this.src='images/img_size.gif';" onMouseOut="this.src='images/img_size_off.gif';" onClick="resetDim();" alt="<?php echo $l->m('at_031'); ?>" title="<?php echo $l->m('at_031'); ?>" width="16" height="16" border="0" />
+                      </div>
+                      <?php }; ?>
+                      <label for="pr_width"> <span class="pad10">
+                      <?php echo $l->m('at_023'); ?>
+                    </span> </label>
+                      <input id="pr_width" name="pr_width" type="text"value="" maxlength="4" <?php if ($cfg['attrib'] != true) {; ?> class="fldsm readonly" disabled="true" readonly="true" <?php } else {; ?> class="fldsm" onchange="changeDim(0);" onkeyup="RemoveInvalidChars(this, '[^0-9]');" <?php }; ?> />
+                      <span class="frmText">
+                      (px)
+                    </span>
+                    </div>
+                    <div class="rowDiv">
+                      <label for="pr_height"> <span class="pad10">
+                      <?php echo $l->m('at_024'); ?>
+                    </span> </label>
+                      <input id="pr_height" name="pr_height" type="text"value="" maxlength="4" <?php if ($cfg['attrib'] != true) {; ?> class="fldsm readonly" disabled="true" readonly="true" <?php } else {; ?> class="fldsm" onchange="changeDim(1);" onkeyup="RemoveInvalidChars(this, '[^0-9]');" <?php }; ?> />
+                      <span class="frmText">
+                      (px)
+                    </span>
+                    </div>
+                    <div class="rowDiv">
+                      <label for="pr_border"> <span class="pad10">
+                      <?php echo $l->m('at_025'); ?>
+                    </span> </label>
+                      <input class="fldsm" id="pr_border" name="pr_border" type="text"value="" maxlength="2" onChange="updateStyle();" onKeyUp="RemoveInvalidChars(this, '[^0-9]');"  />
+                      <span class="frmText">
+                      (px)
+                    </span>
+                    </div>
+                    <div class="rowDiv">
+                      <label for="pr_vspace"> <span class="pad10">
+                      <?php echo $l->m('at_026'); ?>
+                    </span> </label>
+                      <input class="fldsm" id="pr_vspace" name="pr_vspace" type="text" value="" maxlength="2" onChange="updateStyle();" onKeyUp="RemoveInvalidChars(this, '[^0-9]');" />
+                      <span class="frmText">
+                      (px)
+                    </span>
+                    </div>
+                    <div class="rowDiv">
+                      <label for="pr_hspace"> <span class="pad10">
+                      <?php echo $l->m('at_027'); ?>
+                    </span> </label>
+                      <input class="fldsm" id="pr_hspace" name="pr_hspace" type="text" value="" maxlength="2" onChange="updateStyle();" onKeyUp="RemoveInvalidChars(this, '[^0-9]');" />
+                      <span class="frmText">
+                      (px)
+                    </span>
+                    </div>
+                  </fieldset>
+                </div>
+                <!- // colLeft -->
+                <!- right column ----------------------------------------------------- -->
+                <div class="colRight">
+                  <fieldset>
+                    <div class="rowDiv">
+                      <label> <span class="title">
+                      <?php echo $l->m('at_028'); ?>
+                    </span> </label>
+                    </div>
+                    <div class="rowDiv">
+                      <div id="atPrevDiv">
+                        <p><img id="atPrevImg" src="images/textflow.gif" width="45" height="45" alt="" title="" hspace="" vspace="" border="" class="" />Lorem
+                          ipsum, Dolor sit amet, consectetuer adipiscing loreum
+                          ipsum edipiscing elit, sed diam nonummy nibh euismod
+                          tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum
+                          ipsum edipiscing elit, sed diam nonummy nibh euismod
+                          tincidunt ut laoreet dolore magna aliquam erat volutpat.
+                          Ut wisi enim ad minim veniam, quis nostrud exercitation
+                          ullamcorper suscipit. Lorem ipsum, Dolor sit amet,
+                          consectetuer adipiscing loreum ipsum edipiscing elit,
+                          sed diam nonummy nibh euismod tincidunt ut laoreet
+                          dolore magna aliquam erat volutpat.</p>
+                      </div>
+                    </div>
+                  </fieldset>
+                </div>
+                <!- // colRight -->
+              </div>
+            </div>
+            <!- // atDiv -->
+          </div>
+        </div>
+      </div>
+      <!- // mainDivWrap -->
+      <!- footer ----------------------------------------------------------- -->
+      <div id="ftDivWrap">
+        <div id="ftDiv">
+          <input type="button" value="<?php echo $l->m('im_005'); ?>" class="btn" onClick="insertImage();" />
+          <span class="pad5">
+            <input type="button" value="<?php echo $l->m('im_006'); ?>" class="btn" onClick="top.window.close();" />
+          </span>
+        </div>
+      </div>
+      <!- // ftDivWrap -->
+    </div>
+  </div>
+  <!- // outerDivWrap -->
+</form>
+</body>
+</html><?php
+// ============================================================
+// = create library list V 1.0, date: 05/10/2005              =
+// ============================================================
+       function liboptions($arr, $prefix = '', $sel = '') {
+               $retval = '';
+               foreach($arr as $lib) {                 
+               $retval .= '<option value="' . absPath($lib['value']) . '"' . (($lib['value'] == $sel) ? ' selected="selected"' : '') . '>' . $prefix . $lib['text'] . '</option>' . "\n";
+               }
+               return $retval;
+       }
+// ============================================================
+// = create thumb sizes V 1.0, date: 05/23/2005               =
+// ============================================================
+       function thumbSizes($arr, $sel = '') {
+               global $l;
+               $retval = '';
+               foreach($arr as $key => $thumb) {                       
+                       $retval .= '<div>' . '<input id="chkThumbSize[' . $key . ']" name="chkThumbSize[' . $key . ']" class="chkBox" type="checkbox" value="' . $key . '"' . (($key == 0) ? ' checked="checked"' : '') . ' />' . '<span class="frmText">' . (($thumb['size'] == '*') ? $l->m('in_022') . '&nbsp;'  : $thumb['size'] . ' px' ) . '</span>' . (($thumb['crop'] == true) ? '<img src="images/thbCrop.gif" align="absmiddle" width="10px" height="10px" alt="' . $l->m('in_023') . '" title="' . $l->m('in_023') . '" />' : '') . '</div>' . "\n";
+               }
+               return $retval;
+       }
+// ============================================================
+// = abs path - add slashes V 1.0, date: 05/10/2005           =
+// ============================================================
+       function absPath($path) {               
+               if (substr($path,-1)  != '/') $path .= '/';
+               if (substr($path,0,1) != '/') $path  = '/' . $path;
+               return $path;
+       }
+//-------------------------------------------------------------------------
+?>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about.gif
new file mode 100644 (file)
index 0000000..fb28132
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about_off.gif
new file mode 100644 (file)
index 0000000..1b32540
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/about_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert.gif
new file mode 100644 (file)
index 0000000..c056329
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert_off.gif
new file mode 100644 (file)
index 0000000..f44ac5c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/alert_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar.gif
new file mode 100644 (file)
index 0000000..c3f0f2c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar_gs.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar_gs.gif
new file mode 100644 (file)
index 0000000..10f6c19
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/buttonbar_gs.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/defaultIcon.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/defaultIcon.png
new file mode 100644 (file)
index 0000000..c60cf3c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/defaultIcon.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg.gif
new file mode 100644 (file)
index 0000000..ebbd049
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg_off.gif
new file mode 100644 (file)
index 0000000..e5a9e3f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/delimg_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir.gif
new file mode 100644 (file)
index 0000000..a6ca140
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir_off.gif
new file mode 100644 (file)
index 0000000..109a53c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dir_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview.gif
new file mode 100644 (file)
index 0000000..7d977b4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview_off.gif
new file mode 100644 (file)
index 0000000..02e69d0
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/dirview_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.gif
new file mode 100644 (file)
index 0000000..5eff4ad
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.png
new file mode 100644 (file)
index 0000000..ad1ecbb
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/explorer.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/favicon.ico b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/favicon.ico
new file mode 100644 (file)
index 0000000..7bf1fff
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/favicon.ico differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.gif
new file mode 100644 (file)
index 0000000..dbdf94c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.png
new file mode 100644 (file)
index 0000000..2c6308d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/firefox.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help.gif
new file mode 100644 (file)
index 0000000..fc983c4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help_off.gif
new file mode 100644 (file)
index 0000000..e46cf7d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/help_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ib.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ib.gif
new file mode 100644 (file)
index 0000000..706fb7b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ib.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ibrowser.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ibrowser.gif
new file mode 100644 (file)
index 0000000..b3d4520
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/ibrowser.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at.gif
new file mode 100644 (file)
index 0000000..dac61bd
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at_off.gif
new file mode 100644 (file)
index 0000000..2c63693
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_at_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr.gif
new file mode 100644 (file)
index 0000000..65ad1cf
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr_off.gif
new file mode 100644 (file)
index 0000000..47b41ab
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_cr_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in.gif
new file mode 100644 (file)
index 0000000..f7af2c8
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in_off.gif
new file mode 100644 (file)
index 0000000..366d367
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_in_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po.gif
new file mode 100644 (file)
index 0000000..9248c16
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po_off.gif
new file mode 100644 (file)
index 0000000..31c218c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_po_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size.gif
new file mode 100644 (file)
index 0000000..ad10fd1
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size_off.gif
new file mode 100644 (file)
index 0000000..a547aee
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/img_size_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/index.html b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/index.html
new file mode 100644 (file)
index 0000000..274a683
--- /dev/null
@@ -0,0 +1 @@
+Nothing to see here people, move along!
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info.gif
new file mode 100644 (file)
index 0000000..b3d6f65
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info_off.gif
new file mode 100644 (file)
index 0000000..15adbfb
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/info_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.gif
new file mode 100644 (file)
index 0000000..6e6a254
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.png
new file mode 100644 (file)
index 0000000..9f16da7
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noImg.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.gif
new file mode 100644 (file)
index 0000000..d7295e2
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.png
new file mode 100644 (file)
index 0000000..98d1dfc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/noPop.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick.gif
new file mode 100644 (file)
index 0000000..747f3fc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick_off.gif
new file mode 100644 (file)
index 0000000..1f7020b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/okclick_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/paypal.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/paypal.gif
new file mode 100644 (file)
index 0000000..8f86b89
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/paypal.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev.gif
new file mode 100644 (file)
index 0000000..ba7bf57
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev_off.gif
new file mode 100644 (file)
index 0000000..573b61e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/prev_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.gif
new file mode 100644 (file)
index 0000000..5a66b12
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.png b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.png
new file mode 100644 (file)
index 0000000..fea098c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/randomImg.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg.gif
new file mode 100644 (file)
index 0000000..808616d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg_off.gif
new file mode 100644 (file)
index 0000000..15c2c08
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/renimg_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/spacer.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/spacer.gif
new file mode 100644 (file)
index 0000000..46a2cf0
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/spacer.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols.gif
new file mode 100644 (file)
index 0000000..ae43ddc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols_off.gif
new file mode 100644 (file)
index 0000000..212b019
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/symbols_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/textflow.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/textflow.gif
new file mode 100644 (file)
index 0000000..53bf689
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/textflow.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/thbCrop.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/thbCrop.gif
new file mode 100644 (file)
index 0000000..a76a9da
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/thbCrop.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg.gif
new file mode 100644 (file)
index 0000000..036b1f2
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg_off.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg_off.gif
new file mode 100644 (file)
index 0000000..8403e41
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/images/upimg_off.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/da.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/da.php
new file mode 100644 (file)
index 0000000..8819a98
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser
+       // ================================================
+       // iBrowser - language file: English
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.1                   Date: 05/25/2005
+       // ================================================
+
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'iso-8859-1';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Billed browser',
+               'im_002' => 'iBrowser',
+               'im_003' => 'Menu',
+               'im_004' => 'Velkommen',
+               'im_005' => 'Indsæt',
+               'im_006' => 'Afbryd',
+               'im_007' => 'Indsæt',
+               'im_008' => 'Indsæt/rediger',
+               'im_009' => 'Egenskaber',
+               'im_010' => 'Billed egenskaber',
+               'im_013' => 'Popup',
+               'im_014' => 'Billed popup',
+               'im_015' => 'Om iBrowser',
+               'im_016' => 'Afsnit',
+               'im_097' => 'Please wait while loading...',
+               'im_098' => 'Åben afsnit',
+               'im_099' => 'Luk afsnit',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in
+               'in_001' => 'Indsæt/rediger billede',
+               'in_002' => 'Mapper',
+               'in_003' => 'Vælg en billed mappe',
+               'in_004' => 'Billeder',
+               'in_005' => 'Preview',
+               'in_006' => 'Slet billede',
+               'in_007' => 'Klik for større billede',
+               'in_008' => 'Åben billed upload, omdøb, eller slet sektion',
+               'in_009' => 'Information',
+               'in_010' => 'Popup',
+               'in_013' => 'Opret et link således billedet åbnes i et ny vindue.',
+               'in_014' => 'Fjern popup link',
+               'in_015' => 'File',
+               'in_016' => 'Omdøb',
+               'in_017' => 'Omdøb billede',
+               'in_018' => 'Upload',
+               'in_019' => 'Upload billede',
+               'in_020' => 'Størrelse(r)',
+               'in_021' => 'Marker den ønskede størrelse(r) som billed(er) skal uploadesi',
+               'in_022' => 'Original',
+               'in_023' => 'Billedet vil blive beskåret',
+               'in_024' => 'Slet',
+               'in_025' => 'Folder',
+               'in_026' => 'Klik for at oprette en ny mappe',
+               'in_027' => 'Opret en mappe',
+               'in_028' => 'Brede',
+               'in_029' => 'Højde',
+               'in_030' => 'Type',
+               'in_031' => 'Størrelse',
+               'in_032' => 'Navn',
+               'in_033' => 'Oprettet',
+               'in_034' => 'Ændret',
+               'in_035' => 'Billed info',
+               'in_036' => 'Klik på billedet for at lukke vinduet',
+               'in_037' => 'Roter',
+               'in_038' => 'Auto roter: sat til exif info, for at bruge EXIF orientering 
+gemt af kamera. Kan også sættes til +180&grader; eller -180&grader; for 
+landskab, eller +90&grader; eller -90&grader; for portræt. Positive værdier 
+for med-uret og negative værdier for mod-uret.',
+               'in_041' => '',
+               'in_042' => 'intet',
+               'in_043' => 'portræt',
+               'in_044' => '+ 90&grader;',
+               'in_045' => '- 90&grader;',
+               'in_046' => 'landskab',
+               'in_047' => '+ 180&grader;',
+               'in_048' => '- 180&grader;',
+               'in_049' => 'Kamera',
+               'in_050' => 'exif info',
+               'in_051' => 'ADVARSEL: Følgende billede er et dynamisk thumbnail oprettet 
+af iManager - parameterne vil gå tabet hvis billedet ændres.',
+               'in_052' => 'Switch image selection view',
+               'in_099' => 'grundindstilling',
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Billed egenskaber',
+               'at_002' => 'Kilde',
+               'at_003' => 'Titel',
+               'at_004' => 'TITEL - Viser billed beskrivelse ved mouse-over',
+               'at_005' => 'Beskrivelse',
+               'at_006' => 'ALT -  tekst udskiftning for billede, til fremvisning eller 
+istedet for billedet',
+               'at_007' => 'Style',
+               'at_008' => 'Check venligst at den valgte style findes i dit stylesheet!',
+               'at_009' => 'CSS-style',
+               'at_010' => 'Indstillinger',
+               'at_011' => 'På række\', \'Border\', \'H-afstand\', og \'V-afstand\' 
+indstillinger for billede er ikke understøttet i XHTML 1.0 Kun DTD. Brug 
+CSS-style istedet for.',
+               'at_012' => 'På række',
+               'at_013' => 'Grundindstilling',
+               'at_014' => 'Venstre',
+               'at_015' => 'Højre',
+               'at_016' => 'Top',
+               'at_017' => 'Midt i',
+               'at_018' => 'Bund',
+               'at_019' => 'absolut-midt',
+               'at_020' => 'tekst-top',
+               'at_021' => 'grundlinie',
+               'at_022' => 'Størrelse',
+               'at_023' => 'Brede',
+               'at_024' => 'Højde',
+               'at_025' => 'Border',
+               'at_026' => 'V-afstand',
+               'at_027' => 'H-afstand',
+               'at_028' => 'Preview',
+               'at_029' => 'Klik for at indsætte speciale karaktere ind i titel feltet',
+               'at_030' => 'Klik for at indsætte speciale karaktere ind i beskrivelses 
+feltet',
+               'at_031' => 'Nulstil billed dimensioner til forud valgte værdier',
+               'at_099' => 'Grundindstillingt',
+               //-------------------------------------------------------------------------
+               // error messages - er
+               'er_001' => 'Fejl',
+               'er_002' => 'Der er ikke valgt noget billede !',
+               'er_003' => 'Brede er ikke et tal',
+               'er_004' => 'Højde er ikke et tal',
+               'er_005' => 'Border er ikke et tal',
+               'er_006' => 'Horisontal afstand er ikke et tal',
+               'er_007' => 'Vertikal afstand er ikke et tal',
+               'er_008' => 'Klik OK for at slette billedet',
+               'er_009' => 'Omdøbning af Miniature er ikke tilladt! Omdøb original billedet, hvis du vil have nyt navn for Miniature billedet.',
+               'er_010' => 'Klik OK for at omdøbe billedet til',
+               'er_011' => 'Nyt navn er enten tomt eller ikke ændret!',
+               'er_014' => 'Indsæt nyt file navn!',
+               'er_015' => 'Indsæt venligst korrekt navn!',
+               'er_016' => 'Miniature er ikke tilgængelig! Sæt Miniature størrelsen i config filen.',
+               'er_021' => 'Klik OK for at uploade billede(r) .',
+               'er_022' => 'Uploader billede - Vent venligst...',
+               'er_023' => 'Der er ikke valgt noget billede eller file størrelsen er markeret.',
+               'er_024' => 'File',
+               'er_025' => 'Eksistere allerede! Klik OK for at overskrive filen...',
+               'er_026' => 'Indsæt nyt file navn!',
+               'er_027' => 'Mappen eksistere ikke',
+               'er_028' => 'Der opstod en fejl under oploadning af filen. Prøv igen.',
+               'er_029' => 'Forkert billed file type',
+               'er_030' => 'Fejl ved sletning! Prøv igen.',
+               'er_031' => 'Overskriv',
+               'er_032' => 'Fuld størrelse preview virker kun for billeder større end preview størrelsen',
+               'er_033' => 'Fejl ved omdøbning af file! Prøv igen.',
+               'er_034' => 'Fejl ved oprettelse af mappe! Prøv igen.',
+               'er_035' => 'Forstørrelse er ikke tilladt!',
+               'er_036' => 'Fejl ved opbygning af billed liste!',
+         ),
+         
+//-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbols',
+               'ok'                    => 'OK',
+               'cancel'                => 'Fortryd',
+         ),
+       )
+?>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/de.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/de.php
new file mode 100644 (file)
index 0000000..5a4450f
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+       // ================================================
+       // PHP Bild browser - iBrowser 
+       // ================================================
+       // iBrowser - language file: German
+       // ================================================
+       // Developed: baumedia.net
+       // Copyright: baumedia.net
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.1                   Date: 09/08/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'iso-8859-1';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+       
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (  
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Bild browser',
+               'im_002' => 'iBrowser',
+               'im_003' => 'Menu',
+               'im_004' => 'Willkommen',
+               'im_005' => 'Einf&uuml;gen',
+               'im_006' => 'Abbrechen',
+               'im_007' => 'Einf&uuml;gen',            
+               'im_008' => 'Einf&uuml;gen/&auml;ndern',
+               'im_009' => 'Attribute',
+               'im_010' => 'Bild Attribute',
+               'im_013' => 'Popup',
+               'im_014' => 'Bild PopUp',
+               'im_015' => '&Uuml;ber iBrowser',
+               'im_016' => 'Abschnitt',
+               'im_097' => 'Bitte warten...',
+               'im_098' =>     'Abschnitt &ouml;ffnen',
+               'im_099' => 'Abschnitt schlie&szlig;en',
+               //-------------------------------------------------------------------------
+               // Einf&uuml;gen/change screen - in     
+               'in_001' => 'Einf&uuml;gen/Bild &auml;ndern',
+               'in_002' => 'Ordner',
+               'in_003' => 'Ordner ausw&auml;hlen',
+               'in_004' => 'Bilder',
+               'in_005' => 'Vorschau',
+               'in_006' => 'Bild l&ouml;schen',
+               'in_007' => 'F&uuml;r Gro&szlig;ansicht klicken',
+               'in_008' => 'Bild hochladen, l&ouml;schen oder umbenennen',     
+               'in_009' => 'Information',
+               'in_010' => 'Popup',            
+               'in_013' => 'Erstellt einen Link zu einem im PopUp ge&ouml;ffneten Bild',
+               'in_014' => 'PopUp Link entfernen',     
+               'in_015' => 'Datei',    
+               'in_016' => 'Umbenennen',
+               'in_017' => 'Bild umbenennen',
+               'in_018' => 'Upload',
+               'in_019' => 'Bild Upload',      
+               'in_020' => 'Gr&ouml;&szlig;e',
+               'in_021' => 'Gew&uuml;nschte Gr&ouml;&szlig;e',
+               'in_022' => 'Original',
+               'in_023' => 'Bild wird beschnitten',
+               'in_024' => 'L&ouml;schen',
+               'in_025' => 'Ordner',
+               'in_026' => 'Ordner erstellen',
+               'in_027' => 'Ordner erstellen',
+               'in_028' => 'Breite',
+               'in_029' => 'H&ouml;he',
+               'in_030' => 'Typ',
+               'in_031' => 'Gr&ouml;&szlig;e',
+               'in_032' => 'Name',
+               'in_033' => 'erstellt am',
+               'in_034' => 'ge&auml;ndert am',
+               'in_035' => 'Bild Info',
+               'in_036' => 'Zum schlie&szlig;en auf das Bild klicken',
+               'in_037' => 'Drehen',
+               'in_038' => 'Automatisches Drehen: benutzt die exif Informationen der Kamera. +180&deg; oder -180&deg; f&uuml;r Querformat setzen, +90&deg; oder -90&deg; f&uuml;r Hochformat. Positive Werte drehen im Uhrzeigersinn, negative entgegen.',
+               'in_041' => '',
+               'in_042' => 'nichts',           
+               'in_043' => 'Hochformat',
+               'in_044' => '+ 90&deg;',        
+               'in_045' => '- 90&deg;',
+               'in_046' => 'Querformat',       
+               'in_047' => '+ 180&deg;',       
+               'in_048' => '- 180&deg;',
+               'in_049' => 'Kamera',   
+               'in_050' => 'EXIF Info',
+               'in_051' => 'ACHTUNG: Das Bild ist ein dynamisch vom iManager generiertes Thumbnail - Einstellungen gehen bei Bildver&auml;nderungen verloren.',
+               'in_052' => 'Bildansicht &auml;nder',
+               'in_053' => 'Zufall',
+               'in_054' => 'Zuf&auml;lliges Bild einf&uuml;gen',
+               'in_055' => 'Zuf&auml;lliges Bild einf&uuml;gen',
+               'in_056' => 'Parameter',
+               'in_057' => 'Standardeinstellungen herstellen',
+               'in_099' => 'Standardeinstellungen',    
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Bild Attribute',
+               'at_002' => 'Quelle',
+               'at_003' => 'Titel',
+               'at_004' => 'Bildtitel - wird bei MouseOver angezeigt',
+               'at_005' => 'Beschreibung',
+               'at_006' => 'ALT-Tag des Bilds',
+               'at_007' => 'Stil',
+               'at_008' => 'Der eingestellte Stil muss im Stylesheet vorhanden sein.',
+               'at_009' => 'CSS-Stil', 
+               'at_010' => 'Attribute',
+               'at_011' => 'Die \'align\', \'border\', \'hspace\', and \'vspace\' Eigenschaften werden vom XHTML 1.0 Strict DTD nicht unterst&uuml;tzt. Bitte die CSS-Stile statt dessen verwenden',
+               'at_012' => 'Ausrichtung',      
+               'at_013' => 'Standard',
+               'at_014' => 'Links',
+               'at_015' => 'Rechts',
+               'at_016' => 'Oben',
+               'at_017' => 'Mittig',
+               'at_018' => 'Unten',
+               'at_019' => 'Absolut mittig',
+               'at_020' => 'Oben b&uuml;ndig',
+               'at_021' => 'Grundlinie',               
+               'at_022' => 'Gr&ouml;&szlig;e',
+               'at_023' => 'Breite',
+               'at_024' => 'H&ouml;he',
+               'at_025' => 'Rahmen',
+               'at_026' => 'V-Abstand',
+               'at_027' => 'H-Abstand',
+               'at_028' => 'Vorschau', 
+               'at_029' => 'Sonderzeichen einf&uuml;gen',
+               'at_030' => 'Sonderzeichen einf&uuml;gen',
+               'at_031' => 'Bildgr&ouml;&szlig;e wiederherstellen',
+               'at_032' => 'Bildbeschreibung',
+               'at_033' => 'Bildbeschreibung anzeigen.',
+               'at_034' => 'Bildbeschreibung anzeigen.',
+               'at_099' => 'Standard', 
+               //-------------------------------------------------------------------------             
+               // error messages - er
+               'er_001' => 'Fehler',
+               'er_002' => 'Kein Bild ausgew&auml;hlt!',
+               'er_003' => 'Breite ist keine Zahl',
+               'er_004' => 'H&ouml;he ist keine Zahl',
+               'er_005' => 'Rahmengr&ouml;&szlig;e ist keine Zahl',
+               'er_006' => 'H-Abstand muss Zahl sein',
+               'er_007' => 'V-Abstand muss Zahl sein',
+               'er_008' => 'Mit "OK" l&ouml;schen best&auml;tigen',
+               'er_009' => 'Umbenennen der Thumbnails ist nicht m&ouml;glich! Bitte nennen Sie das Hauptbild um, wenn Sie das Thumbnail umbenennen wollen',
+               'er_010' => 'Mit "OK" Bild umbenennen!',
+               'er_011' => 'Der neue Name ist entweder leer oder nicht ge&auml;ndert!',
+               'er_014' => 'Bitte neuen Dateinamen eingeben!',
+               'er_015' => 'Bitte g&uuml;ltigen Dateinamen eingeben!',
+               'er_016' => 'Thumbnailing ist nicht aktiviert! Um Thumbnails zu erstellen, m&uuml;ssen Sie die Konfiguration anpassen.',
+               'er_021' => 'Mit "OK" Bilder uploaden!',
+               'er_022' => 'Bild wird hochgeladen - bitte warten...',
+               'er_023' => 'Entweder kein Bild ausgew&auml;hlt oder Dateigr&ouml;&szlig;e wurde nicht erfasst.',
+               'er_024' => 'Datei',
+               'er_025' => 'Datei existiert - "OK" dr&uuml;cken zum &uuml;berschreiben',
+               'er_026' => 'Neuen Dateinamen eingeben!',
+               'er_027' => 'Ordner nicht vorhanden',
+               'er_028' => 'Es ist ein Fehler w&auml;hrend des Uploadvorganges aufgetreten. Bitte versuchen Sie es noch einmal.',
+               'er_029' => 'Falscher Dateityp',
+               'er_030' => 'L&ouml;schen fehlgeschlagen - Bitte noch einmal versuchen.',
+               'er_031' => '&Uuml;berschreiben',
+               'er_032' => 'Bilder k&ouml;nnen nur in Gro&szlig;ansicht angezeigt werden, wenn Sie gr&ouml;&szlig;er als die Vorschau sind.',
+               'er_033' => 'Umbenennen fehlgeschlagen - bitte noch einmal versuchen!',
+               'er_034' => 'Ordner anlegen fehlgeschlagen - bitte noch einmal versuchen!',
+               'er_035' => 'Vergr&ouml;&szlig;ern ist nicht erlaubt!',
+               'er_036' => 'Fehler bei der Dateianzeige!',
+         ),      
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbole',
+               'ok'                    => 'OK',
+               'cancel'                => 'Abbrechen',
+         ),      
+       )
+?>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/en.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/en.php
new file mode 100644 (file)
index 0000000..d2d8c68
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - language file: English
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.1                   Date: 07/07/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'iso-8859-1';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+       
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (  
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Image browser',
+               'im_002' => 'iBrowser',
+               'im_003' => 'Menu',
+               'im_004' => 'Welcome',
+               'im_005' => 'Insert',
+               'im_006' => 'Cancel',
+               'im_007' => 'Insert',           
+               'im_008' => 'Insert/change',
+               'im_009' => 'Properties',
+               'im_010' => 'Image properties',
+               'im_013' => 'Popup',
+               'im_014' => 'Image popup',
+               'im_015' => 'About iBrowser',
+               'im_016' => 'Section',
+               'im_097' => 'Please wait while loading...',
+               'im_098' =>     'Open section',
+               'im_099' => 'Close section',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in    
+               'in_001' => 'Insert/Change image',
+               'in_002' => 'Library',
+               'in_003' => 'Select an image library',
+               'in_004' => 'Images',
+               'in_005' => 'Preview',
+               'in_006' => 'Delete image',
+               'in_007' => 'Click for a larger view of picture',
+               'in_008' => 'Open the image upload, rename, or delete section', 
+               'in_009' => 'Information',
+               'in_010' => 'Popup',            
+               'in_013' => 'Create a link to an image to be opened in a new window.',
+               'in_014' => 'remove popup link',        
+               'in_015' => 'File',     
+               'in_016' => 'Rename',
+               'in_017' => 'Rename image',
+               'in_018' => 'Upload',
+               'in_019' => 'Upload image',     
+               'in_020' => 'Size(s)',
+               'in_021' => 'Check the desired size(s) to be created while uploading image(s)',
+               'in_022' => 'Original',
+               'in_023' => 'Image will be cropped',
+               'in_024' => 'Delete',
+               'in_025' => 'Directory',
+               'in_026' => 'Click to create a directory',
+               'in_027' => 'Create a directory',
+               'in_028' => 'Width',
+               'in_029' => 'Height',
+               'in_030' => 'Type',
+               'in_031' => 'Size',
+               'in_032' => 'Name',
+               'in_033' => 'Created',
+               'in_034' => 'Modified',
+               'in_035' => 'Image info',
+               'in_036' => 'Click on image to close window',
+               'in_037' => 'Rotate',
+               'in_038' => 'Auto rotate: set to exif info, to use EXIF orientation stored by camera. Can also be set to +180&deg; or -180&deg; for landscape, or +90&deg; or -90&deg; for portrait. Positive values for clockwise and negative values for counterclockwise.',
+               'in_041' => '',
+               'in_042' => 'none',             
+               'in_043' => 'portrait',
+               'in_044' => '+ 90&deg;',        
+               'in_045' => '- 90&deg;',
+               'in_046' => 'landscape',        
+               'in_047' => '+ 180&deg;',       
+               'in_048' => '- 180&deg;',
+               'in_049' => 'camera',   
+               'in_050' => 'exif info',
+               'in_051' => 'WARNING: Current image is a dynamic thumbnail created by iManager - parameters will be lost on image change.',
+               'in_052' => 'Click to switch image selection view',
+               'in_053' => 'Random',
+               'in_054' => 'If checked, random image will be inserted',
+               'in_055' => 'Check to insert random image',
+               'in_056' => 'Parameters',
+               'in_057' => 'click to reset parameters to default values',
+               'in_099' => 'default',  
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Image attributes',
+               'at_002' => 'Source',
+               'at_003' => 'Title',
+               'at_004' => 'TITLE - displays image description onmouseover',
+               'at_005' => 'Description',
+               'at_006' => 'ALT -  textual replacement for the image, to be displayed or otherwise used in place of the image',
+               'at_007' => 'Style',
+               'at_008' => 'Please make sure that the selected style exists in your stylesheet!',
+               'at_009' => 'CSS-style',        
+               'at_010' => 'Attributes',
+               'at_011' => 'The \'align\', \'border\', \'hspace\', and \'vspace\' attributes of the image element are not supported in XHTML 1.0 Strict DTD. Please use the CSS-style instead.',
+               'at_012' => 'Align',    
+               'at_013' => 'default',
+               'at_014' => 'left',
+               'at_015' => 'right',
+               'at_016' => 'top',
+               'at_017' => 'middle',
+               'at_018' => 'bottom',
+               'at_019' => 'absmiddle',
+               'at_020' => 'texttop',
+               'at_021' => 'baseline',         
+               'at_022' => 'Size',
+               'at_023' => 'Width',
+               'at_024' => 'Height',
+               'at_025' => 'Border',
+               'at_026' => 'V-space',
+               'at_027' => 'H-space',
+               'at_028' => 'Preview',  
+               'at_029' => 'Click to enter special character into title field',
+               'at_030' => 'Click to enter special character into description field',
+               'at_031' => 'Reset image dimensions to default values',
+               'at_032' => 'Caption',
+               'at_033' => 'checked: set image caption / unchecked: no image caption set or remove image caption',
+               'at_034' => 'set image caption',
+               'at_099' => 'default',  
+               //-------------------------------------------------------------------------             
+               // error messages - er
+               'er_001' => 'Error',
+               'er_002' => 'No image is selected!',
+               'er_003' => 'Width is not a number',
+               'er_004' => 'Height is not a number',
+               'er_005' => 'Border is not a number',
+               'er_006' => 'Horizontal space is not a number',
+               'er_007' => 'Vertical space is not a number',
+               'er_008' => 'Click OK to delete the image',
+               'er_009' => 'Renaming of thumbnails is not allowed! Please rename the main image if you like to rename the thumbnail image.',
+               'er_010' => 'Click OK to rename image to',
+               'er_011' => 'New name is either empty or has not changed!',
+               'er_014' => 'Please enter new file name!',
+               'er_015' => 'Please enter valid file name!',
+               'er_016' => 'Thumbnailing not available! Please set thumbnail size in config file in order to enable thumbnailing.',
+               'er_021' => 'Click OK to upload image(s).',
+               'er_022' => 'Uploading image - please wait...',
+               'er_023' => 'No image has been selected or no file size has been checked.',
+               'er_024' => 'File',
+               'er_025' => 'already exists! Please click OK to overwrite file...',
+               'er_026' => 'Please enter new file name!',
+               'er_027' => 'Directory doesn\'t physically exist',
+               'er_028' => 'An error occured while handling file upload. Please try again.',
+               'er_029' => 'Wrong image file type',
+               'er_030' => 'Delete failed! Please try again.',
+               'er_031' => 'Overwrite',
+               'er_032' => 'Full size preview only works for pictures larger than the preview size',
+               'er_033' => 'Renaming file failed! Please try again.',
+               'er_034' => 'Creating directory failed! Please try again.',
+               'er_035' => 'Enlarging is not allowed!',
+               'er_036' => 'Error building image list!',
+         ),      
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbols',
+               'ok'                    => 'OK',
+               'cancel'                => 'Cancel',
+         ),      
+       )
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/es.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/es.php
new file mode 100644 (file)
index 0000000..f21a991
--- /dev/null
@@ -0,0 +1,184 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - language file: Spanish
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.3                   Date: 08/08/2005
+       // Contributor: Diego de Lucas
+       //                              diegodelucas@gmail.com
+       //                              www.dlgsoftware.net
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'iso-8859-1';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+       
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (  
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Navegador de im&aacute;genes',
+               'im_002' => 'iBrowser',
+               'im_003' => 'Men&uacute;',
+               'im_004' => 'Bienvenido',
+               'im_005' => 'Insertar',
+               'im_006' => 'Cancelar',
+               'im_007' => 'Insertar',         
+               'im_008' => 'Insertar/Cambiar',
+               'im_009' => 'Propiedades',
+               'im_010' => 'Propiedades de la imagen',
+               'im_013' => 'Emergente',
+               'im_014' => 'Imagen emergente',
+               'im_015' => 'Acerca de iBrowser',
+               'im_016' => 'Secci&oacute;n',
+               'im_097' => 'Cargando... Espere...',
+               'im_098' =>     'Abrir secci&oacute;n',
+               'im_099' => 'Cerrar secci&oacute;n',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in    
+               'in_001' => 'Insertar/Cambiar imagen',
+               'in_002' => 'Librer&iacute;a/Directorio',
+               'in_003' => 'Selecciona una librer&iacute;a o directorio',
+               'in_004' => 'Im&aacute;genes',
+               'in_005' => 'Vista previa',
+               'in_006' => 'Borrar imagen',
+               'in_007' => 'Click para ampliar la imagen',
+               'in_008' => 'Abre la secci&oacute;n de subir, renombrar o borrar imagen',       
+               'in_009' => 'Informaci&oacute;n',
+               'in_010' => 'Emergente',                
+               'in_013' => 'Crea un enlace a una imagen para ser abierto en una ventana nueva.',
+               'in_014' => 'Elimina enlace emergente', 
+               'in_015' => 'Archivo',  
+               'in_016' => 'Renombrar',
+               'in_017' => 'Renombrar imagen',
+               'in_018' => 'Subir',
+               'in_019' => 'Subir imagen',     
+               'in_020' => 'Tama&ntilde;o(s)',
+               'in_021' => 'Marcar tama&ntilde;o(s) deseado(s) para ser creados mientras se sube(n) la(s) imagen(es)',
+               'in_022' => 'Original',
+               'in_023' => 'La imagen ser&aacute; ajustada en ambas dimensiones',
+               'in_024' => 'Borrar',
+               'in_025' => 'Directorio',
+               'in_026' => 'Click OK para crear el directorio',
+               'in_027' => 'Crear directorio',
+               'in_028' => 'Ancho',
+               'in_029' => 'Alto',
+               'in_030' => 'Tipo',
+               'in_031' => 'Tama&ntilde;o',
+               'in_032' => 'Nombre',
+               'in_033' => 'Creado',
+               'in_034' => 'Modificado',
+               'in_035' => 'Informaci&oacute;n de la imagen',
+               'in_036' => 'Click en la imagen para cerrar la ventana',
+               'in_037' => 'Rotar',
+               'in_038' => 'Auto rotar: seleccionar \'exif info\', para usar la orientaci&oacute;n EXIF almacenada por la c&aacute;mara. Tambi&eacute;n puede seleccionar +180&deg; o -180&deg; para paisaje, o +90&deg; o -90&deg; para retrato. Los valores positivos en sentido de las agujas del reloj, y los negativos en sentido contrario.',
+               'in_041' => '',
+               'in_042' => 'none',             
+               'in_043' => 'retrato',
+               'in_044' => '+ 90&deg;',        
+               'in_045' => '- 90&deg;',
+               'in_046' => 'paisaje',  
+               'in_047' => '+ 180&deg;',       
+               'in_048' => '- 180&deg;',
+               'in_049' => 'c&aacute;mara',    
+               'in_050' => 'exif info',
+               'in_051' => 'ATENCI&Oacute;N: la imagen actual es una imagen en miniatura din&aacute;mica creada con iManager - los par&aacute;metros se perder&aacute;n al cambiar de imagen.',
+               'in_052' => 'Click para cambiar la vista de selecci&oacute;n de imagen',
+               'in_053' => 'Aleatorio',
+               'in_054' => 'Si se marca, se insertar&aacute; una imagen aleatoriamente',
+               'in_055' => 'Marcar para insertar una imagen aleatoriamente',
+               'in_056' => 'Par&aacute;metros',
+               'in_057' => 'Click para inicializar los par&aacute;metros a sus valores por defecto',
+               'in_099' => 'por defecto',      
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Atributos de la imagen',
+               'at_002' => 'Fuente',
+               'at_003' => 'T&iacute;tulo',
+               'at_004' => 'TITLE - muestra la descripci&oacute;n de la imagen cuando situamos el rat&oacute;n encima de &eacute;sta',
+               'at_005' => 'Descripci&oacute;n',
+               'at_006' => 'ALT - reemplazo textual de la imagen, para ser mostrado o usado en lugar de la imagen',
+               'at_007' => 'Estilo',
+               'at_008' => 'Asegurese de que el estilo seleccionado existe en la hoja de estilos',
+               'at_009' => 'Estilo CSS',       
+               'at_010' => 'Atributos',
+               'at_011' => 'Los atributos \'align\', \'border\', \'hspace\', y \'vspace\' de un elemento imagen no son soportados en XHTML 1.0 Strict DTD. Use estilos CSS en su lugar.',
+               'at_012' => 'Alineado', 
+               'at_013' => 'por defecto',
+               'at_014' => 'izquierda',
+               'at_015' => 'derecha',
+               'at_016' => 'arriba',
+               'at_017' => 'medio',
+               'at_018' => 'abajo',
+               'at_019' => 'absmiddle',                
+               'at_020' => 'texttop',
+               'at_021' => 'baseline',         
+               'at_022' => 'Tama&ntilde;o',
+               'at_023' => 'Ancho',
+               'at_024' => 'Alto',
+               'at_025' => 'Borde',
+               'at_026' => 'Espaciado vert.',
+               'at_027' => 'Espaciado horiz.',
+               'at_028' => 'Vista previa',     
+               'at_029' => 'Click para insertar un car&aacute;cter especial en el campo de t&iacute;tulo',
+               'at_030' => 'Click para insertar un car&aacute;cter especial en el campo de descripci&oacute;n',
+               'at_031' => 'Ajusta las dimensiones de la imagen a los valores por defecto',
+               'at_032' => 'Subt&iacute;tulo',
+               'at_033' => 'Marcado: Pone subt&iacute;tulo a la imagen / Desmarcado: imagen sin subt&iacute;tulo o borra el subt&iacute;tulo de la imagen',
+               'at_034' => 'Fija el subt&iacute;tulo de la imagen',
+               'at_099' => 'por defecto',      
+               //-------------------------------------------------------------------------             
+               // error messages - er
+               'er_001' => 'Error',
+               'er_002' => 'No se ha seleccionado una imagen!',
+               'er_003' => 'El ancho no es un n&uacute;mero',
+               'er_004' => 'El alto no es un n&uacute;mero',
+               'er_005' => 'El borde no es un n&uacute;mero',
+               'er_006' => 'El espaciado horizontal no es un n&uacute;mero',
+               'er_007' => 'El espaciado vertical no es un n&uacute;mero',
+               'er_008' => 'Click OK para borrar la imagen',
+               'er_009' => 'El renombrado de las im&aacute;genes en miniatura no est&aacute; permitido! Renombre la imagen principal si quiere renombrar la imagen en miniatura.',
+               'er_010' => 'Click OK para renombrar la imagen a',
+               'er_011' => 'El nuevo nombre está vacío o no ha cambiado!',
+               'er_014' => 'Introduzca un nuevo nombre para el archivo!',
+               'er_015' => 'Introduzca un nombre v&aacute;lido!',
+               'er_016' => 'La creaci&oacute;n de im&aacute;genes en miniatura no est&aacute; habilitada! Fije el tama&ntilde;o de las miniaturas en el fichero de configuraci&oacute;n para habilitarlo.',
+               'er_021' => 'Click OK para subir la(s) imagen(es).',
+               'er_022' => 'Subiendo imagen - por favor, espere...',
+               'er_023' => 'No ha seleccionado una imagen o no ha marcado un tamaño.',
+               'er_024' => 'El archivo',
+               'er_025' => 'ya existe! Click OK para sobreescribir el archivo...',
+               'er_026' => 'Introduzca un nuevo nombre de archivo!',
+               'er_027' => 'El directorio no existe físicamente',
+               'er_028' => 'Ha ocurrido un error mientras se sub&iacute;a el archivo. Int&eacute;ntelo de nuevo.',
+               'er_029' => 'Tipo de archivo de imagen incorrecto',
+               'er_030' => 'El borrado ha fallado! Int&eacute;ntelo de nuevo.',
+               'er_031' => 'Sobreescribir',
+               'er_032' => 'La vista previa a tamaño completo sólo funciona para imágenes mayores que el tamaño de la previsualización',
+               'er_033' => 'El renombrado del archivo ha fallado! Int&eacute;ntelo de nuevo.',
+               'er_034' => 'La creaci&oacute;n del directorio ha fallado! Int&eacute;ntelo de nuevo.',
+               'er_035' => 'El agrandamiento no está  permitido!',
+               'er_036' => 'Error creando la lista de im&aacute;genes!',
+         ),      
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Símbolos',
+               'ok'                    => 'OK',
+               'cancel'                => 'Cancelar',
+         ),      
+       )
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/fr.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/fr.php
new file mode 100644 (file)
index 0000000..246b656
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser
+       // ================================================
+       // iBrowser - language file: French
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.1                   Date: 06/08/2005
+       // Contributor     Simon BILLETTE (simon@eclys.com)
+       // ================================================
+
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'iso-8859-1';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Image browser',
+               'im_002' => 'iBrowser',
+               'im_003' => 'Menu',
+               'im_004' => 'Bienvenue',
+               'im_005' => 'Insérer',
+               'im_006' => 'Annuler',
+               'im_007' => 'Insérer',
+               'im_008' => 'Insérer/Changer',
+               'im_009' => 'Propriétés',
+               'im_010' => 'Propriétés de l\\\'image',
+               'im_013' => 'Popup',
+               'im_014' => 'Image en popup',
+               'im_015' => 'A propos de iBrowser',
+               'im_016' => 'Section',
+               'im_097' => 'Please wait while loading...',
+               'im_098' =>     'Ouvrir la section',
+               'im_099' => 'Fermer la section',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in
+               'in_001' => 'Insérer/Changer une image',
+               'in_002' => 'Librairie',
+               'in_003' => 'Selectionner une image de la librairie',
+               'in_004' => 'Images',
+               'in_005' => 'Preview',
+               'in_006' => 'Supprimer cette image',
+               'in_007' => 'Cliquer pour voir cette image en taille réelle',
+               'in_008' => 'Ouvrir la section de mise en ligne, de renommage et de suppression des images',
+               'in_009' => 'Information',
+               'in_010' => 'Popup',
+               'in_013' => 'Créer une lien vers cette image pour l\'ouvrir dans une nouvelle fenêtre.',
+               'in_014' => 'supprimer le lien popup',
+               'in_015' => 'Fichier',
+               'in_016' => 'Renommer',
+               'in_017' => 'Renommer cette image',
+               'in_018' => 'Uploader',
+               'in_019' => 'Uploader une image',
+               'in_020' => 'Taille(s)',
+               'in_021' => 'Cocher la ou les taille(s) désirée(s) pendant l\'upload de l\'image.',
+               'in_022' => 'Original',
+               'in_023' => 'Cette image sera découppée',
+               'in_024' => 'Supprimer',
+               'in_025' => 'Répertoire',
+               'in_026' => 'Cliquer pour créer un répertoire',
+               'in_027' => 'Créer un répertoire',
+               'in_028' => 'Largeur',
+               'in_029' => 'Hauteur',
+               'in_030' => 'Type',
+               'in_031' => 'Taille',
+               'in_032' => 'Nom',
+               'in_033' => 'Créée',
+               'in_034' => 'Modifiée',
+               'in_035' => 'Info image',
+               'in_036' => 'Cliquer sur cette image pour fermer la fenêtre',
+               'in_037' => 'Pivoter',
+               'in_038' => 'Autorotation: en fonction des informations exif fournies par l\'appareil photo. Peut aussi être fixé à +180&deg; ou -180&deg; pour l\'afichage paysage, ou +90&deg; ou -90&deg; pour l\'affiche portrait. Les valeurs seront positives pour le sens des aiguilles d\'une montre et négatives pour le sens contraire des aiguilles d\'une montre.',
+               'in_041' => '',
+               'in_042' => 'aucun',
+               'in_043' => 'portrait',
+               'in_044' => '+ 90&deg;',
+               'in_045' => '- 90&deg;',
+               'in_046' => 'paysage',
+               'in_047' => '+ 180&deg;',
+               'in_048' => '- 180&deg;',
+               'in_049' => 'camera',
+               'in_050' => 'info exif',
+               'in_051' => 'AVERTISSEMENT: Cette image est une vignette dynamique créée par iBrowser - Les paramètres seront perdus lors de la modification de cette image.',
+               'in_052' => 'Cliquer pour basculer la vue des images',
+               'in_053' => 'Aléatoire',
+               'in_054' => 'Si coché, une image aléatoirement choisie sera insérée',
+               'in_055' => 'Cocher pour insérer une image aléatoire',
+               'in_056' => 'Paramètres',
+               'in_057' => 'cliquer pour réinitialiser les paramètres à leurs valeurs d\'origine',
+               'in_099' => 'défaut',
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Attributs de cette image',
+               'at_002' => 'Source',
+               'at_003' => 'Titre',
+               'at_004' => 'TITRE - affiche la description de cette image en onmouseover',
+               'at_005' => 'Description',
+               'at_006' => 'ALT -  texte de remplacement pour cette image, il sera affiché à la place de l\'image si celle-ci n\'apparait pas',
+               'at_007' => 'Style',
+               'at_008' => 'Veuillez vérifier que le style sélectionné existe dans votre feuille de style !',
+               'at_009' => 'Style CSS',
+               'at_010' => 'Attributs',
+               'at_011' => 'Les attributs \'align\', \'border\', \'hspace\', et \'vspace\' ne sont pas supportés pour les images en XHTML 1.0 Strict DTD. Veuillez plutôt utiliser les propriétés CSS.',
+               'at_012' => 'Alignement',
+               'at_013' => 'par défaut',
+               'at_014' => 'gauche',
+               'at_015' => 'droite',
+               'at_016' => 'haut',
+               'at_017' => 'milieu',
+               'at_018' => 'bas',
+               'at_019' => 'bas absolu',
+               'at_020' => 'texttop',
+               'at_021' => 'baseline',
+               'at_022' => 'Taille',
+               'at_023' => 'Largeur',
+               'at_024' => 'Hauteur',
+               'at_025' => 'Bordure',
+               'at_026' => 'V-space',
+               'at_027' => 'H-space',
+               'at_028' => 'Preview',
+               'at_029' => 'Cliquer pour entrer des caractères spéciaux dans le champs titre',
+               'at_030' => 'Cliquer pour entrer des caractères spéciaux dans le champs description',
+               'at_031' => 'Réinitialiser les dimensions à leures valeurs initiales',
+               'at_032' => 'Sous Titre',
+               'at_033' => 'coché: définir le sous-titre de l\'image / décoché: aucun sous-titre pour l\'image défini ou suppression du sous-titre',
+               'at_034' => 'définir le sous-titre de l\'image',
+               'at_099' => 'par défaut',
+               //-------------------------------------------------------------------------
+               // error messages - er
+               'er_001' => 'Erreur',
+               'er_002' => 'Aucune image sélectionnée!',
+               'er_003' => 'La largeur n\'est pas un nombre',
+               'er_004' => 'La hauteur n\'est pas un nombre',
+               'er_005' => 'La bordure n\'est pas un nombre',
+               'er_006' => 'L\'espace horizontal n\'est pas un nombre',
+               'er_007' => 'L\'espace vertical n\'est pas un nombre',
+               'er_008' => 'Cliquer sur OK pour supprimer l\\\'image',
+               'er_009' => 'Le renommage des vignettes n\'est pas autorisé! Veuillez renommer l\'image originale si vous souhaitez renommer la vignette.',
+               'er_010' => 'Cliquer sur OK pour renommer l\\\'image en',
+               'er_011' => 'Le nouveau nom est vide ou n\\\'a pas changé!',
+               'er_014' => 'Veuillez entrer un nouveau nom de fichier!',
+               'er_015' => 'Veuillez entre un nom de fichier valide!',
+               'er_016' => 'Vignette non disponible! Veuillez spécifier la taille des vignettes dans le fichier de configuration pour activer la fonctionnalité.',
+               'er_021' => 'Cliquer sur OK pour uploader la ou les image(s).',
+               'er_022' => 'Upload de l\'image en cours - veuillez patienter ...',
+               'er_023' => 'Aucune image n\\\'a été sélectionnée ou aucune taille de fichier n\\\'a été cochée.',
+               'er_024' => 'Fichier',
+               'er_025' => 'existe déjà! Veuiller cliquer sur OK pour remplacer le fichier ...',
+               'er_026' => 'Veuillez entrer le nouveau nom de fichier!',
+               'er_027' => 'Le répertoire n\'existe pas physiquement!',
+               'er_028' => 'Une erreur a été rencontrée lors de l\'upload du fichier. Veuillez recommencer.',
+               'er_029' => 'Mauvais type d\'image',
+               'er_030' => 'Echec de la suppression! Veuillez recommencer.',
+               'er_031' => 'Remplacer',
+               'er_032' => 'La visualisation en taille réelle ne fonctionne que pour les images dont la taille est supérieure à celle de la vignette',
+               'er_033' => 'Echec du renommage du fichier! Veuillez recommencer.',
+               'er_034' => 'Echec de la création du répertoire! Veuillez recommencer.',
+               'er_035' => 'Augmenter la taille n\\\'est pas autorisé!',
+               'er_036' => 'Erreur lors de la création de la liste d\'image(s)!',
+         ),
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbols',
+               'ok'                    => 'OK',
+               'cancel'                => 'Annuler',
+         ),
+       )
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/ja_euc.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/ja_euc.php
new file mode 100644 (file)
index 0000000..f78b16e
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - language file: English
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.1                   Date: 07/07/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'UTF-8';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+       
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (  
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Image browser',
+               'im_002' => 'iBrowser',
+               'im_003' => '¥á¥Ë¥å¡¼',
+               'im_004' => 'iBrowser ½é´ü²èÌÌ',
+               'im_005' => 'ÁÞÆþ',
+               'im_006' => '¥­¥ã¥ó¥»¥ë',
+               'im_007' => 'ÁÞÆþ',             
+               'im_008' => '²èÁü¤Î¥¤¥ó¥é¥¤¥óÁÞÆþ/Êѹ¹',
+               'im_009' => '¥×¥í¥Ñ¥Æ¥£',
+               'im_010' => '²èÁü¤Î¥×¥í¥Ñ¥Æ¥£',
+               'im_013' => '¥Ý¥Ã¥×¥¢¥Ã¥×',
+               'im_014' => '²èÁü¤Î¥Ý¥Ã¥×¥¢¥Ã¥×',
+               'im_015' => 'About iBrowser',
+               'im_016' => 'Section',
+               'im_097' => 'Æɹþ¤ßÃæ...',
+               'im_098' =>     'Open section',
+               'im_099' => 'Close section',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in    
+               'in_001' => '²èÁü¤ÎÁÞÆþ/Êѹ¹',
+               'in_002' => '¥é¥¤¥Ö¥é¥ê',
+               'in_003' => '¥é¥¤¥Ö¥é¥ê¤ÎÁªÂò',
+               'in_004' => '²èÁü',
+               'in_005' => '¥×¥ì¥Ó¥å¡¼',
+               'in_006' => '²èÁü¤Îºï½ü',
+               'in_007' => '¥¯¥ê¥Ã¥¯¤Ç³ÈÂçɽ¼¨¤·¤Þ¤¹',
+               'in_008' => '¥¢¥Ã¥×¥í¡¼¥É/¥Õ¥¡¥¤¥ë̾Êѹ¹/¥Õ¥¡¥¤¥ëºï½ü¤ÎÁàºî¥¨¥ê¥¢¤òɽ¼¨¤·¤Þ¤¹', 
+               'in_009' => 'Information',
+               'in_010' => '¥Ý¥Ã¥×¥¢¥Ã¥×',             
+               'in_013' => 'Create a link to an image to be opened in a new window.',
+               'in_014' => '¥Ý¥Ã¥×¥¢¥Ã¥×¥ê¥ó¥¯¤Îºï½ü', 
+               'in_015' => '¥Õ¥¡¥¤¥ëÁàºî',     
+               'in_016' => '̾Á°¤ÎÊѹ¹',
+               'in_017' => '²èÁü¥Õ¥¡¥¤¥ë̾¤ÎÊѹ¹',
+               'in_018' => '¥¢¥Ã¥×¥í¡¼¥É',
+               'in_019' => '²èÁü¤Î¥¢¥Ã¥×¥í¡¼¥É',       
+               'in_020' => '¥µ¥¤¥º',
+               'in_021' => 'Check the desired size(s) to be created while uploading image(s)',
+               'in_022' => '¥ª¥ê¥¸¥Ê¥ë',
+               'in_023' => 'Image will be cropped',
+               'in_024' => 'ºï½ü',
+               'in_025' => '¥Ç¥£¥ì¥¯¥È¥ê',
+               'in_026' => '¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®',
+               'in_027' => '¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®',
+               'in_028' => 'Éý',
+               'in_029' => '¹â¤µ',
+               'in_030' => 'Type',
+               'in_031' => '¥µ¥¤¥º',
+               'in_032' => '̾Á°',
+               'in_033' => 'ºîÀ®Æü»þ',
+               'in_034' => '¹¹¿·Æü»þ',
+               'in_035' => 'Image info',
+               'in_036' => 'Click on image to close window',
+               'in_037' => '²óž',
+               'in_038' => 'Auto rotate: set to exif info, to use EXIF orientation stored by camera. Can also be set to +180&deg; or -180&deg; for landscape, or +90&deg; or -90&deg; for portrait. Positive values for clockwise and negative values for counterclockwise.',
+               'in_041' => '',
+               'in_042' => 'none',             
+               'in_043' => 'portrait',
+               'in_044' => '+ 90&deg;',        
+               'in_045' => '- 90&deg;',
+               'in_046' => 'landscape',        
+               'in_047' => '+ 180&deg;',       
+               'in_048' => '- 180&deg;',
+               'in_049' => '¥«¥á¥é',   
+               'in_050' => 'exif¾ðÊó',
+               'in_051' => 'WARNING: Current image is a dynamic thumbnail created by iManager - parameters will be lost on image change.',
+               'in_052' => '¥Õ¥¡¥¤¥ë̾°ìÍ÷/¥µ¥à¥Í¥¤¥ë°ìÍ÷¤ÎÀÚÂØ',
+               'in_053' => '¥é¥ó¥À¥à',
+               'in_054' => '¥é¥ó¥À¥àɽ¼¨¤¹¤ë¾ì¹ç¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Þ¤¹',
+               'in_055' => '¥é¥ó¥À¥à¤Ç²èÁü¤òÁÞÆþ¤¹¤ë',
+               'in_056' => '¥Ñ¥é¥á¡¼¥¿',
+               'in_057' => '¥Ñ¥é¥á¡¼¥¿¤ò¥Ç¥Õ¥©¥ë¥È¤Ë¥ê¥»¥Ã¥È¤¹¤ë',
+               'in_099' => '¥Ç¥Õ¥©¥ë¥È',       
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Image attributes',
+               'at_002' => 'Source',
+               'at_003' => 'Title',
+               'at_004' => 'TITLEÃÍ - ²èÁü¤Ë¥Þ¥¦¥¹¤ò¤¢¤ï¤»¤¿¤È¤­¤Ë¥Õ¥í¡¼¥È¤¹¤ë¥Æ¥­¥¹¥È',
+               'at_005' => 'Description',
+               'at_006' => 'ALTÃÍ - ²èÁü¤ÎÂåÂØɽ¼¨¤Ë»ÈÍѤ¹¤ë¥Æ¥­¥¹¥È',
+               'at_007' => 'Style',
+               'at_008' => 'ÁªÂò¤·¤¿¥¹¥¿¥¤¥ë¤¬cssÄêµÁºÑ¤ß¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤',
+               'at_009' => 'CSS¥¹¥¿¥¤¥ë',      
+               'at_010' => 'Attributes(°À­)',
+               'at_011' => '\'align\', \'border\', \'hspace\', \'vspace\' Â°À­¤Ï¡¢XHTML 1.0 Strict DTD¤Î¥µ¥Ý¡¼¥È³°¤Ç¤¹¡£Âå¤ï¤ê¤ËcssÄêµÁ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£',
+               'at_012' => 'Align',    
+               'at_013' => '¥Ç¥Õ¥©¥ë¥È',
+               'at_014' => 'left',
+               'at_015' => 'right',
+               'at_016' => 'top',
+               'at_017' => 'middle',
+               'at_018' => 'bottom',
+               'at_019' => 'absmiddle',
+               'at_020' => 'texttop',
+               'at_021' => 'baseline',         
+               'at_022' => 'Size',
+               'at_023' => 'Width',
+               'at_024' => 'Height',
+               'at_025' => 'Border',
+               'at_026' => 'V-space',
+               'at_027' => 'H-space',
+               'at_028' => 'Preview',  
+               'at_029' => 'Æüìʸ»ú¤ÎÁÞÆþ',
+               'at_030' => 'Æüìʸ»ú¤ÎÁÞÆþ',
+               'at_031' => 'Reset image dimensions to default values',
+               'at_032' => 'Caption',
+               'at_033' => 'checked: set image caption / unchecked: no image caption set or remove image caption',
+               'at_034' => 'set image caption',
+               'at_099' => '¥Ç¥Õ¥©¥ë¥È',       
+               //-------------------------------------------------------------------------             
+               // error messages - er
+               'er_001' => '¥¨¥é¡¼',
+               'er_002' => '²èÁü¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Þ¤»¤ó!',
+               'er_003' => 'Éý¤Î»ØÄ꤬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó',
+               'er_004' => '¹â¤µ¤Î»ØÄ꤬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó',
+               'er_005' => '°Ï¤ßÀþ¤Î»ØÄ꤬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó',
+               'er_006' => 'º¸±¦Í¾Çò¤Î»ØÄ꤬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó',
+               'er_007' => '¾å²¼Í¾Çò¤Î»ØÄ꤬¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó',
+               'er_008' => '²èÁü¤òºï½ü¤·¤Þ¤¹ ¥Õ¥¡¥¤¥ë̾:',
+               'er_009' => 'Renaming of thumbnails is not allowed! Please rename the main image if you like to rename the thumbnail image.',
+               'er_010' => '²èÁü̾¤òÊѹ¹¤·¤Þ¤¹',
+               'er_011' => '¿·¤·¤¤Ì¾Á°¤¬¶õ¤Ç¤¢¤ë¤«Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤»¤ó!',
+               'er_014' => '¿·µ¬¥Õ¥¡¥¤¥ë̾¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤!',
+               'er_015' => 'Í­¸ú¤Ê¥Õ¥¡¥¤¥ë̾¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤!',
+               'er_016' => 'Thumbnailing not available! Please set thumbnail size in config file in order to enable thumbnailing.',
+               'er_021' => '²èÁü¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤Þ¤¹',
+               'er_022' => '¥¢¥Ã¥×¥í¡¼¥ÉÃæ - ¾¯¡¹¤ªÂÔ¤Á²¼¤µ¤¤...',
+               'er_023' => '²èÁü¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¡¢²èÁü¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤»¤ó',
+               'er_024' => 'File',
+               'er_025' => '´û¤Ë¸ºß¤·¤Þ¤¹! ¾å½ñ¤­¤Î¾ì¹ç¤ÏOK¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤...',
+               'er_026' => '¿·¤·¤¤¥Õ¥¡¥¤¥ë̾¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤!',
+               'er_027' => 'Directory doesn\'t physically exist',
+               'er_028' => '¥¢¥Ã¥×¥í¡¼¥ÉÃæ¤Ë¥¨¥é¡¼¤¬µ¯¤³¤ê¤Þ¤·¤¿¡£ ºÆ»î¹Ô¤·¤Æ¤¯¤À¤µ¤¤',
+               'er_029' => '²èÁü¤Î¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤¬ÉÔŬÀڤǤ¹',
+               'er_030' => 'ºï½ü¤Ï¼ºÇÔ¤·¤Þ¤·¤¿! ºÆ»î¹Ô¤·¤Æ¤¯¤À¤µ¤¤',
+               'er_031' => '¾å½ñ¤­',
+               'er_032' => '¥×¥ì¥Ó¥å¡¼¥¨¥ê¥¢¤«¤é¤Ï¤ß½Ð¤µ¤Ê¤¤²èÁü¤Ï¥º¡¼¥à¤·¤Þ¤»¤ó',
+               'er_033' => '¥Õ¥¡¥¤¥ë̾Êѹ¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£ºÆ»î¹Ô¤·¤Æ¤¯¤À¤µ¤¤',
+               'er_034' => '¥Ç¥£¥ì¥¯¥È¥êºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿! ºÆ»î¹Ô¤·¤Æ¤¯¤À¤µ¤¤',
+               'er_035' => 'Enlarging is not allowed!',
+               'er_036' => '²èÁü°ìÍ÷¤¬ºîÀ®¤Ç¤­¤Þ¤»¤ó',
+         ),      
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbols',
+               'ok'                    => 'OK',
+               'cancel'                => '¥­¥ã¥ó¥»¥ë',
+         ),      
+       )
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/ja_utf8.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/ja_utf8.php
new file mode 100644 (file)
index 0000000..0614d28
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - language file: English
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.1                   Date: 07/07/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'UTF-8';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+       
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (  
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Image browser',
+               'im_002' => 'iBrowser',
+               'im_003' => 'メニュー',
+               'im_004' => 'iBrowser 初期画面',
+               'im_005' => '挿入',
+               'im_006' => 'キャンセル',
+               'im_007' => '挿入',           
+               'im_008' => '画像のインライン挿入/変更',
+               'im_009' => 'プロパティ',
+               'im_010' => '画像のプロパティ',
+               'im_013' => 'ポップアップ',
+               'im_014' => '画像のポップアップ',
+               'im_015' => 'About iBrowser',
+               'im_016' => 'Section',
+               'im_097' => '読込み中...',
+               'im_098' =>     'Open section',
+               'im_099' => 'Close section',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in    
+               'in_001' => '画像の挿入/変更',
+               'in_002' => 'ライブラリ',
+               'in_003' => 'ライブラリの選択',
+               'in_004' => '画像',
+               'in_005' => 'プレビュー',
+               'in_006' => '画像の削除',
+               'in_007' => 'クリックで拡大表示します',
+               'in_008' => 'アップロード/ファイル名変更/ファイル削除の操作エリアを表示します',  
+               'in_009' => 'Information',
+               'in_010' => 'ポップアップ',               
+               'in_013' => 'Create a link to an image to be opened in a new window.',
+               'in_014' => 'ポップアップリンクの削除',     
+               'in_015' => 'ファイル操作',       
+               'in_016' => '名前の変更',
+               'in_017' => '画像ファイル名の変更',
+               'in_018' => 'アップロード',
+               'in_019' => '画像のアップロード',      
+               'in_020' => 'サイズ',
+               'in_021' => 'Check the desired size(s) to be created while uploading image(s)',
+               'in_022' => 'オリジナル',
+               'in_023' => 'Image will be cropped',
+               'in_024' => '削除',
+               'in_025' => 'ディレクトリ',
+               'in_026' => 'ディレクトリの作成',
+               'in_027' => 'ディレクトリを作成',
+               'in_028' => '幅',
+               'in_029' => '高さ',
+               'in_030' => 'Type',
+               'in_031' => 'サイズ',
+               'in_032' => '名前',
+               'in_033' => '作成日時',
+               'in_034' => '更新日時',
+               'in_035' => 'Image info',
+               'in_036' => 'Click on image to close window',
+               'in_037' => '回転',
+               'in_038' => 'Auto rotate: set to exif info, to use EXIF orientation stored by camera. Can also be set to +180&deg; or -180&deg; for landscape, or +90&deg; or -90&deg; for portrait. Positive values for clockwise and negative values for counterclockwise.',
+               'in_041' => '',
+               'in_042' => 'none',             
+               'in_043' => 'portrait',
+               'in_044' => '+ 90&deg;',        
+               'in_045' => '- 90&deg;',
+               'in_046' => 'landscape',        
+               'in_047' => '+ 180&deg;',       
+               'in_048' => '- 180&deg;',
+               'in_049' => 'カメラ',        
+               'in_050' => 'exif情報',
+               'in_051' => 'WARNING: Current image is a dynamic thumbnail created by iManager - parameters will be lost on image change.',
+               'in_052' => 'ファイル名一覧/サムネイル一覧の切替',
+               'in_053' => 'ランダム',
+               'in_054' => 'ランダム表示する場合にチェックを入れます',
+               'in_055' => 'ランダムで画像を挿入する',
+               'in_056' => 'パラメータ',
+               'in_057' => 'パラメータをデフォルトにリセットする',
+               'in_099' => 'デフォルト',  
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Image attributes',
+               'at_002' => 'Source',
+               'at_003' => 'Title',
+               'at_004' => 'TITLE値 - 画像にマウスをあわせたときにフロートするテキスト',
+               'at_005' => 'Description',
+               'at_006' => 'ALT値 - 画像の代替表示に使用するテキスト',
+               'at_007' => 'Style',
+               'at_008' => '選択したスタイルがcss定義済みであることを確認してください',
+               'at_009' => 'CSSスタイル',  
+               'at_010' => 'Attributes(属性)',
+               'at_011' => '\'align\', \'border\', \'hspace\', \'vspace\' 属性は、XHTML 1.0 Strict DTDのサポート外です。代わりにcss定義を使用してください。',
+               'at_012' => 'Align',    
+               'at_013' => 'デフォルト',
+               'at_014' => 'left',
+               'at_015' => 'right',
+               'at_016' => 'top',
+               'at_017' => 'middle',
+               'at_018' => 'bottom',
+               'at_019' => 'absmiddle',
+               'at_020' => 'texttop',
+               'at_021' => 'baseline',         
+               'at_022' => 'Size',
+               'at_023' => 'Width',
+               'at_024' => 'Height',
+               'at_025' => 'Border',
+               'at_026' => 'V-space',
+               'at_027' => 'H-space',
+               'at_028' => 'Preview',  
+               'at_029' => '特殊文字の挿入',
+               'at_030' => '特殊文字の挿入',
+               'at_031' => 'Reset image dimensions to default values',
+               'at_032' => 'Caption',
+               'at_033' => 'checked: set image caption / unchecked: no image caption set or remove image caption',
+               'at_034' => 'set image caption',
+               'at_099' => 'デフォルト',  
+               //-------------------------------------------------------------------------             
+               // error messages - er
+               'er_001' => 'エラー',
+               'er_002' => '画像が選択されていません!',
+               'er_003' => '幅の指定が数値ではありません',
+               'er_004' => '高さの指定が数値ではありません',
+               'er_005' => '囲み線の指定が数値ではありません',
+               'er_006' => '左右余白の指定が数値ではありません',
+               'er_007' => '上下余白の指定が数値ではありません',
+               'er_008' => '画像を削除します ファイル名:',
+               'er_009' => 'Renaming of thumbnails is not allowed! Please rename the main image if you like to rename the thumbnail image.',
+               'er_010' => '画像名を変更します',
+               'er_011' => '新しい名前が空であるか変更されていません!',
+               'er_014' => '新規ファイル名を入力してください!',
+               'er_015' => '有効なファイル名を入力してください!',
+               'er_016' => 'Thumbnailing not available! Please set thumbnail size in config file in order to enable thumbnailing.',
+               'er_021' => '画像をアップロードします',
+               'er_022' => 'アップロード中 - 少々お待ち下さい...',
+               'er_023' => '画像が選択されていないか、画像ファイルが存在しません',
+               'er_024' => 'File',
+               'er_025' => '既に存在します! 上書きの場合はOKを押してください...',
+               'er_026' => '新しいファイル名を入力してください!',
+               'er_027' => 'Directory doesn\'t physically exist',
+               'er_028' => 'アップロード中にエラーが起こりました。 再試行してください',
+               'er_029' => '画像のファイルタイプが不適切です',
+               'er_030' => '削除は失敗しました! 再試行してください',
+               'er_031' => '上書き',
+               'er_032' => 'プレビューエリアからはみ出さない画像はズームしません',
+               'er_033' => 'ファイル名変更に失敗しました。再試行してください',
+               'er_034' => 'ディレクトリ作成に失敗しました! 再試行してください',
+               'er_035' => 'Enlarging is not allowed!',
+               'er_036' => '画像一覧が作成できません',
+         ),      
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbols',
+               'ok'                    => 'OK',
+               'cancel'                => 'キャンセル',
+         ),      
+       )
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/lang.class.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/lang.class.php
new file mode 100644 (file)
index 0000000..5931082
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+// ================================================
+// PHP image browser - iBrowser
+// ================================================
+// iBrowser - language class
+// ================================================
+// Developed: net4visions.com
+// Copyright: net4visions.com
+// License: GPL - see readme.txt
+// (c)2005 All rights reserved.
+// ================================================
+// Revision: 1.0                   Date: 2005/04/27
+// ================================================
+
+class PLUG_Lang {
+       // current language
+       var $lang;
+       // accessors
+       function setLang( $value ) {
+               $this -> lang = $value;
+       }
+       function getLang() {
+               $this -> lang = $value;
+       }
+
+       // variable to hold current language block
+       var $block;
+       // accessors
+       function setBlock( $value ) {
+               $this -> block = $value;
+       }
+       function getBlock() {
+               return $this -> block;
+       }
+
+       // charset for the current language
+       var $charset;
+       // accessors
+       function getCharset() {
+               return $this -> charset;
+       }
+
+       // text direction for the current language
+       var $dir;
+       // accessors
+       function getDir() {
+               return $this -> dir;
+       }
+
+       // language data
+       var $lang_data;
+       // default language data
+       var $default_lang_data;
+
+       // constructor
+       function PLUG_Lang( $lang = '' ) {
+               global $cfg;
+               if ( $lang == '' ) {
+                       $this -> lang = $cfg['lang'];
+               } else {
+                       $this -> lang = $lang;
+               }
+               $this -> loadData();
+       }
+
+       // load language data
+       function loadData() {
+               global $cfg;
+               include( dirname(__FILE__) . '/' . $this -> lang.'.php' );
+               $this -> charset = $lang_charset;
+               $this -> dir = $lang_direction;
+               $this -> lang_data = $lang_data;
+               unset( $lang_data );
+               include( dirname(__FILE__) . '/' . $cfg['lang'].'.php' );
+               $this -> default_lang_data = $lang_data;
+       }
+
+       // return message
+       function showMessage( $message, $block = '' ) {
+               $_block = ( $block == '' ) ? $this -> block: $block;
+               if ( !empty( $this -> lang_data[ $_block][ $message ] ) ) {
+                       // return message
+                       return $this -> lang_data[ $_block][ $message ];
+               } else {
+                       // if message is not present in current language data
+                       // return message from default language
+                       return ( isset( $this -> default_lang_data[ $_block][ $message ] ) ? $this -> default_lang_data[ $_block][ $message ] : '' );
+               }
+       }
+
+       // shortcut for showMessage
+       function m( $message, $block = '' ) {
+               return $this -> showMessage( $message, $block );
+       }
+
+       // sets the root point for the data
+       function setRoot( $block = '' ) {
+               // if no block passed -> reload data
+               if ( $block == '' ) {
+                       $this -> loadData();
+               } else {
+                       // "move pointer"
+                       $this -> lang_data = $this -> lang_data[ $block ];
+                       $this -> default_lang_data = $this -> default_lang_data[ $block ];
+               }
+       }
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/nl.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/langs/nl.php
new file mode 100644 (file)
index 0000000..a5586b4
--- /dev/null
@@ -0,0 +1,173 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - language file: Dutch
+       // ================================================
+       // Developed: Ematic Interactive
+       // Copyright: Ematic Interactive
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.0                   Date: 06/01/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // charset to be used in dialogs
+       $lang_charset = 'iso-8859-1';
+       // text direction for the current language to be used in dialogs
+       $lang_direction = 'ltr';
+       //-------------------------------------------------------------------------
+       
+       // language text data array
+       // first dimension - block, second - exact phrase
+       //-------------------------------------------------------------------------
+       // iBrowser
+       $lang_data = array (  
+               'ibrowser' => array (
+               //-------------------------------------------------------------------------
+               // common - im
+               'im_001' => 'Afbeeldingen verkenner',
+               'im_002' => 'iBrowser',
+               'im_003' => 'Menu',
+               'im_004' => 'Welkom',
+               'im_005' => 'Invoegen',
+               'im_006' => 'Annuleren',
+               'im_007' => 'Invoegen',         
+               'im_008' => 'Invoegen/ wijzigen',
+               'im_009' => 'Eigenschappen',
+               'im_010' => 'Afbeelding eigenschappen',
+               'im_013' => 'Popup',
+               'im_014' => 'Afbeelding popup',
+               'im_015' => 'Over iBrowser',
+               'im_016' => 'Sectie',
+               'im_097' => 'Please wait while loading...',
+               'im_098' =>     'Open sectie',
+               'im_099' => 'Sluit sectie',
+               //-------------------------------------------------------------------------
+               // insert/change screen - in    
+               'in_001' => 'Invoegen/Wijzigen afbeelding',
+               'in_002' => 'Bibliotheek',
+               'in_003' => 'Selecteer een afbeeldingen bibliotheek',
+               'in_004' => 'Afbeeldingen',
+               'in_005' => 'Voorbeeld',
+               'in_006' => 'Verwijder afbeelding',
+               'in_007' => 'Klik voor een grotere weergave van de afbeelding',
+               'in_008' => 'Open de afbeelding uploaden, hernoemen of verwijder sectie',       
+               'in_009' => 'Informatie',
+               'in_010' => 'Popup',            
+               'in_013' => 'Creeer een link naar een afbeelding die geopend moet worden in een nieuw venster.',
+               'in_014' => 'Verwijder popup link',     
+               'in_015' => 'Bestand',  
+               'in_016' => 'Hernoemen',
+               'in_017' => 'Hernoem afbeelding',
+               'in_018' => 'Upload',
+               'in_019' => 'Upload afbeelding',        
+               'in_020' => 'Grootte(n)',
+               'in_021' => 'Controleer de gewenste afmetingen die aangemaakt moeten worden tijdens het uploaden van de afbeelding(en)',
+               'in_022' => 'Origineel',
+               'in_023' => 'Afbeelding wordt gecropped',
+               'in_024' => 'Verwijder',
+               'in_025' => 'Map',
+               'in_026' => 'Klik om een map aan te maken',
+               'in_027' => 'Maak een map',
+               'in_028' => 'Breedte',
+               'in_029' => 'Hoogte',
+               'in_030' => 'Type',
+               'in_031' => 'Grootte',
+               'in_032' => 'Naam',
+               'in_033' => 'Aangemaakt',
+               'in_034' => 'Gewijzigd',
+               'in_035' => 'Afbeelding info',
+               'in_036' => 'Klik op de afbeelding om het venster te sluiten',
+               'in_037' => 'Roteren',
+               'in_038' => 'Auto roteren: zet op exif info, om EXIF orientatie van de camera te gebruiken. Kan ook op +180&deg; of -180&deg; worden gezet voor landschap, of op +90&deg; of -90&deg; voor portret. Positieve waarden voor met de klok mee en negatieve waarden voor tegen de klok in roteren.',
+               'in_041' => '',
+               'in_042' => 'geen',
+               'in_043' => 'portret',
+               'in_044' => '+ 90&deg;',
+               'in_045' => '- 90&deg;',
+               'in_046' => 'landschap',
+               'in_047' => '+ 180&deg;',
+               'in_048' => '- 180&deg;',
+               'in_049' => 'camera',
+               'in_050' => 'exif info',                
+               'in_051' => 'WAARSCHUWING: Huidige afbeelding is een dynamische thumbnail gecreëerd door iManager - parameters zullen verloren gaan bij het wijzigen van de afbeelding.',
+               'in_052' => 'Switch image selection view',
+               'in_099' => 'standaard',        
+               //-------------------------------------------------------------------------
+               // properties, attributes - at
+               'at_001' => 'Afbeelding attributen',
+               'at_002' => 'Bron',
+               'at_003' => 'Titel',
+               'at_004' => 'TITEL - geeft de afbeelding mouseover weer',
+               'at_005' => 'Omschrijving',
+               'at_006' => 'ALT -  textuele vervanging voor de afbeelding, welke wordt getoond ipv de afbeelding',
+               'at_007' => 'Stijl',
+               'at_008' => 'Let op dat de geselecteerde stijl voorkomt in uw stylesheet!',
+               'at_009' => 'CSS-stijl',        
+               'at_010' => 'Attributen',
+               'at_011' => 'De \'align\', \'border\', \'hspace\', and \'vspace\' attributen van het afbeeldings element worden niet ondersteund in XHTML 1.0 Strict DTD. Gebruik hiervoor in de plaats CSS-stijl.',
+               'at_012' => 'Uitlijnen',        
+               'at_013' => 'standaard',
+               'at_014' => 'links',
+               'at_015' => 'rechts',
+               'at_016' => 'boven',
+               'at_017' => 'midden',
+               'at_018' => 'onder',
+               'at_019' => 'abs midden',
+               'at_020' => 'Tekst bovenkant',
+               'at_021' => 'basis',            
+               'at_022' => 'Afmetingen',
+               'at_023' => 'Breedte',
+               'at_024' => 'Hoogte',
+               'at_025' => 'Rand',
+               'at_026' => 'V-space',
+               'at_027' => 'H-space',
+               'at_028' => 'Voorbeeld',        
+               'at_029' => 'Klik om een speciaal karakter in het titel veld in te voegen',
+               'at_030' => 'Klik om een speciaal karakter in het omschrijving veld in te voegen',
+               'at_031' => 'Herstel naar de originele afbeeldings dimensies',
+               'at_099' => 'standaard',        
+               //-------------------------------------------------------------------------             
+               // error messages - er
+               'er_001' => 'Fout',
+               'er_002' => 'Geen afbeelding geselecteerd!',
+               'er_003' => 'Breedte is geen getal',
+               'er_004' => 'Hoogte is geen getal',
+               'er_005' => 'Rand is geen getal',
+               'er_006' => 'Horizontale spatiering is geen getal',
+               'er_007' => 'Vertikale spatiering is geen getal',
+               'er_008' => 'Klik op OK om de afbeelding te verwijderen',
+               'er_009' => 'Hernoemen van thumbnails is niet toegestaan! Hernoem de originele afbeelding om de thumbnail te hernoemen.',
+               'er_010' => 'Klik op OK om de afbeelding te hernoemen naar',
+               'er_011' => 'De nieuwe naam is of leeg of is niet gewijzigd!',
+               'er_014' => 'Geef een nieuwe bestandsnaam op!',
+               'er_015' => 'Geef een geldige bestandsnaam op!',
+               'er_016' => 'Creeren van thumbnails is niet aanwezig! Zet de thumbnail afmetingen in het configuratie bestand file om het aanmaken van thumbnails te activeren.',
+               'er_021' => 'Klik op OK om de afbeelding(en) te uploaden.',
+               'er_022' => 'Afbeelding uploaden - even geduld...',
+               'er_023' => 'Er is geen afbeelding geselecteerd of er is geen afmetingen aangevinkt.',
+               'er_024' => 'Bestand',
+               'er_025' => 'bestaat reeds! Klik op OK om het bestand te overschrijven...',
+               'er_026' => 'Geef een nieuwe bestandsnaam!',
+               'er_027' => 'Folder bestaat niet fysiek',
+               'er_028' => 'Er is een fout opgetreden tijdens het uploaden. Probeer het opnieuw.',
+               'er_029' => 'Verkeerde afbeeldings bestandstype',
+               'er_030' => 'Verwijderen is niet gelukt! Probeer het opnieuw.',
+               'er_031' => 'Overschrijven',
+               'er_032' => 'Volledige afmetingen voorbeeldweergave werkt alleen met afbeeldingen die groter zijn dan de preview afmetingen',
+               'er_033' => 'Hernoemen van bestand is niet gelukt! Probeer het opnieuw.',
+               'er_034' => 'Folder aanmaken is niet gelukt! Probeer het opnieuw.',
+               'er_035' => 'Vergroten is niet toegestaan!',
+               'er_036' => 'Fout tijdens het bouwen van de afbeeldingenlijst!',
+         ),      
+         //-------------------------------------------------------------------------
+         // symbols
+               'symbols'               => array (
+               'title'                 => 'Symbolen',
+               'ok'                    => 'OK',
+               'cancel'                => 'Annuleren',
+         ),      
+       )
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/index.html b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/index.html
new file mode 100644 (file)
index 0000000..274a683
--- /dev/null
@@ -0,0 +1 @@
+Nothing to see here people, move along!
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/loadmsg.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/loadmsg.php
new file mode 100644 (file)
index 0000000..0fb193c
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser dialog - load message
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see readme.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.0                   Date: 09/12/2005
+       // ================================================     
+?>
+<div align="center" id="dialogLoadMessage" style="display:block;">
+  <table width="100%" height="90%">
+    <tr>
+      <td align="center" valign="middle"><div id="loadMessage">Please wait while loading...</div></td>   
+    </tr>
+  </table>
+</div>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/cache/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/cache/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/cache/source/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/cache/source/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/index.php
new file mode 100644 (file)
index 0000000..266a496
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: phpThumb.demo.demo.php');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.cacheconvert2.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.cacheconvert2.php
new file mode 100644 (file)
index 0000000..3acbd83
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpThumb.demo.cacheconvert2.php                          //
+// James Heinrich <info@silisoftware.com>                   //
+//                                                          //
+// phpThumb() cache filename converter v2                   //
+// For converting cached filenames from v1.4.6-1.5.3 to     //
+// v1.5.4+                                                  //
+//                                                          //
+//////////////////////////////////////////////////////////////
+
+function RenameFileIfNeccesary($oldfilename) {
+       $output  = 'Found: <font color="blue">'.htmlentities($oldfilename, ENT_QUOTES).'</font><br>';
+       $oldbasefilename = basename($oldfilename);
+       if (eregi('^phpThumb_cache_(.*)_q([0-9]+)_(jpeg|png|gif)$', $oldbasefilename, $matches)) {
+
+               $output .= '<font color="darkgreen">matched filename structure for v1.4.6 - 1.5.3</font><br>';
+               list($fullmatch, $baseparameters, $qval, $tformat) = $matches;
+               $tformat = strtolower($tformat);
+               $cache_filename = 'phpThumb_cache_'.$baseparameters.(($tformat == 'jpeg') ? '_q'.$qval : '').'.'.$tformat;
+               $cache_filename = str_replace('%A6', '%7C', $cache_filename);
+               $output .= 'attempting to rename to "'.htmlentities($cache_filename, ENT_QUOTES).'"<br>';
+               if (file_exists(dirname($oldfilename).'/'.$cache_filename)) {
+
+                       $output .= '<font color="red">destination file already exists! cannot rename</font><br><br>';
+                       echo $output;
+                       return false;
+
+               } elseif (rename($oldfilename, dirname($oldfilename).'/'.$cache_filename)) {
+
+                       $output .= '<font color="green">success!</font><br><br>';
+                       echo $output;
+                       return true;
+
+               }
+               $output .= '<font color="red">failed to rename! (check permissions?)</font><br><br>';
+               echo $output;
+               return false;
+
+       } elseif (eregi('^phpThumb_cache_(.*)_([0-9]+)(_q[0-9]+)?\.(jpeg|png|gif)$', $oldbasefilename, $matches)) {
+
+               $output .= '<font color="green">matched filename structure for v1.5.4+ (no need to rename)</font><br>';
+
+       } else {
+
+               $output .= '<font color="orange">did not match any known filename structure (could be from before v1.4.6) - cannot use this file</font><br>';
+
+       }
+       $output .= '<font color="orange">not renaming this file</font><br><br>';
+       echo $output;
+       return true;
+}
+
+
+echo '<html><head><title>phpThumb() cache converter</title></head><body style="font-family: sans-serif; font-size: 9pt;">';
+echo '<a href="'.$_SERVER['PHP_SELF'].'">Process another directory</a><hr noshade>';
+
+if (!empty($_POST['cachedir'])) {
+       $cachedir = realpath($_POST['cachedir']);
+       $skipped = 0;
+       if (is_dir($cachedir)) {
+               if ($dir = opendir($cachedir)) {
+                       echo 'Processing directory <b>'.htmlentities($cachedir).'</b><br><br>';
+                       while ($fileName = readdir($dir)) {
+                               if (ereg('^phpThumb_cache', $fileName)) {
+                                       RenameFileIfNeccesary($cachedir.'/'.$fileName);
+                               } elseif (!is_dir($cachedir.'/'.$fileName)) {
+                                       $skipped++;
+                               }
+                       }
+               } else {
+                       echo 'Cannot open directory "<b>'.htmlentities($cachedir).'</b>"<br>';
+               }
+       } else {
+               echo '"<b>'.htmlentities($cachedir).'</b>" is not a directory!<br>';
+       }
+       if ($skipped > 0) {
+               echo '<i>skipped '.$skipped.' files</i><br>';
+       }
+       echo '<hr>';
+}
+
+if (!@$_POST['cachedir'] && @include_once('../phpThumb.config.php')) {
+       $_POST['cachedir'] = str_replace('\\', '/', $PHPTHUMB_CONFIG['cache_directory']);
+}
+
+echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
+echo 'Enter the directory you wish to convert from old-style phpThumb() cache filenames to the current naming standard:<br>';
+echo '<input type="text" name="cachedir" value="'.@$_POST['cachedir'].'" size="60"><br>';
+echo '<input type="submit" value="Convert">';
+echo '</form></body></html>';
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo.php
new file mode 100644 (file)
index 0000000..a755339
--- /dev/null
@@ -0,0 +1,231 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpThumb.demo.demo1.php                                  //
+// James Heinrich <info@silisoftware.com>                   //
+//                                                          //
+// Demo showing a wide variety of parameters that can be    //
+// passed to phpThumb.php                                   //
+// Live demo is at http://phpthumb.sourceforge.net/demo/    //
+//                                                          //
+//////////////////////////////////////////////////////////////
+
+$GDversion['string']  = 'unknown';
+$GDversion['numeric'] = 0;
+ob_start();
+if (!@include_once('../phpthumb.functions.php')) {
+       ob_end_flush();
+       die('failed to include_once("../phpthumb.functions.php")');
+}
+if (!@include_once('../phpthumb.class.php')) {
+       die('failed to include_once("../phpthumb.class.php")');
+       ob_end_flush();
+}
+ob_end_clean();
+$phpThumb = new phpThumb();
+$phpthumb_version = $phpThumb->phpthumb_version;
+unset($phpThumb);
+$GDversion['string']  = phpthumb_functions::gd_version(true);
+$GDversion['numeric'] = phpthumb_functions::gd_version(false);
+?>
+
+<html>
+<head>
+       <title>Demo of phpThumb() - thumbnails created by PHP</title>
+       <link rel="stylesheet" type="text/css" href="/style.css" title="style sheet">
+</head>
+<body bgcolor="#C5C5C5">
+
+This is a demo of <a href="http://phpthumb.sourceforge.net"><b>phpThumb()</b></a> (current version: v<?php echo @$phpthumb_version; ?>)<br>
+<br>
+<b>Note:</b> this server is working on GD "<?php
+echo $GDversion['string'].'"';
+if ($GDversion['numeric'] >= 2) {
+       echo ', so images should be of optimal quality.';
+} else {
+       echo ', so images (especially watermarks) do not look as good as they would on GD v2.';
+}
+?><br>
+
+<hr size="1">
+<a href="#showpic">phpThumb.demo.showpic.php demo here</a><br>
+<a href="#gd1vs2">Difference between GD1 and GD2</a><br>
+<hr size="1">
+<table border="5" align="center" width="500" cellpadding="5"><tr><td>
+       <b>The following images have the textured background behind them to illustrate transparency effects.
+       Note that some browsers, notably Internet Explorer, are incapable of displaying alpha-channel PNGs.
+       See my page on the <a href="http://www.silisoftware.com/png_alpha_transparency/" target="_blank">PNG transparency problem</a>.
+       Other modern browsers such as <a href="http://www.mozilla.org">Mozilla/Firefox</a> display alpha-transparent PNGs with no problems.</b>
+</td></tr></table><br>
+<script language="Javascript" defer>
+<!--
+if ((navigator.product != 'Gecko') && document.getElementById) {
+       alert('You are using Internet Explorer and PNG transparency is (probably) broken');
+}
+// -->
+</script>
+
+
+<?php
+
+$img['background'] = 'images/lrock011.jpg';
+
+$img['square']     = 'images/disk.jpg';
+$img['landscape']  = 'images/loco.jpg';
+$img['portrait']   = 'images/pineapple.jpg';
+$img['unrotated']  = 'images/monkey.jpg';
+$img['watermark']  = 'images/watermark.png';
+$img['levels']     = 'images/bunnies.jpg';
+
+$img['mask1']      = 'images/mask04.png';
+$img['mask2']      = 'images/mask05.png';
+$img['mask3']      = 'images/mask06.png';
+
+$img['frame1']     = 'images/frame1.png';
+$img['frame2']     = 'images/frame2.png';
+
+$img['bmp']        = 'images/winnt.bmp';
+$img['tiff']       = 'images/1024-none.tiff';
+$img['wmf']        = 'images/globe.wmf';
+
+$img['kayak']      = 'images/kayak.jpg';
+$img['big']        = 'images/big.jpg';
+
+$png_alpha   = 'Note: PNG output is 32-bit with alpha transparency, subject to <a href="http://www.silisoftware.com/png_alpha_transparency/" target="_blank">PNG transparency problem</a> in Internet Explorer';
+$only_gd2    = '<br>(only works with GD v2.0+, this server is running GD "<i>'.$GDversion['string'].'</i>" so it <b>'.(($GDversion['numeric'] >= 2) ? '<font color="green">will</font>' : '<font color="red">will not</font>').'</b> work)';
+$only_php42  = '<br>(only works with PHP v4.2.0+, this server is running PHP v'.phpversion().' so it <b>'.(version_compare(phpversion(), '4.2.0', '>=') ? '<font color="green">will</font>' : '<font color="red">will not</font>').'</b> work)';
+$only_php43  = '<br>(only works with PHP v4.3.0+, this server is running PHP v'.phpversion().' so it <b>'.(version_compare(phpversion(), '4.3.0', '>=') ? '<font color="green">will</font>' : '<font color="red">will not</font>').'</b> work)';
+$only_php432 = '<br>(only works with PHP v4.3.2+, this server is running PHP v'.phpversion().' so it <b>'.(version_compare(phpversion(), '4.3.2', '>=') ? '<font color="green">will</font>' : '<font color="red">will not</font>').'</b> work (correctly))';
+$only_php500 = '<br>(only works with PHP v5.0.0+, this server is running PHP v'.phpversion().' so it <b>'.(version_compare(phpversion(), '5.0.0', '>=') ? '<font color="green">will</font>' : '<font color="red">will not</font>').'</b> work (correctly))';
+$only_exif   = '<br>(only works when the EXIF extension is loaded, so on this server it <b>'.(extension_loaded('exif') ? '<font color="green">will</font>' : '<font color="red">will not</font>').'</b> work)';
+
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=200'), 'description' => 'width=200px');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=200&q=10'), 'description' => 'width=200px, JPEGquality=10%');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=200&f=png'), 'description' => 'width=200px, format=PNG');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=800&aoe=1'), 'description' => 'width=800px, AllowOutputEnlargement enabled');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=250&sx=125&sy=140&sw=130&sh=65&aoe=1'), 'description' => 'section from (125x140 - 255x190) cropped and enlarged by 200%, AllowOutputEnlargement enabled');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=200&fltr[]=wmi|'.$img['watermark'].'|BL'), 'description' => 'width=200px, watermark (bottom-left, 75% opacity)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['square'].'&w=200&fltr[]=wmi|'.$img['watermark'].'|*|25'), 'description' => 'width=200px, watermark (tiled, 25% opacity)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['watermark'].'&bg=00FFFF&f=png', '../phpThumb.php?src='.$img['watermark'].'&bg=00FFFF&f=jpeg'), 'description' => 'source image (GIF) transpancy with transparent output (PNG) vs. specified background color (JPEG)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=usm|80|0.5|3'), 'description' => 'normal vs. unsharp masking at default settings'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=blur|1', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=blur|5'), 'description' => 'normal vs. blur at default (1) and heavy (5)'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=gblr', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=sblr'), 'description' => 'normal vs. gaussian blur vs. selective blur'.$only_php500.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['portrait'].'&w=100&h=100&far=L&bg=0000FF&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=100&h=100&far=T&bg=FF0000&f=png', '../phpThumb.php?src='.$img['portrait'].'&w=100&h=100&far=C&bg=0000FF&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=100&h=100&far=B&bg=FF0000&f=png', '../phpThumb.php?src='.$img['portrait'].'&w=100&h=100&far=R&bg=0000FF&f=png', '../phpThumb.php?src='.$img['portrait'].'&w=100&h=100&far=C&f=png&fltr[]=bord|1'), 'description' => 'Forced Aspect Ratio, colored background, PNG output');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['portrait'].'&w=150&ar=L', '../phpThumb.php?src='.$img['landscape'].'&w=150&ar=L'), 'description' => 'auto-rotate counter-clockwise to landscape from portrait & lanscape'.$only_php42);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['portrait'].'&hp=100&wl=200', '../phpThumb.php?src='.$img['landscape'].'&hp=100&wl=200'), 'description' => 'auto-selection of W and H based on source image orientation');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['unrotated'].'&w=150&h=150', '../phpThumb.php?src='.$img['unrotated'].'&w=150&h=150&ar=x'), 'description' => 'original image vs. auto-rotated based on EXIF data'.$only_php42.$only_exif);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&ra=30&bg=0000FF', '../phpThumb.php?src='.$img['landscape'].'&w=200&ra=30&f=png'), 'description' => 'Rotated 30° (counter-clockwise), width=200px, blue background vs. transparent background'.$only_php42);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&h=300&far=1&bg=CCCCCC', '../phpThumb.php?src='.$img['landscape'].'&w=200&h=300&iar=1'), 'description' => 'Normal resize behavior (left) vs. Forced non-proportional resize (right)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=150&h=150&zc=1', '../phpThumb.php?src='.$img['portrait'].'&w=150&h=150&zc=1'), 'description' => 'Zoom-Crop');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=bord|2|20|10|009900&f=png'), 'description' => '2px border, curved border corners (20px horizontal radius, 10px vertical radius)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=ric|50|20&f=png'), 'description' => 'curved border corners (20px vertical radius, 50px horizontal radius)<br>'.$png_alpha.$only_gd2.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=sat|75', '../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=sat|-100'), 'description' => 'saturation -75% vs. normal vs. -100%'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=ds|75', '../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=ds|-100'), 'description' => 'desaturated 75% vs. normal vs. -100%'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=clr|25|00FF00'), 'description' => 'colorized 25% to green (#00FF00)'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=gray', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=sep'), 'description' => 'grayscale vs. sepia'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=mask|'.$img['mask3'].'&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=mask|'.$img['mask1'].'&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=mask|'.$img['mask2'].'&f=jpeg&bg=9900CC&q=100'), 'description' => 'Assorted alpha masks (seen below) applied<br>'.$png_alpha.$only_php432.'<br>JPEG/GIF output is flattened to "bg" background color'.$only_gd2.'<br><img src="../'.$img['mask3'].'"> <img src="../'.$img['mask1'].'"> <img src="../'.$img['mask2'].'">');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=drop|5|10|000000|225&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=mask|'.$img['mask3'].'&fltr[]=drop|5|10|000000|225&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=drop|5|10|000000|225&fltr[]=elip&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=elip&fltr[]=drop|5|10|000000|225&f=png'), 'description' => 'Drop shadow. Note how the order in which filters are applied matters.'.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=elip&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=elip&f=jpeg&bg=00FFFF'), 'description' => 'Elipse<br>'.$png_alpha.$only_php432.'<br>JPEG/GIF output is flattened to "bg" background color'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=flip|x', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=flip|y', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=flip|xy'), 'description' => 'flipped on X, Y and X+Y axes');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=bvl|10|FFFFFF|000000', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=bvl|10|000000|FFFFFF'), 'description' => '10px bevel edge filter'.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=fram|3|2|CCCCCC|FFFFFF|000000', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=fram|3|2|CC9966|333333|CCCCCC'), 'description' => '3+2px frame filter');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=neg'), 'description' => 'Negative filter (inverted color)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=th|105', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=mask|'.$img['mask1'].'&fltr[]=th|105&f=png'), 'description' => 'Threshold filter; showing preserved alpha channel'.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['portrait'].'&w=150', '../phpThumb.php?src='.$img['portrait'].'&w=150&fltr[]=rcd|16|1', '../phpThumb.php?src='.$img['portrait'].'&w=150&fltr[]=rcd|16|0', '../phpThumb.php?src='.$img['portrait'].'&w=150&fltr[]=gray&fltr[]=rcd|4|1'), 'description' => 'ReduceColorDepth filter; original vs. 16-color dither vs. 16-color nodither vs. 4-gray dither'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['levels'].'&w=200', '../phpThumb.php?src='.$img['levels'].'&w=200&fltr[]=lvl'), 'description' => 'original vs. Levels filter (default settings)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['portrait'].'&w=200', '../phpThumb.php?src='.$img['portrait'].'&w=200&fltr[]=wb', '../phpThumb.php?src='.$img['portrait'].'&w=200&fltr[]=wb&fltr[]=lvl'), 'description' => 'original vs. White Balance vs. White Balance + Levels');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=300&fltr[]=hist|rgb', '../phpThumb.php?src='.$img['levels'].'&w=200&fltr[]=hist|*'), 'description' => 'histograms of RGB vs. grayscale');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=300&fltr[]=edge'), 'description' => 'Edge Detect filter'.$only_php500.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=300&fltr[]=emb'), 'description' => 'Emboss filter'.$only_php500.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=300&fltr[]=mean'), 'description' => 'Mean Removal filter'.$only_php500.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=300&fltr[]=smth'), 'description' => 'Smooth filter'.$only_php500.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=gam|0.6', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=gam|1.6'), 'description' => 'Gamma corrected to 0.6 vs. 1.6');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=brit|50', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=brit|-50'), 'description' => 'Brightness filter (original vs. +50 vs. -50)'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=cont|50', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=cont|-50'), 'description' => 'Contrast filter (original vs. +50 vs. -50)'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['portrait'].'&w=200&fltr[]=over|'.$img['frame1'].'|0', '../phpThumb.php?src='.$img['portrait'].'&w=200&fltr[]=over|'.$img['frame2'].'|1'), 'description' => 'Overlay vs. Underlay<br><br>Original over/under images:<br><table border="0"><tr><td style="padding: 20px; background-image: url(../'.$img['background'].');"><img src="../'.$img['frame1'].'"> <img src="../'.$img['frame2'].'"></td></tr></table>');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=wmt|phpThumb|18|C|FF0000|loki.ttf|100|5|20&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=wmt|copyright+2004|3|BR|00FFFF||50&f=png', '../phpThumb.php?src='.$img['landscape'].'&w=200&fltr[]=wmt|copyright+2004%0AphpThumb()|3|L|00FFFF&f=png'), 'description' => 'Text overlay, TTF and built-in fonts, multiple lines');
+$Examples[] = array('getstrings' => array('../phpThumb.php?new=FF0000&w=100&h=50&fltr[]=bvl|10&fltr[]=wmt|hello|14|C|00FFFF|arial.ttf&f=png', '../phpThumb.php?new=FF0000|25&w=150&h=50&fltr[]=bvl|10&fltr[]=wmt|25%+opaque|14|C|0066FF|arial.ttf&f=png'), 'description' => 'Image created with "new", red background, bevel, TTF text');
+
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['bmp'].'&w=200'), 'description' => 'BMP source, width=200px');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['tiff'].'&w=200'), 'description' => 'TIFF source, width=200px');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img['wmf'].'&w=200'), 'description' => 'WMF source, width=200px');
+//$Examples[] = array('getstrings' => array(''), 'description' => '');
+
+foreach ($Examples as $key => $ExamplesArray) {
+       echo '<a href="#" name="'.$key.'" title="click to get URL link for example #'.$key.'" onClick="prompt(\'Here is the link to example #'.$key.'\', \'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'#'.$key.'\'); return false;">#'.$key.'</a>';
+       echo '<table border="0"><tr><td style="padding: 20px; background-image: url(../'.$img['background'].');">';
+       foreach ($ExamplesArray['getstrings'] as $GETstring) {
+               echo '<a href="'.$GETstring.'&down='.urlencode($GETstring).'.jpg">';
+               echo '<img border="0" src="'.$GETstring.'">';
+               echo '</a> ';
+       }
+       echo '</td></tr></table>';
+       echo '<xmp><img src="'.implode('">'."\n".'<img src="', $ExamplesArray['getstrings']).'"></xmp>';
+       echo $ExamplesArray['description'].'<br>';
+       echo '<br><br><hr size="1">';
+}
+
+echo '<a href="#" name="pathinfo" title="click to get URL link for PATH_INFO example" onClick="prompt(\'Here is the link to the PATH_INFO example\', \'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'#pathinfo\'); return false;">#pathinfo</a>';
+echo '<table border="0"><tr><td style="padding: 20px; background-image: url(../'.$img['background'].');">';
+echo '<img src="../phpThumb.php/fltr[]=sep;200x200;'.$img['portrait'].'">';
+echo '</td></tr></table>';
+echo '<xmp><img src="../phpThumb.php/fltr[]=sep;200x200;'.$img['portrait'].'"></xmp>';
+echo 'PATH_INFO example<br>';
+echo '<br><br><hr size="1">';
+
+?>
+
+
+<a name="gd1vs2"></a><br>
+<table border="5" cellspacing="0" cellpadding="3" width="500">
+       <tr>
+               <td colspan="4">
+                       <b>Illustration of potential difference between GD1.x and GD2.x</b><br>
+                       In most cases the thumbnails produced by phpThumb() on GD v1.x are perfectly
+                       acceptable, but in some cases it may look ugly. Diagonal lines and reducing a
+                       very large source image increase chance for bad results (the house/sky picture
+                       has both problems). Here are three static examples:
+               </td>
+       </tr>
+       <tr>
+               <td><b>GD v2.0.15</b></td>
+               <td><img src="../images/PHP-GD2-kayak.jpg"  width="200" height="133" border="0" alt="kayak.jpg generated with phpThumb() on GD v2.0.15"></td>
+               <td><img src="../images/PHP-GD2-bottle.jpg" width="100" height="152" border="0" alt="bottle.jpg generated with phpThumb() on GD v2.0.15"></td>
+               <td><img src="../images/PHP-GD2-sky.jpg"    width="200" height="150" border="0" alt="sky.jpg generated with phpThumb() on GD v2.0.15"></td>
+       </tr>
+       <tr>
+               <td><b>GD v1.6.2</b></td>
+               <td><img src="../images/PHP-GD1-kayak.jpg"  width="200" height="133" border="0" alt="kayak.jpg generated with phpThumb() on GD v1.6.2"></td>
+               <td><img src="../images/PHP-GD1-bottle.jpg" width="100" height="152" border="0" alt="bottle.jpg generated with phpThumb() on GD v1.6.2"></td>
+               <td><img src="../images/PHP-GD1-sky.jpg"    width="200" height="150" border="0" alt="sky.jpg generated with phpThumb() on GD v1.6.2"></td>
+       </tr>
+</table><br>
+<hr size="1">
+<br>
+<a name="showpic"></a>
+<b>Demo of <i>phpThumb.demo.showpic.php</i></b><br>
+<br>
+Small picture (500x333), window opened at wrong size (640x480):<br>
+<a href="javascript:void(0);" onClick="window.open('phpThumb.demo.showpic.php?src=../<?php echo $img['kayak']; ?>&title=This+is+a+small+picture', 'showpic1', 'width=640,height=480,resizable=no,status=no,menubar=no,toolbar=no,scrollbars=no');">
+<img src="../phpThumb.php?src=<?php echo $img['kayak']; ?>&w=100" border="2"></a><br>
+<br>
+Big picture (2272x1704), window opened at wrong size (640x480):<br>
+<a href="javascript:void(0);" onClick="window.open('phpThumb.demo.showpic.php?src=../<?php echo $img['big']; ?>&title=This+is+a+big+picture', 'showpic2', 'width=640,height=480,resizable=yes,status=no,menubar=no,toolbar=no,scrollbars=no');">
+<img src="../phpThumb.php?src=<?php echo $img['big']; ?>&w=100" border="2"></a><br>
+<br>
+<hr size="1">
+
+<?php
+
+echo 'The source images, without manipulation:<ul>';
+foreach ($img as $key => $value) {
+       echo '<li><a href="../'.$value.'">'.basename($value).'</a></li>';
+}
+echo '</ul><hr>';
+
+?>
+</body>
+</html>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo1.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo1.php
new file mode 100644 (file)
index 0000000..20fbc1e
--- /dev/null
@@ -0,0 +1,198 @@
+<?php
+$GDversion['string']  = 'unknown';
+$GDversion['numeric'] = 0;
+ob_start();
+if (!@include_once('../phpthumb.functions.php')) {
+       ob_end_flush();
+       die('failed to include_once("../phpthumb.functions.php")');
+}
+if (!@include_once('../phpthumb.class.php')) {
+       die('failed to include_once("../phpthumb.class.php")');
+       ob_end_flush();
+}
+ob_end_clean();
+$phpThumb = new phpThumb();
+$phpthumb_version = $phpThumb->phpthumb_version;
+unset($phpThumb);
+$GDversion['string']  = phpthumb_functions::gd_version(true);
+$GDversion['numeric'] = phpthumb_functions::gd_version(false);
+?>
+
+<html>
+<head>
+       <title>Demo of phpThumb() - thumbnails created by PHP</title>
+       <link rel="stylesheet" type="text/css" href="/style.css" title="style sheet">
+</head>
+<body bgcolor="#C5C5C5">
+
+This is a demo of <a href="http://phpthumb.sourceforge.net"><b>phpThumb()</b></a> (current version: v<?php echo @$phpthumb_version; ?>)<br>
+A dynamic demo where you can set <strike>all</strike> some of the parmeters and see their effect is <a href="phpThumb.demo.demo2.php">here</a>.<br>
+<br>
+<!--
+<b>Note:</b> none of the images on this page are cached, so they may take a few seconds to load, but they represent the actual script in action.<br>
+<br>
+-->
+<b>Note:</b> this server is working on GD "<?php
+echo $GDversion['string'].'"';
+if ($GDversion['numeric'] >= 2) {
+       echo ', so images should be of optimal quality.';
+} else {
+       echo ', so images (especially watermarks) do not look as good as they would on GD v2.';
+}
+?><br>
+<br>
+<table border="5" cellspacing="0" cellpadding="3" width="500">
+       <tr>
+               <td colspan="4">
+                       <b>Illustration of potential difference between GD1.x and GD2.x</b><br>
+                       In most cases the thumbnails produced by phpThumb() on GD v1.x are perfectly
+                       acceptable, but in some cases it may look ugly. Diagonal lines and reducing a
+                       very large source image increase chance for bad results (the house/sky picture
+                       has both problems). Here are three static examples:
+               </td>
+       </tr>
+       <tr>
+               <td><b>GD v2.0.15</b></td>
+               <td><img src="../images/PHP-GD2-kayak.jpg"  width="200" height="133" border="0" alt="kayak.jpg generated with phpThumb() on GD v2.0.15"></td>
+               <td><img src="../images/PHP-GD2-bottle.jpg" width="100" height="152" border="0" alt="bottle.jpg generated with phpThumb() on GD v2.0.15"></td>
+               <td><img src="../images/PHP-GD2-sky.jpg"    width="200" height="150" border="0" alt="sky.jpg generated with phpThumb() on GD v2.0.15"></td>
+       </tr>
+       <tr>
+               <td><b>GD v1.6.2</b></td>
+               <td><img src="../images/PHP-GD1-kayak.jpg"  width="200" height="133" border="0" alt="kayak.jpg generated with phpThumb() on GD v1.6.2"></td>
+               <td><img src="../images/PHP-GD1-bottle.jpg" width="100" height="152" border="0" alt="bottle.jpg generated with phpThumb() on GD v1.6.2"></td>
+               <td><img src="../images/PHP-GD1-sky.jpg"    width="200" height="150" border="0" alt="sky.jpg generated with phpThumb() on GD v1.6.2"></td>
+       </tr>
+</table>
+
+<hr size="1">
+<a href="#showpic">phpThumb.demo.showpic.php demo here</a><br>
+<hr size="1">
+<table border="5" align="center" width="500" cellpadding="5"><tr><td>
+       <b>The following images have the textured background behind them to illustrate transparency effects.
+       Note that some browsers, notably Internet Explorer, are incapable of displaying alpha-channel PNGs.
+       See my page on the <a href="http://www.silisoftware.com/png_alpha_transparency/" target="_blank">PNG transparency problem</a>.
+       Other modern browsers such as <a href="http://www.mozilla.org">Mozilla/Firefox</a> display alpha-transparent PNGs with no problems.</b>
+</td></tr></table><br>
+
+<!--
+<xmp><img src="disk.jpg"></xmp>
+Original image (not thumbnailed) - original dimensions = 500x500px<br>
+<img border="0" src="disk.jpg"><br>
+<br>
+<hr size="1">
+-->
+
+<?php
+
+$img_background = '../images/lrock011.jpg';
+
+$img_square     = 'images/disk.jpg';
+$img_landscape  = 'images/loco.jpg';
+$img_portrait   = 'images/pineapple.jpg';
+$img_unrotated  = 'images/monkey.jpg';
+$img_watermark  = 'images/watermark.png';
+$img_levels     = 'images/bunnies.jpg';
+
+$img_mask1      = 'images/mask04.png';
+$img_mask2      = 'images/mask05.png';
+$img_mask3      = 'images/mask06.png';
+
+$img_frame1     = 'images/frame1.png';
+$img_frame2     = 'images/frame2.png';
+
+$img_bmp        = 'images/winnt.bmp';
+$img_tiff       = 'images/1024-none.tiff';
+$img_wmf        = 'images/globe.wmf';
+
+$img_kayak      = 'images/kayak.jpg';
+$img_big        = 'images/big.jpg';
+
+$png_alpha   = 'Note: PNG output is 32-bit with alpha transparency, subject to <a href="http://www.silisoftware.com/png_alpha_transparency/" target="_blank">PNG transparency problem</a> in Internet Explorer';
+$only_gd2    = '<br>(only works with GD v2.0+, this server is running GD "<i>'.$GDversion['string'].'</i>" so it <b>will '.(($GDversion['numeric'] >= 2) ? '' : 'not').'</b> work)';
+$only_php42  = '<br>(only works with PHP v4.2.0+, this server is running PHP v'.phpversion().' so it <b>will '.(version_compare(phpversion(), '4.2.0', '>=') ? '' : 'not').'</b> work)';
+$only_php43  = '<br>(only works with PHP v4.3.0+, this server is running PHP v'.phpversion().' so it <b>will '.(version_compare(phpversion(), '4.3.0', '>=') ? '' : 'not').'</b> work)';
+$only_php432 = '<br>(only works with PHP v4.3.2+, this server is running PHP v'.phpversion().' so it <b>will '.(version_compare(phpversion(), '4.3.2', '>=') ? '' : 'not').'</b> work (correctly))';
+$only_exif   = '<br>(only works when the EXIF extension is loaded, so on this server it <b>will '.(extension_loaded('exif') ? '' : 'not').'</b> work)';
+
+echo 'The source images, without manipulation:<ul>';
+echo '<li><a href="../'.$img_square.'">'.basename($img_square).'</a></li>';
+echo '<li><a href="../'.$img_landscape.'">'.basename($img_landscape).'</a></li>';
+echo '<li><a href="../'.$img_portrait.'">'.basename($img_portrait).'</a></li>';
+echo '<li><a href="../'.$img_unrotated.'">'.basename($img_unrotated).'</a></li>';
+echo '<li><a href="../'.$img_watermark.'">'.basename($img_watermark).'</a></li>';
+echo '<li><a href="../'.$img_levels.'">'.basename($img_levels).'</a></li>';
+echo '</ul><hr>';
+
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=200'), 'description' => 'width=200px');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=200&q=10'), 'description' => 'width=200px, JPEGquality=10%');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=200&f=png'), 'description' => 'width=200px, format=PNG');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=800&aoe=1'), 'description' => 'width=800px, AllowOutputEnlargement enabled');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=250&sx=125&sy=140&sw=130&sh=65&aoe=1'), 'description' => 'section from (125x140 - 255x190) cropped and enlarged by 200%, AllowOutputEnlargement enabled');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=200&fltr[]=wmi|'.$img_watermark.'|BL'), 'description' => 'width=200px, watermark (bottom-left, 75% opacity)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_square.'&w=200&fltr[]=wmi|'.$img_watermark.'|*|25'), 'description' => 'width=200px, watermark (tiled, 25% opacity)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_watermark.'&bg=00FFFF&f=png', '../phpThumb.php?src='.$img_watermark.'&bg=00FFFF&f=jpeg'), 'description' => 'source image (GIF) transpancy with transparent output (PNG) vs. specified background color (JPEG)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=usm|80|0.5|3'), 'description' => 'normal vs. unsharp masking at default settings'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=blur|1', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=blur|5'), 'description' => 'normal vs. blur at default (1) and heavy (5)'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_portrait.'&w=100&h=100&far=1&fltr[]=bord|3|0|0|FF0000&bg=0000FF&f=png'), 'description' => '3px red border, fixed-size thumbnail despite aspect ratio, blue background, PNG output');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_portrait.'&w=150&ar=L', '../phpThumb.php?src='.$img_landscape.'&w=150&ar=L'), 'description' => 'auto-rotate counter-clockwise to landscape from portrait & lanscape'.$only_php42);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_unrotated.'&w=150&h=150', '../phpThumb.php?src='.$img_unrotated.'&w=150&h=150&ar=x'), 'description' => 'original image vs. auto-rotated based on EXIF data'.$only_php42.$only_exif);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&ra=30&bg=0000FF', '../phpThumb.php?src='.$img_landscape.'&w=200&ra=30&f=png'), 'description' => 'Rotated 30° (counter-clockwise), width=200px, blue background vs. transparent background'.$only_php42);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&h=300&far=1&bg=CCCCCC', '../phpThumb.php?src='.$img_landscape.'&w=200&h=300&iar=1'), 'description' => 'Normal resize behavior (left) vs. Forced non-proportional resize (right)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=150&h=150&zc=1', '../phpThumb.php?src='.$img_portrait.'&w=150&h=150&zc=1'), 'description' => 'Zoom-Crop');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=bord|2|20|10|009900&f=png'), 'description' => '2px border, curved border corners (20px horizontal radius, 10px vertical radius)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=ric|50|20&f=png'), 'description' => 'curved border corners (20px vertical radius, 50px horizontal radius)<br>'.$png_alpha.$only_gd2.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=ds|75', '../phpThumb.php?src='.$img_landscape.'&w=200', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=ds|-100'), 'description' => 'desaturated 75% vs. normal vs. boosted saturation 100%'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=clr|25|00FF00'), 'description' => 'colorized 25% to green (#00FF00)'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=gray', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=sep'), 'description' => 'grayscale vs. sepia'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=gam|0.6', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=gam|1.6'), 'description' => 'Gamma corrected to 0.6 vs. 1.6');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=mask|'.$img_mask3.'&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=mask|'.$img_mask1.'&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=mask|'.$img_mask2.'&f=jpeg&bg=9900CC&q=100'), 'description' => 'Assorted alpha masks (seen below) applied<br>'.$png_alpha.$only_php432.'<br>JPEG/GIF output is flattened to "bg" background color'.$only_gd2.'<br><img src="../'.$img_mask3.'"> <img src="../'.$img_mask1.'"> <img src="../'.$img_mask2.'">');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=drop|5|10|000000|225&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=mask|'.$img_mask3.'&fltr[]=drop|5|10|000000|225&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=drop|5|10|000000|225&fltr[]=elip&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=elip&fltr[]=drop|5|10|000000|225&f=png'), 'description' => 'Drop shadow. Note how the order in which filters are applied matters.'.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=elip&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=elip&f=jpeg&bg=00FFFF'), 'description' => 'Elipse<br>'.$png_alpha.$only_php432.'<br>JPEG/GIF output is flattened to "bg" background color'.$only_gd2);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=flip|x', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=flip|y', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=flip|xy'), 'description' => 'flipped on X, Y and X+Y axes');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=bvl|10|FFFFFF|000000', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=bvl|10|000000|FFFFFF'), 'description' => '10px bevel edge filter'.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=fram|3|2|CCCCCC|FFFFFF|000000', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=fram|3|2|CC9966|333333|CCCCCC'), 'description' => '3+2px frame filter');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=neg'), 'description' => 'Negative filter (inverted color)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=th|105', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=mask|'.$img_mask1.'&fltr[]=th|105&f=png'), 'description' => 'Threshold filter; showing preserved alpha channel'.$only_php432);
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_levels.'&w=200', '../phpThumb.php?src='.$img_levels.'&w=200&fltr[]=lvl'), 'description' => 'original vs. Levels filter (default settings)');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_portrait.'&w=200', '../phpThumb.php?src='.$img_portrait.'&w=200&fltr[]=wb', '../phpThumb.php?src='.$img_portrait.'&w=200&fltr[]=wb&fltr[]=lvl'), 'description' => 'original vs. White Balance vs. White Balance + Levels');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=300&fltr[]=hist|rgb', '../phpThumb.php?src='.$img_levels.'&w=200&fltr[]=hist|*'), 'description' => 'histograms of RGB vs grayscale');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_portrait.'&w=200&fltr[]=over|'.$img_frame1.'|0', '../phpThumb.php?src='.$img_portrait.'&w=200&fltr[]=over|'.$img_frame2.'|1'), 'description' => 'Overlay vs. Underlay<br><br>Original over/under images:<br><table border="0"><tr><td style="padding: 20px; background-image: url('.$img_background.');"><img src="../'.$img_frame1.'"> <img src="../'.$img_frame2.'"></td></tr></table>');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=wmt|phpThumb|18|B|FF0000|loki.ttf|100|5|20&f=png', '../phpThumb.php?src='.$img_landscape.'&w=200&fltr[]=wmt|copyright+2004|3|BR|00FFFF||50&f=png'), 'description' => 'Text overlay, TTF and built-in fonts');
+$Examples[] = array('getstrings' => array('../phpThumb.php?new=FF0000&w=100&h=50&fltr[]=bvl|10&fltr[]=wmt|hello|14|C|00FFFF|arial.ttf&f=png', '../phpThumb.php?new=FF0000|25&w=150&h=50&fltr[]=bvl|10&fltr[]=wmt|25%+opaque|14|C|0066FF|arial.ttf&f=png'), 'description' => 'Image created with "new", red background, bevel, TTF text');
+
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_bmp.'&w=200'), 'description' => 'BMP source, width=200px');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_tiff.'&w=200'), 'description' => 'TIFF source, width=200px');
+$Examples[] = array('getstrings' => array('../phpThumb.php?src='.$img_wmf.'&w=200'), 'description' => 'WMF source, width=200px');
+//$Examples[] = array('getstrings' => array(''), 'description' => '');
+
+foreach ($Examples as $key => $ExamplesArray) {
+       echo '<a href="#" name="'.$key.'" title="click to get URL link for example #'.$key.'" onClick="prompt(\'Here is the to example #'.$key.'\', \'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'#'.$key.'\'); return false;">#</a>';
+       echo '<table border="0"><tr><td style="padding: 20px; background-image: url('.$img_background.');">';
+       foreach ($ExamplesArray['getstrings'] as $GETstring) {
+               echo '<a href="'.$GETstring.'&down='.urlencode($GETstring).'.jpg">';
+               echo '<img border="0" src="'.$GETstring.'">';
+               echo '</a> ';
+       }
+       echo '</td></tr></table>';
+       echo '<xmp><img src="'.implode('">'."\n".'<img src="', $ExamplesArray['getstrings']).'"></xmp>';
+       echo $ExamplesArray['description'].'<br>';
+       echo '<br><br><hr size="1">';
+}
+
+?>
+
+<a name="showpic"></a>
+<b>Demo of <i>phpThumb.demo.showpic.php</i></b><br>
+<br>
+Small picture (500x333), window opened at wrong size (640x480):<br>
+<a href="javascript:void(0);" onClick="window.open('phpThumb.demo.showpic.php?src=../<?php echo $img_kayak; ?>&title=This+is+a+small+picture', 'showpic1', 'width=640,height=480,resizable=no,status=no,menubar=no,toolbar=no,scrollbars=no');">
+<img src="../phpThumb.php?src=<?php echo $img_kayak; ?>&w=100" border="2"></a><br>
+<br>
+Big picture (2272x1704), window opened at wrong size (640x480):<br>
+<a href="javascript:void(0);" onClick="window.open('phpThumb.demo.showpic.php?src=../<?php echo $img_big; ?>&title=This+is+a+big+picture', 'showpic2', 'width=640,height=480,resizable=yes,status=no,menubar=no,toolbar=no,scrollbars=no');">
+<img src="../phpThumb.php?src=<?php echo $img_big; ?>&w=100" border="2"></a><br>
+<br>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo2.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.demo2.php
new file mode 100644 (file)
index 0000000..d32a087
--- /dev/null
@@ -0,0 +1,157 @@
+<HTML>
+<HEAD>
+       <TITLE>Demo of phpThumb() - thumbnails created by PHP</TITLE>
+       <LINK REL="stylesheet" TYPE="text/css" HREF="/style.css" TITLE="style sheet">
+</HEAD>
+<BODY BGCOLOR="#EFEFEF">
+
+<?php
+
+$GDversion['string']  = 'unknown';
+$GDversion['numeric'] = 0;
+ob_start();
+if (!@include_once('../phpthumb.functions.php')) {
+       ob_end_flush();
+       die('failed to include_once("../phpthumb.functions.php")');
+}
+if (!@include_once('../phpthumb.class.php')) {
+       die('failed to include_once("../phpthumb.class.php")');
+       ob_end_flush();
+}
+ob_end_clean();
+$phpThumb = new phpThumb();
+$phpthumb_version = $phpThumb->phpthumb_version;
+unset($phpThumb);
+$GDversion['string']  = phpthumb_functions::gd_version(true);
+$GDversion['numeric'] = phpthumb_functions::gd_version(false);
+
+
+echo 'This is a partial user-configurable demo of <a href="http://phpthumb.sourceforge.net"><b>phpThumb()</b></a> (current version: v'.@$phpthumb_version.')<br>';
+echo 'The usual static demo can be found <a href="phpThumb.demo.demo1.php">here</a>.<br>';
+
+echo '<b>Note:</b> this server is working on GD "';
+echo $GDversion['string'].'"';
+if ($GDversion['numeric'] >= 2) {
+       echo ', so images should be of optimal quality.';
+} else {
+       echo ', so images (especially watermarks) do not look as good as they would on GD v2.';
+}
+
+
+if (!empty($_REQUEST['src'])) {
+       $GETpairs = array();
+       foreach ($_GET as $key => $value) {
+               if (strlen($value) > 0) {
+                       $GETpairs[] = $key.'='.urlencode($value);
+               }
+       }
+       $imageSRC = '../phpThumb.php?'.implode('&', $GETpairs);
+       echo '<XMP><IMG SRC="'.$imageSRC.'"></XMP>';
+       echo '<IMG SRC="'.$imageSRC.'"><HR>';
+}
+
+
+echo '<TABLE BORDER="1">';
+echo '<FORM ACTION="" METHOD="GET">';
+
+echo '<TR><TD><B>Source Image</B></TD><TD>';
+$PossibleImages = array(
+       'images/loco.jpg',
+       'images/watermark.png',
+       'images/bottle.jpg',
+       'images/kayak.jpg'
+);
+foreach ($PossibleImages as $image) {
+       echo '<INPUT TYPE="RADIO" NAME="src" VALUE="../'.$image.'"'.((@$_REQUEST['src'] == $image) ? ' CHECKED' : '').'><IMG ALIGN="MIDDLE" SRC="../phpThumb.php?src='.$image.'&w=100&h=100"><BR><BR>';
+}
+echo '</UL></TD></TR>';
+
+echo '<TR><TD><B>Max Width:</B></TD> <TD><INPUT TYPE="TEXT" NAME="w" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['w'], ENT_QUOTES).'">px</TD></TR>';
+echo '<TR><TD><B>Max Height:</B></TD><TD><INPUT TYPE="TEXT" NAME="h" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['h'], ENT_QUOTES).'">px</TD></TR>';
+
+echo '<TR><TD><B>Output Image Format</B></TD><TD>';
+$PossibleImageFormats = array('jpeg', 'png', 'gif');
+foreach ($PossibleImageFormats as $imageformat) {
+       echo '<INPUT TYPE="RADIO" NAME="f" VALUE="'.$imageformat.'"'.((@$_REQUEST['f'] == $imageformat) ? ' CHECKED' : '').'>'.$imageformat.'<BR>';
+}
+echo '</TD></TR>';
+
+echo '<TR><TD><B>JPEG Quality:</B></TD><TD><SELECT NAME="q">';
+echo '<OPTION VALUE=""></OPTION>';
+for ($i = 1; $i <= 95; $i++) {
+       echo '<OPTION VALUE="'.$i.'"'.((@$_REQUEST['q'] == $i) ? ' SELECTED' : '').'>'.$i.'</OPTION>';
+}
+echo '</SELECT> (default = 75)</TD></TR>';
+
+echo '<TR><TD><B>Crop Left / Top point:</B></TD><TD> <INPUT TYPE="TEXT" NAME="sx" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['sx'], ENT_QUOTES).'"> x <INPUT TYPE="TEXT" NAME="sy" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['sy'], ENT_QUOTES).'"></TD></TR>';
+echo '<TR><TD><B>Crop Width / Height:</B></TD><TD>   <INPUT TYPE="TEXT" NAME="sw" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['sw'], ENT_QUOTES).'"> x <INPUT TYPE="TEXT" NAME="sh" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['sh'], ENT_QUOTES).'"></TD></TR>';
+
+//echo '<TR><TD><B>Border Width:</B></TD><TD><SELECT NAME="bw">';
+//echo '<OPTION VALUE="">none</OPTION>';
+//for ($i = 0; $i <= 50; $i++) {
+//     echo '<OPTION VALUE="'.$i.'"'.((@$_REQUEST['bw'] === "$i") ? ' SELECTED' : '').'>'.$i.'</OPTION>';
+//}
+//echo '</SELECT> (any option except <i>none</i> forces output size to <I>width</I> x <I>height</I></TD></TR>';
+
+//echo '<TR><TD><B>Border Corner Radius:</B></TD><TD><INPUT TYPE="TEXT" NAME="brx" SIZE="2" VALUE="'.htmlentities(@$_REQUEST['brx'], ENT_QUOTES).'"> horizontal (requires border >= 1)<br><INPUT TYPE="TEXT" NAME="bry" SIZE="2" VALUE="'.htmlentities(@$_REQUEST['bry'], ENT_QUOTES).'"> vertical (requires border >= 1)</TD></TR>';
+//echo '<TR><TD><B>Border Hex Color:</B></TD>    <TD><INPUT TYPE="TEXT" NAME="bc" SIZE="6" VALUE="'.htmlentities(@$_REQUEST['bc'], ENT_QUOTES).'"> default: 000000 (requires border >= 1)</TD></TR>';
+echo '<TR><TD><B>Background Hex Color:</B></TD><TD><INPUT TYPE="TEXT" NAME="bg" SIZE="6" VALUE="'.htmlentities(@$_REQUEST['bg'], ENT_QUOTES).'"> default: FFFFFF (requires border >= 0)</TD></TR>';
+
+//echo '<TR><TD><B>Unsharp Mask Amount:</B></TD><TD>   <INPUT TYPE="TEXT" NAME="usa" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['usa'], ENT_QUOTES).'"> (default = 80, range 50-200)</TD></TR>';
+//echo '<TR><TD><B>Unsharp Mask Radius:</B></TD><TD>   <INPUT TYPE="TEXT" NAME="usr" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['usr'], ENT_QUOTES).'"> (default = 0.5, range 0.5-1)</TD></TR>';
+//echo '<TR><TD><B>Unsharp Mask Threshold:</B></TD><TD><INPUT TYPE="TEXT" NAME="ust" SIZE="3" VALUE="'.htmlentities(@$_REQUEST['ust'], ENT_QUOTES).'"> (default = 3, range 1-5)</TD></TR>';
+
+//echo '<TR><TD><B>Watermark Image</B></TD><TD>';
+//echo '<INPUT TYPE="RADIO" NAME="wmf" VALUE=""'.((@$_REQUEST['wmf'] == '') ? ' CHECKED' : '').'><I>none</I><BR><BR>';
+//foreach ($PossibleImages as $image) {
+//     echo '<INPUT TYPE="RADIO" NAME="wmf" VALUE="../'.$image.'"'.((@$_REQUEST['wmf'] == $image) ? ' CHECKED' : '').'><IMG ALIGN="MIDDLE" SRC="../phpThumb.php?src='.$image.'&w=100&h=100"><BR><BR>';
+//}
+//echo '</UL></TD></TR>';
+//
+//echo '<TR><TD><B>Watermark Opacity:</B></TD><TD><SELECT NAME="wmp">';
+//for ($i = 1; $i <= 100; $i++) {
+//     echo '<OPTION VALUE="'.$i.'"';
+//     if ((empty($_REQUEST['wmp']) && ($i == 50)) || (@$_REQUEST['wmp'] == $i)) {
+//             echo ' SELECTED';
+//     }
+//     echo '>'.$i.'</OPTION>';
+//}
+//echo '</SELECT>% (default = 50%)</TD></TR>';
+//
+//echo '<TR><TD><B>Watermark Alignment</B></TD><TD><SELECT NAME="wma">';
+//$PossibleAlignments = array('*'=>'tile', 'T'=>'top', 'B'=>'bottom', 'L'=>'left', 'R'=>'right', 'TL'=>'top-left', 'TR'=>'top-right', 'BL'=>'bottom-left', 'BR'=>'bottom-right');
+//foreach ($PossibleAlignments as $key => $value) {
+//     echo '<OPTION VALUE="'.$key.'"';
+//     if ((empty($_REQUEST['wma']) && ($key == 'BR')) || (@$_REQUEST['wma'] == $key)) {
+//             echo ' SELECTED';
+//     }
+//     echo '>'.$value.'</OPTION>';
+//}
+//echo '</SELECT></TD></TR>';
+//
+//echo '<TR><TD><B>Watermark Spacing:</B></TD><TD><SELECT NAME="wmm">';
+//for ($i = 0; $i <= 100; $i++) {
+//     echo '<OPTION VALUE="'.$i.'"';
+//     if ((empty($_REQUEST['wmm']) && ($i == 5)) || (@$_REQUEST['wmm'] == $i)) {
+//             echo ' SELECTED';
+//     }
+//     echo '>'.$i.'</OPTION>';
+//}
+//echo '</SELECT>% (default = 5%)</TD></TR>';
+
+echo '<TR><TD><B>Extract EXIF Thumbnail only:</B></TD><TD><INPUT TYPE="CHECKBOX" NAME="xto" VALUE="1"'.(@$_REQUEST['xto'] ? ' CHECKED' : '').'> (overrides all processing if EXIF thumbnail is present)</TD></TR>';
+
+//echo '<TR><TD><B>Rotate by angle</B></TD><TD><INPUT TYPE="TEXT" NAME="ra" SIZE="2" MAXLENGTH="3" VALUE="'.htmlentities(@$_REQUEST['ra'], ENT_QUOTES).'">° (counter-clockwise)</TD></TR>';
+
+echo '<TR><TD><B>Force non-proportional resize:</B></TD><TD><INPUT TYPE="CHECKBOX" NAME="iar" VALUE="1"'.(@$_REQUEST['iar'] ? ' CHECKED' : '').'> (stretches image to <I>width</I> x <I>height</I>)</TD></TR>';
+
+echo '</TABLE>';
+echo '<INPUT TYPE="SUBMIT" VALUE="Create Image">';
+echo '</FORM>';
+
+?>
+</BODY>
+</HTML>
+
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.object.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.object.php
new file mode 100644 (file)
index 0000000..8fbf1c0
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpThumb.demo.object.php                                 //
+// James Heinrich <info@silisoftware.com>                   //
+//                                                          //
+// Example of how to use phpthumb.class.php as an object    //
+//                                                          //
+//////////////////////////////////////////////////////////////
+
+// create new phpThumb() object
+require_once('../phpthumb.class.php');
+$phpThumb = new phpThumb();
+
+// set data
+$image_filename = '../images/loco.jpg';
+$phpThumb->setSourceFilename($image_filename);
+// or $phpThumb->setSourceData($binary_image_data);
+// or $phpThumb->setSourceImageResource($gd_image_resource);
+
+// set parameters (see "URL Parameters" in phpthumb.readme.txt)
+$phpThumb->w = 100;
+//$phpThumb->h = 100;
+//$phpThumb->fltr[] = 'gam|1.2';
+
+// set options (see phpThumb.config.php)
+// here you must preface each option with "config_"
+$phpThumb->config_output_format    = 'png';
+$phpThumb->config_imagemagick_path = '/usr/local/bin/convert';
+//$phpThumb->config_allow_src_above_docroot = true; // needed if you're working outside DOCUMENT_ROOT, in a temp dir for example
+
+// generate & output thumbnail
+$output_filename = 'outfile.gif';
+if ($phpThumb->GenerateThumbnail()) { // this line is VERY important, do not remove it!
+       if ($output_filename) {
+               if ($phpThumb->RenderToFile($output_filename)) {
+                       // do something on success
+                       echo 'Successfully rendered:<br><img src="'.$output_filename.'">';
+               } else {
+                       // do something with debug/error messages
+                       die('Failed:<pre>'.implode("\n\n", $phpThumb->debugmessages).'</pre>');
+               }
+       } else {
+               $phpThumb->OutputThumbnail();
+       }
+} else {
+       // do something with debug/error messages
+       die('Failed:<pre>'.implode("\n\n", $phpThumb->debugmessages).'</pre>');
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.random.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.random.php
new file mode 100644 (file)
index 0000000..40e3209
--- /dev/null
@@ -0,0 +1,95 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpThumb.demo.random.php                                 //
+// James Heinrich <info@silisoftware.com>                   //
+//                                                          //
+// Display a random image from a specified directory.       //
+// Run with no parameters for usage instructions.           //
+//                                                          //
+//////////////////////////////////////////////////////////////
+
+function SelectRandomImage($dirname='.', $portrait=true, $landscape=true, $square=true) {
+       // return a random image filename from $dirname
+       // the last 3 parameters determine what aspect ratio of images
+       // may be returned
+       $possibleimages = array();
+       if ($dh = opendir($dirname)) {
+               while ($file = readdir($dh)) {
+                       if (is_file($dirname.'/'.$file) && eregi('\.(jpg|jpeg|gif|png|tiff|bmp)$', $file)) {
+                               if ($gis = @GetImageSize($dirname.'/'.$file)) {
+                                       if ($portrait && ($gis[0] < $gis[1])) {
+                                               // portrait
+                                               $possibleimages[] = $file;
+                                       } elseif ($landscape && ($gis[0] > $gis[1])) {
+                                               // landscape
+                                               $possibleimages[] = $file;
+                                       } elseif ($square) {
+                                               // square
+                                               $possibleimages[] = $file;
+                                       }
+                               }
+                       }
+               }
+               closedir($dh);
+       }
+       if (empty($possibleimages)) {
+               return false;
+       }
+       if (phpversion() < '4.2.0') {
+               mt_srand(time());
+       }
+       $randkey = mt_rand(0, count($possibleimages) - 1);
+       return realpath($dirname.'/'.$possibleimages[$randkey]);
+}
+
+if (@$_REQUEST['dir']) {
+       if (is_dir($_REQUEST['dir'])) {
+
+               if (!@$_REQUEST['o']) {
+                       $_REQUEST['o'] = 'PLS';
+               }
+               $_REQUEST['o'] = strtoupper($_REQUEST['o']);
+               $portrait  = (strpos(@$_REQUEST['o'], 'P') !== false);
+               $landscape = (strpos(@$_REQUEST['o'], 'L') !== false);
+               $square    = (strpos(@$_REQUEST['o'], 'S') !== false);
+               $randomSRC = SelectRandomImage($_REQUEST['dir'], $portrait, $landscape, $square);
+               if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+                       $randomSRC = str_replace('\\', '/', eregi_replace('^'.realpath(@$_SERVER['DOCUMENT_ROOT']), '', realpath($randomSRC)));
+               } else {
+                       $randomSRC = str_replace(realpath(@$_SERVER['DOCUMENT_ROOT']), '', realpath($randomSRC));
+               }
+
+               $otherParams = array();
+               foreach ($_GET as $key => $value) {
+                       if (($key == 'dir') || ($key == 'o')) {
+                               continue;
+                       }
+                       if (is_array($value)) {
+                               foreach ($value as $vkey => $vvalue) {
+                                       $otherParams[] = urlencode($key).'['.urlencode($vkey).']='.urlencode($vvalue);
+                               }
+                       } else {
+                               $otherParams[] = urlencode($key).'='.urlencode($value);
+                       }
+               }
+               header('Location: ../phpThumb.php?src='.urlencode($randomSRC).'&'.implode('&', $otherParams));
+               exit;
+
+       } else {
+               die($_REQUEST['dir'].' is not a directory');
+       }
+
+} else {
+
+       echo '<html><body>Usage: <b>'.basename($_SERVER['PHP_SELF']).'?dir=<i>&lt;directory&gt;</i>&amp;<i>&lt;phpThumb parameters&gt;</i></b>&amp;o=<i>(P|L|S)</i><br><br>Examples:<ul>';
+       echo '<li>'.basename($_SERVER['PHP_SELF']).'?./images/&o=L <i>(landscape images only)</i></li>';
+       echo '<li>'.basename($_SERVER['PHP_SELF']).'?./images/&o=PS <i>(portrait or square images only)</i></li>';
+       echo '</ul></body></html>';
+
+}
+
+?>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.showpic.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/phpThumb.demo.showpic.php
new file mode 100644 (file)
index 0000000..4ab1ecc
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+//                                                          //
+// phpThumb.demo.showpic.php                                //
+// James Heinrich <info@silisoftware.com>                   //
+// 23 Feb 2004                                              //
+//                                                          //
+// This code is useful for popup pictures (e.g. thumbnails  //
+// you want to show larger, such as a larger version of a   //
+// product photo for example) but you don't know the image  //
+// dimensions before popping up. This script displays the   //
+// image with no window border, and resizes the window to   //
+// the size it needs to be (usually better to spawn it      //
+// large (600x400 for example) and let it auto-resize it    //
+// smaller), and if the image is larger than 90% of the     //
+// current screen area the window respawns itself with      //
+// scrollbars.                                              //
+//                                                          //
+// Usage:                                                   //
+// window.open('showpic.php?src=big.jpg&title=Big+picture', //
+//   'popupwindowname',                                     //
+//   'width=600,height=400,menubar=no,toolbar=no')          //
+//                                                          //
+// See demo linked from http://phpthumb.sourceforge.net    ///
+//////////////////////////////////////////////////////////////
+?>
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+       <title><?php echo @$_GET['title']; ?></title>
+
+       <script language="Javascript">
+       <!--
+       // http://www.xs4all.nl/~ppk/js/winprop.html
+       function CrossBrowserResizeInnerWindowTo(newWidth, newHeight) {
+               if (self.innerWidth) {
+                       frameWidth  = self.innerWidth;
+                       frameHeight = self.innerHeight;
+               } else if (document.documentElement && document.documentElement.clientWidth) {
+                       frameWidth  = document.documentElement.clientWidth;
+                       frameHeight = document.documentElement.clientHeight;
+               } else if (document.body) {
+                       frameWidth  = document.body.clientWidth;
+                       frameHeight = document.body.clientHeight;
+               } else {
+                       return false;
+               }
+               if (document.layers) {
+                       newWidth  -= (parent.outerWidth - parent.innerWidth);
+                       newHeight -= (parent.outerHeight - parent.innerHeight);
+               }
+               // original code
+               //parent.window.resizeTo(newWidth, newHeight);
+
+               // fixed code: James Heinrich, 20 Feb 2004
+               parent.window.resizeBy(newWidth - frameWidth, newHeight - frameHeight);
+
+               return true;
+       }
+       // -->
+       </script>
+</head>
+<body style="margin: 0px;">
+<?php
+
+if (get_magic_quotes_gpc()) {
+       $_GET['src'] = stripslashes($_GET['src']);
+}
+
+if ($imgdata = @getimagesize($_GET['src'])) {
+
+       // this would be an excellent place to put some caching stuff to avoid re-scanning every picture every time
+
+       // check for maximum dimensions to allow no-scrollbar window
+       echo '<script language="Javascript">'."\n";
+       echo 'if (((screen.width * 1.1) > '.$imgdata[0].') || ((screen.height * 1.1) > '.$imgdata[1].')) {'."\n";
+       // screen is large enough to fit whole picture on screen with 10% margin
+       echo 'document.writeln(\'<img src="'.$_GET['src'].'" border="0">\');';
+       echo 'CrossBrowserResizeInnerWindowTo('.$imgdata[0].', '.$imgdata[1].');'."\n";
+       echo '} else {'."\n";
+       // image is too large for screen: add scrollbars by putting the image inside an IFRAME
+       echo 'document.writeln(\'<iframe width="100%" height="100%" marginheight="0" marginwidth="0" frameborder="0" scrolling="on" src="'.$_GET['src'].'">Your browser does not support the IFRAME tag. Please use one that does (IE, Firefox, etc).<br><img src="'.$_GET['src'].'"></iframe>\');';
+       echo '}'."\n";
+       echo '</script>';
+
+} else {
+
+       // cannot determine correct window size, or correct size too large: add scrollbars by putting the image inside an IFRAME
+       echo '<iframe width="100%" height="100%" marginheight="0" marginwidth="0" frameborder="0" scrolling="on" src="'.$_GET['src'].'"></iframe>';
+
+}
+
+?>
+</body>
+</html>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/readme.demos.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/demo/readme.demos.txt
new file mode 100644 (file)
index 0000000..0b47881
--- /dev/null
@@ -0,0 +1,21 @@
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+//    phpThumb() included and related demos                 //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+The phpThumb() distribution includes several demos, and it
+should be self-evident what they do when you run them.
+
+Other people have created useful demos and/or extensions to
+phpThumb(). Some of these I know of are:
+
+* iManager          - http://www.j-cons.com/news/
+* iBrowser          - http://www.j-cons.com/news/
+* ThumbnailSelector - http://www.silisoftware.com/scripts/ThumbnailSelector
+
+If you know of any others you think should be mentioned here
+please let me know: info@silisoftware.com
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.changelog.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.changelog.txt
new file mode 100644 (file)
index 0000000..11570bc
--- /dev/null
@@ -0,0 +1,921 @@
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+
+v1.6.1 - ??? ??, 2005
+  * Filters now use GD functions where available (using
+    ImageFilter, only available in PHP v5.0.0+ with bundled
+    version of GD). Enabled for: colorize, negative,
+    grayscale, brightness, contrast, gaussian blur, selective
+    blur, mean removal  (thanks donlaurØmac*com)
+  * Added config_prefer_imagemagick (defaults=true)
+  * Added phpthumb_filters::Grayscale()        'gray'
+  * Added phpthumb_filters::ReduceColorDepth() 'rcd'
+  * Added phpthumb_filters::Brightness()       'brit'
+  * Added phpthumb_filters::Contrast()         'cont'
+  * Added phpthumb_filters::Saturation()       'sat'
+  * Added phpthumb_filters::EdgeDetect()    'edge' [PHP5 only]
+  * Added phpthumb_filters::BlurGaussian()  'gblr' [PHP5 only]
+  * Added phpthumb_filters::BlurSelective() 'gblr' [PHP5 only]
+  * Added phpthumb_filters::MeanRemoval()   'mean' [PHP5 only]
+  * Added phpthumb_filters::Smooth()        'smth' [PHP5 only]
+  * New timing debug info in phpThumbDebug
+  * Added config_cache_differentiate_offsite
+  * config_die_on_error now defaults to false
+  * ResolveSource works better
+  * cache filenames with 'fltr' parameters have changed
+  * Filters now skip processing if amount=0 or similar
+  * [#1263051] 'far' now accepts L,R,T,B,C as values giving
+    alignment of left/right/top/bottom/center respectively.
+    Old value of '1' defaults to centered
+    (thanks webgrappaØusers*sourceforge*net)
+  * Bugfix: PNG transparency wasn't working with 'far'
+  * Bugfix: source images with EXIF thumbnails that differ in
+    aspect ratio no longer use EXIF thumbnails as source unless
+    no other options exist
+  * Bugfix: setting 'src' with setParameter now invokes
+    setSourceFilename to properly set $this->sourceFilename
+    (thanks Gazou)
+  * Bugfix: 'zc' had poor quality when used with ImageMagick
+  * Bugfix: 'aoe' parameter broken when not using ImageMagick
+    (thanks frankieali4Øhotmail*com)
+  * Bugfix: fixed issue with symbolic links
+    (thanks hornet136Øgmail*com)
+  * Bugfix: config_max_source_pixels now defaults to same
+    calculation as used in phpThumb.config.php
+    (thanks vukshaØhotmail*com)
+  * Bugfix: Offsite cached thumbnails no longer use unique
+    referer (now either nothing or "_offsite")
+    (thanks swaayeØyahoo*com)
+  * Bugfix: "Unknown image type identified by \93<?ph\94" errors
+    in some installations  (thanks frankieali4Øhotmail*com)
+
+v1.6.0 - July 18, 2005
+  * Included new file phpThumb.demo.random.php to select a
+    random image from a specified folder, optionally only
+    landscape and/or portrait and/or square images, and to
+    display it to phpThumb.php
+    (thanks mikeØgdaymate*nl)
+  * Added /docs/phpthumb.faq.txt
+  * Added /demo/readme.demos.txt
+  * Added 'wp', 'hp', 'wl', 'hl', 'ws', 'hs' parameters for
+    width and height of portrait, landscape and square
+    images. This allows you to display any image aspect
+    ratio at the size you want without knowing ahead of time
+    whether the image is wide or tall.
+    (thanks mikeØgdaymate*nl)
+  * phpThumb.php can now also be called by passing parameters
+    in $_SERVER['PATH_INFO']. Please see phpthumb.readme.txt
+    (thanks javierØguegue*net)
+  * MySQL data pulling configuration moved from phpThumb.php
+    to phpThumb.config.php
+  * "file" and "goto" parameters are now disabled by
+    default (configurable in phpThumb.config.php but not
+    recommended)
+  * Cached files are now used from first instance, avoiding
+    call to OutputThumbnail and preventing browser-side
+    cache failure
+  * Added config_allow_src_above_docroot (default=false) to
+    prevent browsing filesystem outside document_root
+    (thanks davidØint0x80*com)
+  * Added config_allow_src_above_phpthumb (default=true) to
+    prevent access to files except in subdirectories of
+    phpThumb installation  (thanks davidØint0x80*com)
+  * Added setParameter() and getParameter() functions
+    (thanks werner*kraussØhallstatt*net)
+  * SafeBackTick() renamed to SafeExec() and all execution
+    functions are tried (exec, shell_exec, system, passthru)
+    are tried in case one or more are disabled
+    (thanks bkainersØgmail*com)
+  * config_output_allow_enlarging has been removed from
+    phpthumb.class.php, and 'output_allow_enlarging' has
+    been removed from phpThumb.config.php
+  * New default detection method for
+    $PHPTHUMB_CONFIG['document_root']
+  * Bugfix: inconsitant handling of boolean parameters
+    passed "0" (isset vs !empty())  (thanks manniØzapto*de)
+  * Bugfix: text watermarks now support multiple lines
+    (thanks hanno*vandenbergØhccnet*nl)
+  * Bugfix: suppress error message in
+    ImageCreateFromStringReplacement()
+    (thanks srimandadapuØyahoo*com)
+  * Bugfix: 'aoe' was ignored in object mode
+    (thanks tonyØnylink*com)
+  * Bugfix: ResolveFilenameToAbsolute() failed on non-
+    existant filenames (file to be written, for example)
+  * Bugfix: 'aoe' parameter was ignored in cache filename
+    (thanks tonyØnylink*com)
+  * Bugfix: non-TTF watermark text had inverted opacity
+    scale. All 'wmt' is now 100=opaque, 0=transparent
+    (thanks mailØmmjaeger*com)
+  * Bugfix: cache file failed if document_root had
+    trailing slash.  (thanks lovingloboØgmail*com)
+  * Bugfix: [#1219422] Cache filename structure modified to
+    avoid excessively long filenames (cache filenames are
+    now limited to 142 characters + length of
+    $_SERVER['SERVER_NAME'])
+    (thanks trungieØusers*sourceforge*net)
+  * Bugfix: [#1211729] phpThumb.php fails to locate
+    phpThumb.config.php if the two files are in the same
+    directory but phpThumb.php is run through a sym link.
+    (thanks allanbushØusers*sourceforge*net)
+
+v1.5.4 - May 27, 2005
+  * Security issue with passthrough addressed
+    (thanks davidØint0x80*com)
+  * 'wmt' now reads TTF fonts from the config font
+    directory, or from anywhere if a path is specified in
+    the font filename
+    (thanks mailØmmjaeger*com)
+  * Changed default error_die_on_source_failure to true in
+    phpThumb.config.php
+  * Bugfix: Firefox (possibly other browsers) did not like
+    the new (faster) cache retrieval method with Location
+    header redirection if the cached filename does not have
+    a recognized filename extension (.jpeg, .png, .gif).
+    Cached images have therefore been renamed from *_jpeg to
+    *.jpeg and the _qXX parameter has been removed for PNG
+    and GIF output. Please use the included cache renamer:
+    /demo/phpThumb.demo.cacheconvert2.php
+    (thanks mailØmmjaeger*com)
+  * Bugfix: Changed "Content-type" to "Content-Type" in all
+    header calls
+  * Bugfix: 'wmt' text opacity was broken
+    (thanks mstuhuØweb*de)
+  * Bugfix: variable name typo in phpThumb.demo.object.php
+    (thanks mbØmarko-bischof*de)
+  * Bugfix: no GD support for source image format now
+    reported as such for remote images
+    (thanks andgu842Østudent*liu*se)
+  * Bugfix: very narrow images no longer produce Invalid
+    Image Dimensions error  (thanks mailØmmjaeger*com)
+
+v1.5.3 - May 4, 2005
+  * Added new filters:
+    - 'wb' (White Balance) [ex: &fltr[]=wb|<c>]
+      where <c> is the target hex color to white balance
+      on, this color is what "should be" white, or light
+      gray. The filter attempts to maintain brightness so
+      any gray color can theoretically be used. If <c> is
+      omitted the filter guesses based on brightest pixels
+      in each of RGB
+  * Cached files are used by a Location header instead of
+    being passed through phpThumb.php using readfile
+    (thanks newtnØthrillnerds*com)
+  * Added 'cache_source_filemtime_ignore_local' and
+    'cache_source_filemtime_ignore_remote' configurations
+    to ignore source modification and/or removal
+    (thanks raynerapeØgmail*com)
+  * Added 'md5s' parameter, which is the MD5 hash of the
+    source image -- if this parameter is passed with the
+    hash of the source image then the source image is not
+    checked for existance or modification and the cached
+    file is used (if available). If 'md5s' is passed an
+    empty string then phpThumb.php dies and outputs the
+    correct MD5 hash value.  This parameter is the single-
+    file equivalent of 'cache_source_filemtime_ignore_*'
+    configuration paramters  (thanks raynerapeØgmail*com)
+  * Added /demo/phpThumb.demo.object.php
+  * Unused parameter 'bgt' removed
+  * Added empty /cache/source/ directory to distribution
+  * Added /demo/ and /docs/ and /fonts/ directories
+  * Set default config_use_exif_thumbnail_for_speed = false
+  * Bugfix: Wrapped output buffering around all
+    include_once calls to prevent headers getting sent
+    accidentally
+  * Bugfix: md5_file and imagecolorallocatealpha calls
+    were undefined under PHP v4.1.x  (thanks tomØemile*com)
+  * Bugfix: default 'f' parameter ('jpeg') overrode
+    config_output_format in object mode
+    (thanks mailØmmjaeger*com)
+  * Bugfix: suppressed error message for IIS shell_exec
+    errors  (thanks tomØemile*com)
+  * Bugfix: Added PHP version check for stream_set_timeout
+    for HTTP sources  (thanks raynerapeØgmail*com)
+  * Bugfix: overlay margins of 0.5-1.0 cause invalid image
+    dimensions error  (thanks mailØmmjaeger*com)
+  * Bugfix: underlay margins were not working
+    (thanks mailØmmjaeger*com)
+  * Bugfix: [#1187735] EXIF thumbnails were incorrectly
+    output to the browser directly if requested thumbnail
+    exactly matched EXIF dimensions
+    (thanks rebootØusers*sourceforge*net)
+
+v1.5.2 - April 20, 2005
+  * phpThumb.config.php is renamed to
+    phpThumb.config.php.default to prevent accidental
+    overwriting. Please migrate your old settings to the new
+    file, delete your old config and rename the default to
+    phpThumb.config.php
+  * Added new filters:
+    - 'blur' (Blur) [ex: &fltr[]=blur|<radius>]
+      where (0 < <radius> < 25) (default = 1)
+      (thanks thoensiØnetcom*no for code)
+    - 'hist' (Histogram)
+      [ex: &fltr[]=hist|<b>|<c>|<w>|<h>|<a>|<o>|<m>]
+      Where <b> is the color band(s) to display, from back
+      to front (one or more of "rgba*" for Red Green Blue
+      Alpha and Grayscale respectively);
+      <c> is a semicolon-seperated list of hex colors to
+      use for each graph band (defaults to FF0000, 00FF00,
+      0000FF, 999999, FFFFFF respectively);
+      <w> and <h> are the width and height of the overlaid
+      histogram in pixels, or if <= 1 then percentage of
+      source image width/height;
+      <a> is the alignment (same as for "wmi" and "wmt");
+      <o> is opacity from 0 to 100;
+      <m> is the edge (and inter-tile) margin in percent
+    - 'over' (OVERlay/underlay image) overlays an image on
+      the thumbnail, or overlays the thumbnail on another
+      image (to create a picture frame for example)
+      [ex: &fltr[]=over|<i>|<u>|<m>|<o>]
+      where <i> is the image filename; <u> is "0" (default)
+      for overlay the image on top of the thumbnail or "1"
+      for overlay the thumbnail on top of the image; <m> is
+      the margin - can be absolute pixels, or if < 1 is a
+      percentage of the thumbnail size [must be < 0.5]
+      (default is 0 for overlay and 10% for underlay);
+      <o> is opacity (0 = transparent, 100 = opaque)
+      (thanks raynerapeØgmail*com, shabazz3Ømsu*edu)
+    - 'gray' (GRAYscale) [ex: &fltr[]=gray]
+      is an alias to 100% desaturation
+  * New configuration 'cache_source_directory' allows the
+    unprocessed source image to be cached when source is
+    HTTP or from a database  (thanks raynerapeØgmail*com)
+  * Added 'cache' subdirectory to phpThumb distribution
+    since this is the default location for the cache
+    folder.
+  * Default value for config_error_die_on_source_failure
+    changed to true  (thanks shabazz3Ømsu*edu)
+  * Added checks to make sure $this->gdimg_output is a
+    resource before allowing calls to RenderToFile or
+    OutputThumbnail
+  * Better error messages when phpThumb.config.php missing
+  * Bugfix: watermark overlay margins were wrong
+  * Bugfix: 'lvl' filter no longer processes if not needed
+  * Bugfix: off-server thumbnail error message was wrong
+  * Bugfix: several PHP safe mode fixes
+    (thanks virginiaØalertbutnotalarmed*com)
+  * Bugfix: cache filenames broken for filter parameters
+    with paths  (thanks srcericØusers.sourceforge.net)
+
+v1.5.1 - April 06, 2005
+  * Added some security upgrades:
+    - 'config_*' parameters cannot be passed by GETstring
+    - 'config_nooffsitelink_require_refer' is a new option
+      (disabled by default) that only allows calls to
+      phpThumb() from a refering domain listed in
+      'config_nooffsitelink_valid_domains'
+    - disallowed paramters now generate an error image if
+      present in the GETstring
+    - 'high_security_enabled' if set to true enabled new
+      mode of verification, and requires a small function
+      to generate a hash for calls to phpThumb:
+      echo '<img src="'.phpThumbURL('src=pic.jpg&w=50').'">';
+      This function is supplied at the bottom of
+      phpThumb.config.php  (thanks paulØstonie*co*uk)
+  * Added new parameter "new" (phpThumb.php only) which can
+    create a new image without using "src" parameter. Set
+    "&new=<b>|<o>" where <b> is the background hex color,
+    <o> is (optional) opacity (0=transparent, 100=opaque).
+    (thanks mailØmmjaeger*com)
+  * Added new filters:
+    - 'sep' (Sepia) [ex: &fltr[]=sep|<value>|<color>]
+      where <value> is a number between 0 and 100 for the
+      amount of colorization (default=50), and <color> is
+      the hex color to colorize to (default=A28065).
+      (thanks mailØmmjaeger*com)
+    - 'lvl' (Levels) [ex: &fltr[]=lvl|<channel>|<min>|<max>
+      where <channel> can be one of 'r', 'g', 'b', 'a' (for
+      Red, Green, Blue, Alpha respectively), or '*' for all
+      channels based on average grayscale value (default).
+      <min> and <max> are the clip points for the levels
+      (range = 0-255) and are set to clip 0.1% of each end
+      by default. Use -1 for min and/or max to invoke auto-
+      detect mode. Using default parameters (&fltr[]=lvl)
+      is similar to Auto Contrast in Adobe Photoshop.
+  * Bugfix: Image MIME header was incorrect for cached
+    images.
+  * Bugfix: Cache was broken for images pulled from a
+    database in phpThumb.php
+    (thanks dragutin*cvetkovicØdragontech-ltd*com)
+  * Bugfix: Hotlink/Offsite prevention was broken when
+    image was already cached.
+  * Bugfix: ImageMagick path was incorrect in some cases
+    (thanks joshgØtwcny*rr*com)
+  * Bugfix: ProportionalResize() in phpthumb.functions.php
+    had a broken check for default values
+    (thanks Bert*ClaeysØarinso*com)
+  * Bugfix: transparency now preserved for GIF & PNG input
+    (thanks tristanØcyrax*ch)
+  * Bugfix: transparency now supported for GIF output
+    (thanks j_ivanovØabv*bg)
+  * Bugfix: alpha transparency could be lost in ApplyMask()
+    (thanks analyzerxØgmail*com)
+  * Bugfix: errors on 16/32-bit BMPs
+    (thanks mattØhellstrominc*com)
+  * Bugfix: Added datestamp to cached filenames for remote
+    (HTTP) files, and better warning for caching
+    (thanks a*gambinoØabramo*it)
+  * Faster BMP parsing  (thanks sgeppertØmail*utexas*edu)
+  * Added 'error_die_on_source_failure' configuration to
+    allow invalid source images to show an error rather
+    than output unmodified source image.
+    (thanks mindpixelØgmail*com)
+  * Added $phpThumb->fatalerror which will contain the
+    text of the fatal error if 'error_die_on_error' is
+    false.  (thanks mindpixelØgmail*com)
+
+v1.5.0 - February 4, 2005
+  * Added new filter parameter 'fltr' that is an array and
+    can apply multiple effects in sequence. Current filters
+    that can be called are:
+    - 'gam' (Gamma Correction) [ex: &fltr[]=gam|<value>]
+      where <value> can be a number >0 to 10+ (default 1.0)
+    - 'ds' (DeSaturate) [ex: &fltr[]=ds|<value>]
+      where <value> is a number between zero (no change)
+      and 100 (complete desaturation -- grayscale), or it
+      can be a negative number for saturation boost.
+      (thanks mailØmmjaeger*com)
+    - 'clr' (Colorize) [ex: &fltr[]=clr|<value>|<color>]
+      where <value> is a number between 0 and 100 for the
+      amount of colorization, and <color> is the hex color
+      to colorize to.  (thanks mailØmmjaeger*com)
+    - 'neg' (Negative) [ex: &fltr[]=neg]
+      inverts the color
+    - 'th' (ThresHold) [ex: &fltr[]=th|<val>] (range 0-255)
+      every grayscale pixel brighter than <val> is set to
+      white, every darker pixel is set to black
+      (thanks mailØmmjaeger*com)
+    - 'usm' (UnSharpMask) [ex: &fltr[]=usm|<a>|<r>|<t>]
+      where <a> is the amount (default = 80), <r> is the
+      radius (default = 0.5), <t> is the threshold
+      (default = 3).
+    - 'wmi' (WaterMarkImage)
+      [ex: &fltr[]=wmi|<f>|<a>|<o>|<m>] where <f> is the
+      filename of the image to overlay, <a> is the
+      alignment (one of BR, BL, TR, TL, C, R, L, T, B, *
+      where B=bottom, T=top, L=left, R=right, C=centre,
+      *=tile), <o> is opacity from 0 to 100, <m> is the
+      edge (and inter-tile) margin in percent
+    - 'wmt' (WaterMarkText)
+      [ex: &fltr[]=wmt|<t>|<s>|<a>|<c>|<f>|<o>|<m>|<n>]
+      where:
+      <t> is the text to use as a watermark,
+      <s> is the font size (1-5 for built-in font, or point
+        size for TrueType fonts),
+      <a> is the alignment (one of BR, BL, TR, TL, C, R, L,
+        T, B, * where B=bottom, T=top, L=left, R=right,
+        C=centre, *=tile),
+      <c> is the hex color of the text
+      <f> is the filename of the TTF file (optional, if
+        omitted a built-in font will be used)
+      <o> is opacity from 0 to 100,
+      <m> is the edge (and inter-tile) margin in percent
+      <n> is the angle
+      (thanks mailØmmjaeger*com)
+    - 'flip' [ex: &fltr[]=flip|x   or   &fltr[]=flip|y]
+      flip image on X or Y axis
+      (thanks mailØmmjaeger*com)
+    - 'elip' [ex: &fltr[]=elip]
+      similar to rounded corners but more extreme
+      (thanks mailØmmjaeger*com)
+    - 'mask' [ex: &fltr[]=mask|filename.png]
+      greyscale values of mask are applied as the alpha
+      channel to the main image. White is opaque, black
+      is transparent.
+    - 'bvl' (BeVeL) [ex: &fltr[]=bvl|<w>|<c1>|<c2>]
+      where <w> is the bevel width, <c1> is the hex color
+      for the top and left shading, <c2> is the hex color
+      for the bottom and right shading
+      (thanks mailØmmjaeger*com)
+    - 'fram' (FRAMe) draws a frame, similar to border but
+      more configurable  (thanks mailØmmjaeger*com)
+      [ex: &fltr[]=fram|<w1>|<w2>|<c1>|<c2>|<c3>]
+      where <w1> is the width of the main border, <w2> is
+      the width of each side of the bevel part, <c1> is the
+      hex color of the main border, <c2> is the highlight
+      bevel color, <c3> is the shadow bevel color
+    - 'drop' (DROP shadow)
+      [ex: &fltr[]=drop|<d>|<w>|<clr>|<a>]
+      where <d> is distance from image to shadow, <w> is
+      width of shadow fade (not yet implemented), <clr> is
+      the hex color of the shadow, and <a> is the angle of
+      the shadow (default=225)
+    - 'ric' (Rounded Image Corners)
+      [ex: &fltr[]=ric|<x>|<y>]
+      where <x> is the horizontal corner radius,
+      <y> is the vertical corner radius
+  * Split out filter functions into phpthumb.filters.php
+  * 'usa','usr','ust' parameters have been removed and
+    replaced with the 'fltr' call (see above)
+  * 'wmf','wma','wmp','wmm' parameters have been removed
+    and replaced with the 'fltr' call (see above)
+  * 'brx','bry','bw' parameters have been removed
+    and replaced with the 'fltr' call (see above)
+  * 'bw=0' to force aspect ratio has been replaced by
+    'far=1' (force aspect ratio)
+  * Filters that produce transparent sections (such as
+    Rounded Corners, Ellipse, Mask, Rotate) are now output
+    as 32-bit/alpha PNG, or flattened with "bg" background
+    color for JPEG/GIF output  (thanks mailØmmjaeger*com)
+  * Added 'zc' (Zoom Crop) parameter
+    (thanks arcookeØgmail*com, mailØmmjaeger*com,
+    pl16056Ømacnews*de, kezzasmØusers*sourceforge*net, etc)
+  * AutoRotate now can use EXIF orientation tag ('ar=x')
+  * Added 'ttf_directory' configuration parameter for
+    TrueType watermarks  (thanks mailØmmjaeger*com)
+  * Added "Last-Modified" header to cache portion of
+    phpThumb.php which should allow better user-side
+    caching of thumbnails.  (thanks derekØnetsimple*net)
+  * Added 'cache_disable_warning' configuration which will
+    cause an error image to be displayed if the cache
+    directory isn't configured, unless explicitly disabled
+  * Added 'nooffsitelink_enabled' configuration which
+    prevents linking to thumbnails on your server from
+    another domain. Defaults to watermaking linked images
+    with text warning message.
+    (thanks anteØabstraktmedia*com)
+  * Added 'error_image_width' & 'error_image_height'
+    config variables  (thanks mailØmmjaeger*com)
+  * Rounded image corners now requires GD v2.0.1 and PHP
+    v4.3.2. Corners are transparent (for PNG output) and
+    antialiased.
+  * Rotate by arbitary angle ('ra') now has a transparent
+    background for PNG output
+  * Cached filenames now have an additional component for
+    applied filters
+  * Cached filenames now have an additional component for
+    HTTP referer, but only if the refering domain does not
+    match the domain of the server (designed to prevent
+    imaged linked from offsite with error message being
+    cached the same as the local cached version)
+  * Added setSourceImageResource() to allow use of an
+    existing GD image resource for thumbnailing
+    (thanks danØgonmad*co*uk)
+  * Now including phpThumb.demo.demo1.php (main demo page)
+    and phpThumb.demo.demo2.php (configurable demo page)
+    in the phpThumb() distribution
+    (thanks mailØmmjaeger*com)
+  * Added many more debugging/tracing message points
+  * Added set_time_limit(30) to phpThumb.php
+  * Bugfix: ImageMagick not used if `which convert` points
+    to a link and not a file  (thanks bkainersØgmail*com)
+  * Bugfix: 'bgt' parameter was sometimes misspelled 'bct'
+  * Bugfix: 'wmm' couldn't be set to zero
+  * Bugfix: 'wmm' parameter was only applied to top/left of
+    image
+  * Bugfix: auto-detection of document_root failed on
+    Windows  (thanks xbartvØhotmail*com)
+  * Bugfix: phpThumbDebug could be bypassed if EXIF
+    thumbnail present  (thanks olgradinØcheckfree*com)
+  * Bugfix: cache file wasn't being written if EXIF data
+    was used directly  (thanks olgradinØcheckfree*com)
+  * Bugfix: phpThumb.demo.showpic.php was broken by popup
+    blockers for images larger than the screen.
+    (thanks mailØmmjaeger*com)
+
+v1.4.11 - October 11, 2004
+  * Changed sx/sy/sw/sh parameters to allow decimal values
+    (>0 but <1) to represent percent of source image
+    (thanks mordorØdefault*co*yu)
+  * Added config_error_silent_die_on_error for no-output
+    die on fatal errors (thanks johannesØformformat*se)
+  * Added auto-detection of probable 'document_root' if
+    that key is not available in $_SERVER
+  * Bugfix: Check `which convert` failing with error
+    message (thanks chadØchadshome*com)
+  * Bugfix: Image cropping to invalid areas outside source
+    image caused text output (thanks mordorØdefault*co*yu)
+
+v1.4.10 - August 22, 2004
+  * Bugfix: cached files not written in most cases
+    (thanks kizerØcourtkizer*com, snuffØinbox*ru)
+  * Bugfix: ApacheLookupURIarray() crashes in CGI mode
+    (thanks hanskrentelØyahoo*de)
+  * Bugfix: phpthumb_bmpfile2gd() was broken
+    (thanks iØmindlace*net)
+
+v1.4.9 - August 9, 2004
+  * Bugfix: changed destination filename in RenderToFile()
+    (thanks alextkØwalla*com)
+  * Bugfix: problems with HTTP image source when called as
+    an object (thanks alextkØwalla*com)
+
+v1.4.8 - August 4, 2004
+  * $this->error has changed to $this->errors and is now
+    an array of strings (instead of a single string)
+  * A lot more error conditions (invalid cache directory,
+    etc) are now reported in $this->errors
+    (thanks aidan*slingsbyØlineone*net)
+  * Removed all define(CONSTANT) in the phpThumb()
+    constructor - you can now access:
+    - PHPTHUMB_VERSION   == $this->phpthumb_version;
+    - PHPTHUMB_OSSLASH   == $this->osslash;
+    - PHPTHUMB_ISWINDOWS == $this->iswindows;
+  * Bugfix: Error message from apache_lookup_uri() failing
+    under Apache2 now reported cleanly
+    (thanks derbaffØyahoo*com)
+  * Bugfix: missing phpthumb_functions:: class name for
+    ImageTypeToMIMEtype() call in ExtractEXIFgetImageSize()
+    (thanks aidan*slingsbyØlineone*net)
+  * Bugfix: ImageTypeToMIMEtype() was broken for PHP older
+    than v4.3.0  (thanks georg*schreiberØbatch-pc*es)
+  * Bugfix: RenderToFile() now returns false if it fails
+    (thanks phpthumbØsendthemtomir*com)
+  * Bugfix: Corrupt JPEG/PNG/GIF files that failed
+    ImageCreateFrom*() were not being passed to ImageMagick
+    for fallback, nor passed through unmodified if IM was
+    unavailable or failed  (thanks r*chongØmogenic*net)
+  * Bugfix: Improved backtick safe-mode limit detection
+    (thanks 1Øadamcarrington*com)
+  * Bugfix: EXIF thumbnails were being used as source when
+    they should not be  (thanks aidan*slingsbyØlineone*net)
+  * Bugfix: Cached files were not being created or used
+    properly  (thanks aidan*slingsbyØlineone*net)
+  * Bugfix: max_source_pixels not set correct on some PHP
+    versions  (thanks derbaffØyahoo*com)
+  * Bugfix: 'down' parameter ignored for unprocessed and
+    cached files  (thanks aidan*slingsbyØlineone*net)
+
+v1.4.7 - July 27, 2004
+  * Included a modified version of "module.graphic.bmp.php"
+    from getID3() [http://getid3.sourceforge.net] as
+    "phpthumb.bmp.php" for BMP reading support without
+    ImageMagick. It works, but it's *very* slow, especially
+    for large images (as in 640x480 or larger).
+  * Added check to prevent error messages when shell_exec
+    is disabled (thanks webmasterØneester*com)
+
+v1.4.6 - July 22, 2004
+  * Added new section to phpthumb.config.php where you can
+    easily specify defaults for any parameter you can set
+    in the URL. Normally URL parameters override these
+    default values, unless you set
+    $PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE to false
+  * Renamed phpthumb.config.php to phpThumb.config.php
+    since it's part of phpThumb.php, not part of
+    phpthumb.class.php (change of case only, will not
+    affect Windows servers, but will affect *nix)
+  * Changed cached filename of rawImageData-source images
+    from urlencode('') to md5(rawImageData). This should
+    make caching thumbnails from non-file sources more
+    reliable.
+  * Added ImageMagick debugging information
+  * Removed unneccesary default values from cached
+    filenames. This may invalidate some previously cached
+    files. phpthumb.demo.cacheconvert.php has been updated
+    to handle v1.4.1-1.4.5 => v1.4.6+ cache filenames.
+  * Bugfix: Cached filename did not have file-modified
+    datestamp when used as implmented in phpThumb.php
+  * Bugfix: RenderToFile() now accepts relative filenames
+    (thanks aidan*slingsbyØlineone*net)
+  * Bugfix: AllowOutputEnlargment setting was ignored when
+    falling back to ImageMagick
+  * Bugfix: IgnoreAspectRatio setting was ignored when
+    falling back to ImageMagick
+  * Bugfix: config_temp_directory was ignored in gd_info()
+    in PHP < v4.3.0 when phpinfo() returns no GD
+    information (due to safe mode restrictions)
+    (thanks mimyrtekØmyrtek*com)
+
+v1.4.5 - June 28, 2004
+  * Added new parameter 'down' where you can specify a
+    filename and OutputThumbnail() will cause the file
+    to be downloaded rather than displayed in the browser.
+    Demo images on silisoftware.com/scripts/phpThumb/demo/
+    can all be downloaded to show off this feature.
+    (thanks stuartscrumpØyahoo*co*uk)
+  * Added ability to remove old files from cache directory
+    based on last-access time and/or number of cached files
+    and/or total size of cached files
+    (thanks jrmhaigØyahoo*co*uk)
+  * Added public CleanUpCacheDirectory() for cache cleaning
+    (see above) if you need to call it manually
+  * Included new file phpThumb.demo.cacheconvert.php to
+    convert old-style cache names to the current (and
+    hopefully last!) standard naming convention.
+    (thanks joshgØtwcny*rr*com)
+  * Added configuration value 'document_root' for rare case
+    when $_SERVER['DOCUMENT_ROOT'] return incorrect value
+    (thanks joshgØtwcny*rr*com)
+  * Now tries to create thumbnail with ImageMagick if
+    ImageCreateFromJPEG etc fails, before falling back to
+    outputting unmodified source data.
+  * Bugfix: HTTP image sources were broken
+    (thanks fritz*weisshartØt-online*de)
+  * Bugfix: ImageMagick callout wasn't being used if EXIF
+    thumbnail was available
+    (thanks joshgØtwcny*rr*com)
+  * Bugfix: HTTP src with space in filename was broken
+    (thanks drØrhodes360*com)
+  * Bugfix: version_compare_replacement() was broken for
+    PHP v4.1.0+
+
+v1.4.4 - June 8, 2004
+  * Bugfix: network-share (Windows) source filenames were
+    not possible. Now works, but you must use the network
+    name and not a mapped drive name, for example:
+    \\othercomputer\file.jpg - good
+    \\192.168.2.1\file.jpg - good
+    z:\file.jpg - won't work
+    This is a PHP limitation (see www.php.net/file-exists)
+    Note: you may want to use "/" slashes instead of "\" if
+    you have magic_quotes_gpc enabled to avoid stripslashes
+    problems.
+    (thanks drØrhodes360*com)
+  * Bugfix: missing "phpthumb_functions::" in
+    ImageCreateFromStringReplacement()
+    (thanks zapletalØsoftwaremedia*cz)
+
+v1.4.3 - May 25, 2004
+  * Added new configuration variable 'config_temp_directory'
+    to allow you to specify a writable directory name for
+    temp files if you do not have access to the system temp
+    directory on your server (Safe Mode restrictions etc)
+    (thanks nickØregenmag*com)
+  * Added new configuration variable
+    'config_error_die_on_error' which can be set to false if
+    you want to retrieve the error message without having it
+    dumped as an image - the error message is now available
+    in $phpThumb->error
+  * Images are passed through directly with no processing
+    and no caching if no parameters are passed to alter the
+    image (resize, crop, sharpening, etc)
+    (thanks nchmuraØusers*sourceforge*net)
+  * Added new configuration variable 'config_disable_debug'
+    which disabled phpThumbDebug from working if you have
+    security concerns about the displayed information
+  * Bugfix: Added detection at the top of phpThumb.php for
+    no-GD errors to avoid parse errors later in the code
+    (thanks nickØregenmag*com)
+  * Bugfix: RoundedImageCorners() had some off-by-1 errors
+    (thanks ola*thunbergØhome*se)
+
+v1.4.2 - May 10, 2004
+  * Added IE-compatability mode for transparent corners
+    (set 'bct=256')
+  * Bugfix: version_compare_replacement() was broken in PHP
+    older than 4.1.0
+    (thanks nickØregenmag*com)
+
+v1.4.1.1 - May 9, 2004
+ * Bugfix: Removed ImageTrueColorToPalette hack.
+   See http://bugs.php.net/bug.php?id=28341
+ * Bugfix: 'maxb' option for PNG/GIF output incorrect
+   bit depth under some circumstances
+
+v1.4.1 - May 9, 2004
+ * Added 'maxb' (MAXimum Bytes) option to auto-set the
+   output image quality (JPEG) or bit depth (PNG/GIF) so
+   that the output thumbnail is less than 'maxb' bytes
+   (thanks e_belleØhotmail*com)
+ * Added 'bgt' parameter to make rounded corners from
+   'brx'/'bry' option transparent when used with PNG
+   output. Note: PHP/GD appears buggy at this time, so this
+   option must force output to 256-color mode for this
+   to work. The feature will be updated when a non-broken
+   version of PHP/GD is released.
+   (thanks javierØircorion*net)
+ * Bugfix: Caching was broken
+   (thanks mikeØgdaymate*nl, jurewiczØgo3*pl)
+
+v1.4.0 - April 30, 2004
+ * Rewritten as a PHP class. Split into several files:
+   - phpthumb.class.php        = most processing code
+   - phpthumb.functions.php    = support functions
+   - phpthumb.readme.txt       = usage instructions
+   - phpthumb.changelog.txt    = this file
+   - phpthumb.config.php       = configuration file
+   - phpthumb.gif.php          = Non-GD GIF reading support
+   - phpthumb.unsharp.php      = Unsharp Masking support
+   - phpThumb.php              = demo script that works
+       exactly as previous versions; this is a drop-in
+       replacement for existing phpThumb() installations
+   - phpThumb.demo.showpic.php = demo script that auto-
+       resizes a popup window to the size of the image
+       shown. Useful if you want popup images but do not
+       know the large image size beforehand
+ * Added optional call-out to ImageMagick (if avaible) if
+   source image is larger than PHP memory restrictions
+   allow. ImageMagick installation should be auto-detected
+   under *nix, but you should configure 'imagemagick_path'
+   for use under Windows.
+ * 'max_source_pixels' is now auto-calculated from PHP
+   configuration settings. Due to various server-level
+   restrictions that may override PHP settings this
+   calculated value may not always be correct, and you may
+   have to specify the value manually.
+ * Added rounded-corner border option. You must specify
+   both 'brx' (horizontal radius) and 'bry' (vertical
+   radius) as well as 'bw' (border width). If 'bw' is
+   greater than zero, the image will be shrunk to fit
+   inside the border with a margin of background color.
+   If 'bw' is zero, the corners of the image will be
+   cut off and filled with background color.
+   (thanks javierØircorion*net)
+ * Minor speed improvement for unsharp masking
+
+v1.3.7 - March 28, 2004
+ * Bugfix: GD version detection was broken on PHP <4.3.0
+   on servers where phpinfo() was disabled
+   (thanks javierØircorion*net)
+ * Bugfix: Non-GD GIF support was broken on restricted
+   PHP configurations
+   (thanks javierØircorion*net)
+ * Bugfix: phpThumb.gif.php output error messages if PHP
+   was running in Safe Mode
+ * Added 'iar' parameter (Ignore Aspect Ratio) to allow
+   non-proportional resizing (stretch image to fit).
+   You must specify 'h' and 'w' to use this option.
+   (thanks javierØircorion*net)
+
+v1.3.6 - March 14, 2004
+  * Bugfix: was broken when register_globals turned on
+    (thanks joshgØtwcny*rr*com)
+  * Bugfix: Images with transparent backgrounds now have
+    the background color filled with the color specified
+    by the 'bg' parameter
+  * Bugfix: ImageCreateFromString() is broken in the
+    non-bundled GD. Added workaround, but please use
+    the bundled version of GD if possible
+    (thanks dnØxbe*ch)
+  * Bugfix: EXIF thumbnail caching was broken
+  * Bugfix: EXIF thumbnail handling was broken for PHP
+    v4.2.x
+    (thanks smithk1Øshaw*ca)
+  * Bugfix: Image borders with GD2 were misaligned
+  * Bugfix: virtual paths/filenames like /~user/foo.jpg
+    should now work properly, if PHP is installed as an
+    Apache module (see www.php.net/apache-lookup-uri)
+  * Bugfix: contents of any non-image file could be
+    displayed (including PHP & HTML files)
+    (thanks arsyanØarsyan*com)
+  * Added rotation parameters 'ra' and 'ar'
+    (thanks drØrhodes360*com)
+  * Added $CONFIG['output_allow_enlarging'], defaulted
+    to false, to prevent smaller-than-max-size images
+    from being enlarged beyond their original size. If
+    you want to be able to enlarge images, set this to
+    false. Can be overridden with the 'aoe' parameter
+    (thanks dnØxbe*ch)
+  * Changed all configuration variables to be under one
+    array named $CONFIG
+  * Moved color and font options for ErrorImage() to
+    $CONFIG variables
+  * Changed cached filename structure (again) to a more
+    flexible format that can handle future expansion
+    (old cached files are invalid and will be recreated)
+  * Added more debugging code to phpThumbDebug
+
+v1.3.5 - February 29, 2004
+  * Added capability to use EXIF thumbnail that may be
+    embedded in source image (often is in digital camera
+    JPEGs) and source image dimensions are larger than
+    $config_max_source_pixels. This will overcome the
+    limitation where PHP runs out of memory processing
+    large images (usually >1600x1200). EXIF thumbnail
+    extraction requires PHP v4.2.0 or higher and EXIF
+    support compiled into PHP (or php_exif extension)
+  * Eliminated intermediate read-file-to-memory stage if
+    image is created from local file. Should allow
+    larger images to be processed without running out of
+    memory.
+  * Added optional 'goto' parameter to be used with the
+    'file' parameter, where 'goto' is a URL that is
+    redirected to after image is rendered to file
+    (thanks wimbleØwebdonors*com)
+  * Added optional 'xto' parameter that will bypass all
+    processing and just return the embedded EXIF
+    thumbnail, if available.
+  * Added error-handling if ImageTypes() is unavailable
+
+v1.3.4 - February 15, 2004
+  * Custom error image option (&err=img.jpg) which can
+    also be set as $config_error_message_image_default
+    (thanks carlØ4thstar*net)
+  * &f=text will now output plain-text error messages
+  * ErrorImage() now used for anti-hotlink messages (if
+    $config_nohotlink_erase_image is true)
+
+v1.3.3 - February 5, 2004
+  * Bugfix: Added stripslashes() to filenames if
+    magic_quotes_gpc is enabled
+    (thanks arsyanØarsyan*com)
+  * Output can now be rendered to a file only (not to
+    browser) specified by the 'file' parameter
+    (thanks arsyanØarsyan*com)
+  * JPEG quality now has a maximum of 95%, as specified
+    in the GD documentation
+
+v1.3.2.1 - February 3, 2004
+  * Bugfix: gd_version() was broken for GD v2.0+
+  * Bugfix: removed debugging code
+
+v1.3.2 - February 3, 2004
+  * Bugfix: when borders are enabled, portait images
+    with no width constraint, or landscape images with
+    no height constraint were smaller than neccesary by
+    double the border width
+    (thanks jjjØxs4all*nl)
+  * Added unsharp mask option thanks to Torstein Hønsi:
+    http://www.vikjavev.com/hovudsida/umtestside.php
+    Note: requires GD v2.x to function
+    (thanks jjjØxs4all*nl)
+  * Updated cache filenames to reflect new parameters,
+    this means old cached files will need to be deleted
+    (or not, they just will never get called again) and
+    new cached versions will be created.
+  * Added caching to gd_info() calls for minor speedup
+
+v1.3.1 - February 2, 2004
+  * Added optional border (width and color configurable)
+    (thanks arsyanØarsyan*com)
+  * Added option to create fixed-dimension thumbnails
+    regardless of source aspect ration. Set the 'bw'
+    (BorderWidth) parameter (even to 0) and this will be
+    enabled. Outside the actual image will be filled
+    with 'bg' color (default FFFFFF)
+    (thanks arsyanØarsyan*com)
+
+v1.3.0 - January 27, 2004
+  * Added watermarking option to overlay thumbnails with
+    a semi-transparent watermark image (copied from a
+    seperate source watermark image)
+    (thanks arsyanØarsyan*com)
+  * Added option for absolute filenames (on both Windows
+    and *nix) outside the DOCUMENT_ROOT directory
+  * Added debug output dump for diagnosing problems)
+
+v1.2.8 - January 19, 2004
+  * added ability to specify relative pathnames as well
+    as absolute pathnames (pathname is relative to the
+    location of phpThumb.php if the passed source does
+    not begin with "/"
+
+v1.2.7 - January 7, 2004
+  * Added patch to allow use of PHP older than 4.1.0
+    (or GD without PNG support) for non-GD GIF support
+    (thanks hostwebserverØhotmail*com)
+
+v1.2.6 - January 4, 2004
+  * Added patch to allow use of PHP older than 4.1.0
+    (without the superglobals arrays)
+
+v1.2.5 - December 26, 2003
+  * Added configuration options for default output image
+    format and max width/height
+
+v1.2.4 - December 20, 2003
+  * Bugfix: temp directory for non-native GD support not
+    always returning valid directory
+  * Caching feature reintroduced (see configuration)
+
+v1.2.3 - December 19, 2003
+  * Added anti-hotlink code so the thumbnail script on
+    one domain cannot be used by another domain. The
+    list of allowed domains defaults to the current
+    domain but is configurable below as
+    $config_nohotlink_valid_domains. The message, text
+    size, colors and whether to blank the image or not
+    are also configurable
+  * Bugfix: URL image sources were not able to use the
+    non-GD GIF-reading functions
+
+v1.2.2 - December 17, 2003
+  * Added option to use http:// URL as image source
+
+v1.2.1 - December 11, 2003
+  * Added option to get source data from a database
+    rather than a physical file
+  * Bugfix: resize not proportional when wide image
+    limited more by max height than max width
+    Thanks mathias_strasserØgmx*net
+  * Removed caching code
+
+v1.2.0 - December 10, 2003
+  * Added GIF support for versions of GD that do not
+    have built-in GIF support (v1.6.x) via the "GIF
+    Util" class by Fabien Ezber (www.yamasoft.com)
+    GD's built-in GIF-reading functions are faster, and
+    are present in PHP v4.3.0 or newer, but all versions
+    of GD can display resized GIF thumbnails now.
+
+v1.1.2 - October 26, 2003
+  * check for source image existance to prevent text
+    error messages
+  * if GD not available, a GIF saying "no GD" is shown
+    instead of showing the original image
+  * Cache feature introduced
+
+v1.1.1 - September 28, 2003
+  * better resize code by sfisher10Øcox*net
+
+v1.1.0 - September 1, 2003
+  * initial public release
+  * thumbnails can now be larger than source image
+  * graphical error messages
+
+v1.0.0 - January 7, 2002
+  * initial private release
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.faq.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.faq.txt
new file mode 100644 (file)
index 0000000..15979c2
--- /dev/null
@@ -0,0 +1,102 @@
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+//    Frequently Asked Questions (FAQ) about phpThumb()     //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+
+Q: What is the GPL? Can I use this for commercial sites?
+A: See the GPL FAQ: http://www.gnu.org/licenses/gpl-faq.html
+   In general, if you just want to call phpThumb.php in the
+   standard <img src="phpThumb.php?src=pic.jpg&w=100"> manner
+   then there is no problem, you're free to do this no matter
+   if you site is commercial or not, or what license your code
+   is released under.
+   If you're calling phpThumb() as an object then you will
+   probably run into license issues, so consult the above FAQ
+   and the GPL itself.
+   No matter if you use phpThumb() commercially or not, no
+   payment is required. However, donations are always welcome
+   and can be made at http://phpthumb.sourceforge.net
+
+
+Q: Some images generate thumbnails, but some fail (the original
+   non-resized image is output instead).
+A: Your PHP installation does not have a high enough memory_limit
+   and ImageMagick is not installed on the server. The PHP memory
+   required is 5 times the number of pixels in the image.
+   For example:
+     640x480x5   = 1.5MB
+     1600x1200x5 = 9.2MB
+   You can adjust the PHP memory limit in php.ini (if you have
+   permission on your server to do so), or (better yet) install
+   ImageMagick on the server and that will bypass the memory limit
+   issue. If you can't do either of the above, you can resize the
+   images manually (with your favourite image editor) to a size
+   that your memory_limit setting can handle, and/or you can
+   re-save the images with an image editor that can embed an EXIF
+   thumbnail (Photoshop for example) which phpThumb can use as an
+   image source (lower image quality, but perhaps better than
+   nothing).
+
+
+Q: I'm getting is this error message:
+   Failed: RenderToFile(<filename>) failed because
+   !is_resource($this->gdimg_output)
+A: You missed the call to GenerateThumbnail() before
+   RenderToFile() or OutputThumbnail.
+   See /demo/phpThumb.demo.object.php for an example.
+
+
+Q: I'm trying to save a phpThumb-generated image in Internet
+   Explorer and it saves in BMP format, why?
+A: This is not phpThumb's fault, it is an IE issue:
+   http://support.microsoft.com/default.aspx?scid=kb;en-us;810978
+   http://support.microsoft.com/default.aspx?scid=kb;en-us;260650
+
+
+Q: PNG images with transparent areas show up with gray background
+   in the areas that are supposed to be transparent.
+A: Internet Explorer has had a broken PNG alpha-channel display
+   implementation for a decade, so it may never get fixed. Other
+   major browsers generally handle alpha-transparent PNGs fine.
+   See http://www.silisoftware.com/png_transparency/
+   For an alpha-channel PNG display in IE hack, see this page:
+   http://www.koivi.com/ie-png-transparency/
+
+
+Q: I'm getting "<filename> does not exist" when I know the
+   file does exist
+A: Check these two values are present and properly configured
+   in phpThumb.config.php (introduced in v1.6.0):
+   $PHPTHUMB_CONFIG['allow_src_above_docroot']  (default=false)
+   $PHPTHUMB_CONFIG['allow_src_above_phpthumb'] (default=true)
+   If your images are outside DOCUMENT_ROOT then you will have
+   to configure 'allow_src_above_docroot' to true
+
+
+Q: Are there any front-end GUI interfaces to phpThumb()?
+A: See /demo/readme.demo.txt
+
+
+Q: Why can't Flash work with images output from phpThumb()?
+A: Flash doesn't like progressive JPEG. Set:
+   $PHPTHUMB_CONFIG['output_interlace'] = false;
+
+
+Q: Image quality is not very good - why?
+A: If you're using GD v1.x, no way around it. Upgrade to GD v2.x
+
+
+Q: Image quality is very bad, very pixelated - why?
+A: You may be trying to resize images larger than the available
+   PHP memory, so phpThumb is simply extracting and using the
+   EXIF thumbnail as the image source, which is usually about
+   160x120 (so if you resize it to 640x480 it will look very bad).
+   To calculate the required size for memory_limit in php.ini,
+   calculate the number of pixels in the image and multiply by 5:
+   For example, 1600x1200 = 1600 * 1200 * 5 = 9600000 = 10M
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.license.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.license.txt
new file mode 100644 (file)
index 0000000..9fec808
--- /dev/null
@@ -0,0 +1,340 @@
+            GNU GENERAL PUBLIC LICENSE
+               Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+                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 Library 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.
+\f
+            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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+        How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/docs/phpthumb.readme.txt
new file mode 100644 (file)
index 0000000..b0d751f
--- /dev/null
@@ -0,0 +1,514 @@
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+//       This code is released under the GNU GPL:           //
+//         http://www.gnu.org/copyleft/gpl.html             //
+//                                                          //
+//    +-----------------------------------------------+     //
+//    | phpThumb() is free to use according to the    |     //
+//    | terms of the GPL. Donations also gratefully   |     //
+//    | GPL FAQ: http://gnu.org/licenses/gpl-faq.html |     //
+//    |                                               |     //
+//    | Donations are gratefully accepted from happy  |     //
+//    | users :)  See http://phpthumb.sourceforge.net |     //
+//    |                                               |     //
+//    | If you like phpThumb(), please consider       |     //
+//    | writing a review at HotScripts.com:           |     //
+//    | http://www.hotscripts.com/Detailed/25654.html |     //
+//    |                                               |     //
+//    | If you do use this code somewhere, send me    |     //
+//    | an email and tell me how/where you used it.   |     //
+//    +-----------------------------------------------+     //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+Description:
+
+phpThumb() uses the GD library to create thumbnails from
+images (GIF, PNG or JPEG) on the fly. The output size is
+configurable (can be larger or smaller than the source),
+and the source may be the entire image or only a portion
+of the original image. True color and resampling is used
+if GD v2.0+ is available, otherwise low-color and simple
+resizing is used. Source image can be a physical file on
+the server or can be retrieved from a database. GIFs are
+supported on all versions of GD even if GD does not have
+native GIF support thanks to the GIFutil class by Fabien
+Ezber. AntiHotlinking feature prevents other people from
+using your server to resize their thumbnails, or link to
+your  images  from  another  server.  The  cache feature
+reduces server load.
+
+
+Usage:
+
+Call phpThumb() just like you would a normal image.
+Examples:
+ <IMG SRC="phpThumb.php?src=/image.jpg&w=100">
+ <IMG SRC="phpThumb.php?src=http://example.com/foo.jpg">
+See the "demo" link on http://phpthumb.sourceforge.net
+for more usage examples). Parameters that can be passed
+are listed below under "URL Parameters".
+
+NOTE: It's recommended you use the local image filename
+wherever possible (rather than http://) because performance
+is much better, less (or no) use of temp files, and the
+last-modified check for cached files doesn't work for
+remote files.
+
+To access files over a LAN with Windows share names you
+must use the network name (or IP) and not a mapped drive
+name, for example:
+  //othercomputer/file.jpg - good
+  //192.168.2.1/file.jpg - good
+  z:/file.jpg - won't work
+This is a PHP limitation (see www.php.net/file-exists)
+Note: you may want to use "/" slashes instead of "\" if
+you have magic_quotes_gpc enabled to avoid stripslashes
+problems, although either slash should work if
+magic_quotes_gpc is disabled
+
+
+Alternate PATH_INFO-style Usage:
+
+phpThumb.php can also be called by passing parameters not
+after the usual "?" but like this:
+  phpThumb.php/<params>=<values>;<w>x<h>;<image>
+For example:
+  phpThumb.php/100;pic.jpg
+  phpThumb.php/100;images/pic.jpg
+  phpThumb.php/100;/images/pic.jpg
+  phpThumb.php/100x200;pic.jpg
+  phpThumb.php/x200;pic.jpg
+  phpThumb.php/f=jpeg;q=50;100x200;pic.jpg
+  phpThumb.php/fltr[]=usm;100;pic.jpg
+
+<image> must be the last item. Dimensions must be the second-
+last item. As many key/value pairs for parameters can be
+passed before those last two items, with each pair joined by
+equals ("=") and seperated by semicolon (";")
+
+
+Configuration:
+
+There are some configuration options you may (but are
+not required to) change. Most configuration options can
+be set when you call phpThumb() - see list below), but
+default configuration options (such as cache directory)
+are in phpThumb.config.php - this is the only file you
+should ever modify.
+
+The configuration file is distributed as
+phpThumb.config.php.default to prevent accidental
+overwriting of old configuration settings. Please
+migrate your old settings to the new file (if upgrading),
+delete your old config and rename the default to
+phpThumb.config.php
+
+
+The amount of memory required for phpThumb depends on
+several factors: the dimensions of the source image,
+the dimensions of the output image, whether unsharp
+masking is applied, whether watermarks are applied, etc.
+The auto-detection of memory limits works as a general
+"safe" value. You may be able to exceed the auto value
+by a small or large amount, depending on whether you
+apply watermarks and/or sharpening, and the output size
+of your thumbnails. I do not currently have a reliable
+formula for calculating such things, but I will attempt
+to craft one for future versions of phpThumb(). Until
+then, set "max_source_pixels" in phpThumb.config.php to a
+value that works well for you (or leave it alone if the
+defaults give you no problems).
+
+The configuration options you should maybe modify are:
+* cache_directory - thumbnailing is slow and processor-
+    intensive. Enabling caching will dramatically speed
+    up future thumbnail serving
+* max_source_pixels - This should be auto-detected, but
+    if auto-detection fails and you get an invalid image
+    from large source images, set this to about 20% of
+    your available PHP memory limit.
+* imagemagick_path - If the source image is larger than
+    max_source_pixels allows, but ImageMagick is available
+    phpThumb() will use it to generate the thumbnail.
+
+
+Calling as an object (not using phpThumb.php):
+
+To use a database rather than physical files, or to
+render output to a file instead of the browser, you
+should skip phpThumb.php and instantiate your own
+phpThumb() object as follows:
+
+  // create new phpThumb() object
+  require_once('phpthumb.class.php');
+  $phpThumb = new phpThumb();
+
+  // set data
+  $phpThumb->setSourceFilename($image_filename);
+  // or $phpThumb->setSourceData($binary_image_data);
+  // or $phpThumb->setSourceImageResource($gd_image_resource);
+
+  // set parameters (see "URL Parameters" below)
+  $phpThumb->w = 100;
+
+  // set options (see phpThumb.config.php)
+  // here you must preface each option with "config_"
+  $phpThumb->config_output_format = 'jpeg';
+
+  // Set error handling (optional)
+  $phpThumb->config_error_die_on_error = false;
+
+  // generate & output thumbnail
+  if ($phpThumb->GenerateThumbnail()) {
+    $phpThumb->OutputThumbnail();
+    // or
+    //if (!$phpThumb->RenderToFile($filename)) {
+    //// do something with debug/error messages
+    //echo 'Failed: '.implode("\n", $phpThumb->debugmessages);
+    //}
+  } else {
+    // do something with debug/error messages
+    echo 'Failed: '.implode("\n", $phpThumb->debugmessages);
+  }
+
+
+If you want to change any of the configuration parameters
+(see phpThumb.config.php) you can change them like this:
+    $phpThumb->config_<variable_name> = <value>
+for example:
+    $phpThumb->config_output_format = 'jpeg';
+
+Note: If you want to loop through and create multiple
+  thumbnails from different image sources, you should
+  create and dispose an instance of phpThumb() each time
+  through the loop and not reuse the object.
+
+Note: phpThumb.php is where the caching code is located, if
+  you instantiate your own phpThumb() object that code is
+  bypassed and it's up to you to handle the reading and
+  writing of cached files.
+
+Note: High-Security mode is recommended enabled if possible.
+  Set $PHPTHUMB_CONFIG['high_security_enabled'] in
+  phpThumb.config.php to enable it. Each call to phpThumb
+  needs to be made through the function supplied at the
+  bottom of phpThumb.config.php which create the hash:
+    require_once('phpThumb.config.php');
+    echo '<img src="'.phpThumbURL('src=pic.jpg&w=50').'">';
+
+
+///////////////////////////////////////////////////////////
+
+URL Parameters:
+ src = filename of source image
+ new = create new image, not thumbnail of existing image.
+       Requires "w" and "h" parameters set.
+       [ex: &new=FF0000|75] - red background, 75% opacity
+       Set to hex color string of background. Opacity is
+       optional (defaults to 100% opaque).
+   w = max width of output thumbnail in pixels
+   h = max height of output thumbnail in pixels
+  wp = max width for portrait images
+  hp = max height for portrait images
+  wl = max width for landscape images
+  hl = max height for landscape images
+  ws = max width for square images
+  hs = max height for square images
+   f = output image format ("jpeg", "png", or "gif")
+   q = JPEG compression (1=worst, 95=best, 75=default)
+  sx = left side of source rectangle (default = 0)
+       (values 0 < sx < 1 represent percentage)
+  sy = top side of source rectangle (default = 0)
+       (values 0 < sy < 1 represent percentage)
+  sw = width of source rectangle (default = fullwidth)
+       (values 0 < sw < 1 represent percentage)
+  sh = height of source rectangle (default = fullheight)
+       (values 0 < sh < 1 represent percentage)
+  zc = zoom-crop. Will auto-crop off the larger dimension
+       so that the image will fill the smaller dimension
+       (requires both "w" and "h"). Set "zc=1" to enable.
+       (overrides both "iar" and "far")
+  bg = background hex color (default = FFFFFF)
+  bc = border hex color (default = 000000)
+fltr = filter system. Call as an array as follows:
+       - "brit" (Brightness) [ex: &fltr[]=brit|<value>]
+         where <value> is the amount +/- to adjust brightness
+         (range -255 to 255)
+         Availble in PHP5 with bundled GD only.
+       - "cont" (Constrast) [ex: &fltr[]=cont|<value>]
+         where <value> is the amount +/- to adjust contrast
+         (range -255 to 255)
+         Availble in PHP5 with bundled GD only.
+       - "gam" (Gamma Correction) [ex: &fltr[]=gam|<value>]
+         where <value> can be a number >0 to 10+ (default 1.0)
+         Must be >0 (zero gives no effect). There is no max,
+         although beyond 10 is pretty useless. Negative
+         numbers actually do something, maybe not quite the
+         desired effect, but interesting nonetheless.
+       - "sat" (SATuration) [ex: &fltr[]=sat|<value>]
+         where <value> is a number between zero (no change)
+         and -100 (complete desaturation = grayscale), or it
+         can be any positive number for increased saturation.
+       - "ds" (DeSaturate) [ex: &fltr[]=ds|<value>]
+         is an alias for "sat" except values are inverted
+         (positive values remove color, negative values boost
+         saturation)
+       - "gray" (Grayscale) [ex: &fltr[]=gray]
+         remove all color from image, make it grayscale
+       - "th" (Threshold) [ex: &fltr[]=th|<value>]
+         makes image greyscale, then sets all pixels brighter
+         than <value> (range 0-255) to white, and all pixels
+         darker than <value> to black
+       - "rcd" (Reduce Color Depth) [ex: &fltr[]=rcd|<c>|<d>]
+         where <c> is the number of colors (2-256) you want
+         in the output image, and <d> is "1" for dithering
+         (deault) or "0" for no dithering
+       - "clr" (Colorize) [ex: &fltr[]=clr|<value>|<color>]
+         where <value> is a number between 0 and 100 for the
+         amount of colorization, and <color> is the hex color
+         to colorize to.
+       - "sep" (Sepia) [ex: &fltr[]=sep|<value>|<color>]
+         where <value> is a number between 0 and 100 for the
+         amount of colorization (default=50), and <color> is
+         the hex color to colorize to (default=A28065).
+       - "usm" (UnSharpMask) [ex: &fltr[]=usm|<a>|<r>|<t>]
+         where <a> is the amount (default = 80), <r> is the
+         radius (default = 0.5), <t> is the threshold
+         (default = 3).
+       - "blur" (Blur) [ex: &fltr[]=blur|<radius>]
+         where (0 < <radius> < 25) (default = 1)
+       - "gblr" (Gaussian Blur) [ex: &fltr[]=gblr]
+         Availble in PHP5 with bundled GD only.
+       - "sblr" (Selective Blur) [ex: &fltr[]=gblr]
+         Availble in PHP5 with bundled GD only.
+       - "smth" (Smooth) [ex: &fltr[]=smth|<value>]
+         where <value> is the weighting value for the matrix
+         (range -10 to 10, default 6)
+         Availble in PHP5 with bundled GD only.
+       - "lvl" (Levels) [ex: &fltr[]=lvl|<channel>|<min>|<max>
+         where <channel> can be one of 'r', 'g', 'b', 'a' (for
+         Red, Green, Blue, Alpha respectively), or '*' for all
+         channels based on average grayscale value (default).
+         <min> and <max> are the clip points for the levels
+         and are set to clip 0.1% of each end by default.
+         (range = 0-255) and are set to clip 0.1% of each end
+         by default. Use -1 for min and/or max to invoke auto-
+         detect mode. Using default parameters (&fltr[]=lvl)
+         is similar to Auto Contrast in Adobe Photoshop.
+       - "wb" (White Balance) [ex: &fltr[]=wb|<c>]
+         where <c> is the target hex color to white balance
+         on, this color is what "should be" white, or light
+         gray. The filter attempts to maintain brightness so
+         any gray color can theoretically be used. If <c> is
+         omitted the filter guesses based on brightest pixels
+         in each of RGB
+       - "hist" (Histogram)
+         [ex: &fltr[]=hist|<b>|<c>|<w>|<h>|<a>|<o>|<m>]
+         Where <b> is the color band(s) to display, from back
+         to front (one or more of "rgba*" for Red Green Blue
+         Alpha and Grayscale respectively);
+         <c> is a semicolon-seperated list of hex colors to
+         use for each graph band (defaults to FF0000, 00FF00,
+         0000FF, 999999, FFFFFF respectively);
+         <w> and <h> are the width and height of the overlaid
+         histogram in pixels, or if <= 1 then percentage of
+         source image width/height;
+         <a> is the alignment (same as for "wmi" and "wmt");
+         <o> is opacity from 0 (transparent) to 100 (opaque)
+             (requires PHP v4.3.2, otherwise 100% opaque);
+         <m> is the edge (and inter-tile) margin in percent
+       - "over" (OVERlay/underlay image) overlays an image on
+         the thumbnail, or overlays the thumbnail on another
+         image (to create a picture frame for example)
+         [ex: &fltr[]=over|<i>|<u>|<m>|<o>]
+         where <i> is the image filename; <u> is "0" (default)
+         for overlay the image on top of the thumbnail or "1"
+         for overlay the thumbnail on top of the image; <m> is
+         the margin - can be absolute pixels, or if < 1 is a
+         percentage of the thumbnail size [must be < 0.5]
+         (default is 0 for overlay and 10% for underlay);
+         <o> is opacity (0 = transparent, 100 = opaque)
+             (requires PHP v4.3.2, otherwise 100% opaque);
+         (thanks raynerapeØgmail*com, shabazz3Ømsu*edu)
+       - "wmi" (WaterMarkImage)
+         [ex: &fltr[]=wmi|<f>|<a>|<o>|<m>] where
+         <f> is the filename of the image to overlay;
+         <a> is the alignment (one of BR, BL, TR, TL, C,
+             R, L, T, B, *) where B=bottom, T=top, L=left,
+             R=right, C=centre, *=tile);
+         <o> is opacity from 0 (transparent) to 100 (opaque)
+             (requires PHP v4.3.2, otherwise 100% opaque);
+         <m> is the edge (and inter-tile) margin in percent
+       - "wmt" (WaterMarkText)
+         [ex: &fltr[]=wmt|<t>|<s>|<a>|<c>|<f>|<o>|<m>|<n>]
+         where:
+         <t> is the text to use as a watermark;
+         <s> is the font size (1-5 for built-in font, or point
+           size for TrueType fonts);
+         <a> is the alignment (one of BR, BL, TR, TL, C, R, L,
+           T, B, * where B=bottom, T=top, L=left, R=right,
+           C=centre, *=tile);
+         <c> is the hex color of the text;
+         <f> is the filename of the TTF file (optional, if
+           omitted a built-in font will be used);
+         <o> is opacity from 0 (transparent) to 100 (opaque)
+             (requires PHP v4.3.2, otherwise 100% opaque);
+         <m> is the edge (and inter-tile) margin in percent;
+         <n> is the angle
+         (thanks mailØmmjaeger*com)
+       - "flip" [ex: &fltr[]=flip|x   or   &fltr[]=flip|y]
+         flip image on X or Y axis
+       - "ric" [ex: &fltr[]=ric|<x>|<y>]
+         rounds off the corners of the image (to transparent
+         for PNG output), where <x> is the horizontal radius
+         of the curve and <y> is the vertical radius
+       - "elip" [ex: &fltr[]=elip]
+         similar to rounded corners but more extreme
+       - "mask" [ex: &fltr[]=mask|filename.png]
+         greyscale values of mask are applied as the alpha
+         channel to the main image. White is opaque, black
+         is transparent.
+       - "bvl" (BeVeL) [ex: &fltr[]=bvl|<w>|<c1>|<c2>]
+         where <w> is the bevel width, <c1> is the hex color
+         for the top and left shading, <c2> is the hex color
+         for the bottom and right shading
+       - "bord" (BORDer) [ex: &fltr[]=bord|<w>|<rx>|<ry>|<c>
+         where <w> is the width in pixels, <rx> and <ry> are
+         horizontal and vertical radii for rounded corners,
+         and <c> is the hex color of the border
+       - "fram" (FRAMe) draws a frame, similar to "bord" but
+         more configurable
+         [ex: &fltr[]=fram|<w1>|<w2>|<c1>|<c2>|<c3>]
+         where <w1> is the width of the main border, <w2> is
+         the width of each side of the bevel part, <c1> is the
+         hex color of the main border, <c2> is the highlight
+         bevel color, <c3> is the shadow bevel color
+       - "drop" (DROP shadow)
+         [ex: &fltr[]=drop|<d>|<w>|<clr>|<a>]
+         where <d> is distance from image to shadow, <w> is
+         width of shadow fade (not yet implemented), <clr> is
+         the hex color of the shadow, and <a> is the angle of
+         the shadow (default=225)
+file = if set then thumbnail will be rendered to this
+       filename, not output and not cached.
+       (Deprecated. Disabled by default since v1.6.0.
+       You should instantiate your own object instead)
+goto = URL to redirect to after rendering image to file
+       * Must begin with "http://"
+       * Requires file parameter set
+       (Deprecated. Disabled by default since v1.6.0.
+       You should instantiate your own object instead)
+ err = custom error image filename instead of showing
+       error messages (for use on production sites)
+md5s = MD5 hash of the source image -- if this parameter is
+       passed with the hash of the source image then the
+       source image is not checked for existance or
+       modification and the cached file is used (if
+       available). If 'md5s' is passed an empty string then
+       phpThumb.php dies and outputs the correct MD5 hash
+       value.  This parameter is the single-file equivalent
+       of 'cache_source_filemtime_ignore_*' configuration
+       paramters
+ xto = EXIF Thumbnail Only - set to only extract EXIF
+       thumbnail and not do any additional processing
+  ra = Rotate by Angle: angle of rotation in degrees
+       positive = counterclockwise, negative = clockwise
+  ar = Auto Rotate: set to "x" to use EXIF orientation
+       stored by camera. Can also be set to "l" or "L"
+       for landscape, or "p" or "P" for portrait. "l"
+       and "P" rotate the image clockwise, "L" and "p"
+       rotate the image counter-clockwise.
+ aoe = Output Allow Enlarging - override the setting for
+       $CONFIG['output_allow_enlarging'] (1=on, 0=off)
+       ("far" and "iar" both override this and allow output
+       larger than input)
+ iar = Ignore Aspect Ratio - disable proportional resizing
+       and stretch image to fit "h" & "w" (which must both
+       be set).  (1=on, 0=off)  (overrides "far")
+ far = Force Aspect Ratio - image will be created at size
+       specified by "w" and "h" (which must both be set).
+       Alignment: L=left,R=right,T=top,B=bottom,C=center
+       BL,BR,TL,TR use the appropriate direction if the
+       image is landscape or portrait.
+maxb = MAXimum Byte size - output quality is auto-set to
+       fit thumbnail into "maxb" bytes  (compression
+       quality is adjusted for JPEG, bit depth is adjusted
+       for PNG and GIF)
+down = filename to save image to. If this is set the
+       browser will prompt to save to this filename rather
+       than display the image
+
+
+Additional Object-only configuration variables:
+  rawImageData = binary data of source image, for example
+                 if the source data is from a database. Set
+                 this value instead of setting "src".
+
+
+
+General Notes:
+
+* Always use the local image filename wherever possible
+  rather than a full http:// URL because performance is
+  much better, less (or no) use of temp files, and the
+  last-modified check for cached files doesn't work for
+  remote files.
+
+* Thumbnails will be scaled proportionately to fit in a
+  box of at most (width * height) pixels
+  (unless "iar" is set)
+
+* Thumbnail caching for URL or database sources requires
+  an absolute directory name for $config_cache_directory
+  Physical file cached thumbnails will be recreated if
+  the source file changes, but remote/database files
+  cannot (modification time isn't readily available)
+
+* If you need a GUI interface to phpThumb(), or for a user
+  to specify crop settings, or something like that please
+  see the list of known programs in /demo/readme.demos.txt
+
+* Cropping images can be specified with either exact pixel
+  values for sx/sy/sw/sh parameters, or if those are set
+  to a value >0 and <1 then these are interpreted as a
+  percentage of the source image width/height. For example,
+  to crop 25% off all sides, you would specify parameters:
+  phpThumb.php?src=pic.jpg&sx=.25&sy=.25&sw=.5&sh=.5
+
+* phpThumb() may have tempfile access issues on servers
+  where Safe Mode is enabled, specificly when accessing
+  a file over HTTP, or when a non-bundled version of GD
+  is in use. Specifying "config_temp_directory" may help
+
+* Properly resolving /~user/ style filenames requires
+  apache_lookup_uri(), which is missing or broken in
+  Apache2, or if PHP is not installed as an Apache module.
+  phpThumb() does try and work around this if it is
+  unavailble, but you may have to specify a full filename
+  for "src" if you encounter problems.
+
+* phpThumb() should work with PHP v4.0.6+, but seems to
+   have a few quirks before v4.1.0
+  EXIF thumbnail extraction requires PHP v4.2.0+
+  Image rotation requires PHP v4.3.0+. There have been
+    reports of problems with PHP older than v4.3.3
+
+* phpThumb() works with GD v1.x, but works better with
+   GD v2.0+ because of the true-color image support
+   and ImageCopyResampled(). Also, there appears to be a
+   bug in ImageCopyResized() which is used with GD v1.x
+   where the bottom and/or right line of pixels is set
+   to the background color (due to a rounding error?)
+  NOTE: Please use the bundled version of GD if at all
+   possible (with PHP v4.3.0+) because the non-bundled
+   version has bugs which may cause PHP to crash:
+   * http://bugs.php.net/bug.php?id=21518
+   * http://bugs.php.net/bug.php?id=24174
+   phpThumb() has a workaround for the above bug but
+   there may be other bugs, and the workaround is slow.
+  Most (if not all) filters require GD v2.x to function
+   at all.
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/fonts/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/fonts/readme.txt
new file mode 100644 (file)
index 0000000..2e5ef72
--- /dev/null
@@ -0,0 +1,5 @@
+This is the default location for TTF fonts.
+
+You can safely delete or ignore this directory if you're not using
+TTF fonts for text watermarks. You can also specify an alternate
+directory in phpThumb.config.php
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/index.php
new file mode 100644 (file)
index 0000000..a722861
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+header('Location: demo/phpThumb.demo.demo1.php');
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.config.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.config.php
new file mode 100644 (file)
index 0000000..ff8df77
--- /dev/null
@@ -0,0 +1,217 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+ob_start();
+if (!file_exists(dirname(__FILE__).'/phpthumb.functions.php') || !include_once(dirname(__FILE__).'/phpthumb.functions.php')) {
+       ob_end_flush();
+       die('failed to include_once(phpthumb.functions.php) - realpath="'.realpath(dirname(__FILE__).'/phpthumb.functions.php').'"');
+}
+ob_end_clean();
+
+// START USER CONFIGURATION SECTION:
+
+// * DocumentRoot configuration
+// phpThumb() depends on $_SERVER['DOCUMENT_ROOT'] to resolve path/filenames. This value is usually correct,
+// but has been known to be broken on some servers. This value allows you to override the default value.
+// Do not modify from the auto-detect default value unless you are having problems.
+//$PHPTHUMB_CONFIG['document_root'] = '/home/httpd/httpdocs';
+//$PHPTHUMB_CONFIG['document_root'] = 'c:\\webroot\\example.com\\www';
+//$PHPTHUMB_CONFIG['document_root'] = $_SERVER['DOCUMENT_ROOT'];
+//$PHPTHUMB_CONFIG['document_root'] = realpath((@$_SERVER['DOCUMENT_ROOT'] && file_exists(@$_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF'])) ? $_SERVER['DOCUMENT_ROOT'] : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace($phpThumb->osslash, '/', realpath('.'))));
+$PHPTHUMB_CONFIG['document_root'] = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace($phpThumb->osslash, '/', dirname(__FILE__))));
+
+// * Cache directory configuration (choose only one of these - leave the other lines commented-out):
+// Note: this directory must be writable (usually chmod 777 is neccesary) for caching to work.
+// If the directory is not writable no error will be generated but caching will be disabled.
+$PHPTHUMB_CONFIG['cache_directory'] = dirname(__FILE__).'/cache/';                            // set the cache directory relative to the phpThumb() installation
+//$PHPTHUMB_CONFIG['cache_directory'] = $PHPTHUMB_CONFIG['document_root'].'/phpthumb/cache/'; // set the cache directory to an absolute directory for all source images
+//$PHPTHUMB_CONFIG['cache_directory'] = './cache/';                                           // set the cache directory relative to the source image - must start with '.' (will not work to cache URL- or database-sourced images, please use an absolute directory name)
+//$PHPTHUMB_CONFIG['cache_directory'] = null;                                                 // disable thumbnail caching (not recommended)
+
+$PHPTHUMB_CONFIG['cache_disable_warning'] = false; // If [cache_directory] is non-existant or not writable, and [cache_disable_warning] is false, an error image will be generated warning to either set the cache directory or disable the warning (to avoid people not knowing about the cache)
+
+
+// * Cache culling: phpThumb can automatically limit the contents of the cache directory
+// based on last-access date and/or number of files and/or total filesize.
+$PHPTHUMB_CONFIG['cache_maxage'] = null;         // never delete cached thumbnails based on last-access time
+//$PHPTHUMB_CONFIG['cache_maxage'] = 86400 * 30; // delete cached thumbnails that haven't been accessed in more than [30 days] (value is maximum time since last access in seconds to avoid deletion)
+
+//$PHPTHUMB_CONFIG['cache_maxsize'] = null;   // never delete cached thumbnails based on byte size of cache directory
+$PHPTHUMB_CONFIG['cache_maxsize'] = 10485760; // delete least-recently-accessed cached thumbnails when more than [10MB] of cached files are present (value is maximum bytesize of all cached files)
+
+$PHPTHUMB_CONFIG['cache_maxfiles'] = null;  // never delete cached thumbnails based on number of cached files
+//$PHPTHUMB_CONFIG['cache_maxfiles'] = 500; // delete least-recently-accessed cached thumbnails when more than [500] cached files are present (value is maximum number of cached files to keep)
+
+
+// * Source image cache configuration
+$PHPTHUMB_CONFIG['cache_source_enabled']   = false;                               // if true, source images obtained via HTTP are cached to $PHPTHUMB_CONFIG['cache_source_directory']
+$PHPTHUMB_CONFIG['cache_source_directory'] = dirname(__FILE__).'/cache/source/';  // set the cache directory for unprocessed source images
+
+// * cache source modification date configuration
+$PHPTHUMB_CONFIG['cache_source_filemtime_ignore_local']  = false; // if true, local source images will not be checked for modification date and cached image will be used if available, even if source image is changed or removed
+$PHPTHUMB_CONFIG['cache_source_filemtime_ignore_remote'] = false; // if true, remote source images will not be checked for modification date and cached image will be used if available, even if source image is changed or removed
+
+$PHPTHUMB_CONFIG['cache_differentiate_offsite'] = true; // if true, hotlinked images are cached seperately from locally-called images; if false, all images share the same cache regardless of HTTP referer
+
+// If non-empty, GETstring parameters (except 'src') are ignored and only $PHPTHUMB_DEFAULTS
+// parameters (set at the bottom of phpThumb.config.php) are used for processing.
+// The '*' character MUST be used to represent the source image name
+$PHPTHUMB_CONFIG['cache_default_only_suffix'] = '';           // cached in normal phpThumb manner
+//$PHPTHUMB_CONFIG['cache_default_only_suffix'] = '*_thumb';  // cache 'pic.jpg' becomes 'pic_thumb.jpg' (or 'pic_thumb.png' if PNG output is selected, etc)
+//$PHPTHUMB_CONFIG['cache_default_only_suffix'] = 'small-*';  // cache 'pic.jpg' becomes 'small-pic.jpg' (or 'small-pic.png' if PNG output is selected, etc)
+
+
+// * Temp directory configuration
+// phpThumb() may need to create temp files. Usually the system temp dir is writable and can be used.
+// Leave this value as NULL in most cases. If you get errors about "failed to open <filename> for writing"
+// you should change this to a full pathname to a directory you do have write access to.
+//$PHPTHUMB_CONFIG['temp_directory'] = '/tmp/';
+$PHPTHUMB_CONFIG['temp_directory'] = null;
+
+
+// maximum number of pixels in source image to attempt to process entire image.
+// If this is zero then no limit on source image dimensions.
+// If this is nonzero then this is the maximum number of pixels the source image
+// can have to be processed normally, otherwise the embedded EXIF thumbnail will
+// be used (if available) or an "image too large" notice will be displayed.
+// This is to be used for large source images (> 1600x1200) and low PHP memory
+// limits. If PHP runs out of memory the script will usually just die with no output.
+// To calculate this number, multiply the dimensions of the largest image
+// you can process with your memory limitation (e.g. 1600 * 1200 = 1920000)
+// As a general guideline, this number will be about 20% of your PHP memory
+// configuration, so 8M = 1,677,722; 16M = 3,355,443; 32M = 6,710,886; etc.
+if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=') && !defined('memory_get_usage') && !@ini_get('memory_limit')) {
+       // memory_get_usage() will only be defined if your PHP is compiled with the --enable-memory-limit configuration option.
+       $PHPTHUMB_CONFIG['max_source_pixels'] = 0;         // no memory limit
+} else {
+       // calculate default max_source_pixels as 20% of memory limit configuration
+       $PHPTHUMB_CONFIG['max_source_pixels'] = round(max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576 * 0.20);
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 0;       // no memory limit
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 1920000; // allow 1600x1200 images (2Mpx), no larger (about 10MB memory required)
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 3355443; // 16MB memory limit
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 3871488; // allow 2272x1704 images (4Mpx), no larger (about 16MB memory required)
+}
+
+
+// ImageMagick configuration
+// If source image is larger than available memory limits as defined above in
+// 'max_source_pixels' AND ImageMagick's "convert" program is available, phpThumb()
+// will call ImageMagick to perform the thumbnailing of the source image to bypass
+// the memory limitation. Leaving the value as NULL will cause phpThumb() to
+// attempt to detect ImageMagick's presence with `which`
+if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+       // Windows: set absolute pathname
+       $PHPTHUMB_CONFIG['imagemagick_path'] = 'C:/Program Files/ImageMagick-6.2.3-Q16/convert.exe';
+} else {
+       // *nix: set absolute pathname to "convert", or leave as null if "convert" is in the path
+       //$PHPTHUMB_CONFIG['imagemagick_path'] = '/usr/local/bin/convert';
+       $PHPTHUMB_CONFIG['imagemagick_path'] = null;
+}
+$PHPTHUMB_CONFIG['prefer_imagemagick'] = true;  // If true, use ImageMagick to resize thumbnails if possible; if false only use ImageMagick if PHP memory limit is too low.
+
+
+// * Default output configuration:
+$PHPTHUMB_CONFIG['output_format']    = 'jpeg'; // default output format ('jpeg', 'png' or 'gif') - thumbnail will be output in this format (if available in your version of GD). This is always overridden by ?f=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_maxwidth']  = 0;      // default maximum thumbnail width.  If this is zero then default width  is the width  of the source image. This is always overridden by ?w=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_maxheight'] = 0;      // default maximum thumbnail height. If this is zero then default height is the height of the source image. This is always overridden by ?h=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_interlace'] = true;   // if true: interlaced output for GIF/PNG, progressive output for JPEG; if false: non-interlaced for GIF/PNG, baseline for JPEG.
+
+// * Error message configuration
+$PHPTHUMB_CONFIG['error_image_width']           = 175;      // default width for error images
+$PHPTHUMB_CONFIG['error_image_height']          = 175;      // default height for error images
+$PHPTHUMB_CONFIG['error_message_image_default'] = '';       // Set this to the name of a generic error image (e.g. '/images/error.png') that you want displayed in place of any error message that may occur. This setting is overridden by the 'err' parameter, which does the same thing.
+$PHPTHUMB_CONFIG['error_bgcolor']               = 'CCCCFF'; // background color of error message images
+$PHPTHUMB_CONFIG['error_textcolor']             = 'FF0000'; // color of text in error messages
+$PHPTHUMB_CONFIG['error_fontsize']              = 1;        // size of text in error messages, from 1 (smallest) to 5 (largest)
+$PHPTHUMB_CONFIG['error_die_on_error']          = true;     // die with error message on any fatal error (recommended with standalone phpThumb.php)
+$PHPTHUMB_CONFIG['error_silent_die_on_error']   = false;    // simply die with no output of any kind on fatal errors (not recommended)
+$PHPTHUMB_CONFIG['error_die_on_source_failure'] = true;     // die with error message if source image cannot be processed by phpThumb() (usually because source image is corrupt in some way). If false the source image will be passed through unprocessed, if true (default) an error message will be displayed.
+
+// * Off-server Thumbnailing Configuration:
+$PHPTHUMB_CONFIG['nohotlink_enabled']           = true;                                     // If false will allow thumbnailing from any source domain
+$PHPTHUMB_CONFIG['nohotlink_valid_domains']     = array(@$_SERVER['HTTP_HOST']);            // This is the list of domains for which thumbnails are allowed to be created. The default value of the current domain should be fine in most cases, but if neccesary you can add more domains in here, in the format 'www.example.com'
+$PHPTHUMB_CONFIG['nohotlink_erase_image']       = true;                                     // if true thumbnail is covered up with $PHPTHUMB_CONFIG['nohotlink_fill_color'] before text is applied, if false text is written over top of thumbnail
+$PHPTHUMB_CONFIG['nohotlink_text_message']      = 'Off-server thumbnailing is not allowed'; // text of error message
+// * Off-server Linking Configuration:
+$PHPTHUMB_CONFIG['nooffsitelink_enabled']       = true;                                       // If false will allow thumbnails to be linked to from any domain, if true only domains listed below in 'nooffsitelink_valid_domains' will be allowed.
+$PHPTHUMB_CONFIG['nooffsitelink_valid_domains'] = array(@$_SERVER['HTTP_HOST']);              // This is the list of domains for which thumbnails are allowed to be created. The default value of the current domain should be fine in most cases, but if neccesary you can add more domains in here, in the format 'www.example.com'
+$PHPTHUMB_CONFIG['nooffsitelink_require_refer'] = false;                                      // If false will allow standalone calls to phpThumb(). If true then only requests with a $_SERVER['HTTP_REFERER'] value in 'nooffsitelink_valid_domains' are allowed.
+$PHPTHUMB_CONFIG['nooffsitelink_erase_image']   = true;                                       // if true thumbnail is covered up with $PHPTHUMB_CONFIG['nohotlink_fill_color'] before text is applied, if false text is written over top of thumbnail
+$PHPTHUMB_CONFIG['nooffsitelink_text_message']  = 'Image taken from '.@$_SERVER['HTTP_HOST']; // text of error message
+
+// * Border & Background default colors
+$PHPTHUMB_CONFIG['border_hexcolor']     = '000000'; // Default border color - usual HTML-style hex color notation (overidden with 'bc' parameter)
+$PHPTHUMB_CONFIG['background_hexcolor'] = 'FFFFFF'; // Default background color when thumbnail aspect ratio does not match fixed-dimension box - usual HTML-style hex color notation (overridden with 'bg' parameter)
+
+// * Watermark configuration
+$PHPTHUMB_CONFIG['ttf_directory'] = dirname(__FILE__).'/fonts'; // Base directory for TTF font files
+//$PHPTHUMB_CONFIG['ttf_directory'] = 'c:/windows/fonts';
+
+
+// * MySQL configuration
+// You may want to pull data from a database rather than a physical file
+// If so, modify the $PHPTHUMB_CONFIG['mysql_query'] line to suit your database structure
+// Note: the data retrieved must be the actual binary data of the image, not a URL or filename
+// see http://www.billy-corgan.com/blog/archive/000143.php for a brief tutorial on this section
+
+$PHPTHUMB_CONFIG['mysql_query'] = '';
+//$PHPTHUMB_CONFIG['mysql_query'] = 'SELECT `picture` FROM `products` WHERE (`id` = \''.mysql_escape_string(@$_GET['id']).'\')';
+
+// These 4 values must be modified if $PHPTHUMB_CONFIG['mysql_query'] is not empty, but may be ignored if $PHPTHUMB_CONFIG['mysql_query'] is blank.
+$PHPTHUMB_CONFIG['mysql_hostname'] = 'localhost';
+$PHPTHUMB_CONFIG['mysql_username'] = '';
+$PHPTHUMB_CONFIG['mysql_password'] = '';
+$PHPTHUMB_CONFIG['mysql_database'] = '';
+
+
+// * Security Configuration
+$PHPTHUMB_CONFIG['high_security_enabled']    = false;  // if enabled, requires 'high_security_password' set to at least 5 characters, and requires the use of phpThumbURL() function (at the bottom of phpThumb.config.php) to generate hashed URLs
+$PHPTHUMB_CONFIG['high_security_password']   = '';     // required if 'high_security_enabled' is true, must be at least 5 characters long
+$PHPTHUMB_CONFIG['disable_debug']            = false;  // prevent phpThumb from displaying any information about your system. If true, phpThumbDebug and error messages will be disabled
+$PHPTHUMB_CONFIG['allow_src_above_docroot']  = false;  // if true, allow src to be anywhere in filesystem; if false (default) only allow src within document_root
+$PHPTHUMB_CONFIG['allow_src_above_phpthumb'] = true;   // if true (default), allow src to be anywhere in filesystem; if false only allow src within sub-directory of phpThumb installation
+$PHPTHUMB_CONFIG['allow_parameter_file']     = false;  // if true, allow use of 'file' parameter; if false (default) the 'file' parameter is disabled/ignored
+$PHPTHUMB_CONFIG['allow_parameter_goto']     = false;  // if true, allow use of 'goto' parameter; if false (default) the 'goto' parameter is disabled/ignored
+
+
+$PHPTHUMB_CONFIG['config_prefer_imagemagick']    = true;  // If true, use ImageMagick to resize thumbnails if possible, since it is usually faster than GD functions; if false only use ImageMagick if PHP memory limit is too low.
+$PHPTHUMB_CONFIG['use_exif_thumbnail_for_speed'] = false; // If true, and EXIF thumbnail is available, and is larger or equal to output image dimensions, use EXIF thumbnail rather than actual source image for generating thumbnail. Benefit is only speed, avoiding resizing large image.
+
+// END USER CONFIGURATION SECTION
+
+///////////////////////////////////////////////////////////////////////////////
+
+// START DEFAULT PARAMETERS SECTION
+// If any parameters are constant across ALL images, you can set them here
+
+$PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE = true;  // if true, any parameters in the URL will override the defaults set here; if false, any parameters set here cannot be overridden in the URL
+$PHPTHUMB_DEFAULTS_DISABLEGETPARAMS  = false; // if true, GETstring parameters will be ignored (except for 'src') and only below default parameters will be used; if false, both default and GETstring parameters will be used (depending on $PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE). Will be auto-set true if !empty($PHPTHUMB_CONFIG['cache_default_only_suffix'])
+
+//$PHPTHUMB_DEFAULTS['w']    = 100;
+//$PHPTHUMB_DEFAULTS['fltr'] = array('blur|10');
+//$PHPTHUMB_DEFAULTS['q']    =  90;
+
+
+// END DEFAULT PARAMETERS SECTION
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// function for generating hashed calls to phpThumb if 'high_security_enabled'
+// echo '<img src="'.phpThumbURL('src=pic.jpg&w=50').'">';
+
+function phpThumbURL($ParameterString) {
+       global $PHPTHUMB_CONFIG;
+       return 'phpThumb.php?'.$ParameterString.'&hash='.md5($ParameterString.$PHPTHUMB_CONFIG['high_security_password']);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.config.php.default b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.config.php.default
new file mode 100644 (file)
index 0000000..924664b
--- /dev/null
@@ -0,0 +1,217 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+ob_start();
+if (!file_exists(dirname(__FILE__).'/phpthumb.functions.php') || !include_once(dirname(__FILE__).'/phpthumb.functions.php')) {
+       ob_end_flush();
+       die('failed to include_once(phpthumb.functions.php) - realpath="'.realpath(dirname(__FILE__).'/phpthumb.functions.php').'"');
+}
+ob_end_clean();
+
+// START USER CONFIGURATION SECTION:
+
+// * DocumentRoot configuration
+// phpThumb() depends on $_SERVER['DOCUMENT_ROOT'] to resolve path/filenames. This value is usually correct,
+// but has been known to be broken on some servers. This value allows you to override the default value.
+// Do not modify from the auto-detect default value unless you are having problems.
+//$PHPTHUMB_CONFIG['document_root'] = '/home/httpd/httpdocs';
+//$PHPTHUMB_CONFIG['document_root'] = 'c:\\webroot\\example.com\\www';
+//$PHPTHUMB_CONFIG['document_root'] = $_SERVER['DOCUMENT_ROOT'];
+//$PHPTHUMB_CONFIG['document_root'] = realpath((@$_SERVER['DOCUMENT_ROOT'] && file_exists(@$_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF'])) ? $_SERVER['DOCUMENT_ROOT'] : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace($phpThumb->osslash, '/', realpath('.'))));
+$PHPTHUMB_CONFIG['document_root'] = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace($phpThumb->osslash, '/', dirname(__FILE__))));
+
+// * Cache directory configuration (choose only one of these - leave the other lines commented-out):
+// Note: this directory must be writable (usually chmod 777 is neccesary) for caching to work.
+// If the directory is not writable no error will be generated but caching will be disabled.
+$PHPTHUMB_CONFIG['cache_directory'] = dirname(__FILE__).'/cache/';                            // set the cache directory relative to the phpThumb() installation
+//$PHPTHUMB_CONFIG['cache_directory'] = $PHPTHUMB_CONFIG['document_root'].'/phpthumb/cache/'; // set the cache directory to an absolute directory for all source images
+//$PHPTHUMB_CONFIG['cache_directory'] = './cache/';                                           // set the cache directory relative to the source image - must start with '.' (will not work to cache URL- or database-sourced images, please use an absolute directory name)
+//$PHPTHUMB_CONFIG['cache_directory'] = null;                                                 // disable thumbnail caching (not recommended)
+
+$PHPTHUMB_CONFIG['cache_disable_warning'] = false; // If [cache_directory] is non-existant or not writable, and [cache_disable_warning] is false, an error image will be generated warning to either set the cache directory or disable the warning (to avoid people not knowing about the cache)
+
+
+// * Cache culling: phpThumb can automatically limit the contents of the cache directory
+// based on last-access date and/or number of files and/or total filesize.
+$PHPTHUMB_CONFIG['cache_maxage'] = null;         // never delete cached thumbnails based on last-access time
+//$PHPTHUMB_CONFIG['cache_maxage'] = 86400 * 30; // delete cached thumbnails that haven't been accessed in more than [30 days] (value is maximum time since last access in seconds to avoid deletion)
+
+//$PHPTHUMB_CONFIG['cache_maxsize'] = null;   // never delete cached thumbnails based on byte size of cache directory
+$PHPTHUMB_CONFIG['cache_maxsize'] = 10485760; // delete least-recently-accessed cached thumbnails when more than [10MB] of cached files are present (value is maximum bytesize of all cached files)
+
+$PHPTHUMB_CONFIG['cache_maxfiles'] = null;  // never delete cached thumbnails based on number of cached files
+//$PHPTHUMB_CONFIG['cache_maxfiles'] = 500; // delete least-recently-accessed cached thumbnails when more than [500] cached files are present (value is maximum number of cached files to keep)
+
+
+// * Source image cache configuration
+$PHPTHUMB_CONFIG['cache_source_enabled']   = false;                               // if true, source images obtained via HTTP are cached to $PHPTHUMB_CONFIG['cache_source_directory']
+$PHPTHUMB_CONFIG['cache_source_directory'] = dirname(__FILE__).'/cache/source/';  // set the cache directory for unprocessed source images
+
+// * cache source modification date configuration
+$PHPTHUMB_CONFIG['cache_source_filemtime_ignore_local']  = false; // if true, local source images will not be checked for modification date and cached image will be used if available, even if source image is changed or removed
+$PHPTHUMB_CONFIG['cache_source_filemtime_ignore_remote'] = false; // if true, remote source images will not be checked for modification date and cached image will be used if available, even if source image is changed or removed
+
+$PHPTHUMB_CONFIG['cache_differentiate_offsite'] = true; // if true, hotlinked images are cached seperately from locally-called images; if false, all images share the same cache regardless of HTTP referer
+
+// If non-empty, GETstring parameters (except 'src') are ignored and only $PHPTHUMB_DEFAULTS
+// parameters (set at the bottom of phpThumb.config.php) are used for processing.
+// The '*' character MUST be used to represent the source image name
+$PHPTHUMB_CONFIG['cache_default_only_suffix'] = '';           // cached in normal phpThumb manner
+//$PHPTHUMB_CONFIG['cache_default_only_suffix'] = '*_thumb';  // cache 'pic.jpg' becomes 'pic_thumb.jpg' (or 'pic_thumb.png' if PNG output is selected, etc)
+//$PHPTHUMB_CONFIG['cache_default_only_suffix'] = 'small-*';  // cache 'pic.jpg' becomes 'small-pic.jpg' (or 'small-pic.png' if PNG output is selected, etc)
+
+
+// * Temp directory configuration
+// phpThumb() may need to create temp files. Usually the system temp dir is writable and can be used.
+// Leave this value as NULL in most cases. If you get errors about "failed to open <filename> for writing"
+// you should change this to a full pathname to a directory you do have write access to.
+//$PHPTHUMB_CONFIG['temp_directory'] = '/tmp/';
+$PHPTHUMB_CONFIG['temp_directory'] = null;
+
+
+// maximum number of pixels in source image to attempt to process entire image.
+// If this is zero then no limit on source image dimensions.
+// If this is nonzero then this is the maximum number of pixels the source image
+// can have to be processed normally, otherwise the embedded EXIF thumbnail will
+// be used (if available) or an "image too large" notice will be displayed.
+// This is to be used for large source images (> 1600x1200) and low PHP memory
+// limits. If PHP runs out of memory the script will usually just die with no output.
+// To calculate this number, multiply the dimensions of the largest image
+// you can process with your memory limitation (e.g. 1600 * 1200 = 1920000)
+// As a general guideline, this number will be about 20% of your PHP memory
+// configuration, so 8M = 1,677,722; 16M = 3,355,443; 32M = 6,710,886; etc.
+if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=') && !defined('memory_get_usage') && !@ini_get('memory_limit')) {
+       // memory_get_usage() will only be defined if your PHP is compiled with the --enable-memory-limit configuration option.
+       $PHPTHUMB_CONFIG['max_source_pixels'] = 0;         // no memory limit
+} else {
+       // calculate default max_source_pixels as 20% of memory limit configuration
+       $PHPTHUMB_CONFIG['max_source_pixels'] = round(max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576 * 0.20);
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 0;       // no memory limit
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 1920000; // allow 1600x1200 images (2Mpx), no larger (about 10MB memory required)
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 3355443; // 16MB memory limit
+       //$PHPTHUMB_CONFIG['max_source_pixels'] = 3871488; // allow 2272x1704 images (4Mpx), no larger (about 16MB memory required)
+}
+
+
+// ImageMagick configuration
+// If source image is larger than available memory limits as defined above in
+// 'max_source_pixels' AND ImageMagick's "convert" program is available, phpThumb()
+// will call ImageMagick to perform the thumbnailing of the source image to bypass
+// the memory limitation. Leaving the value as NULL will cause phpThumb() to
+// attempt to detect ImageMagick's presence with `which`
+if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+       // Windows: set absolute pathname
+       $PHPTHUMB_CONFIG['imagemagick_path'] = 'C:/Program Files/ImageMagick-6.2.3-Q16/convert.exe';
+} else {
+       // *nix: set absolute pathname to "convert", or leave as null if "convert" is in the path
+       //$PHPTHUMB_CONFIG['imagemagick_path'] = '/usr/local/bin/convert';
+       $PHPTHUMB_CONFIG['imagemagick_path'] = null;
+}
+$PHPTHUMB_CONFIG['prefer_imagemagick'] = true;  // If true, use ImageMagick to resize thumbnails if possible; if false only use ImageMagick if PHP memory limit is too low.
+
+
+// * Default output configuration:
+$PHPTHUMB_CONFIG['output_format']    = 'jpeg'; // default output format ('jpeg', 'png' or 'gif') - thumbnail will be output in this format (if available in your version of GD). This is always overridden by ?f=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_maxwidth']  = 0;      // default maximum thumbnail width.  If this is zero then default width  is the width  of the source image. This is always overridden by ?w=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_maxheight'] = 0;      // default maximum thumbnail height. If this is zero then default height is the height of the source image. This is always overridden by ?h=___ GETstring parameter
+$PHPTHUMB_CONFIG['output_interlace'] = true;   // if true: interlaced output for GIF/PNG, progressive output for JPEG; if false: non-interlaced for GIF/PNG, baseline for JPEG.
+
+// * Error message configuration
+$PHPTHUMB_CONFIG['error_image_width']           = 400;      // default width for error images
+$PHPTHUMB_CONFIG['error_image_height']          = 100;      // default height for error images
+$PHPTHUMB_CONFIG['error_message_image_default'] = '';       // Set this to the name of a generic error image (e.g. '/images/error.png') that you want displayed in place of any error message that may occur. This setting is overridden by the 'err' parameter, which does the same thing.
+$PHPTHUMB_CONFIG['error_bgcolor']               = 'CCCCFF'; // background color of error message images
+$PHPTHUMB_CONFIG['error_textcolor']             = 'FF0000'; // color of text in error messages
+$PHPTHUMB_CONFIG['error_fontsize']              = 1;        // size of text in error messages, from 1 (smallest) to 5 (largest)
+$PHPTHUMB_CONFIG['error_die_on_error']          = true;     // die with error message on any fatal error (recommended with standalone phpThumb.php)
+$PHPTHUMB_CONFIG['error_silent_die_on_error']   = false;    // simply die with no output of any kind on fatal errors (not recommended)
+$PHPTHUMB_CONFIG['error_die_on_source_failure'] = true;     // die with error message if source image cannot be processed by phpThumb() (usually because source image is corrupt in some way). If false the source image will be passed through unprocessed, if true (default) an error message will be displayed.
+
+// * Off-server Thumbnailing Configuration:
+$PHPTHUMB_CONFIG['nohotlink_enabled']           = true;                                     // If false will allow thumbnailing from any source domain
+$PHPTHUMB_CONFIG['nohotlink_valid_domains']     = array(@$_SERVER['HTTP_HOST']);            // This is the list of domains for which thumbnails are allowed to be created. The default value of the current domain should be fine in most cases, but if neccesary you can add more domains in here, in the format 'www.example.com'
+$PHPTHUMB_CONFIG['nohotlink_erase_image']       = true;                                     // if true thumbnail is covered up with $PHPTHUMB_CONFIG['nohotlink_fill_color'] before text is applied, if false text is written over top of thumbnail
+$PHPTHUMB_CONFIG['nohotlink_text_message']      = 'Off-server thumbnailing is not allowed'; // text of error message
+// * Off-server Linking Configuration:
+$PHPTHUMB_CONFIG['nooffsitelink_enabled']       = true;                                       // If false will allow thumbnails to be linked to from any domain, if true only domains listed below in 'nooffsitelink_valid_domains' will be allowed.
+$PHPTHUMB_CONFIG['nooffsitelink_valid_domains'] = array(@$_SERVER['HTTP_HOST']);              // This is the list of domains for which thumbnails are allowed to be created. The default value of the current domain should be fine in most cases, but if neccesary you can add more domains in here, in the format 'www.example.com'
+$PHPTHUMB_CONFIG['nooffsitelink_require_refer'] = false;                                      // If false will allow standalone calls to phpThumb(). If true then only requests with a $_SERVER['HTTP_REFERER'] value in 'nooffsitelink_valid_domains' are allowed.
+$PHPTHUMB_CONFIG['nooffsitelink_erase_image']   = true;                                       // if true thumbnail is covered up with $PHPTHUMB_CONFIG['nohotlink_fill_color'] before text is applied, if false text is written over top of thumbnail
+$PHPTHUMB_CONFIG['nooffsitelink_text_message']  = 'Image taken from '.@$_SERVER['HTTP_HOST']; // text of error message
+
+// * Border & Background default colors
+$PHPTHUMB_CONFIG['border_hexcolor']     = '000000'; // Default border color - usual HTML-style hex color notation (overidden with 'bc' parameter)
+$PHPTHUMB_CONFIG['background_hexcolor'] = 'FFFFFF'; // Default background color when thumbnail aspect ratio does not match fixed-dimension box - usual HTML-style hex color notation (overridden with 'bg' parameter)
+
+// * Watermark configuration
+$PHPTHUMB_CONFIG['ttf_directory'] = dirname(__FILE__).'/fonts'; // Base directory for TTF font files
+//$PHPTHUMB_CONFIG['ttf_directory'] = 'c:/windows/fonts';
+
+
+// * MySQL configuration
+// You may want to pull data from a database rather than a physical file
+// If so, modify the $PHPTHUMB_CONFIG['mysql_query'] line to suit your database structure
+// Note: the data retrieved must be the actual binary data of the image, not a URL or filename
+// see http://www.billy-corgan.com/blog/archive/000143.php for a brief tutorial on this section
+
+$PHPTHUMB_CONFIG['mysql_query'] = '';
+//$PHPTHUMB_CONFIG['mysql_query'] = 'SELECT `picture` FROM `products` WHERE (`id` = \''.mysql_escape_string(@$_GET['id']).'\')';
+
+// These 4 values must be modified if $PHPTHUMB_CONFIG['mysql_query'] is not empty, but may be ignored if $PHPTHUMB_CONFIG['mysql_query'] is blank.
+$PHPTHUMB_CONFIG['mysql_hostname'] = 'localhost';
+$PHPTHUMB_CONFIG['mysql_username'] = '';
+$PHPTHUMB_CONFIG['mysql_password'] = '';
+$PHPTHUMB_CONFIG['mysql_database'] = '';
+
+
+// * Security Configuration
+$PHPTHUMB_CONFIG['high_security_enabled']    = false;  // if enabled, requires 'high_security_password' set to at least 5 characters, and requires the use of phpThumbURL() function (at the bottom of phpThumb.config.php) to generate hashed URLs
+$PHPTHUMB_CONFIG['high_security_password']   = '';     // required if 'high_security_enabled' is true, must be at least 5 characters long
+$PHPTHUMB_CONFIG['disable_debug']            = false;  // prevent phpThumb from displaying any information about your system. If true, phpThumbDebug and error messages will be disabled
+$PHPTHUMB_CONFIG['allow_src_above_docroot']  = false;  // if true, allow src to be anywhere in filesystem; if false (default) only allow src within document_root
+$PHPTHUMB_CONFIG['allow_src_above_phpthumb'] = true;   // if true (default), allow src to be anywhere in filesystem; if false only allow src within sub-directory of phpThumb installation
+$PHPTHUMB_CONFIG['allow_parameter_file']     = false;  // if true, allow use of 'file' parameter; if false (default) the 'file' parameter is disabled/ignored
+$PHPTHUMB_CONFIG['allow_parameter_goto']     = false;  // if true, allow use of 'goto' parameter; if false (default) the 'goto' parameter is disabled/ignored
+
+
+$PHPTHUMB_CONFIG['config_prefer_imagemagick']    = true;  // If true, use ImageMagick to resize thumbnails if possible, since it is usually faster than GD functions; if false only use ImageMagick if PHP memory limit is too low.
+$PHPTHUMB_CONFIG['use_exif_thumbnail_for_speed'] = false; // If true, and EXIF thumbnail is available, and is larger or equal to output image dimensions, use EXIF thumbnail rather than actual source image for generating thumbnail. Benefit is only speed, avoiding resizing large image.
+
+// END USER CONFIGURATION SECTION
+
+///////////////////////////////////////////////////////////////////////////////
+
+// START DEFAULT PARAMETERS SECTION
+// If any parameters are constant across ALL images, you can set them here
+
+$PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE = true;  // if true, any parameters in the URL will override the defaults set here; if false, any parameters set here cannot be overridden in the URL
+$PHPTHUMB_DEFAULTS_DISABLEGETPARAMS  = false; // if true, GETstring parameters will be ignored (except for 'src') and only below default parameters will be used; if false, both default and GETstring parameters will be used (depending on $PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE). Will be auto-set true if !empty($PHPTHUMB_CONFIG['cache_default_only_suffix'])
+
+//$PHPTHUMB_DEFAULTS['w']    = 100;
+//$PHPTHUMB_DEFAULTS['fltr'] = array('blur|10');
+//$PHPTHUMB_DEFAULTS['q']    =  90;
+
+
+// END DEFAULT PARAMETERS SECTION
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// function for generating hashed calls to phpThumb if 'high_security_enabled'
+// echo '<img src="'.phpThumbURL('src=pic.jpg&w=50').'">';
+
+function phpThumbURL($ParameterString) {
+       global $PHPTHUMB_CONFIG;
+       return 'phpThumb.php?'.$ParameterString.'&hash='.md5($ParameterString.$PHPTHUMB_CONFIG['high_security_password']);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpThumb.php
new file mode 100644 (file)
index 0000000..f07c400
--- /dev/null
@@ -0,0 +1,537 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.changelog.txt for recent changes           //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+error_reporting(E_ALL);
+ini_set('display_errors', '1');
+if (!@ini_get('safe_mode')) {
+       set_time_limit(60);  // shouldn't take nearly this long in most cases, but with many filter and/or a slow server...
+}
+$starttime = array_sum(explode(' ', microtime()));
+
+if (!function_exists('ImageJPEG') && !function_exists('ImagePNG') && !function_exists('ImageGIF')) {
+       // base64-encoded error image in GIF format
+       $ERROR_NOGD = 'R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3IToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFSRWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJnWYE0FURk7wJDA0MTKpEzoWAAskiAAA7';
+       header('Content-Type: image/gif');
+       echo base64_decode($ERROR_NOGD);
+       exit;
+}
+
+// this script relies on the superglobal arrays, fake it here for old PHP versions
+if (phpversion() < '4.1.0') {
+       $_SERVER = $HTTP_SERVER_VARS;
+       $_GET    = $HTTP_GET_VARS;
+}
+
+if (empty($_GET) && !empty($_SERVER['PATH_INFO'])) {
+       $_SERVER['PHP_SELF'] = str_replace($_SERVER['PATH_INFO'], '', @$_SERVER['PHP_SELF']);
+
+       $args = explode(';', substr($_SERVER['PATH_INFO'], 1));
+       if (!empty($args)) {
+               $_GET['src'] = @$args[count($args) - 1];
+       }
+       if (eregi('^([0-9]*)x?([0-9]*)$', @$args[count($args) - 2], $matches)) {
+               $_GET['w'] = $matches[1];
+               $_GET['h'] = $matches[2];
+       }
+       for ($i = 0; $i < count($args) - 2; $i++) {
+               @list($key, $value) = explode('=', @$args[$i]);
+               if (substr($key, -2) == '[]') {
+                       $_GET[substr($key, 0, -2)][] = $value;
+               } else {
+                       $_GET[$key] = $value;
+               }
+       }
+}
+
+// instantiate a new phpThumb() object
+ob_start();
+if (!include_once(dirname(__FILE__).'/phpthumb.class.php')) {
+       ob_end_flush();
+       die('failed to include_once("'.realpath(dirname(__FILE__).'/phpthumb.class.php').'")');
+}
+ob_end_clean();
+$phpThumb = new phpThumb();
+$phpThumb->DebugTimingMessage('phpThumb.php start', __FILE__, __LINE__, $starttime);
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[0]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '0') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if (file_exists(dirname(__FILE__).'/phpThumb.config.php')) {
+       ob_start();
+       if (include_once(dirname(__FILE__).'/phpThumb.config.php')) {
+               // great
+       } else {
+               ob_end_flush();
+               $phpThumb->ErrorImage('failed to include_once('.dirname(__FILE__).'/phpThumb.config.php) - realpath="'.realpath(dirname(__FILE__).'/phpThumb.config.php').'"');
+       }
+       ob_end_clean();
+} elseif (file_exists(dirname(__FILE__).'/phpThumb.config.php.default')) {
+       $phpThumb->ErrorImage('Please rename "phpThumb.config.php.default" to "phpThumb.config.php"');
+} else {
+       $phpThumb->ErrorImage('failed to include_once('.dirname(__FILE__).'/phpThumb.config.php) - realpath="'.realpath(dirname(__FILE__).'/phpThumb.config.php').'"');
+}
+
+if (@$PHPTHUMB_CONFIG['high_security_enabled']) {
+       if (!@$_GET['hash']) {
+               $phpThumb->ErrorImage('ERROR: missing hash');
+       }
+       if (strlen($PHPTHUMB_CONFIG['high_security_password']) < 5) {
+               $phpThumb->ErrorImage('ERROR: strlen($PHPTHUMB_CONFIG[high_security_password]) < 5');
+       }
+       if ($_GET['hash'] != md5(str_replace('&hash='.$_GET['hash'], '', $_SERVER['QUERY_STRING']).$PHPTHUMB_CONFIG['high_security_password'])) {
+               $phpThumb->ErrorImage('ERROR: invalid hash');
+       }
+}
+
+// returned the fixed string if the evil "magic_quotes_gpc" setting is on
+if (get_magic_quotes_gpc()) {
+       $RequestVarsToStripSlashes = array('src', 'wmf', 'file', 'err', 'goto', 'down');
+       foreach ($RequestVarsToStripSlashes as $key) {
+               if (isset($_GET[$key])) {
+                       $_GET[$key] = stripslashes($_GET[$key]);
+               }
+       }
+}
+
+if (!@$_SERVER['PATH_INFO'] && !@$_SERVER['QUERY_STRING']) {
+
+       echo 'phpThumb() v'.$phpThumb->phpthumb_version.'<br><a href="http://phpthumb.sourceforge.net">http://phpthumb.sourceforge.net</a><br><br>ERROR: no parameters specified';
+       unset($phpThumb);
+       exit;
+
+}
+
+if (@$_GET['src'] && isset($_GET['md5s']) && empty($_GET['md5s'])) {
+       if (eregi('^(f|ht)tps?://', $_GET['src'])) {
+               if ($fp_source = @fopen($_GET['src'], 'rb')) {
+                       $filedata = '';
+                       while (true) {
+                               $buffer = fread($fp_source, 16384);
+                               if (strlen($buffer) == 0) {
+                                       break;
+                               }
+                               $filedata .= $buffer;
+                       }
+                       fclose($fp_source);
+                       $md5s = md5($filedata);
+               }
+       } else {
+               $SourceFilename = $phpThumb->ResolveFilenameToAbsolute($_GET['src']);
+               if (is_readable($SourceFilename)) {
+                       $md5s = phpthumb_functions::md5_file_safe($SourceFilename);
+               } else {
+                       $phpThumb->ErrorImage('ERROR: "'.$SourceFilename.'" cannot be read');
+               }
+       }
+       if (@$_SERVER['HTTP_REFERER']) {
+               $phpThumb->ErrorImage('&md5s='.$md5s);
+       } else {
+               die('&md5s='.$md5s);
+       }
+}
+
+foreach ($PHPTHUMB_CONFIG as $key => $value) {
+       $keyname = 'config_'.$key;
+       $phpThumb->setParameter($keyname, $value);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[1]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '1') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+$parsed_url_referer = parse_url(@$_SERVER['HTTP_REFERER']);
+if ($phpThumb->config_nooffsitelink_require_refer && !in_array(@$parsed_url_referer['host'], $phpThumb->config_nohotlink_valid_domains)) {
+       $phpThumb->ErrorImage('config_nooffsitelink_require_refer enabled and '.(@$parsed_url_referer['host'] ? '"'.$parsed_url_referer['host'].'" is not an allowed referer' : 'no HTTP_REFERER exists'));
+}
+$parsed_url_src = parse_url(@$_GET['src']);
+if ($phpThumb->config_nohotlink_enabled && $phpThumb->config_nohotlink_erase_image && eregi('^(f|ht)tps?://', @$_GET['src']) && !in_array(@$parsed_url_src['host'], $phpThumb->config_nohotlink_valid_domains)) {
+       $phpThumb->ErrorImage($phpThumb->config_nohotlink_text_message);
+}
+
+if ($phpThumb->config_mysql_query) {
+       if ($cid = @mysql_connect($phpThumb->config_mysql_hostname, $phpThumb->config_mysql_username, $phpThumb->config_mysql_password)) {
+               if (@mysql_select_db($phpThumb->config_mysql_database, $cid)) {
+                       if ($result = @mysql_query($phpThumb->config_mysql_query, $cid)) {
+                               if ($row = @mysql_fetch_array($result)) {
+
+                                       mysql_free_result($result);
+                                       mysql_close($cid);
+                                       $phpThumb->setSourceData($row[0]);
+                                       unset($row);
+
+                               } else {
+                                       mysql_free_result($result);
+                                       mysql_close($cid);
+                                       $phpThumb->ErrorImage('no matching data in database.');
+                               }
+                       } else {
+                               mysql_close($cid);
+                               $phpThumb->ErrorImage('Error in MySQL query: "'.mysql_error($cid).'"');
+                       }
+               } else {
+                       mysql_close($cid);
+                       $phpThumb->ErrorImage('cannot select MySQL database: "'.mysql_error($cid).'"');
+               }
+       } else {
+               $phpThumb->ErrorImage('cannot connect to MySQL server');
+       }
+       unset($_GET['id']);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[2]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '2') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if (@$PHPTHUMB_CONFIG['cache_default_only_suffix'] && (strpos($PHPTHUMB_CONFIG['cache_default_only_suffix'], '*') !== false)) {
+       $PHPTHUMB_DEFAULTS_DISABLEGETPARAMS = true;
+}
+$allowedGETparameters = array('src', 'new', 'w', 'h', 'wp', 'hp', 'wl', 'hl', 'ws', 'hs', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'zc', 'bc', 'bg', 'bgt', 'fltr', 'file', 'goto', 'err', 'xto', 'ra', 'ar', 'aoe', 'far', 'iar', 'maxb', 'down', 'phpThumbDebug', 'hash', 'md5s');
+foreach ($_GET as $key => $value) {
+       if (@$PHPTHUMB_DEFAULTS_DISABLEGETPARAMS && ($key != 'src')) {
+               // disabled, do not set parameter
+               $phpThumb->DebugMessage('ignoring $_GET['.$key.'] because of $PHPTHUMB_DEFAULTS_DISABLEGETPARAMS', __FILE__, __LINE__);
+       } elseif (in_array($key, $allowedGETparameters)) {
+               $phpThumb->setParameter($key, $value);
+       } else {
+               $phpThumb->ErrorImage('Forbidden parameter: '.$key);
+       }
+}
+
+if (!empty($PHPTHUMB_DEFAULTS) && is_array($PHPTHUMB_DEFAULTS)) {
+       foreach ($PHPTHUMB_DEFAULTS as $key => $value) {
+               if ($PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE || !isset($_GET[$key])) {
+                       $phpThumb->setParameter($key, $value);
+               }
+       }
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[3]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '3') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+// check to see if file can be output from source with no processing or caching
+$CanPassThroughDirectly = true;
+if ($phpThumb->rawImageData) {
+       // data from SQL, should be fine
+} elseif (!@is_file(@$_GET['src']) || !@is_readable(@$_GET['src'])) {
+       $CanPassThroughDirectly = false;
+}
+foreach ($_GET as $key => $value) {
+       switch ($key) {
+               case 'src':
+                       // allowed
+                       break;
+
+               default:
+                       // all other parameters will cause some processing,
+                       // therefore cannot pass through original image unmodified
+                       $CanPassThroughDirectly = false;
+                       $UnAllowedGET[] = $key;
+                       break;
+       }
+}
+if (!empty($UnAllowedGET)) {
+       $phpThumb->DebugMessage('Cannot pass through directly because $_GET['.implode(';', array_unique($UnAllowedGET)).'] are set', __FILE__, __LINE__);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[4]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '4') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+function SendSaveAsFileHeaderIfNeeded() {
+       if (headers_sent()) {
+               return false;
+       }
+       global $phpThumb;
+       if (@$_GET['down']) {
+               $downloadfilename = ereg_replace('[/\\:\*\?"<>|]', '_', $_GET['down']);
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0', '>=')) {
+                       $downloadfilename = trim($downloadfilename, '.');
+               }
+               if (@$downloadfilename) {
+                       $phpThumb->DebugMessage('SendSaveAsFileHeaderIfNeeded() sending header: Content-Disposition: attachment; filename="'.$downloadfilename.'"', __FILE__, __LINE__);
+                       header('Content-Disposition: attachment; filename="'.$downloadfilename.'"');
+                       return true;
+               }
+       }
+       $phpThumb->DebugMessage('SendSaveAsFileHeaderIfNeeded() sending header: Content-Disposition: inline', __FILE__, __LINE__);
+       header('Content-Disposition: inline');
+       return true;
+}
+
+while ($CanPassThroughDirectly && $phpThumb->src) {
+       // no parameters set, passthru
+       $SourceFilename = $phpThumb->ResolveFilenameToAbsolute($phpThumb->src);
+
+       if (@$_GET['phpThumbDebug']) {
+
+               $phpThumb->DebugMessage('Would have passed "'.$SourceFilename.'" through directly, but skipping due to phpThumbDebug', __FILE__, __LINE__);
+
+       } else {
+
+               // security checks
+               if ($GetImageSize = @GetImageSize($SourceFilename)) {
+                       $ImageCreateFunctions = array(1=>'ImageCreateFromGIF', 2=>'ImageCreateFromJPEG', 3=>'ImageCreateFromPNG');
+                       if (@$ImageCreateFunctions[$GetImageSize[2]]) {
+                               $theFunction = $ImageCreateFunctions[$GetImageSize[2]];
+                               if (function_exists($theFunction) && ($dummyImage = @$theFunction($SourceFilename))) {
+                                       // great
+                                       unset($dummyImage);
+                               } else {
+                                       $phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because '.$theFunction.'() failed', __FILE__, __LINE__);
+                                       break;
+                               }
+                       } else {
+                               $phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because GetImageSize() returned unhandled image type "'.$GetImageSize[2].'"', __FILE__, __LINE__);
+                               break;
+                       }
+               } else {
+                       $phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because GetImageSize() failed', __FILE__, __LINE__);
+                       break;
+               }
+               if (headers_sent()) {
+                       $phpThumb->ErrorImage('Headers already sent ('.basename(__FILE__).' line '.__LINE__.')');
+                       exit;
+               }
+               SendSaveAsFileHeaderIfNeeded();
+               header('Last-Modified: '.gmdate('D, d M Y H:i:s', @filemtime($SourceFilename)).' GMT');
+               if (@$GetImageSize[2]) {
+                       header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($GetImageSize[2]));
+               }
+               @readfile($SourceFilename);
+               exit;
+
+       }
+       break;
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[5]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '5') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+function RedirectToCachedFile() {
+       global $phpThumb, $PHPTHUMB_CONFIG;
+
+       $nice_cachefile = str_replace($phpThumb->osslash, '/', $phpThumb->cache_filename);
+       $nice_docroot   = str_replace($phpThumb->osslash, '/', rtrim($PHPTHUMB_CONFIG['document_root'], '/\\'));
+
+       $parsed_url = @parse_url(@$_SERVER['HTTP_REFERER']);
+
+       $nModified  = filemtime($phpThumb->cache_filename);
+
+       if ($phpThumb->config_nooffsitelink_enabled && @$_SERVER['HTTP_REFERER'] && !in_array(@$parsed_url['host'], $phpThumb->config_nooffsitelink_valid_domains)) {
+
+               $phpThumb->DebugMessage('Would have used cached (image/'.$phpThumb->thumbnailFormat.') file "'.$phpThumb->cache_filename.'" (Last-Modified: '.gmdate('D, d M Y H:i:s', $nModified).' GMT), but skipping because $_SERVER[HTTP_REFERER] ('.@$_SERVER['HTTP_REFERER'].') is not in $phpThumb->config_nooffsitelink_valid_domains ('.implode(';', $phpThumb->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__);
+
+       } elseif ($phpThumb->phpThumbDebug) {
+
+               $phpThumb->DebugMessage('Would have used cached file, but skipping due to phpThumbDebug', __FILE__, __LINE__);
+               $phpThumb->DebugMessage('* Would have sent headers (1): Last-Modified: '.gmdate('D, d M Y H:i:s', $nModified).' GMT', __FILE__, __LINE__);
+               if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
+                       $phpThumb->DebugMessage('* Would have sent headers (2): Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]), __FILE__, __LINE__);
+               }
+               if (ereg('^'.preg_quote($nice_docroot).'(.*)$', $nice_cachefile, $matches)) {
+                       $phpThumb->DebugMessage('* Would have sent headers (3): Location: '.dirname($matches[1]).'/'.urlencode(basename($matches[1])), __FILE__, __LINE__);
+               } else {
+                       $phpThumb->DebugMessage('* Would have sent data: readfile('.$phpThumb->cache_filename.')', __FILE__, __LINE__);
+               }
+
+       } else {
+
+               if (headers_sent()) {
+                       $phpThumb->ErrorImage('Headers already sent ('.basename(__FILE__).' line '.__LINE__.')');
+                       exit;
+               }
+               SendSaveAsFileHeaderIfNeeded();
+
+               header('Last-Modified: '.gmdate('D, d M Y H:i:s', $nModified).' GMT');
+               if (@$_SERVER['HTTP_IF_MODIFIED_SINCE'] && ($nModified == strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) && @$_SERVER['SERVER_PROTOCOL']) {
+                       header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified');
+                       exit;
+               }
+
+               if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
+                       header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]));
+               }
+               if (ereg('^'.preg_quote($nice_docroot).'(.*)$', $nice_cachefile, $matches)) {
+                       header('Location: '.dirname($matches[1]).'/'.urlencode(basename($matches[1])));
+               } else {
+                       @readfile($phpThumb->cache_filename);
+               }
+               exit;
+
+       }
+       return true;
+}
+
+// check to see if file already exists in cache, and output it with no processing if it does
+$phpThumb->SetCacheFilename();
+if (is_file($phpThumb->cache_filename)) {
+       RedirectToCachedFile();
+} else {
+       $phpThumb->DebugMessage('Cached file "'.$phpThumb->cache_filename.'" does not exist, processing as normal', __FILE__, __LINE__);
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[6]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '6') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if ($phpThumb->rawImageData) {
+
+       // great
+
+} elseif (@$_GET['new']) {
+
+       // generate a blank image resource of the specified size/background color/opacity
+       if (($phpThumb->w <= 0) || ($phpThumb->h <= 0)) {
+               $phpThumb->ErrorImage('"w" and "h" parameters required for "new"');
+       }
+       @list($bghexcolor, $opacity) = explode('|', $_GET['new']);
+       if (!phpthumb_functions::IsHexColor($bghexcolor)) {
+               $phpThumb->ErrorImage('BGcolor parameter for "new" is not valid');
+       }
+       $opacity = (strlen($opacity) ? $opacity : 100);
+       if ($phpThumb->gdimg_source = phpthumb_functions::ImageCreateFunction($phpThumb->w, $phpThumb->h)) {
+               $alpha = (100 - min(100, max(0, $opacity))) * 1.27;
+               if ($alpha) {
+                       $phpThumb->setParameter('is_alpha', true);
+                       ImageAlphaBlending($phpThumb->gdimg_source, false);
+                       ImageSaveAlpha($phpThumb->gdimg_source, true);
+               }
+               $new_background_color = phpthumb_functions::ImageHexColorAllocate($phpThumb->gdimg_source, $bghexcolor, false, $alpha);
+               ImageFilledRectangle($phpThumb->gdimg_source, 0, 0, $phpThumb->w, $phpThumb->h, $new_background_color);
+       } else {
+               $phpThumb->ErrorImage('failed to create "new" image ('.$phpThumb->w.'x'.$phpThumb->h.')');
+       }
+
+} elseif (!$phpThumb->src) {
+
+       $phpThumb->ErrorImage('Usage: '.$_SERVER['PHP_SELF'].'?src=/path/and/filename.jpg'."\n".'read Usage comments for details');
+
+} elseif (eregi('^http\://', $phpThumb->src)) {
+
+       ob_start();
+       $HTTPurl = strtr($phpThumb->src, array(' '=>'%20'));
+       if ($fp = fopen($HTTPurl, 'rb')) {
+
+               $rawImageData = '';
+               do {
+                       $buffer = fread($fp, 8192);
+                       if (strlen($buffer) == 0) {
+                               break;
+                       }
+                       $rawImageData .= $buffer;
+               } while (true);
+               fclose($fp);
+               $phpThumb->setSourceData($rawImageData, urlencode($phpThumb->src));
+
+       } else {
+
+               $fopen_error = strip_tags(ob_get_contents());
+               ob_end_clean();
+               if (ini_get('allow_url_fopen')) {
+                       $phpThumb->ErrorImage('cannot open "'.$HTTPurl.'" - fopen() said: "'.$fopen_error.'"');
+               } else {
+                       $phpThumb->ErrorImage('"allow_url_fopen" disabled');
+               }
+
+       }
+       ob_end_clean();
+
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[7]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '7') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+$phpThumb->GenerateThumbnail();
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[8]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '8') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+if ($phpThumb->config_allow_parameter_file && $phpThumb->file) {
+
+       $phpThumb->RenderToFile($phpThumb->ResolveFilenameToAbsolute($phpThumb->file));
+       if ($phpThumb->config_allow_parameter_goto && $phpThumb->goto && eregi('^(f|ht)tps?://', $phpThumb->goto)) {
+               // redirect to another URL after image has been rendered to file
+               header('Location: '.$phpThumb->goto);
+               exit;
+       }
+
+} else {
+
+       if ((file_exists($phpThumb->cache_filename) && is_writable($phpThumb->cache_filename)) || is_writable(dirname($phpThumb->cache_filename))) {
+
+               $phpThumb->CleanUpCacheDirectory();
+               if ($phpThumb->RenderToFile($phpThumb->cache_filename)) {
+                       chmod($phpThumb->cache_filename, 0644);
+                       RedirectToCachedFile();
+               } else {
+                       $phpThumb->DebugMessage('Failed: RenderToFile('.$phpThumb->cache_filename.')', __FILE__, __LINE__);
+               }
+
+       } else {
+
+               $phpThumb->DebugMessage('Cannot write to $phpThumb->cache_filename ('.$phpThumb->cache_filename.') because that directory ('.dirname($phpThumb->cache_filename).') is not writable', __FILE__, __LINE__);
+
+       }
+
+}
+
+////////////////////////////////////////////////////////////////
+// Debug output, to try and help me diagnose problems
+$phpThumb->DebugTimingMessage('phpThumbDebug[9]', __FILE__, __LINE__);
+if (@$_GET['phpThumbDebug'] == '9') {
+       $phpThumb->phpThumbDebug();
+}
+////////////////////////////////////////////////////////////////
+
+$phpThumb->OutputThumbnail();
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.bmp.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.bmp.php
new file mode 100644 (file)
index 0000000..36244bc
--- /dev/null
@@ -0,0 +1,832 @@
+<?php
+/////////////////////////////////////////////////////////////////
+/// getID3() by James Heinrich <info@getid3.org>               //
+//  available at http://getid3.sourceforge.net                 //
+//            or http://www.getid3.org                         //
+/////////////////////////////////////////////////////////////////
+// See readme.txt for more details                             //
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// module.graphic.bmp.php                                      //
+// module for analyzing BMP Image files                        //
+// dependencies: NONE                                          //
+//                                                            ///
+/////////////////////////////////////////////////////////////////
+//                                                             //
+// Modified for use in phpThumb() - James Heinrich 2004.07.27  //
+//                                                             //
+/////////////////////////////////////////////////////////////////
+
+
+class phpthumb_bmp {
+
+       function phpthumb_bmp() {
+       }
+
+       function phpthumb_bmp2gd(&$BMPdata, $truecolor=true) {
+               $ThisFileInfo = array();
+               if ($this->getid3_bmp($BMPdata, $ThisFileInfo, true, true)) {
+                       $gd = $this->PlotPixelsGD($ThisFileInfo['bmp'], $truecolor);
+                       return $gd;
+               }
+               return false;
+       }
+
+       function phpthumb_bmpfile2gd($filename, $truecolor=true) {
+               if ($fp = @fopen($filename, 'rb')) {
+                       $BMPdata = fread($fp, filesize($filename));
+                       fclose($fp);
+                       return $this->phpthumb_bmp2gd($BMPdata, $truecolor);
+               }
+               return false;
+       }
+
+       function getid3_bmp(&$BMPdata, &$ThisFileInfo, $ExtractPalette=false, $ExtractData=false) {
+
+           // shortcuts
+           $ThisFileInfo['bmp']['header']['raw'] = array();
+           $thisfile_bmp                         = &$ThisFileInfo['bmp'];
+           $thisfile_bmp_header                  = &$thisfile_bmp['header'];
+           $thisfile_bmp_header_raw              = &$thisfile_bmp_header['raw'];
+
+               // BITMAPFILEHEADER [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp
+               // all versions
+               // WORD    bfType;
+               // DWORD   bfSize;
+               // WORD    bfReserved1;
+               // WORD    bfReserved2;
+               // DWORD   bfOffBits;
+
+               $offset = 0;
+               $overalloffset = 0;
+               $BMPheader = substr($BMPdata, $overalloffset, 14 + 40);
+               $overalloffset += (14 + 40);
+
+               $thisfile_bmp_header_raw['identifier']  = substr($BMPheader, $offset, 2);
+               $offset += 2;
+
+               if ($thisfile_bmp_header_raw['identifier'] != 'BM') {
+                       $ThisFileInfo['error'][] = 'Expecting "BM" at offset '.$ThisFileInfo['avdataoffset'].', found "'.$thisfile_bmp_header_raw['identifier'].'"';
+                       unset($ThisFileInfo['fileformat']);
+                       unset($ThisFileInfo['bmp']);
+                       return false;
+               }
+
+               $thisfile_bmp_header_raw['filesize']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+               $offset += 4;
+               $thisfile_bmp_header_raw['reserved1']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+               $offset += 2;
+               $thisfile_bmp_header_raw['reserved2']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+               $offset += 2;
+               $thisfile_bmp_header_raw['data_offset'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+               $offset += 4;
+               $thisfile_bmp_header_raw['header_size'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+               $offset += 4;
+
+
+               // check if the hardcoded-to-1 "planes" is at offset 22 or 26
+               $planes22 = $this->LittleEndian2Int(substr($BMPheader, 22, 2));
+               $planes26 = $this->LittleEndian2Int(substr($BMPheader, 26, 2));
+               if (($planes22 == 1) && ($planes26 != 1)) {
+                       $thisfile_bmp['type_os']      = 'OS/2';
+                       $thisfile_bmp['type_version'] = 1;
+               } elseif (($planes26 == 1) && ($planes22 != 1)) {
+                       $thisfile_bmp['type_os']      = 'Windows';
+                       $thisfile_bmp['type_version'] = 1;
+               } elseif ($thisfile_bmp_header_raw['header_size'] == 12) {
+                       $thisfile_bmp['type_os']      = 'OS/2';
+                       $thisfile_bmp['type_version'] = 1;
+               } elseif ($thisfile_bmp_header_raw['header_size'] == 40) {
+                       $thisfile_bmp['type_os']      = 'Windows';
+                       $thisfile_bmp['type_version'] = 1;
+               } elseif ($thisfile_bmp_header_raw['header_size'] == 84) {
+                       $thisfile_bmp['type_os']      = 'Windows';
+                       $thisfile_bmp['type_version'] = 4;
+               } elseif ($thisfile_bmp_header_raw['header_size'] == 100) {
+                       $thisfile_bmp['type_os']      = 'Windows';
+                       $thisfile_bmp['type_version'] = 5;
+               } else {
+                       $ThisFileInfo['error'][] = 'Unknown BMP subtype (or not a BMP file)';
+                       unset($ThisFileInfo['fileformat']);
+                       unset($ThisFileInfo['bmp']);
+                       return false;
+               }
+
+               $ThisFileInfo['fileformat']                  = 'bmp';
+               $ThisFileInfo['video']['dataformat']         = 'bmp';
+               $ThisFileInfo['video']['lossless']           = true;
+               $ThisFileInfo['video']['pixel_aspect_ratio'] = (float) 1;
+
+               if ($thisfile_bmp['type_os'] == 'OS/2') {
+
+                       // OS/2-format BMP
+                       // http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm
+
+                       // DWORD  Size;             /* Size of this structure in bytes */
+                       // DWORD  Width;            /* Bitmap width in pixels */
+                       // DWORD  Height;           /* Bitmap height in pixel */
+                       // WORD   NumPlanes;        /* Number of bit planes (color depth) */
+                       // WORD   BitsPerPixel;     /* Number of bits per pixel per plane */
+
+                       $thisfile_bmp_header_raw['width']          = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                       $offset += 2;
+                       $thisfile_bmp_header_raw['height']         = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                       $offset += 2;
+                       $thisfile_bmp_header_raw['planes']         = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                       $offset += 2;
+                       $thisfile_bmp_header_raw['bits_per_pixel'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                       $offset += 2;
+
+                       $ThisFileInfo['video']['resolution_x']    = $thisfile_bmp_header_raw['width'];
+                       $ThisFileInfo['video']['resolution_y']    = $thisfile_bmp_header_raw['height'];
+                       $ThisFileInfo['video']['codec']           = 'BI_RGB '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit';
+                       $ThisFileInfo['video']['bits_per_sample'] = $thisfile_bmp_header_raw['bits_per_pixel'];
+
+                       if ($thisfile_bmp['type_version'] >= 2) {
+                               // DWORD  Compression;      /* Bitmap compression scheme */
+                               // DWORD  ImageDataSize;    /* Size of bitmap data in bytes */
+                               // DWORD  XResolution;      /* X resolution of display device */
+                               // DWORD  YResolution;      /* Y resolution of display device */
+                               // DWORD  ColorsUsed;       /* Number of color table indices used */
+                               // DWORD  ColorsImportant;  /* Number of important color indices */
+                               // WORD   Units;            /* Type of units used to measure resolution */
+                               // WORD   Reserved;         /* Pad structure to 4-byte boundary */
+                               // WORD   Recording;        /* Recording algorithm */
+                               // WORD   Rendering;        /* Halftoning algorithm used */
+                               // DWORD  Size1;            /* Reserved for halftoning algorithm use */
+                               // DWORD  Size2;            /* Reserved for halftoning algorithm use */
+                               // DWORD  ColorEncoding;    /* Color model used in bitmap */
+                               // DWORD  Identifier;       /* Reserved for application use */
+
+                               $thisfile_bmp_header_raw['compression']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['bmp_data_size']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['resolution_h']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['resolution_v']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['colors_used']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['colors_important'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['resolution_units'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                               $offset += 2;
+                               $thisfile_bmp_header_raw['reserved1']        = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                               $offset += 2;
+                               $thisfile_bmp_header_raw['recording']        = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                               $offset += 2;
+                               $thisfile_bmp_header_raw['rendering']        = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                               $offset += 2;
+                               $thisfile_bmp_header_raw['size1']            = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['size2']            = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['color_encoding']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['identifier']       = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+
+                               $thisfile_bmp_header['compression']          = $this->BMPcompressionOS2Lookup($thisfile_bmp_header_raw['compression']);
+
+                               $ThisFileInfo['video']['codec'] = $thisfile_bmp_header['compression'].' '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit';
+                       }
+
+               } elseif ($thisfile_bmp['type_os'] == 'Windows') {
+
+                       // Windows-format BMP
+
+                       // BITMAPINFOHEADER - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp
+                       // all versions
+                       // DWORD  biSize;
+                       // LONG   biWidth;
+                       // LONG   biHeight;
+                       // WORD   biPlanes;
+                       // WORD   biBitCount;
+                       // DWORD  biCompression;
+                       // DWORD  biSizeImage;
+                       // LONG   biXPelsPerMeter;
+                       // LONG   biYPelsPerMeter;
+                       // DWORD  biClrUsed;
+                       // DWORD  biClrImportant;
+
+                       $thisfile_bmp_header_raw['width']            = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['height']           = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['planes']           = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                       $offset += 2;
+                       $thisfile_bmp_header_raw['bits_per_pixel']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 2));
+                       $offset += 2;
+                       $thisfile_bmp_header_raw['compression']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['bmp_data_size']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['resolution_h']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['resolution_v']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4), true);
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['colors_used']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                       $offset += 4;
+                       $thisfile_bmp_header_raw['colors_important'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                       $offset += 4;
+
+                       $thisfile_bmp_header['compression'] = $this->BMPcompressionWindowsLookup($thisfile_bmp_header_raw['compression']);
+                       $ThisFileInfo['video']['resolution_x']    = $thisfile_bmp_header_raw['width'];
+                       $ThisFileInfo['video']['resolution_y']    = $thisfile_bmp_header_raw['height'];
+                       $ThisFileInfo['video']['codec']           = $thisfile_bmp_header['compression'].' '.$thisfile_bmp_header_raw['bits_per_pixel'].'-bit';
+                       $ThisFileInfo['video']['bits_per_sample'] = $thisfile_bmp_header_raw['bits_per_pixel'];
+
+                       if (($thisfile_bmp['type_version'] >= 4) || ($thisfile_bmp_header_raw['compression'] == 3)) {
+                               // should only be v4+, but BMPs with type_version==1 and BI_BITFIELDS compression have been seen
+                               $BMPheader .= substr($BMPdata, $overalloffset, 44);
+                               $overalloffset += 44;
+
+                               // BITMAPV4HEADER - [44 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_2k1e.asp
+                               // Win95+, WinNT4.0+
+                               // DWORD        bV4RedMask;
+                               // DWORD        bV4GreenMask;
+                               // DWORD        bV4BlueMask;
+                               // DWORD        bV4AlphaMask;
+                               // DWORD        bV4CSType;
+                               // CIEXYZTRIPLE bV4Endpoints;
+                               // DWORD        bV4GammaRed;
+                               // DWORD        bV4GammaGreen;
+                               // DWORD        bV4GammaBlue;
+                               $thisfile_bmp_header_raw['red_mask']     = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['green_mask']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['blue_mask']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['alpha_mask']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['cs_type']      = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['ciexyz_red']   =                         substr($BMPheader, $offset, 4);
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['ciexyz_green'] =                         substr($BMPheader, $offset, 4);
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['ciexyz_blue']  =                         substr($BMPheader, $offset, 4);
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['gamma_red']    = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['gamma_green']  = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['gamma_blue']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+
+                               $thisfile_bmp_header['ciexyz_red']   = $this->FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_red']));
+                               $thisfile_bmp_header['ciexyz_green'] = $this->FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_green']));
+                               $thisfile_bmp_header['ciexyz_blue']  = $this->FixedPoint2_30(strrev($thisfile_bmp_header_raw['ciexyz_blue']));
+                       }
+
+                       if ($thisfile_bmp['type_version'] >= 5) {
+                               $BMPheader .= substr($BMPdata, $overalloffset, 16);
+                               $overalloffset += 16;
+
+                               // BITMAPV5HEADER - [16 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_7c36.asp
+                               // Win98+, Win2000+
+                               // DWORD        bV5Intent;
+                               // DWORD        bV5ProfileData;
+                               // DWORD        bV5ProfileSize;
+                               // DWORD        bV5Reserved;
+                               $thisfile_bmp_header_raw['intent']              = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['profile_data_offset'] = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['profile_data_size']   = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                               $thisfile_bmp_header_raw['reserved3']           = $this->LittleEndian2Int(substr($BMPheader, $offset, 4));
+                               $offset += 4;
+                       }
+
+               } else {
+
+                       $ThisFileInfo['error'][] = 'Unknown BMP format in header.';
+                       return false;
+
+               }
+
+               if ($ExtractPalette || $ExtractData) {
+                       $PaletteEntries = 0;
+                       if ($thisfile_bmp_header_raw['bits_per_pixel'] < 16) {
+                               $PaletteEntries = pow(2, $thisfile_bmp_header_raw['bits_per_pixel']);
+                       } elseif (isset($thisfile_bmp_header_raw['colors_used']) && ($thisfile_bmp_header_raw['colors_used'] > 0) && ($thisfile_bmp_header_raw['colors_used'] <= 256)) {
+                               $PaletteEntries = $thisfile_bmp_header_raw['colors_used'];
+                       }
+                       if ($PaletteEntries > 0) {
+                               $BMPpalette = substr($BMPdata, $overalloffset, 4 * $PaletteEntries);
+                               $overalloffset += 4 * $PaletteEntries;
+
+                               $paletteoffset = 0;
+                               for ($i = 0; $i < $PaletteEntries; $i++) {
+                                       // RGBQUAD          - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_5f8y.asp
+                                       // BYTE    rgbBlue;
+                                       // BYTE    rgbGreen;
+                                       // BYTE    rgbRed;
+                                       // BYTE    rgbReserved;
+                                       $blue  = $this->LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1));
+                                       $green = $this->LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1));
+                                       $red   = $this->LittleEndian2Int(substr($BMPpalette, $paletteoffset++, 1));
+                                       if (($thisfile_bmp['type_os'] == 'OS/2') && ($thisfile_bmp['type_version'] == 1)) {
+                                               // no padding byte
+                                       } else {
+                                               $paletteoffset++; // padding byte
+                                       }
+                                       $thisfile_bmp['palette'][$i] = (($red << 16) | ($green << 8) | ($blue));
+                               }
+                       }
+               }
+
+               if ($ExtractData) {
+                       $RowByteLength = ceil(($thisfile_bmp_header_raw['width'] * ($thisfile_bmp_header_raw['bits_per_pixel'] / 8)) / 4) * 4; // round up to nearest DWORD boundry
+
+                       $BMPpixelData = substr($BMPdata, $thisfile_bmp_header_raw['data_offset'], $thisfile_bmp_header_raw['height'] * $RowByteLength);
+                       $overalloffset = $thisfile_bmp_header_raw['data_offset'] + ($thisfile_bmp_header_raw['height'] * $RowByteLength);
+
+                       $pixeldataoffset = 0;
+                       switch (@$thisfile_bmp_header_raw['compression']) {
+
+                               case 0: // BI_RGB
+                                       switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+                                               case 1:
+                                                       for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+                                                               for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col = $col) {
+                                                                       $paletteindexbyte = ord($BMPpixelData{$pixeldataoffset++});
+                                                                       for ($i = 7; $i >= 0; $i--) {
+                                                                               $paletteindex = ($paletteindexbyte & (0x01 << $i)) >> $i;
+                                                                               $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+                                                                               $col++;
+                                                                       }
+                                                               }
+                                                               while (($pixeldataoffset % 4) != 0) {
+                                                                       // lines are padded to nearest DWORD
+                                                                       $pixeldataoffset++;
+                                                               }
+                                                       }
+                                                       break;
+
+                                               case 4:
+                                                       for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+                                                               for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col = $col) {
+                                                                       $paletteindexbyte = ord($BMPpixelData{$pixeldataoffset++});
+                                                                       for ($i = 1; $i >= 0; $i--) {
+                                                                               $paletteindex = ($paletteindexbyte & (0x0F << (4 * $i))) >> (4 * $i);
+                                                                               $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+                                                                               $col++;
+                                                                       }
+                                                               }
+                                                               while (($pixeldataoffset % 4) != 0) {
+                                                                       // lines are padded to nearest DWORD
+                                                                       $pixeldataoffset++;
+                                                               }
+                                                       }
+                                                       break;
+
+                                               case 8:
+                                                       for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+                                                               for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+                                                                       $paletteindex = ord($BMPpixelData{$pixeldataoffset++});
+                                                                       $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+                                                               }
+                                                               while (($pixeldataoffset % 4) != 0) {
+                                                                       // lines are padded to nearest DWORD
+                                                                       $pixeldataoffset++;
+                                                               }
+                                                       }
+                                                       break;
+
+                                               case 24:
+                                                       for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+                                                               for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+                                                                       $thisfile_bmp['data'][$row][$col] = (ord($BMPpixelData{$pixeldataoffset+2}) << 16) | (ord($BMPpixelData{$pixeldataoffset+1}) << 8) | ord($BMPpixelData{$pixeldataoffset});
+                                                                       $pixeldataoffset += 3;
+                                                               }
+                                                               while (($pixeldataoffset % 4) != 0) {
+                                                                       // lines are padded to nearest DWORD
+                                                                       $pixeldataoffset++;
+                                                               }
+                                                       }
+                                                       break;
+
+                                               case 32:
+                                                       for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+                                                               for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+                                                                       $thisfile_bmp['data'][$row][$col] = (ord($BMPpixelData{$pixeldataoffset+3}) << 24) | (ord($BMPpixelData{$pixeldataoffset+2}) << 16) | (ord($BMPpixelData{$pixeldataoffset+1}) << 8) | ord($BMPpixelData{$pixeldataoffset});
+                                                                       $pixeldataoffset += 4;
+                                                               }
+                                                               while (($pixeldataoffset % 4) != 0) {
+                                                                       // lines are padded to nearest DWORD
+                                                                       $pixeldataoffset++;
+                                                               }
+                                                       }
+                                                       break;
+
+                                               case 16:
+                                                       // ?
+                                                       break;
+
+                                               default:
+                                                       $ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+                                                       break;
+                                       }
+                                       break;
+
+
+                               case 1: // BI_RLE8 - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_6x0u.asp
+                                       switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+                                               case 8:
+                                                       $pixelcounter = 0;
+                                                       while ($pixeldataoffset < strlen($BMPpixelData)) {
+                                                               $firstbyte  = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                               $secondbyte = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                               if ($firstbyte == 0) {
+
+                                                                       // escaped/absolute mode - the first byte of the pair can be set to zero to
+                                                                       // indicate an escape character that denotes the end of a line, the end of
+                                                                       // a bitmap, or a delta, depending on the value of the second byte.
+                                                                       switch ($secondbyte) {
+                                                                               case 0:
+                                                                                       // end of line
+                                                                                       // no need for special processing, just ignore
+                                                                                       break;
+
+                                                                               case 1:
+                                                                                       // end of bitmap
+                                                                                       $pixeldataoffset = strlen($BMPpixelData); // force to exit loop just in case
+                                                                                       break;
+
+                                                                               case 2:
+                                                                                       // delta - The 2 bytes following the escape contain unsigned values
+                                                                                       // indicating the horizontal and vertical offsets of the next pixel
+                                                                                       // from the current position.
+                                                                                       $colincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                                                       $rowincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                                                       $col = ($pixelcounter % $thisfile_bmp_header_raw['width']) + $colincrement;
+                                                                                       $row = ($thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width'])) - $rowincrement;
+                                                                                       $pixelcounter = ($row * $thisfile_bmp_header_raw['width']) + $col;
+                                                                                       break;
+
+                                                                               default:
+                                                                                       // In absolute mode, the first byte is zero and the second byte is a
+                                                                                       // value in the range 03H through FFH. The second byte represents the
+                                                                                       // number of bytes that follow, each of which contains the color index
+                                                                                       // of a single pixel. Each run must be aligned on a word boundary.
+                                                                                       for ($i = 0; $i < $secondbyte; $i++) {
+                                                                                               $paletteindex = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                                                               $col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+                                                                                               $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+                                                                                               $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+                                                                                               $pixelcounter++;
+                                                                                       }
+                                                                                       while (($pixeldataoffset % 2) != 0) {
+                                                                                               // Each run must be aligned on a word boundary.
+                                                                                               $pixeldataoffset++;
+                                                                                       }
+                                                                                       break;
+                                                                       }
+
+                                                               } else {
+
+                                                                       // encoded mode - the first byte specifies the number of consecutive pixels
+                                                                       // to be drawn using the color index contained in the second byte.
+                                                                       for ($i = 0; $i < $firstbyte; $i++) {
+                                                                               $col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+                                                                               $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+                                                                               $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$secondbyte];
+                                                                               $pixelcounter++;
+                                                                       }
+
+                                                               }
+                                                       }
+                                                       break;
+
+                                               default:
+                                                       $ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+                                                       break;
+                                       }
+                                       break;
+
+
+
+                               case 2: // BI_RLE4 - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_6x0u.asp
+                                       switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+                                               case 4:
+                                                       $pixelcounter = 0;
+                                                       while ($pixeldataoffset < strlen($BMPpixelData)) {
+                                                               $firstbyte  = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                               $secondbyte = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                               if ($firstbyte == 0) {
+
+                                                                       // escaped/absolute mode - the first byte of the pair can be set to zero to
+                                                                       // indicate an escape character that denotes the end of a line, the end of
+                                                                       // a bitmap, or a delta, depending on the value of the second byte.
+                                                                       switch ($secondbyte) {
+                                                                               case 0:
+                                                                                       // end of line
+                                                                                       // no need for special processing, just ignore
+                                                                                       break;
+
+                                                                               case 1:
+                                                                                       // end of bitmap
+                                                                                       $pixeldataoffset = strlen($BMPpixelData); // force to exit loop just in case
+                                                                                       break;
+
+                                                                               case 2:
+                                                                                       // delta - The 2 bytes following the escape contain unsigned values
+                                                                                       // indicating the horizontal and vertical offsets of the next pixel
+                                                                                       // from the current position.
+                                                                                       $colincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                                                       $rowincrement = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                                                       $col = ($pixelcounter % $thisfile_bmp_header_raw['width']) + $colincrement;
+                                                                                       $row = ($thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width'])) - $rowincrement;
+                                                                                       $pixelcounter = ($row * $thisfile_bmp_header_raw['width']) + $col;
+                                                                                       break;
+
+                                                                               default:
+                                                                                       // In absolute mode, the first byte is zero. The second byte contains the number
+                                                                                       // of color indexes that follow. Subsequent bytes contain color indexes in their
+                                                                                       // high- and low-order 4 bits, one color index for each pixel. In absolute mode,
+                                                                                       // each run must be aligned on a word boundary.
+                                                                                       unset($paletteindexes);
+                                                                                       for ($i = 0; $i < ceil($secondbyte / 2); $i++) {
+                                                                                               $paletteindexbyte = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset++, 1));
+                                                                                               $paletteindexes[] = ($paletteindexbyte & 0xF0) >> 4;
+                                                                                               $paletteindexes[] = ($paletteindexbyte & 0x0F);
+                                                                                       }
+                                                                                       while (($pixeldataoffset % 2) != 0) {
+                                                                                               // Each run must be aligned on a word boundary.
+                                                                                               $pixeldataoffset++;
+                                                                                       }
+
+                                                                                       foreach ($paletteindexes as $paletteindex) {
+                                                                                               $col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+                                                                                               $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+                                                                                               $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindex];
+                                                                                               $pixelcounter++;
+                                                                                       }
+                                                                                       break;
+                                                                       }
+
+                                                               } else {
+
+                                                                       // encoded mode - the first byte of the pair contains the number of pixels to be
+                                                                       // drawn using the color indexes in the second byte. The second byte contains two
+                                                                       // color indexes, one in its high-order 4 bits and one in its low-order 4 bits.
+                                                                       // The first of the pixels is drawn using the color specified by the high-order
+                                                                       // 4 bits, the second is drawn using the color in the low-order 4 bits, the third
+                                                                       // is drawn using the color in the high-order 4 bits, and so on, until all the
+                                                                       // pixels specified by the first byte have been drawn.
+                                                                       $paletteindexes[0] = ($secondbyte & 0xF0) >> 4;
+                                                                       $paletteindexes[1] = ($secondbyte & 0x0F);
+                                                                       for ($i = 0; $i < $firstbyte; $i++) {
+                                                                               $col = $pixelcounter % $thisfile_bmp_header_raw['width'];
+                                                                               $row = $thisfile_bmp_header_raw['height'] - 1 - (($pixelcounter - $col) / $thisfile_bmp_header_raw['width']);
+                                                                               $thisfile_bmp['data'][$row][$col] = $thisfile_bmp['palette'][$paletteindexes[($i % 2)]];
+                                                                               $pixelcounter++;
+                                                                       }
+
+                                                               }
+                                                       }
+                                                       break;
+
+                                               default:
+                                                       $ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+                                                       break;
+                                       }
+                                       break;
+
+
+                               case 3: // BI_BITFIELDS
+                                       switch ($thisfile_bmp_header_raw['bits_per_pixel']) {
+                                               case 16:
+                                               case 32:
+                                                       $redshift   = 0;
+                                                       $greenshift = 0;
+                                                       $blueshift  = 0;
+                                                       if (!$thisfile_bmp_header_raw['red_mask'] || !$thisfile_bmp_header_raw['green_mask'] || !$thisfile_bmp_header_raw['blue_mask']) {
+                                                               $ThisFileInfo['error'][] = 'missing $thisfile_bmp_header_raw[(red|green|blue)_mask]';
+                                                               return false;
+                                                       }
+                                                       while ((($thisfile_bmp_header_raw['red_mask'] >> $redshift) & 0x01) == 0) {
+                                                               $redshift++;
+                                                       }
+                                                       while ((($thisfile_bmp_header_raw['green_mask'] >> $greenshift) & 0x01) == 0) {
+                                                               $greenshift++;
+                                                       }
+                                                       while ((($thisfile_bmp_header_raw['blue_mask'] >> $blueshift) & 0x01) == 0) {
+                                                               $blueshift++;
+                                                       }
+                                                       for ($row = ($thisfile_bmp_header_raw['height'] - 1); $row >= 0; $row--) {
+                                                               for ($col = 0; $col < $thisfile_bmp_header_raw['width']; $col++) {
+                                                                       $pixelvalue = $this->LittleEndian2Int(substr($BMPpixelData, $pixeldataoffset, $thisfile_bmp_header_raw['bits_per_pixel'] / 8));
+                                                                       $pixeldataoffset += $thisfile_bmp_header_raw['bits_per_pixel'] / 8;
+
+                                                                       $red   = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['red_mask'])   >> $redshift)   / ($thisfile_bmp_header_raw['red_mask']   >> $redshift))   * 255));
+                                                                       $green = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['green_mask']) >> $greenshift) / ($thisfile_bmp_header_raw['green_mask'] >> $greenshift)) * 255));
+                                                                       $blue  = intval(round(((($pixelvalue & $thisfile_bmp_header_raw['blue_mask'])  >> $blueshift)  / ($thisfile_bmp_header_raw['blue_mask']  >> $blueshift))  * 255));
+                                                                       $thisfile_bmp['data'][$row][$col] = (($red << 16) | ($green << 8) | ($blue));
+                                                               }
+                                                               while (($pixeldataoffset % 4) != 0) {
+                                                                       // lines are padded to nearest DWORD
+                                                                       $pixeldataoffset++;
+                                                               }
+                                                       }
+                                                       break;
+
+                                               default:
+                                                       $ThisFileInfo['error'][] = 'Unknown bits-per-pixel value ('.$thisfile_bmp_header_raw['bits_per_pixel'].') - cannot read pixel data';
+                                                       break;
+                                       }
+                                       break;
+
+
+                               default: // unhandled compression type
+                                       $ThisFileInfo['error'][] = 'Unknown/unhandled compression type value ('.$thisfile_bmp_header_raw['compression'].') - cannot decompress pixel data';
+                                       break;
+                       }
+               }
+
+               return true;
+       }
+
+       function IntColor2RGB($color) {
+               $red   = ($color & 0x00FF0000) >> 16;
+               $green = ($color & 0x0000FF00) >> 8;
+               $blue  = ($color & 0x000000FF);
+               return array($red, $green, $blue);
+       }
+
+       function PlotPixelsGD(&$BMPdata, $truecolor=true) {
+               $imagewidth  = $BMPdata['header']['raw']['width'];
+               $imageheight = $BMPdata['header']['raw']['height'];
+
+               if ($truecolor) {
+
+                       $gd = @ImageCreateTrueColor($imagewidth, $imageheight);
+
+               } else {
+
+                       $gd = @ImageCreate($imagewidth, $imageheight);
+                       if (!empty($BMPdata['palette'])) {
+                               // create GD palette from BMP palette
+                               foreach ($BMPdata['palette'] as $color) {
+                                       list($r, $g, $b) = $this->IntColor2RGB($color);
+                                       ImageColorAllocate($gd, $r, $g, $b);
+                               }
+                       } else {
+                               // create 216-color websafe palette
+                               for ($r = 0x00; $r <= 0xFF; $r += 0x33) {
+                                       for ($g = 0x00; $g <= 0xFF; $g += 0x33) {
+                                               for ($b = 0x00; $b <= 0xFF; $b += 0x33) {
+                                                       ImageColorAllocate($gd, $r, $g, $b);
+                                               }
+                                       }
+                               }
+                       }
+
+               }
+               if (!is_resource($gd)) {
+                       return false;
+               }
+
+               foreach ($BMPdata['data'] as $row => $colarray) {
+                       @set_time_limit(30);
+                       foreach ($colarray as $col => $color) {
+                               list($red, $green, $blue) = $this->IntColor2RGB($color);
+                               if ($truecolor) {
+                                       $pixelcolor = ImageColorAllocate($gd, $red, $green, $blue);
+                               } else {
+                                       $pixelcolor = ImageColorClosest($gd, $red, $green, $blue);
+                               }
+                               ImageSetPixel($gd, $col, $row, $pixelcolor);
+                       }
+               }
+               return $gd;
+       }
+
+       function PlotBMP(&$BMPinfo) {
+               $starttime = time();
+               if (!isset($BMPinfo['bmp']['data']) || !is_array($BMPinfo['bmp']['data'])) {
+                       echo 'ERROR: no pixel data<BR>';
+                       return false;
+               }
+               set_time_limit(intval(round($BMPinfo['resolution_x'] * $BMPinfo['resolution_y'] / 10000)));
+               $im = $this->PlotPixelsGD($BMPinfo['bmp']);
+               if (headers_sent()) {
+                       echo 'plotted '.($BMPinfo['resolution_x'] * $BMPinfo['resolution_y']).' pixels in '.(time() - $starttime).' seconds<BR>';
+                       ImageDestroy($im);
+                       exit;
+               } else {
+                       header('Content-Type: image/png');
+                       ImagePNG($im);
+                       ImageDestroy($im);
+                       return true;
+               }
+               return false;
+       }
+
+       function BMPcompressionWindowsLookup($compressionid) {
+               static $BMPcompressionWindowsLookup = array(
+                       0 => 'BI_RGB',
+                       1 => 'BI_RLE8',
+                       2 => 'BI_RLE4',
+                       3 => 'BI_BITFIELDS',
+                       4 => 'BI_JPEG',
+                       5 => 'BI_PNG'
+               );
+               return (isset($BMPcompressionWindowsLookup[$compressionid]) ? $BMPcompressionWindowsLookup[$compressionid] : 'invalid');
+       }
+
+       function BMPcompressionOS2Lookup($compressionid) {
+               static $BMPcompressionOS2Lookup = array(
+                       0 => 'BI_RGB',
+                       1 => 'BI_RLE8',
+                       2 => 'BI_RLE4',
+                       3 => 'Huffman 1D',
+                       4 => 'BI_RLE24',
+               );
+               return (isset($BMPcompressionOS2Lookup[$compressionid]) ? $BMPcompressionOS2Lookup[$compressionid] : 'invalid');
+       }
+
+
+       // from getid3.lib.php
+
+       function trunc($floatnumber) {
+               // truncates a floating-point number at the decimal point
+               // returns int (if possible, otherwise float)
+               if ($floatnumber >= 1) {
+                       $truncatednumber = floor($floatnumber);
+               } elseif ($floatnumber <= -1) {
+                       $truncatednumber = ceil($floatnumber);
+               } else {
+                       $truncatednumber = 0;
+               }
+               if ($truncatednumber <= 1073741824) { // 2^30
+                       $truncatednumber = (int) $truncatednumber;
+               }
+               return $truncatednumber;
+       }
+
+       function LittleEndian2Int($byteword) {
+               $intvalue = 0;
+               $byteword = strrev($byteword);
+               $bytewordlen = strlen($byteword);
+               for ($i = 0; $i < $bytewordlen; $i++) {
+                       $intvalue += ord($byteword{$i}) * pow(256, ($bytewordlen - 1 - $i));
+               }
+               return $intvalue;
+       }
+
+       function BigEndian2Int($byteword) {
+               return $this->LittleEndian2Int(strrev($byteword));
+       }
+
+       function BigEndian2Bin($byteword) {
+               $binvalue = '';
+               $bytewordlen = strlen($byteword);
+               for ($i = 0; $i < $bytewordlen; $i++) {
+                       $binvalue .= str_pad(decbin(ord($byteword{$i})), 8, '0', STR_PAD_LEFT);
+               }
+               return $binvalue;
+       }
+
+       function FixedPoint2_30($rawdata) {
+               $binarystring = $this->BigEndian2Bin($rawdata);
+               return $this->Bin2Dec(substr($binarystring, 0, 2)) + (float) ($this->Bin2Dec(substr($binarystring, 2, 30)) / 1073741824);
+       }
+
+       function Bin2Dec($binstring, $signed=false) {
+               $signmult = 1;
+               if ($signed) {
+                       if ($binstring{0} == '1') {
+                               $signmult = -1;
+                       }
+                       $binstring = substr($binstring, 1);
+               }
+               $decvalue = 0;
+               for ($i = 0; $i < strlen($binstring); $i++) {
+                       $decvalue += ((int) substr($binstring, strlen($binstring) - $i - 1, 1)) * pow(2, $i);
+               }
+               return $this->CastAsInt($decvalue * $signmult);
+       }
+
+       function CastAsInt($floatnum) {
+               // convert to float if not already
+               $floatnum = (float) $floatnum;
+
+               // convert a float to type int, only if possible
+               if ($this->trunc($floatnum) == $floatnum) {
+                       // it's not floating point
+                       if ($floatnum <= 1073741824) { // 2^30
+                               // it's within int range
+                               $floatnum = (int) $floatnum;
+                       }
+               }
+               return $floatnum;
+       }
+
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.class.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.class.php
new file mode 100644 (file)
index 0000000..be28b77
--- /dev/null
@@ -0,0 +1,2625 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// See: phpthumb.readme.txt for usage instructions          //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+ob_start();
+if (!include_once(dirname(__FILE__).'/phpthumb.functions.php')) {
+       ob_end_flush();
+       die('failed to include_once("'.realpath(dirname(__FILE__).'/phpthumb.functions.php').'")');
+}
+ob_end_clean();
+
+class phpthumb {
+
+       // public:
+       // START PARAMETERS (for object mode and phpThumb.php)
+       // See phpthumb.readme.txt for descriptions of what each of these values are
+       var $src  = null;    // SouRCe filename
+       var $new  = null;    // NEW image (phpThumb.php only)
+       var $w    = null;    // Width
+       var $h    = null;    // Height
+       var $wp   = null;    // Width  (Portrait Images Only)
+       var $hp   = null;    // Height (Portrait Images Only)
+       var $wl   = null;    // Width  (Landscape Images Only)
+       var $hl   = null;    // Height (Landscape Images Only)
+       var $ws   = null;    // Width  (Square Images Only)
+       var $hs   = null;    // Height (Square Images Only)
+       var $f    = null;    // Format
+       var $q    = 75;      // jpeg output Quality
+       var $sx   = null;    // Source crop top-left X position
+       var $sy   = null;    // Source crop top-left Y position
+       var $sw   = null;    // Source crop Width
+       var $sh   = null;    // Source crop Height
+       var $zc   = null;    // Zoom Crop
+       var $bc   = null;    // Border Color
+       var $bg   = null;    // BackGround color
+       var $fltr = array(); // FiLTeRs
+       var $goto = null;    // GO TO url after processing
+       var $err  = null;    // default ERRor image filename
+       var $xto  = null;    // extract eXif Thumbnail Only
+       var $ra   = null;    // Rotate by Angle
+       var $ar   = null;    // Auto Rotate
+       var $aoe  = null;    // Allow Output Enlargement
+       var $far  = null;    // Fixed Aspect Ratio
+       var $iar  = null;    // Ignore Aspect Ratio
+       var $maxb = null;    // MAXimum Bytes
+       var $down = null;    // DOWNload thumbnail filename
+       var $md5s = null;    // MD5 hash of Source image
+       var $file = null;    // >>deprecated, do not use<<
+
+       var $phpThumbDebug = null;
+       // END PARAMETERS
+
+
+       // public:
+       // START CONFIGURATION OPTIONS (for object mode only)
+       // See phpThumb.config.php for descriptions of what each of these settings do
+
+       // * Directory Configuration
+       var $config_cache_directory                      = null;
+       var $config_cache_disable_warning                = true;
+       var $config_cache_source_enabled                 = false;
+       var $config_cache_source_directory               = null;
+       var $config_temp_directory                       = null;
+       var $config_document_root                        = null;
+
+       // * Default output configuration:
+       var $config_output_format                        = 'jpeg';
+       var $config_output_maxwidth                      = 0;
+       var $config_output_maxheight                     = 0;
+       var $config_output_interlace                     = true;
+
+       // * Error message configuration
+       var $config_error_image_width                    = 400;
+       var $config_error_image_height                   = 100;
+       var $config_error_message_image_default          = '';
+       var $config_error_bgcolor                        = 'CCCCFF';
+       var $config_error_textcolor                      = 'FF0000';
+       var $config_error_fontsize                       = 1;
+       var $config_error_die_on_error                   = false;
+       var $config_error_silent_die_on_error            = false;
+       var $config_error_die_on_source_failure          = true;
+
+       // * Anti-Hotlink Configuration:
+       var $config_nohotlink_enabled                    = true;
+       var $config_nohotlink_valid_domains              = array();
+       var $config_nohotlink_erase_image                = true;
+       var $config_nohotlink_text_message               = 'Off-server thumbnailing is not allowed';
+       // * Off-server Linking Configuration:
+       var $config_nooffsitelink_enabled                = false;
+       var $config_nooffsitelink_valid_domains          = array();
+       var $config_nooffsitelink_require_refer          = false;
+       var $config_nooffsitelink_erase_image            = true;
+       var $config_nooffsitelink_text_message           = 'Off-server linking is not allowed';
+       var $config_cache_differentiate_offsite          = true;
+
+       // * Border & Background default colors
+       var $config_border_hexcolor                      = '000000';
+       var $config_background_hexcolor                  = 'FFFFFF';
+
+       // * TrueType Fonts
+       var $config_ttf_directory                        = '.';
+
+       var $config_max_source_pixels                    = null;
+       var $config_use_exif_thumbnail_for_speed         = false;
+
+       var $config_imagemagick_path                     = null;
+       var $config_prefer_imagemagick                   = true;
+
+       var $config_cache_maxage                         = null;
+       var $config_cache_maxsize                        = null;
+       var $config_cache_maxfiles                       = null;
+
+       var $config_cache_source_filemtime_ignore_local  = false;
+       var $config_cache_source_filemtime_ignore_remote = false;
+
+       var $config_cache_default_only_suffix            = false;
+
+       // * MySQL
+       var $config_mysql_query                          = null;
+       var $config_mysql_hostname                       = null;
+       var $config_mysql_username                       = null;
+       var $config_mysql_password                       = null;
+       var $config_mysql_database                       = null;
+
+       // * Security
+       var $config_high_security_enabled                = false;
+       var $config_config_high_security_password        = null;
+
+       var $config_disable_debug                        = false;
+       var $config_allow_src_above_docroot              = false;
+       var $config_allow_src_above_phpthumb             = true;
+       var $config_allow_parameter_file                 = false;
+       var $config_allow_parameter_goto                 = false;
+
+       // END CONFIGURATION OPTIONS
+
+
+       // public: error messages (read-only)
+       var $debugmessages = array();
+       var $debugtiming   = array();
+       var $fatalerror    = null;
+
+
+       // private: (should not be modified directly)
+       var $thumbnailQuality = 75;
+       var $thumbnailFormat  = null;
+
+       var $sourceFilename   = null;
+       var $rawImageData     = null;
+
+       var $gdimg_output     = null;
+       var $gdimg_source     = null;
+
+       var $getimagesizeinfo = null;
+
+       var $source_width  = null;
+       var $source_height = null;
+
+       var $thumbnailCropX = null;
+       var $thumbnailCropY = null;
+       var $thumbnailCropW = null;
+       var $thumbnailCropH = null;
+
+       var $exif_thumbnail_width  = null;
+       var $exif_thumbnail_height = null;
+       var $exif_thumbnail_type   = null;
+       var $exif_thumbnail_data   = null;
+
+       var $thumbnail_width        = null;
+       var $thumbnail_height       = null;
+       var $thumbnail_image_width  = null;
+       var $thumbnail_image_height = null;
+
+       var $cache_filename         = null;
+
+       var $is_alpha = false;
+
+       var $iswindows = null;
+       var $osslash   = null;
+
+       var $phpthumb_version = '1.6.1a-200508260902';
+
+       //////////////////////////////////////////////////////////////////////
+
+       // public: constructor
+       function phpThumb() {
+               $this->DebugTimingMessage('phpThumb() constructor', __FILE__, __LINE__);
+               $this->config_max_source_pixels = round(max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576 * 0.20); // 20% of memory_limit
+
+               if (phpthumb_functions::gd_version() < 1) {
+                       die('No GD support detected');
+               }
+               if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+                       $this->iswindows = true;
+                       $this->osslash   = '\\';
+               } else {
+                       $this->iswindows = false;
+                       $this->osslash   = '/';
+               }
+               if (@$_SERVER['DOCUMENT_ROOT']) {
+                       $this->config_document_root = $_SERVER['DOCUMENT_ROOT'];
+               }
+       }
+
+       // public:
+       function setSourceFilename($sourceFilename) {
+               $this->rawImageData   = null;
+               $this->sourceFilename = $sourceFilename;
+               $this->DebugMessage('setSourceFilename('.$sourceFilename.') set $this->sourceFilename to "'.$this->sourceFilename.'"', __FILE__, __LINE__);
+               return true;
+       }
+
+       // public:
+       function setSourceData($rawImageData, $sourceFilename='') {
+               $this->sourceFilename = null;
+               $this->rawImageData   = $rawImageData;
+               if ($this->config_cache_source_enabled) {
+                       $sourceFilename = ($sourceFilename ? $sourceFilename : md5($rawImageData));
+                       if (!is_dir($this->config_cache_source_directory) && !$this->phpThumbDebug) {
+                               $this->ErrorImage('$this->config_cache_source_directory ('.$this->config_cache_source_directory.') is not a directory');
+                       } elseif (!is_writable($this->config_cache_source_directory) && !$this->phpThumbDebug) {
+                               $this->ErrorImage('$this->config_cache_source_directory ('.$this->config_cache_source_directory.') is not writable');
+                       }
+                       $this->DebugMessage('setSourceData() attempting to save source image to "'.$this->config_cache_source_directory.$this->osslash.urlencode($sourceFilename).'"', __FILE__, __LINE__);
+                       if ($fp = @fopen($this->config_cache_source_directory.$this->osslash.urlencode($sourceFilename), 'wb')) {
+                               fwrite($fp, $rawImageData);
+                               fclose($fp);
+                       } elseif (!$this->phpThumbDebug) {
+                               $this->ErrorImage('setSourceData() failed to write to source cache ('.$this->config_cache_source_directory.$this->osslash.urlencode($sourceFilename).')');
+                       }
+               }
+               return true;
+       }
+
+       // public:
+       function setSourceImageResource($gdimg) {
+               $this->gdimg_source = $gdimg;
+               return true;
+       }
+
+       // public:
+       function setParameter($param, $value) {
+               switch ($param) {
+                       case 'src':
+                               $this->setSourceFilename($this->ResolveFilenameToAbsolute($value));
+                               break;
+
+                       default:
+                               $this->$param = $value;
+                               break;
+               }
+               $this->$param = $value;
+               return true;
+       }
+
+       // public:
+       function getParameter($param) {
+               //if (property_exists('phpThumb', $param)) {
+                       return $this->$param;
+               //}
+               //$this->DebugMessage('setParameter() attempting to set non-existant parameter "'.$param.'"', __FILE__, __LINE__);
+               //return false;
+       }
+
+
+       // public:
+       function GenerateThumbnail() {
+
+               $this->setOutputFormat();
+               $this->ResolveSource();
+               $this->SetCacheFilename();
+               $this->ExtractEXIFgetImageSize();
+               if (!$this->SourceImageToGD()) {
+                       return false;
+               }
+               $this->Rotate();
+               $this->CreateGDoutput();
+
+               switch ($this->far) {
+                       case 'L':
+                       case 'TL':
+                       case 'BL':
+                               $destination_offset_x = 0;
+                               $destination_offset_y = round(($this->thumbnail_height - $this->thumbnail_image_height) / 2);
+                               break;
+                       case 'R':
+                       case 'TR':
+                       case 'BR':
+                               $destination_offset_x =  round($this->thumbnail_width  - $this->thumbnail_image_width);
+                               $destination_offset_y = round(($this->thumbnail_height - $this->thumbnail_image_height) / 2);
+                               break;
+                       case 'T':
+                       case 'TL':
+                       case 'TR':
+                               $destination_offset_x = round(($this->thumbnail_width  - $this->thumbnail_image_width)  / 2);
+                               $destination_offset_y = 0;
+                               break;
+                       case 'B':
+                       case 'BL':
+                       case 'BR':
+                               $destination_offset_x = round(($this->thumbnail_width  - $this->thumbnail_image_width)  / 2);
+                               $destination_offset_y =  round($this->thumbnail_height - $this->thumbnail_image_height);
+                               break;
+                       case 'C':
+                       default:
+                               $destination_offset_x = round(($this->thumbnail_width  - $this->thumbnail_image_width)  / 2);
+                               $destination_offset_y = round(($this->thumbnail_height - $this->thumbnail_image_height) / 2);
+               }
+
+               // copy/resize image to appropriate dimensions
+               phpthumb_functions::ImageResizeFunction(
+                       $this->gdimg_output,
+                       $this->gdimg_source,
+                       $destination_offset_x,
+                       $destination_offset_y,
+                       $this->thumbnailCropX,
+                       $this->thumbnailCropY,
+                       $this->thumbnail_image_width,
+                       $this->thumbnail_image_height,
+                       $this->thumbnailCropW,
+                       $this->thumbnailCropH
+               );
+
+               $this->AntiOffsiteLinking();
+               $this->ApplyFilters();
+               $this->AlphaChannelFlatten();
+               $this->MaxFileSize();
+
+               $this->DebugMessage('GenerateThumbnail() completed successfully', __FILE__, __LINE__);
+               return true;
+       }
+
+
+       // public:
+       function RenderToFile($filename) {
+               if (!is_resource($this->gdimg_output)) {
+                       $this->DebugMessage('RenderToFile('.$filename.') failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
+                       return false;
+               }
+               if (!$this->thumbnailFormat) {
+                       $this->DebugMessage('RenderToFile() failed because $this->thumbnailFormat is empty', __FILE__, __LINE__);
+                       return false;
+               }
+               // render thumbnail to this file only, do not cache, do not output to browser
+               $ImageOutFunction = 'image'.$this->thumbnailFormat;
+               //$renderfilename = $this->ResolveFilenameToAbsolute(dirname($filename)).$this->osslash.basename($filename);
+               $renderfilename = $filename;
+               if (($filename{0} != '/') && ($filename{0} != '\\') && ($filename{1} != ':')) {
+                       $renderfilename = $this->ResolveFilenameToAbsolute($renderfilename);
+               }
+               $this->DebugMessage('RenderToFile('.$filename.') attempting '.$ImageOutFunction.'($this->gdimg_output, '.$renderfilename.')', __FILE__, __LINE__);
+               if (!is_writable(dirname($renderfilename))) {
+                       $this->DebugMessage(dirname($renderfilename).'/ is not writable', __FILE__, __LINE__);
+               }
+               if (is_file($renderfilename) && !is_writable($renderfilename)) {
+                       $this->DebugMessage($renderfilename.' is not writable', __FILE__, __LINE__);
+               }
+               ob_start();
+               switch ($this->thumbnailFormat) {
+                       case 'jpeg':
+                               $ImageOutFunction($this->gdimg_output, $renderfilename, $this->thumbnailQuality);
+                               break;
+
+                       case 'png':
+                       case 'gif':
+                               $ImageOutFunction($this->gdimg_output, $renderfilename);
+                               break;
+               }
+               $errormessage = strip_tags(ob_get_contents());
+               ob_end_clean();
+               if ($errormessage) {
+                       $this->DebugMessage('RenderToFile ['.$ImageOutFunction.'('.$renderfilename.')] failed with message "'.$errormessage.'"', __FILE__, __LINE__);
+                       return false;
+               } elseif (!file_exists($renderfilename)) {
+                       $this->DebugMessage('RenderToFile ['.$ImageOutFunction.'('.$renderfilename.')] did not appear to fail, but the output image does not exist either...', __FILE__, __LINE__);
+               }
+               return true;
+       }
+
+
+       // public:
+       function OutputThumbnail() {
+               if (!is_resource($this->gdimg_output)) {
+                       $this->DebugMessage('OutputThumbnail() failed because !is_resource($this->gdimg_output)', __FILE__, __LINE__);
+                       return false;
+               }
+               if (headers_sent()) {
+                       return $this->ErrorImage('OutputThumbnail() failed - headers already sent');
+                       exit;
+               }
+
+               if ($this->down) {
+                       $downloadfilename = ereg_replace('[/\\:\*\?"<>|]', '_', $this->down);
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0', '>=')) {
+                               $downloadfilename = trim($downloadfilename, '.');
+                       }
+                       if ($downloadfilename != $this->down) {
+                               $this->DebugMessage('renaming output file for "down" from "'.$this->down.'" to "'.$downloadfilename.'"', __FILE__, __LINE__);
+                       }
+                       if ($downloadfilename) {
+                               header('Content-Disposition: attachment; filename="'.$downloadfilename.'"');
+                       } else {
+                               $this->DebugMessage('failed to send Content-Disposition header because $downloadfilename is empty', __FILE__, __LINE__);
+                       }
+               }
+
+               ImageInterlace($this->gdimg_output, intval($this->config_output_interlace));
+               $ImageOutFunction = 'image'.$this->thumbnailFormat;
+               switch ($this->thumbnailFormat) {
+                       case 'jpeg':
+                               header('Content-Type: image/'.$this->thumbnailFormat);
+                               @$ImageOutFunction($this->gdimg_output, '', $this->thumbnailQuality);
+                               break;
+
+                       case 'png':
+                       case 'gif':
+                               header('Content-Type: image/'.$this->thumbnailFormat);
+                               @$ImageOutFunction($this->gdimg_output);
+                               break;
+
+                       default:
+                               return false;
+                               break;
+               }
+               ImageDestroy($this->gdimg_output);
+               return true;
+       }
+
+
+       // public:
+       function CleanUpCacheDirectory() {
+               if (($this->config_cache_maxage > 0) || ($this->config_cache_maxsize > 0) || ($this->config_cache_maxfiles > 0)) {
+                       $CacheDirOldFilesAge  = array();
+                       $CacheDirOldFilesSize = array();
+                       if ($dirhandle = opendir($this->config_cache_directory)) {
+                               while ($oldcachefile = readdir($dirhandle)) {
+                                       if (eregi('^phpThumb_cache_', $oldcachefile)) {
+                                               $CacheDirOldFilesAge[$oldcachefile] = fileatime($this->config_cache_directory.$this->osslash.$oldcachefile);
+                                               if ($CacheDirOldFilesAge[$oldcachefile] == 0) {
+                                                       $CacheDirOldFilesAge[$oldcachefile] = filemtime($this->config_cache_directory.$this->osslash.$oldcachefile);
+                                               }
+
+                                               $CacheDirOldFilesSize[$oldcachefile] = filesize($this->config_cache_directory.$this->osslash.$oldcachefile);
+                                       }
+                               }
+                       }
+                       asort($CacheDirOldFilesAge);
+
+                       if ($this->config_cache_maxfiles > 0) {
+                               $TotalCachedFiles = count($CacheDirOldFilesAge);
+                               $DeletedKeys = array();
+                               foreach ($CacheDirOldFilesAge as $oldcachefile => $filedate) {
+                                       if ($TotalCachedFiles > $this->config_cache_maxfiles) {
+                                               $TotalCachedFiles--;
+                                               if (@unlink($this->config_cache_directory.$this->osslash.$oldcachefile)) {
+                                                       $DeletedKeys[] = $oldcachefile;
+                                               }
+                                       } else {
+                                               // there are few enough files to keep the rest
+                                               break;
+                                       }
+                               }
+                               foreach ($DeletedKeys as $oldcachefile) {
+                                       unset($CacheDirOldFilesAge[$oldcachefile]);
+                                       unset($CacheDirOldFilesSize[$oldcachefile]);
+                               }
+                       }
+
+                       if ($this->config_cache_maxage > 0) {
+                               $mindate = time() - $this->config_cache_maxage;
+                               $DeletedKeys = array();
+                               foreach ($CacheDirOldFilesAge as $oldcachefile => $filedate) {
+                                       if ($filedate > 0) {
+                                               if ($filedate < $mindate) {
+                                                       if (@unlink($this->config_cache_directory.$this->osslash.$oldcachefile)) {
+                                                               $DeletedKeys[] = $oldcachefile;
+                                                       }
+                                               } else {
+                                                       // the rest of the files are new enough to keep
+                                                       break;
+                                               }
+                                       }
+                               }
+                               foreach ($DeletedKeys as $oldcachefile) {
+                                       unset($CacheDirOldFilesAge[$oldcachefile]);
+                                       unset($CacheDirOldFilesSize[$oldcachefile]);
+                               }
+                       }
+
+                       if ($this->config_cache_maxsize > 0) {
+                               $TotalCachedFileSize = array_sum($CacheDirOldFilesSize);
+                               $DeletedKeys = array();
+                               foreach ($CacheDirOldFilesAge as $oldcachefile => $filedate) {
+                                       if ($TotalCachedFileSize > $this->config_cache_maxsize) {
+                                               $TotalCachedFileSize -= $CacheDirOldFilesSize[$oldcachefile];
+                                               if (@unlink($this->config_cache_directory.$this->osslash.$oldcachefile)) {
+                                                       $DeletedKeys[] = $oldcachefile;
+                                               }
+                                       } else {
+                                               // the total filesizes are small enough to keep the rest of the files
+                                               break;
+                                       }
+                               }
+                               foreach ($DeletedKeys as $oldcachefile) {
+                                       unset($CacheDirOldFilesAge[$oldcachefile]);
+                                       unset($CacheDirOldFilesSize[$oldcachefile]);
+                               }
+                       }
+
+               }
+               return true;
+       }
+
+       //////////////////////////////////////////////////////////////////////
+
+       function ResolveSource() {
+               if (is_resource($this->gdimg_source)) {
+                       return true;
+               }
+               if ($this->rawImageData) {
+                       $this->sourceFilename = null;
+                       return true;
+               }
+               if ($this->sourceFilename) {
+                       $this->sourceFilename = $this->ResolveFilenameToAbsolute($this->sourceFilename);
+                       $this->DebugMessage('$this->sourceFilename set to "'.$this->sourceFilename.'"', __FILE__, __LINE__);
+               } else {
+                       $this->sourceFilename = $this->ResolveFilenameToAbsolute($this->src);
+                       $this->DebugMessage('$this->sourceFilename set to "'.$this->sourceFilename.'" from $this->src ('.$this->src.')', __FILE__, __LINE__);
+               }
+               if ($this->iswindows && ((substr($this->sourceFilename, 0, 2) == '//') || (substr($this->sourceFilename, 0, 2) == '\\\\'))) {
+                       // Windows \\share\filename.ext
+               } elseif (eregi('^(f|ht)tps?://', $this->sourceFilename)) {
+                       // URL
+               } elseif (!file_exists($this->sourceFilename)) {
+                       return $this->ErrorImage('"'.$this->sourceFilename.'" does not exist');
+               } elseif (!is_file($this->sourceFilename)) {
+                       return $this->ErrorImage('"'.$this->sourceFilename.'" is not a file');
+               }
+               return true;
+       }
+
+       function setOutputFormat() {
+               static $alreadyCalled = false;
+               if ($this->thumbnailFormat && $alreadyCalled) {
+                       return true;
+               }
+               $alreadyCalled = true;
+
+               $AvailableImageOutputFormats = array();
+               $AvailableImageOutputFormats[] = 'text';
+               $this->thumbnailFormat         = 'text';
+
+               // Set default output format based on what image types are available
+               if (!function_exists('ImageTypes')) {
+                       return $this->ErrorImage('ImageTypes() does not exist - GD support might not be enabled?');
+               }
+               $imagetypes = ImageTypes();
+               if ($imagetypes & IMG_WBMP) {
+                       $this->thumbnailFormat         = 'wbmp';
+                       $AvailableImageOutputFormats[] = 'wbmp';
+               }
+               if ($imagetypes & IMG_GIF) {
+                       $this->thumbnailFormat         = 'gif';
+                       $AvailableImageOutputFormats[] = 'gif';
+               }
+               if ($imagetypes & IMG_PNG) {
+                       $this->thumbnailFormat         = 'png';
+                       $AvailableImageOutputFormats[] = 'png';
+               }
+               if ($imagetypes & IMG_JPG) {
+                       $this->thumbnailFormat         = 'jpeg';
+                       $AvailableImageOutputFormats[] = 'jpeg';
+               }
+               $this->DebugMessage('$AvailableImageOutputFormats = array('.implode(';', $AvailableImageOutputFormats).')', __FILE__, __LINE__);
+
+               if (strtolower($this->config_output_format) == 'jpg') {
+                       $this->config_output_format = 'jpeg';
+               }
+               if (strtolower($this->f) == 'jpg') {
+                       $this->f = 'jpeg';
+               }
+               if (in_array(strtolower($this->config_output_format), $AvailableImageOutputFormats)) {
+                       // set output format to config default if that format is available
+                       $this->DebugMessage('$this->thumbnailFormat set to $this->config_output_format "'.strtolower($this->config_output_format).'"', __FILE__, __LINE__);
+                       $this->thumbnailFormat = strtolower($this->config_output_format);
+               } elseif ($this->config_output_format) {
+                       $this->DebugMessage('$this->thumbnailFormat staying as "'.$this->thumbnailFormat.'" because $this->config_output_format ('.strtolower($this->config_output_format).') is not in $AvailableImageOutputFormats', __FILE__, __LINE__);
+               }
+               if ($this->f && (in_array(strtolower($this->f), $AvailableImageOutputFormats))) {
+                       // override output format if $this->f is set and that format is available
+                       $this->DebugMessage('$this->thumbnailFormat set to $this->f "'.strtolower($this->f).'"', __FILE__, __LINE__);
+                       $this->thumbnailFormat = strtolower($this->f);
+               } elseif ($this->f) {
+                       $this->DebugMessage('$this->thumbnailFormat staying as "'.$this->thumbnailFormat.'" because $this->f ('.strtolower($this->f).') is not in $AvailableImageOutputFormats', __FILE__, __LINE__);
+               }
+
+               // for JPEG images, quality 1 (worst) to 99 (best)
+               // quality < 25 is nasty, with not much size savings - not recommended
+               // problems with 100 - invalid JPEG?
+               $this->thumbnailQuality = max(1, min(99, ($this->q ? $this->q : 75)));
+               $this->DebugMessage('$this->thumbnailQuality set to "'.$this->thumbnailQuality.'"', __FILE__, __LINE__);
+
+               return true;
+       }
+
+       function setCacheDirectory() {
+               // resolve cache directory to absolute pathname
+               if (substr($this->config_cache_directory, 0, 1) == '.') {
+                       if (eregi('^(f|ht)tps?://', $this->src)) {
+                               if (!$this->config_cache_disable_warning && !$this->phpThumbDebug) {
+                                       $this->ErrorImage('$this->config_cache_directory ('.$this->config_cache_directory.') cannot be used for remote images. Adjust "cache_directory" or "cache_disable_warning" in phpThumb.config.php');
+                               }
+                       } elseif ($this->src) {
+                               // resolve relative cache directory to source image
+                               $this->config_cache_directory = dirname($this->ResolveFilenameToAbsolute($this->src)).$this->osslash.$this->config_cache_directory;
+                       } else {
+                               // $this->new is probably set
+                       }
+               }
+               if (substr($this->config_cache_directory, -1) == '/') {
+                       $this->config_cache_directory = substr($this->config_cache_directory, 0, -1);
+               }
+               if ($this->iswindows) {
+                       $this->config_cache_directory = str_replace('/', $this->osslash, $this->config_cache_directory);
+               }
+               if ($this->config_cache_directory) {
+                       $real_cache_path = realpath($this->config_cache_directory);
+                       if (!$real_cache_path) {
+                               $this->DebugMessage('realpath($this->config_cache_directory) failed for "'.$this->config_cache_directory.'"', __FILE__, __LINE__);
+                               if (!is_dir($this->config_cache_directory)) {
+                                       $this->DebugMessage('!is_dir('.$this->config_cache_directory.')', __FILE__, __LINE__);
+                               }
+                       }
+                       if ($real_cache_path) {
+                               $this->config_cache_directory = $real_cache_path;
+                       }
+               }
+               if (!is_dir($this->config_cache_directory)) {
+                       if (!$this->config_cache_disable_warning && !$this->phpThumbDebug) {
+                               $this->ErrorImage('$this->config_cache_directory ('.$this->config_cache_directory.') does not exist. Adjust "cache_directory" or "cache_disable_warning" in phpThumb.config.php');
+                       }
+                       $this->DebugMessage('$this->config_cache_directory ('.$this->config_cache_directory.') is not a directory', __FILE__, __LINE__);
+                       $this->config_cache_directory = null;
+               } elseif (!is_writable($this->config_cache_directory)) {
+                       $this->DebugMessage('$this->config_cache_directory is not writable ('.$this->config_cache_directory.')', __FILE__, __LINE__);
+               }
+               return true;
+       }
+
+
+       function ResolveFilenameToAbsolute($filename) {
+               if (eregi('^(f|ht)tps?://', $filename)) {
+
+                       // URL
+                       $AbsoluteFilename = $filename;
+
+               } elseif ($this->iswindows && ($filename{1} == ':')) {
+
+                       // absolute pathname (Windows)
+                       $AbsoluteFilename = $filename;
+
+               } elseif ($this->iswindows && ((substr($filename, 0, 2) == '//') || (substr($filename, 0, 2) == '\\\\'))) {
+
+                       // absolute pathname (Windows)
+                       $AbsoluteFilename = $filename;
+
+               } elseif ($filename{0} == '/') {
+
+                       if (@is_readable($filename) && !@is_readable($this->config_document_root.$filename)) {
+                               // absolute filename (*nix)
+                               $AbsoluteFilename = $filename;
+                       } elseif ($filename{1} == '~') {
+                               // /~user/path
+                               if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray($filename)) {
+                                       $AbsoluteFilename = $ApacheLookupURIarray['filename'];
+                               } else {
+                                       $AbsoluteFilename = realpath($filename);
+                                       if (@is_readable($AbsoluteFilename)) {
+                                               $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.$filename.'", but the correct filename ('.$AbsoluteFilename.') seems to have been resolved with realpath($filename)', __FILE__, __LINE__);
+                                       } else {
+                                               if ($this->phpThumbDebug) {
+                                                       $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.$filename.'". This has been known to fail on Apache2 - try using the absolute filename for the source image');
+                                                       return false;
+                                               } else {
+                                                       return $this->ErrorImage('phpthumb_functions::ApacheLookupURIarray() failed for "'.$filename.'". This has been known to fail on Apache2 - try using the absolute filename for the source image');
+                                               }
+                                       }
+                               }
+                       } else {
+                               // relative filename (any OS)
+                               $AbsoluteFilename = $this->config_document_root.$filename;
+                       }
+
+               } else {
+
+                       // relative to current directory (any OS)
+                       $AbsoluteFilename = $this->config_document_root.dirname(@$_SERVER['PHP_SELF']).$this->osslash.$filename;
+                       //if (!file_exists($AbsoluteFilename) && file_exists(realpath($this->DotPadRelativeDirectoryPath($filename)))) {
+                       //      $AbsoluteFilename = realpath($this->DotPadRelativeDirectoryPath($filename));
+                       //}
+
+                       if (substr(dirname(@$_SERVER['PHP_SELF']), 0, 2) == '/~') {
+                               if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
+                                       $AbsoluteFilename = $ApacheLookupURIarray['filename'].$this->osslash.$filename;
+                               } else {
+                                       $AbsoluteFilename = realpath('.').$this->osslash.$filename;
+                                       if (@is_readable($AbsoluteFilename)) {
+                                               $this->DebugMessage('phpthumb_functions::ApacheLookupURIarray() failed for "'.dirname(@$_SERVER['PHP_SELF']).'", but the correct filename ('.$AbsoluteFilename.') seems to have been resolved with realpath(.)/$filename', __FILE__, __LINE__);
+                                       } else {
+                                               return $this->ErrorImage('phpthumb_functions::ApacheLookupURIarray() failed for "'.dirname(@$_SERVER['PHP_SELF']).'". This has been known to fail on Apache2 - try using the absolute filename for the source image');
+                                       }
+                               }
+                       }
+
+               }
+               if (is_link($AbsoluteFilename)) {
+                       $this->DebugMessage('is_link()==true, changing "'.$AbsoluteFilename.'" to "'.readlink($AbsoluteFilename).'"', __FILE__, __LINE__);
+                       $AbsoluteFilename = readlink($AbsoluteFilename);
+               }
+               if (realpath($AbsoluteFilename)) {
+                       $AbsoluteFilename = realpath($AbsoluteFilename);
+               }
+               if ($this->iswindows) {
+                       $AbsoluteFilename = eregi_replace('^'.preg_quote(realpath($this->config_document_root)), realpath($this->config_document_root), $AbsoluteFilename);
+                       $AbsoluteFilename = str_replace($this->osslash, '/', $AbsoluteFilename);
+               }
+               if (!$this->config_allow_src_above_docroot && !ereg('^'.preg_quote(str_replace($this->osslash, '/', realpath($this->config_document_root))), $AbsoluteFilename)) {
+                       $this->DebugMessage('!$this->config_allow_src_above_docroot therefore setting "'.$AbsoluteFilename.'" to null', __FILE__, __LINE__);
+                       return false;
+               }
+               if (!$this->config_allow_src_above_phpthumb && !ereg('^'.preg_quote(str_replace($this->osslash, '/', dirname(__FILE__))), $AbsoluteFilename)) {
+                       $this->DebugMessage('!$this->config_allow_src_above_phpthumb therefore setting "'.$AbsoluteFilename.'" to null', __FILE__, __LINE__);
+                       return false;
+               }
+               return $AbsoluteFilename;
+       }
+
+       function ImageMagickCommandlineBase() {
+               static $commandline = null;
+               if (is_null($commandline)) {
+                       $commandline = '';
+
+                       $which_convert = trim(phpthumb_functions::SafeExec('which convert'));
+
+                       if ($this->config_imagemagick_path && ($this->config_imagemagick_path != realpath($this->config_imagemagick_path))) {
+                               $this->DebugMessage('Changing $this->config_imagemagick_path ('.$this->config_imagemagick_path.') to realpath($this->config_imagemagick_path) ('.realpath($this->config_imagemagick_path).')', __FILE__, __LINE__);
+                               $this->config_imagemagick_path = realpath($this->config_imagemagick_path);
+                       }
+                       if (file_exists($this->config_imagemagick_path)) {
+
+                               $this->DebugMessage('using ImageMagick path from $this->config_imagemagick_path ('.$this->config_imagemagick_path.')', __FILE__, __LINE__);
+                               if ($this->iswindows) {
+                                       $commandline = substr($this->config_imagemagick_path, 0, 2).' && cd "'.substr(dirname($this->config_imagemagick_path), 2).'" && '.basename($this->config_imagemagick_path);
+                               } else {
+                                       $commandline = '"'.$this->config_imagemagick_path.'"';
+                               }
+
+                       } elseif ($which_convert && ($which_convert{0} == '/') && @file_exists($which_convert)) {
+
+                               // `which convert` *should* return the path if "convert" exist, or nothing if it doesn't
+                               // other things *may* get returned, like "sh: convert: not found" or "no convert in /usr/local/bin /usr/sbin /usr/bin /usr/ccs/bin"
+                               // so only do this if the value returned exists as a file
+                               $this->DebugMessage('using ImageMagick path from `which convert` ('.$which_convert.')', __FILE__, __LINE__);
+                               $commandline = 'convert';
+
+                       } else {
+
+                               $this->DebugMessage('ImageMagickThumbnailToGD() aborting because cannot find convert in $this->config_imagemagick_path ('.$this->config_imagemagick_path.'), and `which convert` returned ('.$which_convert.')', __FILE__, __LINE__);
+
+                       }
+               }
+               return $commandline;
+       }
+
+       function ImageMagickVersion() {
+               $commandline = $this->ImageMagickCommandlineBase();
+               if ($commandline) {
+                       $commandline .= ' -version';
+                       $versionstring = phpthumb_functions::SafeExec($commandline);
+                       if (eregi('^Version: (.*) http', $versionstring, $matches)) {
+                               return $matches[1];
+                       }
+                       $this->DebugMessage('ImageMagick did not return recognized version string ('.$versionstring.')', __FILE__, __LINE__);
+                       return $versionstring;
+               }
+               return false;
+       }
+
+       function ImageMagickThumbnailToGD() {
+               // http://freealter.org/doc_distrib/ImageMagick-5.1.1/www/convert.html
+               if (ini_get('safe_mode')) {
+                       $this->DebugMessage('ImageMagickThumbnailToGD() aborting because safe_mode is enabled', __FILE__, __LINE__);
+                       return false;
+               }
+               if (!function_exists('ImageCreateFromPNG')) {
+                       // ImageMagickThumbnailToGD() depends on ImageCreateFromPNG()
+                       $this->DebugMessage('ImageMagickThumbnailToGD() aborting because ImageCreateFromPNG() is not available', __FILE__, __LINE__);
+                       return false;
+               }
+
+               $commandline = $this->ImageMagickCommandlineBase();
+               if ($commandline) {
+                       if ($IMtempfilename = $this->phpThumb_tempnam()) {
+
+                               $IMtempfilename = realpath($IMtempfilename);
+                               $this->source_width  = max($this->w, $this->wp, $this->wl, $this->ws);
+                               $this->source_height = max($this->h, $this->hp, $this->hl, $this->hs);
+                               $this->DebugMessage('source dimensions set to '.$this->source_width.'x'.$this->source_height, __FILE__, __LINE__);
+                               if (!$this->aoe && !$this->iar && ($getimagesize = @GetImageSize($this->sourceFilename))) {
+                                       // limit output size to input size unless AllowOutputEnlargement is enabled
+                                       $this->source_width  = min($this->source_width,  $getimagesize[0]);
+                                       $this->source_height = min($this->source_height, $getimagesize[1]);
+                                       $this->DebugMessage('source dimensions reset to '.$this->source_width.'x'.$this->source_height, __FILE__, __LINE__);
+                                       $this->SetOrientationDependantWidthHeight();
+                                       if ($this->zc) {
+                                               $ar = max($getimagesize[0] / $getimagesize[1], $getimagesize[1] / $getimagesize[0]);
+                                               $this->source_width  = round($this->source_width  * $ar);
+                                               $this->source_height = round($this->source_height * $ar);
+                                               $this->DebugMessage('source dimensions reset by "zc" to '.$this->source_width.'x'.$this->source_height, __FILE__, __LINE__);
+                                       }
+                               }
+                               //$commandline .= ' -resize '.$this->source_width.'x'.$this->source_height; // behaves badly with IM v5.3.x
+                               $commandline .= ' -geometry '.$this->source_width.'x'.$this->source_height;
+                               if ($this->iar && (intval($this->w) > 0) && (intval($this->h) > 0)) {
+                                       $commandline .= '!';
+                               }
+                               $commandline .= ' "'.str_replace('/', $this->osslash, $this->sourceFilename).'"';
+                               $commandline .= ' png:'.$IMtempfilename;
+                               $commandline .= ' 2>&1';
+
+                               $this->DebugMessage('ImageMagick called as ('.$commandline.')', __FILE__, __LINE__);
+                               $IMresult = phpthumb_functions::SafeExec($commandline);
+                               if ($IMresult) {
+
+                                       //return $this->ErrorImage('ImageMagick was called as:'."\n".$commandline."\n\n".'but failed with message:'."\n".$IMresult);
+                                       $this->DebugMessage('ImageMagick failed with message ('.$IMresult.')', __FILE__, __LINE__);
+
+                               } elseif ($this->gdimg_source = @ImageCreateFromPNG($IMtempfilename)) {
+
+                                       @unlink($IMtempfilename);
+                                       $this->source_width  = ImageSX($this->gdimg_source);
+                                       $this->source_height = ImageSY($this->gdimg_source);
+                                       $this->DebugMessage('ImageMagickThumbnailToGD() succeeded, $this->gdimg_source is now ('.$this->source_width.'x'.$this->source_height.')', __FILE__, __LINE__);
+                                       return true;
+
+                               }
+                               unlink($IMtempfilename);
+
+                       } else {
+                               $this->DebugMessage('ImageMagickThumbnailToGD() aborting, phpThumb_tempnam() failed', __FILE__, __LINE__);
+                       }
+               }
+               $this->DebugMessage('ImageMagickThumbnailToGD() aborting because ImageMagickCommandlineBase() failed', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function Rotate() {
+               if ($this->ra || $this->ar) {
+                       if (!function_exists('ImageRotate')) {
+                               $this->DebugMessage('!function_exists(ImageRotate)', __FILE__, __LINE__);
+                               return false;
+                       }
+                       if (!include_once(dirname(__FILE__).'/phpthumb.filters.php')) {
+                               $this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.filters.php" which is required for applying filters ('.implode(';', $this->fltr).')', __FILE__, __LINE__);
+                               return false;
+                       }
+
+                       $this->config_background_hexcolor = ($this->bg ? $this->bg : $this->config_background_hexcolor);
+                       if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
+                               return $this->ErrorImage('Invalid hex color string "'.$this->config_background_hexcolor.'" for parameter "bg"');
+                       }
+
+                       $rotate_angle = 0;
+                       if ($this->ra) {
+
+                               $rotate_angle = floatval($this->ra);
+
+                       } else {
+
+                               if ($this->ar == 'x') {
+                                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.2.0', '>=')) {
+                                               if ($this->sourceFilename) {
+                                                       if (function_exists('exif_read_data')) {
+                                                               if ($exif_data = @exif_read_data($this->sourceFilename, 'IFD0')) {
+                                                                       // http://sylvana.net/jpegcrop/exif_orientation.html
+                                                                       switch (@$exif_data['Orientation']) {
+                                                                               case 1:
+                                                                                       $rotate_angle = 0;
+                                                                                       break;
+                                                                               case 3:
+                                                                                       $rotate_angle = 180;
+                                                                                       break;
+                                                                               case 6:
+                                                                                       $rotate_angle = 270;
+                                                                                       break;
+                                                                               case 8:
+                                                                                       $rotate_angle = 90;
+                                                                                       break;
+
+                                                                               default:
+                                                                                       $this->DebugMessage('EXIF auto-rotate failed because unknown $exif_data[Orientation] "'.@$exif_data['Orientation'].'"', __FILE__, __LINE__);
+                                                                                       return false;
+                                                                                       break;
+                                                                       }
+                                                                       $this->DebugMessage('EXIF auto-rotate set to '.$rotate_angle.' degrees ($exif_data[Orientation] = "'.@$exif_data['Orientation'].'")', __FILE__, __LINE__);
+                                                               } else {
+                                                                       $this->DebugMessage('failed: exif_read_data('.$this->sourceFilename.')', __FILE__, __LINE__);
+                                                                       return false;
+                                                               }
+                                                       } else {
+                                                               $this->DebugMessage('!function_exists(exif_read_data)', __FILE__, __LINE__);
+                                                               return false;
+                                                       }
+                                               } else {
+                                                       $this->DebugMessage('Cannot auto-rotate from EXIF data because $this->sourceFilename is empty', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                       } else {
+                                               $this->DebugMessage('Cannot auto-rotate from EXIF data because PHP is less than v4.2.0 ('.phpversion().')', __FILE__, __LINE__);
+                                               return false;
+                                       }
+                               } elseif (($this->ar == 'l') && ($this->source_height > $this->source_width)) {
+                                       $rotate_angle = 270;
+                               } elseif (($this->ar == 'L') && ($this->source_height > $this->source_width)) {
+                                       $rotate_angle = 90;
+                               } elseif (($this->ar == 'p') && ($this->source_width > $this->source_height)) {
+                                       $rotate_angle = 90;
+                               } elseif (($this->ar == 'P') && ($this->source_width > $this->source_height)) {
+                                       $rotate_angle = 270;
+                               }
+
+                       }
+                       while ($rotate_angle < 0) {
+                               $rotate_angle += 360;
+                       }
+                       $rotate_angle = $rotate_angle % 360;
+                       if ($rotate_angle != 0) {
+
+                               $background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_source, $this->config_background_hexcolor);
+
+                               if ((phpthumb_functions::gd_version() >= 2) && ($this->thumbnailFormat == 'png') && !$this->bg && ($rotate_angle % 90)) {
+
+                                       if ($gdimg_rotate_mask = phpthumb_functions::ImageCreateFunction(ImageSX($this->gdimg_source), ImageSY($this->gdimg_source))) {
+
+                                               $this->gdimg_source = ImageRotate($this->gdimg_source, $rotate_angle, $background_color);
+                                               $color_mask_opaque      = ImageColorAllocate($gdimg_rotate_mask, 0xFF, 0xFF, 0xFF);
+                                               $color_mask_transparent = ImageColorAllocate($gdimg_rotate_mask, 0x00, 0x00, 0x00);
+                                               ImageFilledRectangle($gdimg_rotate_mask, 0, 0, ImageSX($gdimg_rotate_mask), ImageSY($gdimg_rotate_mask), $color_mask_opaque);
+                                               $gdimg_rotate_mask = ImageRotate($gdimg_rotate_mask, $rotate_angle, $color_mask_transparent);
+
+                                               ImageAlphaBlending($this->gdimg_source, false);
+                                               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                                                       ImageSaveAlpha($this->gdimg_source, true);
+                                               }
+                                               $this->is_alpha = true;
+                                               phpthumb_filters::ApplyMask($gdimg_rotate_mask, $this->gdimg_source);
+
+                                               ImageDestroy($gdimg_rotate_mask);
+                                               $this->source_width  = ImageSX($this->gdimg_source);
+                                               $this->source_height = ImageSY($this->gdimg_source);
+
+                                       } else {
+                                               $this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$MaskFilename.'"', __FILE__, __LINE__);
+                                       }
+
+                               } else {
+
+                                       if (phpthumb_functions::gd_version() >= 2) {
+                                               $this->DebugMessage('Using non-alpha rotate because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                       } else {
+                                               $this->DebugMessage('Using non-alpha rotate because $this->thumbnailFormat is "'.$this->thumbnailFormat.'"', __FILE__, __LINE__);
+                                       }
+
+                                       if (ImageColorTransparent($this->gdimg_source) >= 0) {
+                                               // ImageRotate() forgets all about an image's transparency and sets the transparent color to black
+                                               // To compensate, flood-fill the transparent color of the source image with the specified background color first
+                                               // then rotate and the colors should match
+
+                                               if (!function_exists('ImageIsTrueColor') || !ImageIsTrueColor($this->gdimg_source)) {
+                                                       // convert paletted image to true-color before rotating to prevent nasty aliasing artifacts
+
+                                                       $this->source_width  = ImageSX($this->gdimg_source);
+                                                       $this->source_height = ImageSY($this->gdimg_source);
+                                                       $gdimg_newsrc = phpthumb_functions::ImageCreateFunction($this->source_width, $this->source_height);
+                                                       $background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_newsrc, $this->config_background_hexcolor);
+                                                       ImageFilledRectangle($gdimg_newsrc, 0, 0, $this->source_width, $this->source_height, phpthumb_functions::ImageHexColorAllocate($gdimg_newsrc, $this->config_background_hexcolor));
+                                                       ImageCopy($gdimg_newsrc, $this->gdimg_source, 0, 0, 0, 0, $this->source_width, $this->source_height);
+                                                       ImageDestroy($this->gdimg_source);
+                                                       unset($this->gdimg_source);
+                                                       $this->gdimg_source = $gdimg_newsrc;
+                                                       unset($gdimg_newsrc);
+
+                                               } else {
+
+                                                       ImageColorSet(
+                                                               $this->gdimg_source,
+                                                               ImageColorTransparent($this->gdimg_source),
+                                                               hexdec(substr($this->config_background_hexcolor, 0, 2)),
+                                                               hexdec(substr($this->config_background_hexcolor, 2, 2)),
+                                                               hexdec(substr($this->config_background_hexcolor, 4, 2)));
+
+                                                       ImageColorTransparent($this->gdimg_source, -1);
+
+                                               }
+                                       }
+
+                                       $this->gdimg_source = ImageRotate($this->gdimg_source, $rotate_angle, $background_color);
+                                       $this->source_width  = ImageSX($this->gdimg_source);
+                                       $this->source_height = ImageSY($this->gdimg_source);
+
+                               }
+                       }
+               }
+               return true;
+       }
+
+
+       function FixedAspectRatio() {
+               // optional fixed-dimension images (regardless of aspect ratio)
+
+               if (!$this->far) {
+                       // do nothing
+                       return true;
+               }
+
+               if (!$this->w || !$this->h) {
+                       return false;
+               }
+               $this->thumbnail_width  = $this->w;
+               $this->thumbnail_height = $this->h;
+               $this->is_alpha = true;
+               if ($this->thumbnail_image_width >= $this->thumbnail_width) {
+
+                       if ($this->w) {
+                               $aspectratio = $this->thumbnail_image_height / $this->thumbnail_image_width;
+                               $this->thumbnail_image_height = round($this->thumbnail_image_width * $aspectratio);
+                               if (!$this->h) {
+                                       $this->thumbnail_height = $this->thumbnail_image_height;
+                               }
+                       } elseif ($this->thumbnail_image_height < $this->thumbnail_height) {
+                               $this->thumbnail_image_height = $this->thumbnail_height;
+                               $this->thumbnail_image_width  = round($this->thumbnail_image_height / $aspectratio);
+                       }
+
+               } else {
+
+                       if ($this->h) {
+                               $aspectratio = $this->thumbnail_image_width / $this->thumbnail_image_height;
+                               $this->thumbnail_image_width = round($this->thumbnail_image_height * $aspectratio);
+                       } elseif ($this->thumbnail_image_width < $this->thumbnail_width) {
+                               $this->thumbnail_image_width = $this->thumbnail_width;
+                               $this->thumbnail_image_height  = round($this->thumbnail_image_width / $aspectratio);
+                       }
+
+               }
+               return true;
+       }
+
+
+       function AntiOffsiteLinking() {
+               // Optional anti-offsite hijacking of the thumbnail script
+               $allow = true;
+               if ($allow && $this->config_nooffsitelink_enabled && $this->config_nooffsitelink_require_refer) {
+                       $this->DebugMessage('AntiOffsiteLinking() checking $_SERVER[HTTP_REFERER] "'.@$_SERVER['HTTP_REFERER'].'"', __FILE__, __LINE__);
+                       $parsed_url = parse_url(@$_SERVER['HTTP_REFERER']);
+                       if (!in_array(@$parsed_url['host'], $this->config_nooffsitelink_valid_domains)) {
+                               $allow = false;
+                               $erase   = $this->config_nooffsitelink_erase_image;
+                               $message = $this->config_nooffsitelink_text_message;
+                               $this->DebugMessage('AntiOffsiteLinking() - "'.@$parsed_url['host'].'" is NOT in $this->config_nooffsitelink_valid_domains ('.implode(';', $this->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__);
+                       } else {
+                               $this->DebugMessage('AntiOffsiteLinking() - "'.@$parsed_url['host'].'" is in $this->config_nooffsitelink_valid_domains ('.implode(';', $this->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__);
+                       }
+               }
+
+               if ($allow && $this->config_nohotlink_enabled && eregi('^(f|ht)tps?://', $this->src)) {
+                       $parsed_url = parse_url($this->src);
+                       if (!in_array(@$parsed_url['host'], $this->config_nohotlink_valid_domains)) {
+                               // This domain is not allowed
+                               $allow = false;
+                               $erase   = $this->config_nohotlink_erase_image;
+                               $message = $this->config_nohotlink_text_message;
+                               $this->DebugMessage('AntiOffsiteLinking() - "'.$parsed_url['host'].'" is NOT in $this->config_nohotlink_valid_domains ('.implode(';', $this->config_nohotlink_valid_domains).')', __FILE__, __LINE__);
+                       } else {
+                               $this->DebugMessage('AntiOffsiteLinking() - "'.$parsed_url['host'].'" is in $this->config_nohotlink_valid_domains ('.implode(';', $this->config_nohotlink_valid_domains).')', __FILE__, __LINE__);
+                       }
+               }
+
+               if ($allow) {
+                       $this->DebugMessage('AntiOffsiteLinking() says this is allowed', __FILE__, __LINE__);
+                       return true;
+               }
+
+               if (!phpthumb_functions::IsHexColor($this->config_error_bgcolor)) {
+                       return $this->ErrorImage('Invalid hex color string "'.$this->config_error_bgcolor.'" for $this->config_error_bgcolor');
+               }
+               if (!phpthumb_functions::IsHexColor($this->config_error_textcolor)) {
+                       return $this->ErrorImage('Invalid hex color string "'.$this->config_error_textcolor.'" for $this->config_error_textcolor');
+               }
+               if ($erase) {
+
+                       return $this->ErrorImage($message, $this->thumbnail_width, $this->thumbnail_height, $this->config_error_bgcolor, $this->config_error_textcolor, $this->config_error_fontsize);
+
+               } else {
+
+                       $nohotlink_text_array = explode("\n", wordwrap($message, floor($this->thumbnail_width / ImageFontWidth($this->config_error_fontsize)), "\n"));
+                       $nohotlink_text_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_error_textcolor);
+
+                       $topoffset = round(($this->thumbnail_height - (count($nohotlink_text_array) * ImageFontHeight($this->config_error_fontsize))) / 2);
+
+                       $rowcounter = 0;
+                       $this->DebugMessage('AntiOffsiteLinking() writing '.count($nohotlink_text_array).' lines of text "'.$message.'" (in #'.$this->config_error_textcolor.') on top of image', __FILE__, __LINE__);
+                       foreach ($nohotlink_text_array as $textline) {
+                               $leftoffset = max(0, round(($this->thumbnail_width - (strlen($textline) * ImageFontWidth($this->config_error_fontsize))) / 2));
+                               ImageString($this->gdimg_output, $this->config_error_fontsize, $leftoffset, $topoffset + ($rowcounter++ * ImageFontHeight($this->config_error_fontsize)), $textline, $nohotlink_text_color);
+                       }
+
+               }
+               return true;
+       }
+
+
+       function AlphaChannelFlatten() {
+               if (!$this->is_alpha) {
+                       // image doesn't have alpha transparency, no need to flatten
+                       $this->DebugMessage('skipping AlphaChannelFlatten() because !$this->is_alpha', __FILE__, __LINE__);
+                       return false;
+               }
+               if ($this->thumbnailFormat == 'png') {
+
+                       // image has alpha transparency, but output as PNG which can handle it
+                       $this->DebugMessage('skipping AlphaChannelFlatten() because ($this->thumbnailFormat == "'.$this->thumbnailFormat.'")', __FILE__, __LINE__);
+                       return false;
+
+               } elseif ($this->thumbnailFormat == 'gif') {
+
+                       // image has alpha transparency, but output as GIF which can handle only single-color transparency
+                       $CurrentImageColorTransparent = ImageColorTransparent($this->gdimg_output);
+                       if ($CurrentImageColorTransparent == -1) {
+                               // no transparent color defined
+
+                               if (phpthumb_functions::gd_version() < 2.0) {
+                                       $this->DebugMessage('AlphaChannelFlatten() failed because GD version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                       return false;
+                               }
+
+                               if ($img_alpha_mixdown_dither = @ImageCreateTrueColor(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output))) {
+
+                                       for ($i = 0; $i <= 255; $i++) {
+                                               $dither_color[$i] = ImageColorAllocate($img_alpha_mixdown_dither, $i, $i, $i);
+                                       }
+
+                                       // scan through current truecolor image copy alpha channel to temp image as grayscale
+                                       for ($x = 0; $x < $this->thumbnail_width; $x++) {
+                                               for ($y = 0; $y < $this->thumbnail_height; $y++) {
+                                                       $PixelColor = phpthumb_functions::GetPixelColor($this->gdimg_output, $x, $y);
+                                                       ImageSetPixel($img_alpha_mixdown_dither, $x, $y, $dither_color[($PixelColor['alpha'] * 2)]);
+                                               }
+                                       }
+
+                                       // dither alpha channel grayscale version down to 2 colors
+                                       ImageTrueColorToPalette($img_alpha_mixdown_dither, true, 2);
+
+                                       // reduce color palette to 256-1 colors (leave one palette position for transparent color)
+                                       ImageTrueColorToPalette($this->gdimg_output, true, 255);
+
+                                       // allocate a new color for transparent color index
+                                       $TransparentColor = ImageColorAllocate($this->gdimg_output, 1, 254, 253);
+                                       ImageColorTransparent($this->gdimg_output, $TransparentColor);
+
+                                       // scan through alpha channel image and note pixels with >50% transparency
+                                       $TransparentPixels = array();
+                                       for ($x = 0; $x < $this->thumbnail_width; $x++) {
+                                               for ($y = 0; $y < $this->thumbnail_height; $y++) {
+                                                       $AlphaChannelPixel = phpthumb_functions::GetPixelColor($img_alpha_mixdown_dither, $x, $y);
+                                                       if ($AlphaChannelPixel['red'] > 127) {
+                                                               ImageSetPixel($this->gdimg_output, $x, $y, $TransparentColor);
+                                                       }
+                                               }
+                                       }
+                                       ImageDestroy($img_alpha_mixdown_dither);
+
+                                       $this->DebugMessage('AlphaChannelFlatten() set image to 255+1 colors with transparency for GIF output', __FILE__, __LINE__);
+                                       return true;
+
+                               } else {
+                                       $this->DebugMessage('AlphaChannelFlatten() failed ImageCreate('.ImageSX($this->gdimg_output).', '.ImageSY($this->gdimg_output).')', __FILE__, __LINE__);
+                                       return false;
+                               }
+
+                       } else {
+                               // a single transparent color already defined, leave as-is
+                               $this->DebugMessage('skipping AlphaChannelFlatten() because ($this->thumbnailFormat == "'.$this->thumbnailFormat.'") and ImageColorTransparent returned "'.$CurrentImageColorTransparent.'"', __FILE__, __LINE__);
+                               return true;
+                       }
+
+               }
+               $this->DebugMessage('continuing AlphaChannelFlatten() for output format "'.$this->thumbnailFormat.'"', __FILE__, __LINE__);
+
+               // image has alpha transparency, and is being output in a format that doesn't support it -- flatten
+               if ($gdimg_flatten_temp = phpthumb_functions::ImageCreateFunction($this->thumbnail_width, $this->thumbnail_height)) {
+
+                       $this->config_background_hexcolor = ($this->bg ? $this->bg : $this->config_background_hexcolor);
+                       if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
+                               return $this->ErrorImage('Invalid hex color string "'.$this->config_background_hexcolor.'" for parameter "bg"');
+                       }
+                       $background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_background_hexcolor);
+                       ImageFilledRectangle($gdimg_flatten_temp, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $background_color);
+                       ImageCopy($gdimg_flatten_temp, $this->gdimg_output, 0, 0, 0, 0, $this->thumbnail_width, $this->thumbnail_height);
+
+                       ImageAlphaBlending($this->gdimg_output, true);
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                               ImageSaveAlpha($this->gdimg_output, false);
+                       }
+                       ImageColorTransparent($this->gdimg_output, -1);
+                       ImageCopy($this->gdimg_output, $gdimg_flatten_temp, 0, 0, 0, 0, $this->thumbnail_width, $this->thumbnail_height);
+
+                       ImageDestroy($gdimg_flatten_temp);
+                       return true;
+
+               } else {
+                       $this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+               }
+               return false;
+       }
+
+
+       function ApplyFilters() {
+               if ($this->fltr && is_array($this->fltr)) {
+                       if (!include_once(dirname(__FILE__).'/phpthumb.filters.php')) {
+                               $this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.filters.php" which is required for applying filters ('.implode(';', $this->fltr).')', __FILE__, __LINE__);
+                               return false;
+                       }
+                       foreach ($this->fltr as $filtercommand) {
+                               @list($command, $parameter) = explode('|', $filtercommand, 2);
+                               $this->DebugMessage('Attempting to process filter command "'.$command.'"', __FILE__, __LINE__);
+                               switch ($command) {
+                                       case 'brit':
+                                               phpthumb_filters::Brightness($this->gdimg_output, $parameter);
+                                               break;
+
+                                       case 'cont':
+                                               phpthumb_filters::Contrast($this->gdimg_output, $parameter);
+                                               break;
+
+                                       case 'ds':
+                                               phpthumb_filters::Desaturate($this->gdimg_output, $parameter, '');
+                                               break;
+
+                                       case 'sat':
+                                               phpthumb_filters::Saturation($this->gdimg_output, $parameter, '');
+                                               break;
+
+                                       case 'gray':
+                                               phpthumb_filters::Grayscale($this->gdimg_output);
+                                               break;
+
+                                       case 'clr':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping Colorize() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               @list($amount, $color) = explode('|', $parameter);
+                                               phpthumb_filters::Colorize($this->gdimg_output, $amount, $color);
+                                               break;
+
+                                       case 'sep':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping Sepia() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               @list($amount, $color) = explode('|', $parameter);
+                                               phpthumb_filters::Sepia($this->gdimg_output, $amount, $color);
+                                               break;
+
+                                       case 'gam':
+                                               phpthumb_filters::Gamma($this->gdimg_output, $parameter);
+                                               break;
+
+                                       case 'neg':
+                                               phpthumb_filters::Negative($this->gdimg_output);
+                                               break;
+
+                                       case 'th':
+                                               phpthumb_filters::Threshold($this->gdimg_output, $parameter);
+                                               break;
+
+                                       case 'rcd':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping ReduceColorDepth() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               @list($colors, $dither) = explode('|', $parameter);
+                                               $colors = ($colors                ?  (int) $colors : 256);
+                                               $dither  = ((strlen($dither) > 0) ? (bool) $dither : true);
+                                               phpthumb_filters::ReduceColorDepth($this->gdimg_output, $colors, $dither);
+                                               break;
+
+                                       case 'flip':
+                                               phpthumb_filters::Flip($this->gdimg_output, (strpos(strtolower($parameter), 'x') !== false), (strpos(strtolower($parameter), 'y') !== false));
+                                               break;
+
+                                       case 'edge':
+                                               phpthumb_filters::EdgeDetect($this->gdimg_output);
+                                               break;
+
+                                       case 'emb':
+                                               phpthumb_filters::Emboss($this->gdimg_output);
+                                               break;
+
+                                       case 'bvl':
+                                               @list($width, $color1, $color2) = explode('|', $parameter);
+                                               phpthumb_filters::Bevel($this->gdimg_output, $width, $color1, $color2);
+                                               break;
+
+                                       case 'lvl':
+                                               @list($band, $min, $max) = explode('|', $parameter);
+                                               $band = ($band              ? $band : '*');
+                                               $min  = ((strlen($min) > 0) ? $min  : '-1');
+                                               $max  = ((strlen($max) > 0) ? $max  : '-1');
+                                               phpthumb_filters::HistogramStretch($this->gdimg_output, $band, $min, $max);
+                                               break;
+
+                                       case 'wb':
+                                               phpthumb_filters::WhiteBalance($this->gdimg_output, $parameter);
+                                               break;
+
+                                       case 'hist':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping HistogramOverlay() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               @list($bands, $colors, $width, $height, $alignment, $opacity, $margin) = explode('|', $parameter);
+                                               $bands     = ($bands     ? $bands     :  '*');
+                                               $colors    = ($colors    ? $colors    :   '');
+                                               $width     = ($width     ? $width     : 0.25);
+                                               $height    = ($height    ? $height    : 0.25);
+                                               $alignment = ($alignment ? $alignment : 'BR');
+                                               $opacity   = ($opacity   ? $opacity   :   50);
+                                               $margin    = ($margin    ? $margin    :    5);
+                                               phpthumb_filters::HistogramOverlay($this->gdimg_output, $bands, $colors, $width, $height, $alignment, $opacity, $margin);
+                                               break;
+
+                                       case 'fram':
+                                               @list($frame_width, $edge_width, $color_frame, $color1, $color2) = explode('|', $parameter);
+                                               phpthumb_filters::Frame($this->gdimg_output, $frame_width, $edge_width, $color_frame, $color1, $color2);
+                                               break;
+
+                                       case 'drop':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping DropShadow() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               $this->is_alpha = true;
+                                               @list($distance, $width, $color, $angle, $fade) = explode('|', $parameter);
+                                               phpthumb_filters::DropShadow($this->gdimg_output, $distance, $width, $color, $angle, $fade);
+                                               break;
+
+                                       case 'mask':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping Mask() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               $mask_filename = $this->ResolveFilenameToAbsolute($parameter);
+                                               if (@is_readable($mask_filename) && ($fp_mask = @fopen($mask_filename, 'rb'))) {
+                                                       $MaskImageData = fread($fp_mask, filesize($mask_filename));
+                                                       fclose($fp_mask);
+                                                       if ($gdimg_mask = $this->ImageCreateFromStringReplacement($MaskImageData)) {
+                                                               $this->is_alpha = true;
+                                                               phpthumb_filters::ApplyMask($gdimg_mask, $this->gdimg_output);
+                                                               ImageDestroy($gdimg_mask);
+                                                       } else {
+                                                               $this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$mask_filename.'"', __FILE__, __LINE__);
+                                                       }
+                                               } else {
+                                                       $this->DebugMessage('Cannot open mask file "'.$mask_filename.'"', __FILE__, __LINE__);
+                                               }
+                                               break;
+
+                                       case 'elip':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping Elipse() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               $this->is_alpha = true;
+                                               phpthumb_filters::Elipse($this->gdimg_output);
+                                               break;
+
+                                       case 'ric':
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping RoundedImageCorners() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               @list($radius_x, $radius_y) = explode('|', $parameter);
+                                               if (($radius_x < 1) || ($radius_y < 1)) {
+                                                       $this->DebugMessage('Skipping RoundedImageCorners('.$radius_x.', '.$radius_y.') because x/y radius is less than 1', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               $this->is_alpha = true;
+                                               phpthumb_filters::RoundedImageCorners($this->gdimg_output, $radius_x, $radius_y);
+                                               break;
+
+                                       case 'bord':
+                                               @list($border_width, $radius_x, $radius_y, $hexcolor_border) = explode('|', $parameter);
+                                               $this->is_alpha = true;
+                                               phpthumb_filters::ImageBorder($this->gdimg_output, $border_width, $radius_x, $radius_y, $hexcolor_border);
+                                               break;
+
+                                       case 'over':
+                                               @list($filename, $underlay, $margin, $opacity) = explode('|', $parameter);
+                                               $underlay = (bool) ($underlay              ? $underlay : false);
+                                               $margin   =        ((strlen($margin)  > 0) ? $margin   : ($underlay ? 0.1 : 0.0));
+                                               $opacity  =        ((strlen($opacity) > 0) ? $opacity  : 100);
+                                               if (($margin > 0) && ($margin < 1)) {
+                                                       $margin = min(0.499, $margin);
+                                               } elseif (($margin > -1) && ($margin < 0)) {
+                                                       $margin = max(-0.499, $margin);
+                                               }
+
+                                               $filename = $this->ResolveFilenameToAbsolute($filename);
+                                               if (@is_readable($filename) && ($fp_watermark = @fopen($filename, 'rb'))) {
+                                                       $WatermarkImageData = fread($fp_watermark, filesize($filename));
+                                                       fclose($fp_watermark);
+                                                       if ($img_watermark = $this->ImageCreateFromStringReplacement($WatermarkImageData)) {
+                                                               if ($margin < 1) {
+                                                                       $resized_x = max(1, ImageSX($this->gdimg_output) - round(2 * (ImageSX($this->gdimg_output) * $margin)));
+                                                                       $resized_y = max(1, ImageSY($this->gdimg_output) - round(2 * (ImageSY($this->gdimg_output) * $margin)));
+                                                               } else {
+                                                                       $resized_x = max(1, ImageSX($this->gdimg_output) - round(2 * $margin));
+                                                                       $resized_y = max(1, ImageSY($this->gdimg_output) - round(2 * $margin));
+                                                               }
+
+                                                               if ($underlay) {
+
+                                                                       if ($img_watermark_resized = phpthumb_functions::ImageCreateFunction(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output))) {
+                                                                               ImageAlphaBlending($img_watermark_resized, false);
+                                                                               ImageSaveAlpha($img_watermark_resized, true);
+                                                                               phpthumb_functions::ImageResizeFunction($img_watermark_resized, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark_resized), ImageSY($img_watermark_resized), ImageSX($img_watermark), ImageSY($img_watermark));
+                                                                               if ($img_source_resized = phpthumb_functions::ImageCreateFunction($resized_x, $resized_y)) {
+                                                                                       ImageAlphaBlending($img_source_resized, false);
+                                                                                       ImageSaveAlpha($img_source_resized, true);
+                                                                                       phpthumb_functions::ImageResizeFunction($img_source_resized, $this->gdimg_output, 0, 0, 0, 0, ImageSX($img_source_resized), ImageSY($img_source_resized), ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+                                                                                       phpthumb_filters::WatermarkOverlay($img_watermark_resized, $img_source_resized, 'C', $opacity, $margin);
+                                                                                       ImageCopy($this->gdimg_output, $img_watermark_resized, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+                                                                               } else {
+                                                                                       $this->DebugMessage('phpthumb_functions::ImageCreateFunction('.$resized_x.', '.$resized_y.')', __FILE__, __LINE__);
+                                                                               }
+                                                                               ImageDestroy($img_watermark_resized);
+                                                                       } else {
+                                                                               $this->DebugMessage('phpthumb_functions::ImageCreateFunction('.ImageSX($this->gdimg_output).', '.ImageSY($this->gdimg_output).')', __FILE__, __LINE__);
+                                                                       }
+
+                                                               } else { // overlay
+
+                                                                       if ($img_watermark_resized = phpthumb_functions::ImageCreateFunction($resized_x, $resized_y)) {
+                                                                               ImageAlphaBlending($img_watermark_resized, false);
+                                                                               ImageSaveAlpha($img_watermark_resized, true);
+                                                                               phpthumb_functions::ImageResizeFunction($img_watermark_resized, $img_watermark, 0, 0, 0, 0, ImageSX($img_watermark_resized), ImageSY($img_watermark_resized), ImageSX($img_watermark), ImageSY($img_watermark));
+                                                                               phpthumb_filters::WatermarkOverlay($this->gdimg_output, $img_watermark_resized, 'C', $opacity, $margin);
+                                                                               ImageDestroy($img_watermark_resized);
+                                                                       } else {
+                                                                               $this->DebugMessage('phpthumb_functions::ImageCreateFunction('.$resized_x.', '.$resized_y.')', __FILE__, __LINE__);
+                                                                       }
+
+                                                               }
+                                                               ImageDestroy($img_watermark);
+
+                                                       } else {
+                                                               $this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$filename.'"', __FILE__, __LINE__);
+                                                       }
+                                               } else {
+                                                       $this->DebugMessage('Cannot open overlay file "'.$filename.'"', __FILE__, __LINE__);
+                                               }
+                                               break;
+
+                                       case 'wmi':
+                                               @list($filename, $alignment, $opacity, $margin) = explode('|', $parameter);
+                                               $alignment = ($alignment       ? $alignment : 'BR');
+                                               $opacity   = (strlen($opacity) ? $opacity   : 50);
+                                               $margin    = (strlen($margin)  ? $margin    : 5);
+
+                                               $filename = $this->ResolveFilenameToAbsolute($filename);
+                                               if (@is_readable($filename) && ($fp_watermark = @fopen($filename, 'rb'))) {
+                                                       $WatermarkImageData = fread($fp_watermark, filesize($filename));
+                                                       fclose($fp_watermark);
+                                                       if ($img_watermark = $this->ImageCreateFromStringReplacement($WatermarkImageData)) {
+                                                               // great
+                                                               phpthumb_filters::WatermarkOverlay($this->gdimg_output, $img_watermark, $alignment, $opacity, $margin);
+                                                               ImageDestroy($img_watermark);
+                                                       } else {
+                                                               $this->DebugMessage('ImageCreateFromStringReplacement() failed for "'.$filename.'"', __FILE__, __LINE__);
+                                                       }
+                                               } else {
+                                                       $this->DebugMessage('Cannot open watermark file "'.$filename.'"', __FILE__, __LINE__);
+                                               }
+                                               break;
+
+                                       case 'wmt':
+                                               @list($text, $size, $alignment, $hex_color, $ttffont, $opacity, $margin, $angle) = explode('|', $parameter);
+                                               $text      = ($text            ? $text      : '');
+                                               $size      = ($size            ? $size      : 3);
+                                               $alignment = ($alignment       ? $alignment : 'BR');
+                                               $hex_color = ($hex_color       ? $hex_color : '000000');
+                                               $ttffont   = ($ttffont         ? $ttffont   : '');
+                                               $opacity   = (strlen($opacity) ? $opacity   : 50);
+                                               $margin    = (strlen($margin)  ? $margin    : 5);
+                                               $angle     = (strlen($angle)   ? $angle     : 0);
+
+                                               if (basename($ttffont) == $ttffont) {
+                                                       $ttffont = realpath($this->config_ttf_directory.$this->osslash.$ttffont);
+                                               } else {
+                                                       $ttffont = $this->ResolveFilenameToAbsolute($ttffont);
+                                               }
+                                               phpthumb_filters::WatermarkText($this->gdimg_output, $text, $size, $alignment, $hex_color, $ttffont, $opacity, $margin, $angle);
+                                               break;
+
+                                       case 'blur':
+                                               @list($radius) = explode('|', $parameter);
+                                               $radius = ($radius ? $radius : 1);
+                                               if (phpthumb_functions::gd_version() < 2) {
+                                                       $this->DebugMessage('Skipping Blur() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               phpthumb_filters::Blur($this->gdimg_output, $radius);
+                                               break;
+
+                                       case 'gblr':
+                                               phpthumb_filters::BlurGaussian($this->gdimg_output);
+                                               break;
+
+                                       case 'sblr':
+                                               phpthumb_filters::BlurSelective($this->gdimg_output);
+                                               break;
+
+                                       case 'mean':
+                                               phpthumb_filters::MeanRemoval($this->gdimg_output);
+                                               break;
+
+                                       case 'smth':
+                                               phpthumb_filters::Smooth($this->gdimg_output, $parameter);
+                                               break;
+
+                                       case 'usm':
+                                               @list($amount, $radius, $threshold) = explode('|', $parameter);
+                                               $amount    = ($amount            ? $amount    : 80);
+                                               $radius    = ($radius            ? $radius    : 0.5);
+                                               $threshold = (strlen($threshold) ? $threshold : 3);
+                                               if (phpthumb_functions::gd_version() >= 2.0) {
+                                                       ob_start();
+                                                       if (!@include_once(dirname(__FILE__).'/phpthumb.unsharp.php')) {
+                                                               $include_error = ob_get_contents();
+                                                               if ($include_error) {
+                                                                       $this->DebugMessage('include_once("'.dirname(__FILE__).'/phpthumb.unsharp.php") generated message: "'.$include_error.'"', __FILE__, __LINE__);
+                                                               }
+                                                               ob_end_clean();
+                                                               $this->DebugMessage('Error including "'.dirname(__FILE__).'/phpthumb.unsharp.php" which is required for unsharp masking', __FILE__, __LINE__);
+                                                               return false;
+                                                       }
+                                                       ob_end_clean();
+                                                       phpUnsharpMask::applyUnsharpMask($this->gdimg_output, $amount, $radius, $threshold);
+                                               } else {
+                                                       $this->DebugMessage('Skipping unsharp mask because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               break;
+                               }
+                       }
+               }
+               return true;
+       }
+
+
+       function MaxFileSize() {
+               if (phpthumb_functions::gd_version() < 2) {
+                       $this->DebugMessage('Skipping MaxFileSize() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                       return false;
+               }
+               if ($this->maxb > 0) {
+                       switch ($this->thumbnailFormat) {
+                               case 'png':
+                               case 'gif':
+                                       $imgRenderFunction = 'image'.$this->thumbnailFormat;
+
+                                       ob_start();
+                                       $imgRenderFunction($this->gdimg_output);
+                                       $imgdata = ob_get_contents();
+                                       ob_end_clean();
+
+                                       if (strlen($imgdata) > $this->maxb) {
+                                               for ($i = 8; $i >= 1; $i--) {
+                                                       $tempIMG = ImageCreateTrueColor(ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+                                                       ImageCopy($tempIMG, $this->gdimg_output, 0, 0, 0, 0, ImageSX($this->gdimg_output), ImageSY($this->gdimg_output));
+                                                       ImageTrueColorToPalette($tempIMG, true, pow(2, $i));
+                                                       ob_start();
+                                                       $imgRenderFunction($tempIMG);
+                                                       $imgdata = ob_get_contents();
+                                                       ob_end_clean();
+
+                                                       if (strlen($imgdata) <= $this->maxb) {
+                                                               ImageTrueColorToPalette($this->gdimg_output, true, pow(2, $i));
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                                       if (strlen($imgdata) > $this->maxb) {
+                                               ImageTrueColorToPalette($this->gdimg_output, true, pow(2, $i));
+                                               return false;
+                                       }
+                                       break;
+
+                               case 'jpeg':
+                                       ob_start();
+                                       ImageJPEG($this->gdimg_output);
+                                       $imgdata = ob_get_contents();
+                                       ob_end_clean();
+
+                                       $OriginalJPEGquality = $this->thumbnailQuality;
+                                       if (strlen($imgdata) > $this->maxb) {
+                                               for ($i = 3; $i < 20; $i++) {
+                                                       $q = round(100 * (1 - log10($i / 2)));
+                                                       ob_start();
+                                                       ImageJPEG($this->gdimg_output, '', $q);
+                                                       $imgdata = ob_get_contents();
+                                                       ob_end_clean();
+
+                                                       $this->thumbnailQuality = $q;
+                                                       if (strlen($imgdata) <= $this->maxb) {
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                                       if (strlen($imgdata) > $this->maxb) {
+                                               return false;
+                                       }
+                                       break;
+
+                               default:
+                                       return false;
+                                       break;
+                       }
+               }
+               return true;
+       }
+
+
+       function CalculateThumbnailDimensions() {
+
+               $this->thumbnailCropX = ($this->sx ? (($this->sx >= 1) ? $this->sx : round($this->sx * $this->source_width))  : 0);
+               $this->thumbnailCropY = ($this->sy ? (($this->sy >= 1) ? $this->sy : round($this->sy * $this->source_height)) : 0);
+               $this->thumbnailCropW = ($this->sw ? (($this->sw >= 1) ? $this->sw : round($this->sw * $this->source_width))  : $this->source_width);
+               $this->thumbnailCropH = ($this->sh ? (($this->sh >= 1) ? $this->sh : round($this->sh * $this->source_height)) : $this->source_height);
+
+               // limit source area to original image area
+               $this->thumbnailCropW = max(1, min($this->thumbnailCropW, $this->source_width  - $this->thumbnailCropX));
+               $this->thumbnailCropH = max(1, min($this->thumbnailCropH, $this->source_height - $this->thumbnailCropY));
+
+               $this->DebugMessage('CalculateThumbnailDimensions() [x,y,w,h] initially set to ['.$this->thumbnailCropX.','.$this->thumbnailCropY.','.$this->thumbnailCropW.','.$this->thumbnailCropH.']', __FILE__, __LINE__);
+
+
+               if ($this->zc && $this->w && $this->h) {
+                       // Zoom Crop
+                       // retain proportional resizing we did above, but crop off larger dimension so smaller
+                       // dimension fully fits available space
+
+                       $scaling_X = $this->source_width  / $this->w;
+                       $scaling_Y = $this->source_height / $this->h;
+                       if ($scaling_X > $scaling_Y) {
+                               // some of the width will need to be cropped
+                               $allowable_width = $this->source_width / $scaling_X * $scaling_Y;
+                               $this->thumbnailCropW = round($allowable_width);
+                               $this->thumbnailCropX = round(($this->source_width - $allowable_width) / 2);
+
+                       } elseif ($scaling_Y > $scaling_X) {
+                               // some of the height will need to be cropped
+                               $allowable_height = $this->source_height / $scaling_Y * $scaling_X;
+                               $this->thumbnailCropH = round($allowable_height);
+                               $this->thumbnailCropY = round(($this->source_height - $allowable_height) / 2);
+
+                       } else {
+                               // image fits perfectly, no cropping needed
+                       }
+                       $this->thumbnail_width  = $this->w;
+                       $this->thumbnail_height = $this->h;
+                       $this->thumbnail_image_width  = $this->thumbnail_width;
+                       $this->thumbnail_image_height = $this->thumbnail_height;
+
+               } elseif ($this->iar && $this->w && $this->h) {
+
+                       // Ignore Aspect Ratio
+                       // stretch image to fit exactly 'w' x 'h'
+                       $this->thumbnail_width  = $this->w;
+                       $this->thumbnail_height = $this->h;
+                       $this->thumbnail_image_width  = $this->thumbnail_width;
+                       $this->thumbnail_image_height = $this->thumbnail_height;
+
+               } else {
+
+                       $original_aspect_ratio = $this->thumbnailCropW / $this->thumbnailCropH;
+                       if ($this->aoe) {
+                               $maxwidth  = max($this->w, $this->thumbnailCropW);
+                               $maxheight = max($this->h, $this->thumbnailCropH);
+                               $maxwidth  = max($maxwidth, $maxheight * $original_aspect_ratio);
+                               $maxheight = max($maxheight, $maxwidth / $original_aspect_ratio);
+                       } else {
+                               $maxwidth  = phpthumb_functions::nonempty_min($this->w, $this->thumbnailCropW, $this->config_output_maxwidth);
+                               $maxheight = phpthumb_functions::nonempty_min($this->h, $this->thumbnailCropH, $this->config_output_maxheight);
+                               $maxwidth  = min($maxwidth, $maxheight * $original_aspect_ratio);
+                               $maxheight = min($maxheight, $maxwidth / $original_aspect_ratio);
+                       }
+
+                       $this->thumbnail_image_width  = $maxwidth;
+                       $this->thumbnail_image_height = $maxheight;
+                       $this->thumbnail_width  = $maxwidth;
+                       $this->thumbnail_height = $maxheight;
+
+                       $this->FixedAspectRatio();
+               }
+
+               $this->thumbnail_width  = max(1, round($this->thumbnail_width));
+               $this->thumbnail_height = max(1, round($this->thumbnail_height));
+               return true;
+       }
+
+
+       function CreateGDoutput() {
+
+               $this->CalculateThumbnailDimensions();
+
+               // Create the GD image (either true-color or 256-color, depending on GD version)
+               $this->gdimg_output = phpthumb_functions::ImageCreateFunction($this->thumbnail_width, $this->thumbnail_height);
+
+               // Images that have transparency must have the background filled with the configured 'bg' color
+               // otherwise the transparent color will appear as black
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                       ImageSaveAlpha($this->gdimg_output, true);
+               }
+               if ($this->is_alpha && phpthumb_functions::gd_version() >= 2) {
+
+                       ImageAlphaBlending($this->gdimg_output, false);
+                       $output_full_alpha = phpthumb_functions::ImageColorAllocateAlphaSafe($this->gdimg_output, 255, 255, 255, 127);
+                       ImageFilledRectangle($this->gdimg_output, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $output_full_alpha);
+
+               } else {
+
+                       $current_transparent_color = ImageColorTransparent($this->gdimg_source);
+                       if ($this->bg || (@$current_transparent_color >= 0)) {
+
+                               $this->config_background_hexcolor = ($this->bg ? $this->bg : $this->config_background_hexcolor);
+                               if (!phpthumb_functions::IsHexColor($this->config_background_hexcolor)) {
+                                       return $this->ErrorImage('Invalid hex color string "'.$this->config_background_hexcolor.'" for parameter "bg"');
+                               }
+                               $background_color = phpthumb_functions::ImageHexColorAllocate($this->gdimg_output, $this->config_background_hexcolor);
+                               ImageFilledRectangle($this->gdimg_output, 0, 0, $this->thumbnail_width, $this->thumbnail_height, $background_color);
+
+                       }
+
+               }
+               return true;
+       }
+
+       function SetOrientationDependantWidthHeight() {
+               if ($this->source_height > $this->source_width) {
+                       // portrait
+                       $this->w = ($this->wp ? $this->wp : $this->w);
+                       $this->h = ($this->hp ? $this->hp : $this->h);
+               } elseif ($this->source_height < $this->source_width) {
+                       // landscape
+                       $this->w = ($this->wl ? $this->wl : $this->w);
+                       $this->h = ($this->hl ? $this->hl : $this->h);
+               } else {
+                       // square
+                       $this->w = ($this->ws ? $this->ws : $this->w);
+                       $this->h = ($this->hs ? $this->hs : $this->h);
+               }
+               //$this->w = ($this->w ? $this->w : ($this->wl ? $this->wl : ($this->wp ? $this->wp : ($this->ws ? $this->ws : $this->source_width))));
+               //$this->h = ($this->h ? $this->h : ($this->hl ? $this->hl : ($this->hp ? $this->hp : ($this->hs ? $this->hs : $this->source_height))));
+               return true;
+       }
+
+       function ExtractEXIFgetImageSize() {
+
+               if (is_resource($this->gdimg_source)) {
+
+                       $this->source_width  = ImageSX($this->gdimg_source);
+                       $this->source_height = ImageSY($this->gdimg_source);
+
+                       $this->SetOrientationDependantWidthHeight();
+
+               } elseif ($this->rawImageData && !$this->sourceFilename) {
+
+                       $this->DebugMessage('bypassing EXIF and GetImageSize sections because $this->rawImageData is set and $this->sourceFilename is not set', __FILE__, __LINE__);
+
+               }
+               if ($this->config_prefer_imagemagick) {
+                       if ($this->ImageMagickThumbnailToGD()) {
+                               return true;
+                       }
+                       $this->DebugMessage('ImageMagickThumbnailToGD() failed', __FILE__, __LINE__);
+               }
+               if ($this->getimagesizeinfo = @GetImageSize($this->sourceFilename)) {
+
+                       $this->source_width  = $this->getimagesizeinfo[0];
+                       $this->source_height = $this->getimagesizeinfo[1];
+
+                       $this->SetOrientationDependantWidthHeight();
+
+                       if (function_exists('exif_thumbnail') && ($this->getimagesizeinfo[2] == 2)) {
+                               // Extract EXIF info from JPEGs
+
+                               $this->exif_thumbnail_width  = '';
+                               $this->exif_thumbnail_height = '';
+                               $this->exif_thumbnail_type   = '';
+
+                               // The parameters width, height and imagetype are available since PHP v4.3.0
+                               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=')) {
+
+                                       $this->exif_thumbnail_data = @exif_thumbnail($this->sourceFilename, $this->exif_thumbnail_width, $this->exif_thumbnail_height, $this->exif_thumbnail_type);
+
+                               } else {
+
+                                       // older versions of exif_thumbnail output an error message but NOT return false on failure
+                                       ob_start();
+                                       $this->exif_thumbnail_data = exif_thumbnail($this->sourceFilename);
+                                       $exit_thumbnail_error = ob_get_contents();
+                                       ob_end_clean();
+                                       if (!$exit_thumbnail_error && $this->exif_thumbnail_data) {
+
+                                               if ($gdimg_exif_temp = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false)) {
+                                                       $this->exif_thumbnail_width  = ImageSX($gdimg_exif_temp);
+                                                       $this->exif_thumbnail_height = ImageSY($gdimg_exif_temp);
+                                                       $this->exif_thumbnail_type   = 2; // (2 == JPEG) before PHP v4.3.0 only JPEG format EXIF thumbnails are returned
+                                                       unset($gdimg_exif_temp);
+                                               } else {
+                                                       return $this->ErrorImage('Failed - $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data) in '.__FILE__.' on line '.__LINE__);
+                                               }
+
+                                       }
+
+                               }
+
+                       } elseif (!function_exists('exif_thumbnail')) {
+
+                               $this->DebugMessage('exif_thumbnail() does not exist, cannot extract EXIF thumbnail', __FILE__, __LINE__);
+                               return false;
+
+                       }
+
+                       $this->DebugMessage('EXIF thumbnail extraction: (size='.strlen($this->exif_thumbnail_data).'; type='.$this->exif_thumbnail_type.'; '.$this->exif_thumbnail_width.'x'.$this->exif_thumbnail_height.')', __FILE__, __LINE__);
+
+                       // see if EXIF thumbnail can be used directly with no processing
+                       if ($this->config_use_exif_thumbnail_for_speed && $this->exif_thumbnail_data) {
+                               while (true) {
+                                       if (!$this->xto) {
+                                               $source_ar = $this->source_width / $this->source_height;
+                                               $exif_ar = $this->exif_thumbnail_width / $this->exif_thumbnail_height;
+                                               if (number_format($source_ar, 2) != number_format($exif_ar, 2)) {
+                                                       $this->DebugMessage('not using EXIF thumbnail because $source_ar != $exif_ar ('.$source_ar.' != '.$exif_ar.')', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               if ($this->w && ($this->w != $this->exif_thumbnail_width)) {
+                                                       $this->DebugMessage('not using EXIF thumbnail because $this->w != $this->exif_thumbnail_width ('.$this->w.' != '.$this->exif_thumbnail_width.')', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               if ($this->h && ($this->h != $this->exif_thumbnail_height)) {
+                                                       $this->DebugMessage('not using EXIF thumbnail because $this->h != $this->exif_thumbnail_height ('.$this->h.' != '.$this->exif_thumbnail_height.')', __FILE__, __LINE__);
+                                                       break;
+                                               }
+                                               $CannotBeSetParameters = array('sx', 'sy', 'sh', 'sw', 'far', 'bg', 'bc', 'fltr', 'phpThumbDebug');
+                                               foreach ($CannotBeSetParameters as $parameter) {
+                                                       if ($this->$parameter) {
+                                                               break 2;
+                                                       }
+                                               }
+                                       }
+
+                                       $this->DebugMessage('setting $this->gdimg_source = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data)', __FILE__, __LINE__);
+                                       $this->gdimg_source = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data);
+                                       $this->source_width  = ImageSX($this->gdimg_source);
+                                       $this->source_height = ImageSY($this->gdimg_source);
+                                       return true;
+                               }
+                       }
+
+               } else {
+
+                       $this->DebugMessage('GetImageSize("'.$this->sourceFilename.'") failed', __FILE__, __LINE__);
+
+               }
+
+               if (($this->config_max_source_pixels > 0) && (($this->source_width * $this->source_height) > $this->config_max_source_pixels)) {
+
+                       // Source image is larger than would fit in available PHP memory.
+                       // If ImageMagick is installed, use it to generate the thumbnail.
+                       // Else, if an EXIF thumbnail is available, use that as the source image.
+                       // Otherwise, no choice but to fail with an error message
+                       $this->DebugMessage('image is '.$this->source_width.'x'.$this->source_height.' and therefore contains more pixels ('.($this->source_width * $this->source_height).') than $this->config_max_source_pixels setting ('.$this->config_max_source_pixels.')', __FILE__, __LINE__);
+                       if (!$this->config_prefer_imagemagick && $this->ImageMagickThumbnailToGD()) {
+                               // excellent, we have a thumbnailed source image
+                               return true;
+                       }
+
+               }
+               return true;
+       }
+
+
+       function SetCacheFilename() {
+               if (!is_null($this->cache_filename)) {
+                       $this->DebugMessage('$this->cache_filename already set, skipping SetCacheFilename()', __FILE__, __LINE__);
+                       return true;
+               }
+               $this->setOutputFormat();
+               $this->setCacheDirectory();
+               if (!$this->config_cache_directory) {
+                       $this->DebugMessage('SetCacheFilename() failed because $this->config_cache_directory is empty', __FILE__, __LINE__);
+                       return false;
+               }
+
+               if (!$this->sourceFilename && !$this->rawImageData && $this->src) {
+                       $this->sourceFilename = $this->ResolveFilenameToAbsolute($this->src);
+               }
+
+               if ($this->config_cache_default_only_suffix && $this->sourceFilename) {
+                       // simplified cache filenames:
+                       // only use default parameters in phpThumb.config.php
+                       // substitute source filename into * in $this->config_cache_default_only_suffix
+                       // (eg: '*_thumb' becomes 'picture_thumb.jpg')
+                       if (strpos($this->config_cache_default_only_suffix, '*') === false) {
+                               $this->DebugMessage('aborting simplified caching filename because no * in "'.$this->config_cache_default_only_suffix.'"', __FILE__, __LINE__);
+                       } else {
+                               preg_match('/(.+)(\.[a-z0-9]+)?$/iU', basename($this->sourceFilename), $matches);
+                               $this->cache_filename = $this->config_cache_directory.$this->osslash.str_replace('*', $matches[1], $this->config_cache_default_only_suffix).'.'.strtolower($this->thumbnailFormat);
+                               return true;
+                       }
+               }
+
+               $this->cache_filename = $this->config_cache_directory.$this->osslash.'phpThumb_cache_'.@$_SERVER['SERVER_NAME'];
+               if ($this->new) {
+                       $this->cache_filename .= '_new'.strtolower(md5($this->new));
+               } elseif ($this->md5s) {
+                       // source image MD5 hash provided
+                       $this->cache_filename .= '_raw'.$this->md5s;
+               } elseif (!$this->src && $this->rawImageData) {
+                       $this->cache_filename .= '_raw'.strtolower(md5($this->rawImageData));
+               } else {
+                       $this->cache_filename .= '_src'.strtolower(md5($this->sourceFilename));
+               }
+               if (@$_SERVER['HTTP_REFERER'] && $this->config_cache_differentiate_offsite) {
+                       $parsed_url1 = @parse_url(@$_SERVER['HTTP_REFERER']);
+                       $parsed_url2 = @parse_url('http://'.@$_SERVER['HTTP_HOST']);
+                       if (@$parsed_url1['host'] && @$parsed_url2['host'] && ($parsed_url1['host'] != $parsed_url2['host'])) {
+                               // include refering domain only if it doesn't match the domain of the current server
+                               //$this->cache_filename .= '_ref'.strtolower(md5(@$parsed_url2['host']));
+                               $this->cache_filename .= '_offsite';
+                       }
+               }
+
+               $ParametersString = '';
+               if ($this->fltr && is_array($this->fltr)) {
+                       $ParametersString .= '_fltr'.implode('_fltr', $this->fltr);
+               }
+               $FilenameParameters1 = array('ar', 'bg', 'bc', 'far');
+               foreach ($FilenameParameters1 as $key) {
+                       if ($this->$key) {
+                               $ParametersString .= '_'.$key.$this->$key;
+                       }
+               }
+               $FilenameParameters2 = array('h', 'w', 'wl', 'wp', 'ws', 'h', 'hp', 'hs', 'sx', 'sy', 'sw', 'sh', 'xto', 'ra', 'iar', 'aoe', 'maxb');
+               foreach ($FilenameParameters2 as $key) {
+                       if ($this->$key) {
+                               $ParametersString .= '_'.$key.intval($this->$key);
+                       }
+               }
+               if ($this->thumbnailFormat == 'jpeg') {
+                       // only JPEG output has variable quality option
+                       $ParametersString .= '_q'.intval($this->thumbnailQuality);
+               }
+               $this->DebugMessage('SetCacheFilename() _par set from md5('.$ParametersString.')', __FILE__, __LINE__);
+               $this->cache_filename .= '_par'.strtolower(md5($ParametersString));
+
+               if ($this->md5s) {
+                       // source image MD5 hash provided
+                       // do not source image modification date --
+                       // cached image will be used even if file was modified or removed
+               } elseif (!$this->config_cache_source_filemtime_ignore_remote && eregi('^(f|ht)tps?://', $this->src)) {
+                       $this->cache_filename .= '_dat'.intval(phpthumb_functions::filedate_remote($this->src));
+               } elseif (!$this->config_cache_source_filemtime_ignore_local && $this->src && !$this->rawImageData) {
+                       $this->cache_filename .= '_dat'.intval(@filemtime($this->sourceFilename));
+               }
+
+               $this->cache_filename .= '.'.strtolower($this->thumbnailFormat);
+
+               return true;
+       }
+
+
+       function SourceImageToGD() {
+               if (is_resource($this->gdimg_source)) {
+                       $this->DebugMessage('skipping SourceImageToGD() because $this->gdimg_source is already a resource', __FILE__, __LINE__);
+                       return true;
+               }
+               $this->DebugMessage('starting SourceImageToGD()', __FILE__, __LINE__);
+               while (true) {
+                       if (!$this->config_use_exif_thumbnail_for_speed) {
+                               $this->DebugMessage('Not using EXIF thumbnail data because $this->config_use_exif_thumbnail_for_speed is FALSE', __FILE__, __LINE__);
+                               break;
+                       }
+                       if (!$this->exif_thumbnail_data) {
+                               $this->DebugMessage('Not using EXIF thumbnail data because $this->exif_thumbnail_data is empty', __FILE__, __LINE__);
+                               break;
+                       }
+                       if (($this->thumbnailCropX != 0) || ($this->thumbnailCropY != 0)) {
+                               $this->DebugMessage('Not using EXIF thumbnail data because source cropping is enabled ('.$this->thumbnailCropX.','.$this->thumbnailCropY.')', __FILE__, __LINE__);
+                               break;
+                       }
+                       if (($this->w > $this->exif_thumbnail_width) || ($this->h > $this->exif_thumbnail_height)) {
+                               $this->DebugMessage('Not using EXIF thumbnail data because EXIF thumbnail is too small ('.$this->exif_thumbnail_width.'x'.$this->exif_thumbnail_height.' vs '.$this->w.'x'.$this->h.')', __FILE__, __LINE__);
+                               break;
+                       }
+                       $source_ar = $this->source_width / $this->source_height;
+                       $exif_ar = $this->exif_thumbnail_width / $this->exif_thumbnail_height;
+                       if (number_format($source_ar, 2) != number_format($exif_ar, 2)) {
+                               $this->DebugMessage('not using EXIF thumbnail because $source_ar != $exif_ar ('.$source_ar.' != '.$exif_ar.')', __FILE__, __LINE__);
+                       }
+
+                       // EXIF thumbnail exists, and is equal to or larger than destination thumbnail, and will be use as source image
+                       $this->DebugMessage('Trying to use EXIF thumbnail as source image', __FILE__, __LINE__);
+
+                       if ($gdimg_exif_temp = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false)) {
+
+                               $this->DebugMessage('Successfully using EXIF thumbnail as source image', __FILE__, __LINE__);
+
+                               $this->gdimg_source   = $gdimg_exif_temp;
+                               $this->source_width   = $this->exif_thumbnail_width;
+                               $this->source_height  = $this->exif_thumbnail_height;
+                               $this->thumbnailCropW = $this->source_width;
+                               $this->thumbnailCropH = $this->source_height;
+                               return true;
+
+                       } else {
+                               $this->DebugMessage('$this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false) failed', __FILE__, __LINE__);
+                       }
+
+                       break;
+               }
+               if (!$this->gdimg_source) {
+                       // try to create GD image source directly via GD, if possible,
+                       // rather than buffering to memory and creating with ImageCreateFromString
+                       $ImageCreateWasAttempted = false;
+
+                       $ImageCreateFromFunction = array(
+                               1  => 'ImageCreateFromGIF',
+                               2  => 'ImageCreateFromJPEG',
+                               3  => 'ImageCreateFromPNG',
+                               15 => 'ImageCreateFromWBMP',
+                       );
+                       switch (@$this->getimagesizeinfo[2]) {
+                               case 1:  // GIF
+                               case 2:  // JPEG
+                               case 3:  // PNG
+                               case 15: // WBMP
+                                       if ($this->md5s && ($this->md5s != phpthumb_functions::md5_file_safe($this->sourceFilename))) {
+                                               return $this->ErrorImage('$this->md5s != md5($this->rawImageData)'."\n".'"'.$this->md5s.'" != '."\n".'"'.phpthumb_functions::md5_file_safe($this->sourceFilename).'"');
+                                       }
+                                       $ImageCreateFromFunctionName = $ImageCreateFromFunction[$this->getimagesizeinfo[2]];
+                                       if (function_exists($ImageCreateFromFunctionName)) {
+                                               $this->DebugMessage('Calling '.$ImageCreateFromFunctionName.'('.$this->sourceFilename.')', __FILE__, __LINE__);
+                                               $ImageCreateWasAttempted = true;
+                                               $this->gdimg_source = @$ImageCreateFromFunctionName($this->sourceFilename);
+                                               switch ($this->getimagesizeinfo[2]) {
+                                                       case 1:
+                                                       case 3:
+                                                               // GIF or PNG input file may have transparency
+                                                               $this->is_alpha = true;
+                                                               break;
+                                               }
+                                       } else {
+                                               $this->DebugMessage('NOT calling '.$ImageCreateFromFunctionName.'('.$this->sourceFilename.') because !function_exists('.$ImageCreateFromFunctionName.')', __FILE__, __LINE__);
+                                       }
+                                       break;
+
+                               case 4:  // SWF
+                               case 5:  // PSD
+                               case 6:  // BMP
+                               case 7:  // TIFF (LE)
+                               case 8:  // TIFF (BE)
+                               case 9:  // JPC
+                               case 10: // JP2
+                               case 11: // JPX
+                               case 12: // JB2
+                               case 13: // SWC
+                               case 14: // IFF
+                               case 16: // XBM
+                                       $this->DebugMessage('No built-in image creation function for image type "'.@$this->getimagesizeinfo[2].'" ($this->getimagesizeinfo[2])', __FILE__, __LINE__);
+                                       break;
+
+                               case '':
+                                       // no source file, source image was probably set by setSourceData()
+                                       break;
+
+                               default:
+                                       $this->DebugMessage('Unknown value for $this->getimagesizeinfo[2]: "'.@$this->getimagesizeinfo[2].'"', __FILE__, __LINE__);
+                                       break;
+                       }
+                       if (!$this->gdimg_source) {
+                               // cannot create from filename, attempt to create source image with ImageCreateFromString, if possible
+                               if ($ImageCreateWasAttempted) {
+                                       $this->DebugMessage(@$ImageCreateFromFunctionName.'() was attempted but FAILED', __FILE__, __LINE__);
+                               }
+                               if (!$this->rawImageData) {
+                                       $this->DebugMessage('Populating $this->rawImageData and attempting ImageCreateFromStringReplacement()', __FILE__, __LINE__);
+                                       if ($fp = @fopen($this->sourceFilename, 'rb')) {
+
+                                               $this->rawImageData = '';
+                                               $filesize = filesize($this->sourceFilename);
+                                               $blocksize = 16384;
+                                               $blockreads = ceil($filesize / $blocksize);
+                                               for ($i = 0; $i < $blockreads; $i++) {
+                                                       $this->rawImageData .= fread($fp, $blocksize);
+                                               }
+                                               fclose($fp);
+
+                                       } else {
+                                               return $this->ErrorImage('cannot fopen("'.$this->sourceFilename.'") on line '.__LINE__.' of '.__FILE__);
+                                       }
+                               }
+                               if ($this->md5s && ($this->md5s != md5($this->rawImageData))) {
+                                       return $this->ErrorImage('$this->md5s != md5($this->rawImageData)'."\n".'"'.$this->md5s.'" != '."\n".'"'.md5($this->rawImageData).'"');
+                               }
+                               $this->gdimg_source = $this->ImageCreateFromStringReplacement($this->rawImageData, true);
+                       }
+
+                       if (!$this->gdimg_source) {
+                               $this->DebugMessage('$this->gdimg_source is still empty', __FILE__, __LINE__);
+
+                               if ($this->ImageMagickThumbnailToGD()) {
+
+                                       // excellent, we have a thumbnailed source image
+                                       $this->DebugMessage('ImageMagickThumbnailToGD() succeeded', __FILE__, __LINE__);
+
+                               } else {
+
+                                       $this->DebugMessage('ImageMagickThumbnailToGD() failed', __FILE__, __LINE__);
+
+                                       $imageHeader = '';
+                                       $gd_info = phpthumb_functions::gd_info();
+                                       $GDreadSupport = false;
+                                       switch (substr($this->rawImageData, 0, 3)) {
+                                               case 'GIF':
+                                                       $imageHeader = 'Content-Type: image/gif';
+                                                       $GDreadSupport = (bool) @$gd_info['GIF Read Support'];
+                                                       break;
+                                               case "\xFF\xD8\xFF":
+                                                       $imageHeader = 'Content-Type: image/jpeg';
+                                                       $GDreadSupport = (bool) @$gd_info['JPG Support'];
+                                                       break;
+                                               case "\x89".'PN':
+                                                       $imageHeader = 'Content-Type: image/png';
+                                                       $GDreadSupport = (bool) @$gd_info['PNG Support'];
+                                                       break;
+                                       }
+                                       if ($imageHeader) {
+                                               // cannot create image for whatever reason (maybe ImageCreateFromJPEG et al are not available?)
+                                               // and ImageMagick is not available either, no choice but to output original (not resized/modified) data and exit
+                                               if ($this->config_error_die_on_source_failure && !$this->phpThumbDebug) {
+                                                       $this->ErrorImage('All attempts to create GD image source failed ('.($GDreadSupport ? 'source image probably corrupt' : 'GD does not have read support for "'.$imageHeader.'"').'), cannot generate thumbnail');
+                                               } else {
+                                                       //$this->DebugMessage('All attempts to create GD image source failed ('.($GDreadSupport ? 'source image probably corrupt' : 'GD does not have read support for "'.$imageHeader.'"').'), outputing raw image', __FILE__, __LINE__);
+                                                       //if (!$this->phpThumbDebug) {
+                                                       //      header($imageHeader);
+                                                       //      echo $this->rawImageData;
+                                                       //      exit;
+                                                       //}
+                                                       return false;
+                                               }
+                                       }
+
+                                       switch (substr($this->rawImageData, 0, 2)) {
+                                               case 'BM':
+                                                       ob_start();
+                                                       if (!@include_once(dirname(__FILE__).'/phpthumb.bmp.php')) {
+                                                               ob_end_clean();
+                                                               if ($this->phpThumbDebug) {
+                                                                       $this->DebugMessage('include_once('.dirname(__FILE__).'/phpthumb.bmp.php) failed', __FILE__, __LINE__);
+                                                                       return false;
+                                                               }
+                                                               return $this->ErrorImage('include_once('.dirname(__FILE__).'/phpthumb.bmp.php) failed');
+                                                       }
+                                                       ob_end_clean();
+                                                       $phpthumb_bmp = new phpthumb_bmp();
+                                                       if ($this->gdimg_source = $phpthumb_bmp->phpthumb_bmp2gd($this->rawImageData, (phpthumb_functions::gd_version() >= 2.0))) {
+                                                               $this->DebugMessage('$phpthumb_bmp->phpthumb_bmp2gd() succeeded', __FILE__, __LINE__);
+                                                               break;
+                                                       } elseif ($this->phpThumbDebug) {
+                                                               $this->DebugMessage('phpthumb_bmp2db failed', __FILE__, __LINE__);
+                                                               return false;
+                                                       }
+                                                       return $this->ErrorImage('ImageMagick is unavailable and phpThumb() does not support BMP source images without it');
+                                                       break;
+                                       }
+
+
+                                       switch (substr($this->rawImageData, 0, 4)) {
+                                               case 'II'."\x2A\x00":
+                                               case 'MM'."\x00\x2A":
+                                                       if ($this->phpThumbDebug) {
+                                                               $this->DebugMessage('ImageMagick is unavailable and phpThumb() does not support TIFF source images without it', __FILE__, __LINE__);
+                                                               return false;
+                                                       }
+                                                       return $this->ErrorImage('ImageMagick is unavailable and phpThumb() does not support TIFF source images without it');
+                                                       break;
+
+                                               case "\xD7\xCD\xC6\x9A":
+                                                       if ($this->phpThumbDebug) {
+                                                               $this->DebugMessage('ImageMagick is unavailable and phpThumb() does not support WMF source images without it', __FILE__, __LINE__);
+                                                               return false;
+                                                       }
+                                                       return $this->ErrorImage('ImageMagick is unavailable and phpThumb() does not support WMF source images without it');
+                                                       break;
+                                       }
+
+                                       if (!$this->gdimg_source) {
+                                               if ($this->phpThumbDebug) {
+                                                       $this->DebugMessage('Unknown image type identified by "'.substr($this->rawImageData, 0, 4).'" ('.phpthumb_functions::HexCharDisplay(substr($this->rawImageData, 0, 4)).') in SourceImageToGD()', __FILE__, __LINE__);
+                                                       return false;
+                                               }
+                                               return $this->ErrorImage('Unknown image type identified by "'.substr($this->rawImageData, 0, 4).'" ('.phpthumb_functions::HexCharDisplay(substr($this->rawImageData, 0, 4)).') in SourceImageToGD()');
+                                       }
+
+                               }
+                       }
+
+               }
+               if (!$this->gdimg_source) {
+                       if ($gdimg_exif_temp = $this->ImageCreateFromStringReplacement($this->exif_thumbnail_data, false)) {
+                               $this->DebugMessage('All other attempts failed, but successfully using EXIF thumbnail as source image', __FILE__, __LINE__);
+                               $this->gdimg_source   = $gdimg_exif_temp;
+                               // override allow-enlarging setting if EXIF thumbnail is the only source available
+                               // otherwise thumbnails larger than the EXIF thumbnail will be created at EXIF size
+                               $this->aoe = true;
+                               return true;
+                       }
+                       return false;
+               }
+               $this->source_width  = ImageSX($this->gdimg_source);
+               $this->source_height = ImageSY($this->gdimg_source);
+               return true;
+       }
+
+
+       function phpThumbDebugVarDump($var) {
+               if (is_null($var)) {
+                       return 'NULL';
+               } elseif (is_bool($var)) {
+                       return ($var ? 'TRUE' : 'FALSE');
+               } elseif (is_string($var)) {
+                       return 'string('.strlen($var).')'.str_repeat(' ', max(0, 3 - strlen(strlen($var)))).' "'.$var.'"';
+               } elseif (is_int($var)) {
+                       return 'integer     '.$var;
+               } elseif (is_float($var)) {
+                       return 'float       '.$var;
+               } elseif (is_array($var)) {
+                       ob_start();
+                       var_dump($var);
+                       $vardumpoutput = ob_get_contents();
+                       ob_end_clean();
+                       return strtr($vardumpoutput, "\n\r\t", '   ');
+               }
+               return gettype($var);
+       }
+
+       function phpThumbDebug() {
+               if ($this->config_disable_debug) {
+                       return $this->ErrorImage('phpThumbDebug disabled');
+               }
+
+               $FunctionsExistance = array('exif_thumbnail', 'gd_info', 'image_type_to_mime_type', 'ImageCopyResampled', 'ImageCopyResized', 'ImageCreate', 'ImageCreateFromString', 'ImageCreateTrueColor', 'ImageIsTrueColor', 'ImageRotate', 'ImageTypes', 'version_compare', 'ImageCreateFromGIF', 'ImageCreateFromJPEG', 'ImageCreateFromPNG', 'ImageCreateFromWBMP', 'ImageCreateFromXBM', 'ImageCreateFromXPM', 'ImageCreateFromString', 'ImageCreateFromGD', 'ImageCreateFromGD2', 'ImageCreateFromGD2Part', 'ImageJPEG', 'ImageGIF', 'ImagePNG', 'ImageWBMP');
+               $ParameterNames     = array('src', 'new', 'w', 'h', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'far', 'bg', 'bc', 'file', 'goto', 'err', 'xto', 'ra', 'ar', 'aoe', 'iar', 'maxb');
+               $OtherVariableNames = array('phpThumbDebug', 'thumbnailQuality', 'thumbnailFormat', 'gdimg_output', 'gdimg_source', 'sourceFilename', 'source_width', 'source_height', 'thumbnailCropX', 'thumbnailCropY', 'thumbnailCropW', 'thumbnailCropH', 'exif_thumbnail_width', 'exif_thumbnail_height', 'exif_thumbnail_type', 'thumbnail_width', 'thumbnail_height', 'thumbnail_image_width', 'thumbnail_image_height');
+
+               $DebugOutput = array();
+               $DebugOutput[] = 'phpThumb() version          = '.$this->phpthumb_version;
+               $DebugOutput[] = 'phpversion()                = '.@phpversion();
+               $DebugOutput[] = 'PHP_OS                      = '.PHP_OS;
+               $DebugOutput[] = '__FILE__                    = '.__FILE__;
+               $DebugOutput[] = 'realpath(.)                 = '.@realpath('.');
+               $DebugOutput[] = '$_SERVER[PHP_SELF]          = '.@$_SERVER['PHP_SELF'];
+               $DebugOutput[] = '$_SERVER[HTTP_REFERER]      = '.@$_SERVER['HTTP_REFERER'];
+               $DebugOutput[] = '$_SERVER[QUERY_STRING]      = '.@$_SERVER['QUERY_STRING'];
+               $DebugOutput[] = '$_SERVER[PATH_INFO]         = '.@$_SERVER['PATH_INFO'];
+               $DebugOutput[] = '$_SERVER[DOCUMENT_ROOT]     = '.@$_SERVER['DOCUMENT_ROOT'];
+               $DebugOutput[] = 'getenv(DOCUMENT_ROOT)       = '.@getenv('DOCUMENT_ROOT');
+               $DebugOutput[] = '';
+
+               $DebugOutput[] = 'get_magic_quotes_gpc()      = '.$this->phpThumbDebugVarDump(@get_magic_quotes_gpc());
+               $DebugOutput[] = 'get_magic_quotes_runtime()  = '.$this->phpThumbDebugVarDump(@get_magic_quotes_runtime());
+               $DebugOutput[] = 'error_reporting()           = '.$this->phpThumbDebugVarDump(error_reporting());
+               $DebugOutput[] = 'ini_get(error_reporting)    = '.$this->phpThumbDebugVarDump(@ini_get('error_reporting'));
+               $DebugOutput[] = 'ini_get(display_errors)     = '.$this->phpThumbDebugVarDump(@ini_get('display_errors'));
+               $DebugOutput[] = 'ini_get(allow_url_fopen)    = '.$this->phpThumbDebugVarDump(@ini_get('allow_url_fopen'));
+               $DebugOutput[] = 'ini_get(disable_functions)  = '.$this->phpThumbDebugVarDump(@ini_get('disable_functions'));
+               $DebugOutput[] = 'ini_get(safe_mode)          = '.$this->phpThumbDebugVarDump(@ini_get('safe_mode'));
+               $DebugOutput[] = 'ini_get(open_basedir)       = '.$this->phpThumbDebugVarDump(@ini_get('open_basedir'));
+               $DebugOutput[] = 'ini_get(memory_limit)       = '.$this->phpThumbDebugVarDump(@ini_get('memory_limit'));
+               $DebugOutput[] = 'ini_get(max_execution_time) = '.$this->phpThumbDebugVarDump(@ini_get('max_execution_time'));
+               $DebugOutput[] = 'get_cfg_var(memory_limit)   = '.$this->phpThumbDebugVarDump(@get_cfg_var('memory_limit'));
+               $DebugOutput[] = 'memory_get_usage()          = '.(function_exists('memory_get_usage') ? $this->phpThumbDebugVarDump(@memory_get_usage()) : 'n/a');
+               $DebugOutput[] = '';
+
+               $DebugOutput[] = '$this->config_prefer_imagemagick            = '.$this->phpThumbDebugVarDump($this->config_prefer_imagemagick);
+               $DebugOutput[] = '$this->config_imagemagick_path              = '.$this->phpThumbDebugVarDump($this->config_imagemagick_path);
+               $DebugOutput[] = 'SafeExec(which convert)                     = '.trim(phpthumb_functions::SafeExec('which convert'));
+               $IMpathUsed = ($this->config_imagemagick_path ? $this->config_imagemagick_path : trim(phpthumb_functions::SafeExec('which convert')));
+               $DebugOutput[] = '[actual ImageMagick path used]              = '.$this->phpThumbDebugVarDump($IMpathUsed);
+               $DebugOutput[] = 'file_exists([actual ImageMagick path used]) = '.$this->phpThumbDebugVarDump(file_exists($IMpathUsed));
+               $DebugOutput[] = 'ImageMagickVersion()                        = '.$this->ImageMagickVersion();
+               $DebugOutput[] = '';
+
+               $DebugOutput[] = '$this->config_cache_directory               = '.$this->phpThumbDebugVarDump($this->config_cache_directory);
+               $DebugOutput[] = '$this->config_cache_disable_warning         = '.$this->phpThumbDebugVarDump($this->config_cache_disable_warning);
+               $DebugOutput[] = '$this->config_cache_maxage                  = '.$this->phpThumbDebugVarDump($this->config_cache_maxage);
+               $DebugOutput[] = '$this->config_cache_maxsize                 = '.$this->phpThumbDebugVarDump($this->config_cache_maxsize);
+               $DebugOutput[] = '$this->config_cache_maxfiles                = '.$this->phpThumbDebugVarDump($this->config_cache_maxfiles);
+               $DebugOutput[] = '$this->cache_filename                       = '.$this->phpThumbDebugVarDump($this->cache_filename);
+               $DebugOutput[] = 'is_readable($this->config_cache_directory)  = '.$this->phpThumbDebugVarDump(is_readable($this->config_cache_directory));
+               $DebugOutput[] = 'is_writable($this->config_cache_directory)  = '.$this->phpThumbDebugVarDump(is_writable($this->config_cache_directory));
+               $DebugOutput[] = 'is_readable($this->cache_filename)          = '.$this->phpThumbDebugVarDump(is_readable($this->cache_filename));
+               $DebugOutput[] = 'is_writable($this->cache_filename)          = '.(file_exists($this->cache_filename) ? $this->phpThumbDebugVarDump(is_writable($this->cache_filename)) : 'n/a');
+               $DebugOutput[] = '';
+
+               $DebugOutput[] = '$this->config_document_root                 = '.$this->phpThumbDebugVarDump($this->config_document_root);
+               $DebugOutput[] = '$this->config_temp_directory                = '.$this->phpThumbDebugVarDump($this->config_temp_directory);
+               $DebugOutput[] = '';
+               $DebugOutput[] = '$this->config_output_format                 = '.$this->phpThumbDebugVarDump($this->config_output_format);
+               $DebugOutput[] = '$this->config_output_maxwidth               = '.$this->phpThumbDebugVarDump($this->config_output_maxwidth);
+               $DebugOutput[] = '$this->config_output_maxheight              = '.$this->phpThumbDebugVarDump($this->config_output_maxheight);
+               $DebugOutput[] = '';
+               $DebugOutput[] = '$this->config_error_message_image_default   = '.$this->phpThumbDebugVarDump($this->config_error_message_image_default);
+               $DebugOutput[] = '$this->config_error_bgcolor                 = '.$this->phpThumbDebugVarDump($this->config_error_bgcolor);
+               $DebugOutput[] = '$this->config_error_textcolor               = '.$this->phpThumbDebugVarDump($this->config_error_textcolor);
+               $DebugOutput[] = '$this->config_error_fontsize                = '.$this->phpThumbDebugVarDump($this->config_error_fontsize);
+               $DebugOutput[] = '$this->config_error_die_on_error            = '.$this->phpThumbDebugVarDump($this->config_error_die_on_error);
+               $DebugOutput[] = '$this->config_error_silent_die_on_error     = '.$this->phpThumbDebugVarDump($this->config_error_silent_die_on_error);
+               $DebugOutput[] = '$this->config_error_die_on_source_failure   = '.$this->phpThumbDebugVarDump($this->config_error_die_on_source_failure);
+               $DebugOutput[] = '';
+               $DebugOutput[] = '$this->config_nohotlink_enabled             = '.$this->phpThumbDebugVarDump($this->config_nohotlink_enabled);
+               $DebugOutput[] = '$this->config_nohotlink_valid_domains       = '.$this->phpThumbDebugVarDump($this->config_nohotlink_valid_domains);
+               $DebugOutput[] = '$this->config_nohotlink_erase_image         = '.$this->phpThumbDebugVarDump($this->config_nohotlink_erase_image);
+               $DebugOutput[] = '$this->config_nohotlink_text_message        = '.$this->phpThumbDebugVarDump($this->config_nohotlink_text_message);
+               $DebugOutput[] = '';
+               $DebugOutput[] = '$this->config_nooffsitelink_enabled         = '.$this->phpThumbDebugVarDump($this->config_nooffsitelink_enabled);
+               $DebugOutput[] = '$this->config_nooffsitelink_valid_domains   = '.$this->phpThumbDebugVarDump($this->config_nooffsitelink_valid_domains);
+               $DebugOutput[] = '$this->config_nooffsitelink_require_refer   = '.$this->phpThumbDebugVarDump($this->config_nooffsitelink_require_refer);
+               $DebugOutput[] = '$this->config_nooffsitelink_erase_image     = '.$this->phpThumbDebugVarDump($this->config_nooffsitelink_erase_image);
+               $DebugOutput[] = '$this->config_nooffsitelink_text_message    = '.$this->phpThumbDebugVarDump($this->config_nooffsitelink_text_message);
+               $DebugOutput[] = '';
+               $DebugOutput[] = '$this->config_high_security_enabled         = '.$this->phpThumbDebugVarDump($this->config_high_security_enabled);
+               $DebugOutput[] = '$this->config_allow_src_above_docroot       = '.$this->phpThumbDebugVarDump($this->config_allow_src_above_docroot);
+               $DebugOutput[] = '$this->config_allow_src_above_phpthumb      = '.$this->phpThumbDebugVarDump($this->config_allow_src_above_phpthumb);
+               $DebugOutput[] = '$this->config_allow_parameter_file          = '.$this->phpThumbDebugVarDump($this->config_allow_parameter_file);
+               $DebugOutput[] = '$this->config_allow_parameter_goto          = '.$this->phpThumbDebugVarDump($this->config_allow_parameter_goto);
+               $DebugOutput[] = '';
+               $DebugOutput[] = '$this->config_max_source_pixels             = '.$this->phpThumbDebugVarDump($this->config_max_source_pixels);
+               $DebugOutput[] = '$this->config_use_exif_thumbnail_for_speed  = '.$this->phpThumbDebugVarDump($this->config_use_exif_thumbnail_for_speed);
+               $DebugOutput[] = '$this->config_border_hexcolor               = '.$this->phpThumbDebugVarDump($this->config_border_hexcolor);
+               $DebugOutput[] = '$this->config_background_hexcolor           = '.$this->phpThumbDebugVarDump($this->config_background_hexcolor);
+               $DebugOutput[] = '$this->config_ttf_directory                 = '.$this->phpThumbDebugVarDump($this->config_ttf_directory);
+               $DebugOutput[] = '';
+
+               foreach ($OtherVariableNames as $varname) {
+                       $value = $this->$varname;
+                       $DebugOutput[] = '$this->'.str_pad($varname, 27, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+               }
+               $DebugOutput[] = 'strlen($this->rawImageData)        = '.strlen(@$this->rawImageData);
+               $DebugOutput[] = 'strlen($this->exif_thumbnail_data) = '.strlen(@$this->exif_thumbnail_data);
+               $DebugOutput[] = '';
+
+               foreach ($ParameterNames as $varname) {
+                       $value = $this->$varname;
+                       $DebugOutput[] = '$this->'.str_pad($varname, 4, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+               }
+               $DebugOutput[] = '';
+
+               foreach ($FunctionsExistance as $functionname) {
+                       $DebugOutput[] = 'builtin_function_exists('.$functionname.')'.str_repeat(' ', 23 - strlen($functionname)).' = '.$this->phpThumbDebugVarDump(phpthumb_functions::builtin_function_exists($functionname));
+               }
+               $DebugOutput[] = '';
+
+               $gd_info = phpthumb_functions::gd_info();
+               foreach ($gd_info as $key => $value) {
+                       $DebugOutput[] = 'gd_info.'.str_pad($key, 34, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+               }
+               $DebugOutput[] = '';
+
+               $exif_info = phpthumb_functions::exif_info();
+               foreach ($exif_info as $key => $value) {
+                       $DebugOutput[] = 'exif_info.'.str_pad($key, 26, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+               }
+               $DebugOutput[] = '';
+
+               if ($ApacheLookupURIarray = phpthumb_functions::ApacheLookupURIarray(dirname(@$_SERVER['PHP_SELF']))) {
+                       foreach ($ApacheLookupURIarray as $key => $value) {
+                               $DebugOutput[] = 'ApacheLookupURIarray.'.str_pad($key, 15, ' ', STR_PAD_RIGHT).' = '.$this->phpThumbDebugVarDump($value);
+                       }
+               } else {
+                               $DebugOutput[] = 'ApacheLookupURIarray() -- FAILED';
+               }
+               $DebugOutput[] = '';
+
+               if (isset($_GET) && is_array($_GET)) {
+                       foreach ($_GET as $key => $value) {
+                               $DebugOutput[] = '$_GET['.$key.']'.str_repeat(' ', 30 - strlen($key)).'= '.$this->phpThumbDebugVarDump($value);
+                       }
+               }
+               if (isset($_POST) && is_array($_POST)) {
+                       foreach ($_POST as $key => $value) {
+                               $DebugOutput[] = '$_POST['.$key.']'.str_repeat(' ', 29 - strlen($key)).'= '.$this->phpThumbDebugVarDump($value);
+                       }
+               }
+               $DebugOutput[] = '';
+
+               $DebugOutput[] = '$this->debugmessages:';
+               foreach ($this->debugmessages as $errorstring) {
+                       $DebugOutput[] = '  * '.$errorstring;
+               }
+               $DebugOutput[] = '';
+
+               $DebugOutput[] = '$this->debugtiming:';
+               foreach ($this->debugtiming as $timestamp => $timingstring) {
+                       $DebugOutput[] = '  * '.$timestamp.' '.$timingstring;
+               }
+               $DebugOutput[] = '  * Total processing time: '.number_format(max(array_keys($this->debugtiming)) - min(array_keys($this->debugtiming)), 6);
+
+               return $this->ErrorImage(implode("\n", $DebugOutput), 700, 500);
+       }
+
+       function ErrorImage($text, $width=0, $height=0) {
+               $width  = ($width  ? $width  : $this->config_error_image_width);
+               $height = ($height ? $height : $this->config_error_image_height);
+
+               $text = 'phpThumb() v'.$this->phpthumb_version."\n\n".$text;
+               if ($this->config_disable_debug) {
+                       $text = 'Error messages disabled';
+               }
+
+               $this->DebugMessage($text);
+               if (!$this->config_error_die_on_error) {
+                       $this->fatalerror = $text;
+                       return false;
+               }
+               if ($this->config_error_silent_die_on_error) {
+                       exit;
+               }
+               if ($this->err || $this->config_error_message_image_default) {
+                       // Show generic custom error image instead of error message
+                       // for use on production sites where you don't want debug messages
+                       if ($this->err == 'showerror') {
+                               // fall through and actually show error message even if default error image is set
+                       } else {
+                               header('Location: '.($this->err ? $this->err : $this->config_error_message_image_default));
+                               exit;
+                       }
+               }
+               if (@$this->f == 'text') {
+                       // bypass all GD functions and output text error message
+                       die('<pre>'.$text.'</pre>');
+               }
+
+               $FontWidth  = ImageFontWidth($this->config_error_fontsize);
+               $FontHeight = ImageFontHeight($this->config_error_fontsize);
+
+               $LinesOfText = explode("\n", @wordwrap($text, floor($width / $FontWidth), "\n", true));
+               $height = max($height, count($LinesOfText) * $FontHeight);
+
+               $headers_file = '';
+               $headers_line = '';
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=') && headers_sent($headers_file, $headers_line)) {
+
+                       echo "\n".'**Headers already sent in file "'.$headers_file.'" on line "'.$headers_line.'", dumping error message as text:**<br><pre>'."\n\n".$text."\n".'</pre>';
+
+               } elseif (headers_sent()) {
+
+                       echo "\n".'**Headers already sent, dumping error message as text:**<br><pre>'."\n\n".$text."\n".'</pre>';
+
+               } elseif ($gdimg_error = ImageCreate($width, $height)) {
+
+                       $background_color = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_bgcolor,   true);
+                       $text_color       = phpthumb_functions::ImageHexColorAllocate($gdimg_error, $this->config_error_textcolor, true);
+                       ImageFilledRectangle($gdimg_error, 0, 0, $width, $height, $background_color);
+                       $lineYoffset = 0;
+                       foreach ($LinesOfText as $line) {
+                               ImageString($gdimg_error, $this->config_error_fontsize, 2, $lineYoffset, $line, $text_color);
+                               $lineYoffset += $FontHeight;
+                       }
+                       if (function_exists('ImageTypes')) {
+                               $imagetypes = ImageTypes();
+                               if ($imagetypes & IMG_PNG) {
+                                       header('Content-Type: image/png');
+                                       ImagePNG($gdimg_error);
+                               } elseif ($imagetypes & IMG_GIF) {
+                                       header('Content-Type: image/gif');
+                                       ImageGIF($gdimg_error);
+                               } elseif ($imagetypes & IMG_JPG) {
+                                       header('Content-Type: image/jpeg');
+                                       ImageJPEG($gdimg_error);
+                               } elseif ($imagetypes & IMG_WBMP) {
+                                       header('Content-Type: image/wbmp');
+                                       ImageWBMP($gdimg_error);
+                               }
+                       }
+                       ImageDestroy($gdimg_error);
+
+               }
+               if (!headers_sent()) {
+                       echo "\n".'**Failed to send graphical error image, dumping error message as text:**<br>'."\n\n".$text;
+               }
+               exit;
+               return true;
+       }
+
+       function ImageCreateFromStringReplacement(&$RawImageData, $DieOnErrors=false) {
+               // there are serious bugs in the non-bundled versions of GD which may cause
+               // PHP to segfault when calling ImageCreateFromString() - avoid if at all possible
+               // when not using a bundled version of GD2
+               if (phpthumb_functions::gd_is_bundled()) {
+                       return @ImageCreateFromString($RawImageData);
+               }
+
+               switch (substr($RawImageData, 0, 3)) {
+                       case 'GIF':
+                               $ICFSreplacementFunctionName = 'ImageCreateFromGIF';
+                               break;
+                       case "\xFF\xD8\xFF":
+                               $ICFSreplacementFunctionName = 'ImageCreateFromJPEG';
+                               break;
+                       case "\x89".'PN':
+                               $ICFSreplacementFunctionName = 'ImageCreateFromPNG';
+                               break;
+                       default:
+                               return false;
+                               break;
+               }
+               if ($tempnam = $this->phpThumb_tempnam()) {
+                       if ($fp_tempnam = @fopen($tempnam, 'wb')) {
+                               fwrite($fp_tempnam, $RawImageData);
+                               fclose($fp_tempnam);
+                               if (($ICFSreplacementFunctionName == 'ImageCreateFromGIF') && !function_exists($ICFSreplacementFunctionName)) {
+
+                                       // Need to create from GIF file, but ImageCreateFromGIF does not exist
+                                       ob_start();
+                                       if (!@include_once(dirname(__FILE__).'/phpthumb.gif.php')) {
+                                               $ErrorMessage = 'Failed to include required file "'.dirname(__FILE__).'/phpthumb.gif.php" in '.__FILE__.' on line '.__LINE__;
+                                       }
+                                       ob_end_clean();
+                                       // gif_loadFileToGDimageResource() cannot read from raw data, write to file first
+                                       if ($tempfilename = $this->phpThumb_tempnam()) {
+                                               if ($fp_tempfile = @fopen($tempfilename, 'wb')) {
+                                                       fwrite($fp_tempfile, $RawImageData);
+                                                       fclose($fp_tempfile);
+                                                       $gdimg_source = gif_loadFileToGDimageResource($tempfilename);
+                                                       unlink($tempfilename);
+                                                       return $gdimg_source;
+                                                       break;
+                                               } else {
+                                                       $ErrorMessage = 'Failed to open tempfile in '.__FILE__.' on line '.__LINE__;
+                                               }
+                                       } else {
+                                               $ErrorMessage = 'Failed to open generate tempfile name in '.__FILE__.' on line '.__LINE__;
+                                       }
+
+                               } elseif (function_exists($ICFSreplacementFunctionName) && ($gdimg_source = @$ICFSreplacementFunctionName($tempnam))) {
+
+                                       // great
+                                       unlink($tempnam);
+                                       return $gdimg_source;
+
+                               } else { // GD functions not available
+
+                                       // base64-encoded error image in GIF format
+                                       header('Content-Type: image/gif');
+                                       echo base64_decode('R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3IToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFSRWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJnWYE0FURk7wJDA0MTKpEzoWAAskiAAA7');
+                                       exit;
+
+                               }
+                       } else {
+                               $ErrorMessage = 'Failed to fopen('.$tempnam.', "wb") in '.__FILE__.' on line '.__LINE__."\n".'You may need to set $PHPTHUMB_CONFIG[temp_directory] in phpThumb.config.php';
+                       }
+                       unlink($tempnam);
+               } else {
+                       $ErrorMessage = 'Failed to generate phpThumb_tempnam() in '.__FILE__.' on line '.__LINE__."\n".'You may need to set $PHPTHUMB_CONFIG[temp_directory] in phpThumb.config.php';
+               }
+               if ($DieOnErrors && $ErrorMessage) {
+                       return $this->ErrorImage($ErrorMessage);
+               }
+               return false;
+       }
+
+       function phpThumb_tempnam() {
+               return tempnam($this->config_temp_directory, 'pThumb');
+       }
+
+       function DebugMessage($message, $file='', $line='') {
+               $this->debugmessages[] = $message.($file ? ' in file "'.(basename($file) ? basename($file) : $file).'"' : '').($line ? ' on line '.$line : '');
+               return true;
+       }
+
+       function DebugTimingMessage($message, $file='', $line='', $timestamp=0) {
+               if (!$timestamp) {
+                       $timestamp = array_sum(explode(' ', microtime()));
+               }
+               $this->debugtiming[number_format($timestamp, 6, '.', '')] = ': '.$message.($file ? ' in file "'.(basename($file) ? basename($file) : $file).'"' : '').($line ? ' on line '.$line : '');
+               return true;
+       }
+
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.filters.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.filters.php
new file mode 100644 (file)
index 0000000..de1fd5b
--- /dev/null
@@ -0,0 +1,1226 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpthumb.filters.php - image processing filter functions //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+class phpthumb_filters {
+
+       function ApplyMask(&$gdimg_mask, &$gdimg_image) {
+               if (phpthumb_functions::gd_version() < 2) {
+                       //$this->DebugMessage('Skipping ApplyMask() because gd_version is "'.phpthumb_functions::gd_version().'"', __FILE__, __LINE__);
+                       return false;
+               }
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+
+                       //$this->DebugMessage('Using alpha ApplyMask() technique', __FILE__, __LINE__);
+                       if ($gdimg_mask_resized = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg_image), ImageSY($gdimg_image))) {
+
+                               ImageCopyResampled($gdimg_mask_resized, $gdimg_mask, 0, 0, 0, 0, ImageSX($gdimg_image), ImageSY($gdimg_image), ImageSX($gdimg_mask), ImageSY($gdimg_mask));
+                               if ($gdimg_mask_blendtemp = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg_image), ImageSY($gdimg_image))) {
+
+                                       $color_background = ImageColorAllocate($gdimg_mask_blendtemp, 0, 0, 0);
+                                       ImageFilledRectangle($gdimg_mask_blendtemp, 0, 0, ImageSX($gdimg_mask_blendtemp), ImageSY($gdimg_mask_blendtemp), $color_background);
+                                       ImageAlphaBlending($gdimg_mask_blendtemp, false);
+                                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                                               ImageSaveAlpha($gdimg_mask_blendtemp, true);
+                                       }
+                                       for ($x = 0; $x < ImageSX($gdimg_image); $x++) {
+                                               for ($y = 0; $y < ImageSY($gdimg_image); $y++) {
+                                                       //$RealPixel = phpthumb_functions::GetPixelColor($gdimg_mask_blendtemp, $x, $y);
+                                                       $RealPixel = phpthumb_functions::GetPixelColor($gdimg_image, $x, $y);
+                                                       $MaskPixel = phpthumb_functions::GrayscalePixel(phpthumb_functions::GetPixelColor($gdimg_mask_resized, $x, $y));
+                                                       $MaskAlpha = 127 - (floor($MaskPixel['red'] / 2) * (1 - ($RealPixel['alpha'] / 127)));
+                                                       $newcolor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_mask_blendtemp, $RealPixel['red'], $RealPixel['green'], $RealPixel['blue'], $MaskAlpha);
+                                                       ImageSetPixel($gdimg_mask_blendtemp, $x, $y, $newcolor);
+                                               }
+                                       }
+                                       ImageAlphaBlending($gdimg_image, false);
+                                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                                               ImageSaveAlpha($gdimg_image, true);
+                                       }
+                                       ImageCopy($gdimg_image, $gdimg_mask_blendtemp, 0, 0, 0, 0, ImageSX($gdimg_mask_blendtemp), ImageSY($gdimg_mask_blendtemp));
+                                       ImageDestroy($gdimg_mask_blendtemp);
+
+                               } else {
+                                       //$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+                               }
+                               ImageDestroy($gdimg_mask_resized);
+
+                       } else {
+                               //$this->DebugMessage('ImageCreateFunction() failed', __FILE__, __LINE__);
+                       }
+
+               } else {
+                       // alpha merging requires PHP v4.3.2+
+                       //$this->DebugMessage('Skipping ApplyMask() technique because PHP is v"'.phpversion().'"', __FILE__, __LINE__);
+               }
+               return true;
+       }
+
+
+       function Bevel(&$gdimg, $width, $hexcolor1, $hexcolor2) {
+               $width     = ($width     ? $width     : 5);
+               $hexcolor1 = ($hexcolor1 ? $hexcolor1 : 'FFFFFF');
+               $hexcolor2 = ($hexcolor2 ? $hexcolor2 : '000000');
+
+               ImageAlphaBlending($gdimg, true);
+               for ($i = 0; $i < $width; $i++) {
+                       $alpha = round(($i / $width) * 127);
+                       $color1[$i] = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor1, false, $alpha);
+                       $color2[$i] = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor2, false, $alpha);
+
+                       ImageLine($gdimg,                   $i,                   $i,                   $i, ImageSY($gdimg) - $i, $color1[$i]); // left
+                       ImageLine($gdimg,                   $i,                   $i, ImageSX($gdimg) - $i,                   $i, $color1[$i]); // top
+                       ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i, ImageSX($gdimg) - $i,                   $i, $color2[$i]); // right
+                       ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i,                   $i, ImageSY($gdimg) - $i, $color2[$i]); // bottom
+               }
+               return true;
+       }
+
+
+       function Blur(&$gdimg, $radius) {
+               // Taken from Torstein Hønsi's phpUnsharpMask (see phpthumb.unsharp.php)
+
+               $radius = round(max(0, min($radius, 50)) * 2);
+               if (!$radius) {
+                       return false;
+               }
+
+               $w = ImageSX($gdimg);
+               $h = ImageSY($gdimg);
+               if ($imgBlur = ImageCreateTrueColor($w, $h)) {
+                       // Gaussian blur matrix:
+                       //      1       2       1
+                       //      2       4       2
+                       //      1       2       1
+
+                       // Move copies of the image around one pixel at the time and merge them with weight
+                       // according to the matrix. The same matrix is simply repeated for higher radii.
+                       for ($i = 0; $i < $radius; $i++)        {
+                               ImageCopy     ($imgBlur, $gdimg, 0, 0, 1, 1, $w - 1, $h - 1);            // up left
+                               ImageCopyMerge($imgBlur, $gdimg, 1, 1, 0, 0, $w,     $h,     50.00000);  // down right
+                               ImageCopyMerge($imgBlur, $gdimg, 0, 1, 1, 0, $w - 1, $h,     33.33333);  // down left
+                               ImageCopyMerge($imgBlur, $gdimg, 1, 0, 0, 1, $w,     $h - 1, 25.00000);  // up right
+                               ImageCopyMerge($imgBlur, $gdimg, 0, 0, 1, 0, $w - 1, $h,     33.33333);  // left
+                               ImageCopyMerge($imgBlur, $gdimg, 1, 0, 0, 0, $w,     $h,     25.00000);  // right
+                               ImageCopyMerge($imgBlur, $gdimg, 0, 0, 0, 1, $w,     $h - 1, 20.00000);  // up
+                               ImageCopyMerge($imgBlur, $gdimg, 0, 1, 0, 0, $w,     $h,     16.666667); // down
+                               ImageCopyMerge($imgBlur, $gdimg, 0, 0, 0, 0, $w,     $h,     50.000000); // center
+                               ImageCopy     ($gdimg, $imgBlur, 0, 0, 0, 0, $w,     $h);
+                       }
+                       return true;
+               }
+               return false;
+       }
+
+
+       function BlurGaussian(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_GAUSSIAN_BLUR)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_GAUSSIAN_BLUR)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               // currently not implemented "the hard way"
+               $this->DebugMessage('FAILED: phpthumb_filters::BlurGaussian($gdimg) [function not implemented]', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function BlurSelective(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_SELECTIVE_BLUR)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_SELECTIVE_BLUR)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               // currently not implemented "the hard way"
+               $this->DebugMessage('FAILED: phpthumb_filters::BlurSelective($gdimg) [function not implemented]', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function Brightness(&$gdimg, $amount=0) {
+               if ($amount == 0) {
+                       return true;
+               }
+               $amount = max(-255, min(255, $amount));
+
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_BRIGHTNESS, $amount)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_BRIGHTNESS, '.$amount.')', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+
+               $scaling = (255 - abs($amount)) / 255;
+               $baseamount = (($amount > 0) ? $amount : 0);
+               for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                       for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                               $OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               foreach ($OriginalPixel as $key => $value) {
+                                       $NewPixel[$key] = round($baseamount + ($OriginalPixel[$key] * $scaling));
+                               }
+                               $newColor = ImageColorAllocate($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue']);
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+               return true;
+       }
+
+
+       function Contrast(&$gdimg, $amount=0) {
+               if ($amount == 0) {
+                       return true;
+               }
+               $amount = max(-255, min(255, $amount));
+
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_CONTRAST, $amount)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_CONTRAST, '.$amount.')', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+
+               if ($amount > 0) {
+                       $scaling = 1 + ($amount / 255);
+               } else {
+                       $scaling = (255 - abs($amount)) / 255;
+               }
+               for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                       for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                               $OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               foreach ($OriginalPixel as $key => $value) {
+                                       $NewPixel[$key] = min(255, max(0, round($OriginalPixel[$key] * $scaling)));
+                               }
+                               $newColor = ImageColorAllocate($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue']);
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+       }
+
+
+       function Colorize(&$gdimg, $amount, $targetColor) {
+               $amount      = (is_numeric($amount)                          ? $amount      : 25);
+               $targetColor = (phpthumb_functions::IsHexColor($targetColor) ? $targetColor : 'gray');
+
+               if ($amount == 0) {
+                       return true;
+               }
+
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if ($targetColor == 'gray') {
+                               $targetColor = '808080';
+                       }
+                       $r = substr($targetColor, 0, 2);
+                       $g = substr($targetColor, 2, 2);
+                       $b = substr($targetColor, 4, 2);
+                       if (ImageFilter($gdimg, IMG_FILTER_COLORIZE, $r, $g, $b)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_COLORIZE)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+
+               // overridden below for grayscale
+               if ($targetColor != 'gray') {
+                       $TargetPixel['red']   = hexdec(substr($targetColor, 0, 2));
+                       $TargetPixel['green'] = hexdec(substr($targetColor, 2, 2));
+                       $TargetPixel['blue']  = hexdec(substr($targetColor, 4, 2));
+               }
+
+               for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                       for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                               $OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               if ($targetColor == 'gray') {
+                                       $TargetPixel = phpthumb_functions::GrayscalePixel($OriginalPixel);
+                               }
+                               foreach ($TargetPixel as $key => $value) {
+                                       $NewPixel[$key] = round(max(0, min(255, ($OriginalPixel[$key] * ((100 - $amount) / 100)) + ($TargetPixel[$key] * ($amount / 100)))));
+                               }
+                               //$newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue'], $OriginalPixel['alpha']);
+                               $newColor = ImageColorAllocate($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue']);
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+               return true;
+       }
+
+
+       function Desaturate(&$gdimg, $amount, $color='') {
+               if ($amount == 0) {
+                       return true;
+               }
+               return phpthumb_filters::Colorize($gdimg, $amount, (phpthumb_functions::IsHexColor($color) ? $color : 'gray'));
+       }
+
+
+       function DropShadow(&$gdimg, $distance, $width, $hexcolor, $angle, $fade) {
+               if (phpthumb_functions::gd_version() < 2) {
+                       return false;
+               }
+               $distance = ($distance ? $distance : 10);
+               $width    = ($width    ? $width    : 10);
+               $hexcolor = ($hexcolor ? $hexcolor : '000000');
+               $angle    = ($angle    ? $angle    : 225);
+               $fade     = ($fade     ? $fade     : 1);
+
+               $width_shadow  = cos(deg2rad($angle)) * ($distance + $width);
+               $height_shadow = sin(deg2rad($angle)) * ($distance + $width);
+
+               $scaling = min(ImageSX($gdimg) / (ImageSX($gdimg) + abs($width_shadow)), ImageSY($gdimg) / (ImageSY($gdimg) + abs($height_shadow)));
+
+               for ($i = 0; $i < $width; $i++) {
+                       $WidthAlpha[$i] = (abs(($width / 2) - $i) / $width) * $fade;
+                       $Offset['x'] = cos(deg2rad($angle)) * ($distance + $i);
+                       $Offset['y'] = sin(deg2rad($angle)) * ($distance + $i);
+               }
+
+               $tempImageWidth  = ImageSX($gdimg)  + abs($Offset['x']);
+               $tempImageHeight = ImageSY($gdimg) + abs($Offset['y']);
+
+               if ($gdimg_dropshadow_temp = phpthumb_functions::ImageCreateFunction($tempImageWidth, $tempImageHeight)) {
+
+                       ImageAlphaBlending($gdimg_dropshadow_temp, false);
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                               ImageSaveAlpha($gdimg_dropshadow_temp, true);
+                       }
+                       $transparent1 = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_dropshadow_temp, 0, 0, 0, 127);
+                       ImageFill($gdimg_dropshadow_temp, 0, 0, $transparent1);
+
+                       for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                               for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                                       $PixelMap[$x][$y] = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               }
+                       }
+                       for ($x = 0; $x < $tempImageWidth; $x++) {
+                               for ($y = 0; $y < $tempImageHeight; $y++) {
+                                       //for ($i = 0; $i < $width; $i++) {
+                                       for ($i = 0; $i < 1; $i++) {
+                                               if (!isset($PixelMap[$x][$y]['alpha']) || ($PixelMap[$x][$y]['alpha'] > 0)) {
+                                                       if (isset($PixelMap[$x + $Offset['x']][$y + $Offset['y']]['alpha']) && ($PixelMap[$x + $Offset['x']][$y + $Offset['y']]['alpha'] < 127)) {
+                                                               $thisColor = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor, false, $PixelMap[$x + $Offset['x']][$y + $Offset['y']]['alpha']);
+                                                               ImageSetPixel($gdimg_dropshadow_temp, $x, $y, $thisColor);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+
+                       ImageAlphaBlending($gdimg_dropshadow_temp, true);
+                       for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                               for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                                       if ($PixelMap[$x][$y]['alpha'] < 127) {
+                                               $thisColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_dropshadow_temp, $PixelMap[$x][$y]['red'], $PixelMap[$x][$y]['green'], $PixelMap[$x][$y]['blue'], $PixelMap[$x][$y]['alpha']);
+                                               ImageSetPixel($gdimg_dropshadow_temp, $x, $y, $thisColor);
+                                       }
+                               }
+                       }
+
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                               ImageSaveAlpha($gdimg, true);
+                       }
+                       ImageAlphaBlending($gdimg, false);
+                       //$this->is_alpha = true;
+                       $transparent2 = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 0, 0, 0, 127);
+                       ImageFilledRectangle($gdimg, 0, 0, ImageSX($gdimg), ImageSY($gdimg), $transparent2);
+                       ImageCopyResampled($gdimg, $gdimg_dropshadow_temp, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg), ImageSX($gdimg_dropshadow_temp), ImageSY($gdimg_dropshadow_temp));
+
+                       ImageDestroy($gdimg_dropshadow_temp);
+               }
+               return true;
+       }
+
+
+       function EdgeDetect(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_EDGEDETECT)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_EDGEDETECT)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               // currently not implemented "the hard way"
+               $this->DebugMessage('FAILED: phpthumb_filters::EdgeDetect($gdimg) [function not implemented]', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function Elipse($gdimg) {
+               if (phpthumb_functions::gd_version() < 2) {
+                       return false;
+               }
+               // generate mask at twice desired resolution and downsample afterwards for easy antialiasing
+               if ($gdimg_elipsemask_double = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg) * 2, ImageSY($gdimg) * 2)) {
+                       if ($gdimg_elipsemask = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg), ImageSY($gdimg))) {
+
+                               $color_transparent = ImageColorAllocate($gdimg_elipsemask_double, 255, 255, 255);
+                               ImageFilledEllipse($gdimg_elipsemask_double, ImageSX($gdimg), ImageSY($gdimg), (ImageSX($gdimg) - 1) * 2, (ImageSY($gdimg) - 1) * 2, $color_transparent);
+                               ImageCopyResampled($gdimg_elipsemask, $gdimg_elipsemask_double, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg), ImageSX($gdimg) * 2, ImageSY($gdimg) * 2);
+
+                               phpthumb_filters::ApplyMask($gdimg_elipsemask, $gdimg);
+                               ImageDestroy($gdimg_elipsemask);
+                               return true;
+
+                       } else {
+                               //$this->DebugMessage('$gdimg_elipsemask = phpthumb_functions::ImageCreateFunction() failed', __FILE__, __LINE__);
+                       }
+                       ImageDestroy($gdimg_elipsemask_double);
+               } else {
+                       //$this->DebugMessage('$gdimg_elipsemask_double = phpthumb_functions::ImageCreateFunction() failed', __FILE__, __LINE__);
+               }
+               return false;
+       }
+
+
+       function Emboss(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_EMBOSS)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_EMBOSS)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               // currently not implemented "the hard way"
+               $this->DebugMessage('FAILED: phpthumb_filters::Emboss($gdimg) [function not implemented]', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function Flip(&$gdimg, $x=false, $y=false) {
+               if (!$x && !$y) {
+                       return false;
+               }
+               if ($tempImage = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg), ImageSY($gdimg))) {
+                       if ($x) {
+                               ImageCopy($tempImage, $gdimg, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg));
+                               for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                                       ImageCopy($gdimg, $tempImage, ImageSX($gdimg) - 1 - $x, 0, $x, 0, 1, ImageSY($gdimg));
+                               }
+                       }
+                       if ($y) {
+                               ImageCopy($tempImage, $gdimg, 0, 0, 0, 0, ImageSX($gdimg), ImageSY($gdimg));
+                               for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                                       ImageCopy($gdimg, $tempImage, 0, ImageSY($gdimg) - 1 - $y, 0, $y, ImageSX($gdimg), 1);
+                               }
+                       }
+                       ImageDestroy($tempImage);
+               }
+               return true;
+       }
+
+
+       function Frame(&$gdimg, $frame_width, $edge_width, $hexcolor_frame, $hexcolor1, $hexcolor2) {
+               $frame_width    = ($frame_width    ? $frame_width    : 5);
+               $edge_width     = ($edge_width     ? $edge_width     : 1);
+               $hexcolor_frame = ($hexcolor_frame ? $hexcolor_frame : 'CCCCCC');
+               $hexcolor1      = ($hexcolor1      ? $hexcolor1      : 'FFFFFF');
+               $hexcolor2      = ($hexcolor2      ? $hexcolor2      : '000000');
+
+               $color_frame = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor_frame);
+               $color1      = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor1);
+               $color2      = phpthumb_functions::ImageHexColorAllocate($gdimg, $hexcolor2);
+               for ($i = 0; $i < $edge_width; $i++) {
+                       // outer bevel
+                       ImageLine($gdimg,                   $i,                   $i,                   $i, ImageSY($gdimg) - $i, $color1); // left
+                       ImageLine($gdimg,                   $i,                   $i, ImageSX($gdimg) - $i,                   $i, $color1); // top
+                       ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i, ImageSX($gdimg) - $i,                   $i, $color2); // right
+                       ImageLine($gdimg, ImageSX($gdimg) - $i, ImageSY($gdimg) - $i,                   $i, ImageSY($gdimg) - $i, $color2); // bottom
+               }
+               for ($i = 0; $i < $frame_width; $i++) {
+                       // actual frame
+                       ImageRectangle($gdimg, $edge_width + $i, $edge_width + $i, ImageSX($gdimg) - $edge_width - $i, ImageSY($gdimg) - $edge_width - $i, $color_frame);
+               }
+               for ($i = 0; $i < $edge_width; $i++) {
+                       // inner bevel
+                       ImageLine($gdimg,                   $frame_width + $edge_width + $i,                   $frame_width + $edge_width + $i,                   $frame_width + $edge_width + $i, ImageSY($gdimg) - $frame_width - $edge_width - $i, $color2); // left
+                       ImageLine($gdimg,                   $frame_width + $edge_width + $i,                   $frame_width + $edge_width + $i, ImageSX($gdimg) - $frame_width - $edge_width - $i,                   $frame_width + $edge_width + $i, $color2); // top
+                       ImageLine($gdimg, ImageSX($gdimg) - $frame_width - $edge_width - $i, ImageSY($gdimg) - $frame_width - $edge_width - $i, ImageSX($gdimg) - $frame_width - $edge_width - $i,                   $frame_width + $edge_width + $i, $color1); // right
+                       ImageLine($gdimg, ImageSX($gdimg) - $frame_width - $edge_width - $i, ImageSY($gdimg) - $frame_width - $edge_width - $i,                   $frame_width + $edge_width + $i, ImageSY($gdimg) - $frame_width - $edge_width - $i, $color1); // bottom
+               }
+               return true;
+       }
+
+
+       function Gamma(&$gdimg, $amount) {
+               if (number_format($amount, 4) == '1.0000') {
+                       return true;
+               }
+               return ImageGammaCorrect($gdimg, 1.0, $amount);
+       }
+
+
+       function Grayscale(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_GRAYSCALE)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_GRAYSCALE)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               return phpthumb_filters::Colorize($gdimg, 100, 'gray');
+       }
+
+
+       function HistogramAnalysis(&$gdimg, $calculateGray=false) {
+               $ImageSX = ImageSX($gdimg);
+               $ImageSY = ImageSY($gdimg);
+               for ($x = 0; $x < $ImageSX; $x++) {
+                       for ($y = 0; $y < $ImageSY; $y++) {
+                               $OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               @$Analysis['red'][$OriginalPixel['red']]++;
+                               @$Analysis['green'][$OriginalPixel['green']]++;
+                               @$Analysis['blue'][$OriginalPixel['blue']]++;
+                               @$Analysis['alpha'][$OriginalPixel['alpha']]++;
+                               if ($calculateGray) {
+                                       $GrayPixel = phpthumb_functions::GrayscalePixel($OriginalPixel);
+                                       @$Analysis['gray'][$GrayPixel['red']]++;
+                               }
+                       }
+               }
+               $keys = array('red', 'green', 'blue', 'alpha');
+               if ($calculateGray) {
+                       $keys[] = 'gray';
+               }
+               foreach ($keys as $key) {
+                       ksort($Analysis[$key]);
+               }
+               return $Analysis;
+       }
+
+
+       function HistogramStretch(&$gdimg, $band='*', $min=-1, $max=-1) {
+               // equivalent of "Auto Contrast" in Adobe Photoshop
+
+               $Analysis = phpthumb_filters::HistogramAnalysis($gdimg, true);
+               $keys = array('r'=>'red', 'g'=>'green', 'b'=>'blue', 'a'=>'alpha', '*'=>'gray');
+               if (!isset($keys[$band])) {
+                       return false;
+               }
+               $key = $keys[$band];
+
+               // If the absolute brightest and darkest pixels are used then one random
+               // pixel in the image could throw off the whole system. Instead, count up/down
+               // from the limit and allow 0.1% of brightest/darkest pixels to be clipped to min/max
+               $clip_threshold = ImageSX($gdimg) * ImageSX($gdimg) * 0.001;
+               if ($min >= 0) {
+                       $range_min = min($min, 255);
+               } else {
+                       $countsum = 0;
+                       for ($i = 0; $i <= 255; $i++) {
+                               $countsum += @$Analysis[$key][$i];
+                               if ($countsum >= $clip_threshold) {
+                                       $range_min = $i - 1;
+                                       break;
+                               }
+                       }
+                       $range_min = max($range_min, 0);
+               }
+               if ($max >= 0) {
+                       $range_max = max($max, 255);
+               } else {
+                       $countsum = 0;
+                       $threshold = ImageSX($gdimg) * ImageSX($gdimg) * 0.001; // 0.1% of brightest and darkest pixels can be clipped
+                       for ($i = 255; $i >= 0; $i--) {
+                               $countsum += @$Analysis[$key][$i];
+                               if ($countsum >= $clip_threshold) {
+                                       $range_max = $i + 1;
+                                       break;
+                               }
+                       }
+                       $range_max = min($range_max, 255);
+               }
+               $range_scale = (($range_max == $range_min) ? 1 : (255 / ($range_max - $range_min)));
+               if (($range_min == 0) && ($range_max == 255)) {
+                       // no adjustment neccesary - don't waste CPU time!
+                       return true;
+               }
+
+               $ImageSX = ImageSX($gdimg);
+               $ImageSY = ImageSY($gdimg);
+               for ($x = 0; $x < $ImageSX; $x++) {
+                       for ($y = 0; $y < $ImageSY; $y++) {
+                               $OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               if ($band == '*') {
+                                       $new['red']   = min(255, max(0, ($OriginalPixel['red']   - $range_min) * $range_scale));
+                                       $new['green'] = min(255, max(0, ($OriginalPixel['green'] - $range_min) * $range_scale));
+                                       $new['blue']  = min(255, max(0, ($OriginalPixel['blue']  - $range_min) * $range_scale));
+                                       $new['alpha'] = min(255, max(0, ($OriginalPixel['alpha'] - $range_min) * $range_scale));
+                               } else {
+                                       $new = $OriginalPixel;
+                                       $new[$key] = min(255, max(0, ($OriginalPixel[$key] - $range_min) * $range_scale));
+                               }
+                               $newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, $new['red'], $new['green'], $new['blue'], $new['alpha']);
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+
+               return true;
+       }
+
+
+       function HistogramOverlay(&$gdimg, $bands='*', $colors='', $width=0.25, $height=0.25, $alignment='BR', $opacity=50, $margin=5) {
+               $Analysis = phpthumb_filters::HistogramAnalysis($gdimg, true);
+
+               $histW = round(($width > 1) ? min($width, ImageSX($gdimg)) : ImageSX($gdimg) * $width);
+               $histH = round(($width > 1) ? min($width, ImageSX($gdimg)) : ImageSX($gdimg) * $width);
+               if ($gdHist = ImageCreateTrueColor($histW, $histH)) {
+                       $color_back = phpthumb_functions::ImageColorAllocateAlphaSafe($gdHist, 0, 0, 0, 127);
+                       ImageFilledRectangle($gdHist, 0, 0, $histW, $histH, $color_back);
+                       ImageAlphaBlending($gdHist, false);
+                       ImageSaveAlpha($gdHist, true);
+
+                       if ($gdHistTemp = ImageCreateTrueColor(256, 100)) {
+                               $color_back_temp = phpthumb_functions::ImageColorAllocateAlphaSafe($gdHistTemp, 255, 0, 255, 127);
+                               ImageAlphaBlending($gdHistTemp, false);
+                               ImageSaveAlpha($gdHistTemp, true);
+                               ImageFilledRectangle($gdHistTemp, 0, 0, ImageSX($gdHistTemp), ImageSY($gdHistTemp), $color_back_temp);
+
+                               $DefaultColors = array('r'=>'FF0000', 'g'=>'00FF00', 'b'=>'0000FF', 'a'=>'999999', '*'=>'FFFFFF');
+                               $Colors = explode(';', $colors);
+                               $BandsToGraph = array_unique(preg_split('//', $bands));
+                               $keys = array('r'=>'red', 'g'=>'green', 'b'=>'blue', 'a'=>'alpha', '*'=>'gray');
+                               foreach ($BandsToGraph as $key => $band) {
+                                       if (!isset($keys[$band])) {
+                                               continue;
+                                       }
+                                       $PeakValue = max($Analysis[$keys[$band]]);
+                                       $thisColor = phpthumb_functions::ImageHexColorAllocate($gdHistTemp, phpthumb_functions::IsHexColor(@$Colors[$key]) ? $Colors[$key] : $DefaultColors[$band]);
+                                       $tempHeight = ImageSY($gdHistTemp);
+                                       for ($x = 0; $x <= 255; $x++) {
+                                               ImageLine($gdHistTemp, $x, $tempHeight - 1, $x, $tempHeight - 1 - round(@$Analysis[$keys[$band]][$x] / $PeakValue * $tempHeight), $thisColor);
+                                       }
+                                       ImageLine($gdHistTemp, 0, $tempHeight - 1, 255, $tempHeight - 1, $thisColor);
+                                       ImageLine($gdHistTemp, 0, $tempHeight - 2, 255, $tempHeight - 2, $thisColor);
+                               }
+                               ImageCopyResampled($gdHist, $gdHistTemp, 0, 0, 0, 0, ImageSX($gdHist), ImageSY($gdHist), ImageSX($gdHistTemp), ImageSY($gdHistTemp));
+                               ImageDestroy($gdHistTemp);
+                       } else {
+                               return false;
+                       }
+
+                       phpthumb_filters::WatermarkOverlay($gdimg, $gdHist, $alignment, $opacity, $margin);
+                       ImageDestroy($gdHist);
+                       return true;
+               }
+               return false;
+       }
+
+
+       function ImageBorder(&$gdimg, $border_width, $radius_x, $radius_y, $hexcolor_border) {
+               $border_width = ($border_width ? $border_width : 1);
+               $radius_x     = ($radius_x     ? $radius_x     : 0);
+               $radius_y     = ($radius_y     ? $radius_y     : 0);
+
+               $output_width  = ImageSX($gdimg);
+               $output_height = ImageSY($gdimg);
+
+               list($new_width, $new_height) = phpthumb_functions::ProportionalResize($output_width, $output_height, $output_width - max($border_width * 2, $radius_x), $output_height - max($border_width * 2, $radius_y));
+               $offset_x = ($radius_x ? $output_width  - $new_width  - $radius_x : 0);
+               $offset_y = ($radius_y ? $output_height - $new_height - $radius_y : 0);
+
+               if ($gd_border_canvas = phpthumb_functions::ImageCreateFunction($output_width, $output_height)) {
+
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                               ImageSaveAlpha($gd_border_canvas, true);
+                       }
+                       ImageAlphaBlending($gd_border_canvas, false);
+                       $color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($gd_border_canvas, 255, 255, 255, 127);
+                       ImageFilledRectangle($gd_border_canvas, 0, 0, $output_width, $output_height, $color_background);
+
+                       $color_border = phpthumb_functions::ImageHexColorAllocate($gd_border_canvas, (phpthumb_functions::IsHexColor($hexcolor_border) ? $hexcolor_border : '000000'));
+
+                       for ($i = 0; $i < $border_width; $i++) {
+                               ImageLine($gd_border_canvas,             floor($offset_x / 2) + $radius_x,                      $i, $output_width - $radius_x - ceil($offset_x / 2),                         $i, $color_border); // top
+                               ImageLine($gd_border_canvas,             floor($offset_x / 2) + $radius_x, $output_height - 1 - $i, $output_width - $radius_x - ceil($offset_x / 2),    $output_height - 1 - $i, $color_border); // bottom
+                               ImageLine($gd_border_canvas,                    floor($offset_x / 2) + $i,               $radius_y,                      floor($offset_x / 2) +  $i, $output_height - $radius_y, $color_border); // left
+                               ImageLine($gd_border_canvas, $output_width - 1 - $i - ceil($offset_x / 2),               $radius_y,    $output_width - 1 - $i - ceil($offset_x / 2), $output_height - $radius_y, $color_border); // right
+                       }
+
+                       if ($radius_x && $radius_y) {
+
+                               // PHP bug: ImageArc() with thicknesses > 1 give bad/undesirable/unpredicatable results
+                               // Solution: Draw multiple 1px arcs side-by-side.
+
+                               // Problem: parallel arcs give strange/ugly antialiasing problems
+                               // Solution: draw non-parallel arcs, from one side of the line thickness at the start angle
+                               //   to the opposite edge of the line thickness at the terminating angle
+                               for ($thickness_offset = 0; $thickness_offset < $border_width; $thickness_offset++) {
+                                       ImageArc($gd_border_canvas, floor($offset_x / 2) + 1 +                 $radius_x,              $thickness_offset - 1 + $radius_y, $radius_x * 2, $radius_y * 2, 180, 270, $color_border); // top-left
+                                       ImageArc($gd_border_canvas,                     $output_width - $radius_x - 1 - ceil($offset_x / 2),              $thickness_offset - 1 + $radius_y, $radius_x * 2, $radius_y * 2, 270, 360, $color_border); // top-right
+                                       ImageArc($gd_border_canvas,                     $output_width - $radius_x - 1 - ceil($offset_x / 2), $output_height - $thickness_offset - $radius_y, $radius_x * 2, $radius_y * 2,   0,  90, $color_border); // bottom-right
+                                       ImageArc($gd_border_canvas, floor($offset_x / 2) + 1 +                 $radius_x, $output_height - $thickness_offset - $radius_y, $radius_x * 2, $radius_y * 2,  90, 180, $color_border); // bottom-left
+                               }
+                               if ($border_width > 1) {
+                                       for ($thickness_offset = 0; $thickness_offset < $border_width; $thickness_offset++) {
+                                               ImageArc($gd_border_canvas, floor($offset_x / 2) + $thickness_offset + $radius_x,                                      $radius_y, $radius_x * 2, $radius_y * 2, 180, 270, $color_border); // top-left
+                                               ImageArc($gd_border_canvas, $output_width - $thickness_offset - $radius_x - 1 - ceil($offset_x / 2),                                      $radius_y, $radius_x * 2, $radius_y * 2, 270, 360, $color_border); // top-right
+                                               ImageArc($gd_border_canvas, $output_width - $thickness_offset - $radius_x - 1 - ceil($offset_x / 2),                     $output_height - $radius_y, $radius_x * 2, $radius_y * 2,   0,  90, $color_border); // bottom-right
+                                               ImageArc($gd_border_canvas, floor($offset_x / 2) + $thickness_offset + $radius_x,                     $output_height - $radius_y, $radius_x * 2, $radius_y * 2,  90, 180, $color_border); // bottom-left
+                                       }
+                               }
+
+                       }
+                       phpthumb_functions::ImageResizeFunction($gd_border_canvas, $gdimg, floor(($output_width - $new_width) / 2), round(($output_height - $new_height) / 2), 0, 0, $new_width, $new_height, $output_width, $output_height);
+
+                       ImageDestroy($gdimg);
+                       $gdimg = phpthumb_functions::ImageCreateFunction($output_width, $output_height);
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                               ImageSaveAlpha($gdimg, true);
+                       }
+                       ImageAlphaBlending($gdimg, false);
+                       $gdimg_color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 255, 255, 255, 127);
+                       ImageFilledRectangle($gdimg, 0, 0, $output_width, $output_height, $gdimg_color_background);
+
+                       ImageCopy($gdimg, $gd_border_canvas, 0, 0, 0, 0, $output_width, $output_height);
+                       //$gdimg = $gd_border_canvas;
+                       ImageDestroy($gd_border_canvas);
+                       return true;
+
+
+               } else {
+                       $this->DebugMessage('FAILED: $gd_border_canvas = phpthumb_functions::ImageCreateFunction('.$output_width.', '.$output_height.')', __FILE__, __LINE__);
+               }
+               return false;
+       }
+
+
+       function MeanRemoval(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_MEAN_REMOVAL)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_MEAN_REMOVAL)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               // currently not implemented "the hard way"
+               $this->DebugMessage('FAILED: phpthumb_filters::MeanRemoval($gdimg) [function not implemented]', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function Negative(&$gdimg) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_NEGATE)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_NEGATE)', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               $ImageSX = ImageSX($gdimg);
+               $ImageSY = ImageSY($gdimg);
+               for ($x = 0; $x < $ImageSX; $x++) {
+                       for ($y = 0; $y < $ImageSY; $y++) {
+                               $currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               $newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, (~$currentPixel['red'] & 0xFF), (~$currentPixel['green'] & 0xFF), (~$currentPixel['blue'] & 0xFF), $currentPixel['alpha']);
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+               return true;
+       }
+
+
+       function RoundedImageCorners(&$gdimg, $radius_x, $radius_y) {
+               // generate mask at twice desired resolution and downsample afterwards for easy antialiasing
+               // mask is generated as a white double-size elipse on a triple-size black background and copy-paste-resampled
+               // onto a correct-size mask image as 4 corners due to errors when the entire mask is resampled at once (gray edges)
+               if ($gdimg_cornermask_triple = phpthumb_functions::ImageCreateFunction($radius_x * 6, $radius_y * 6)) {
+                       if ($gdimg_cornermask = phpthumb_functions::ImageCreateFunction(ImageSX($gdimg), ImageSY($gdimg))) {
+
+                               $color_transparent = ImageColorAllocate($gdimg_cornermask_triple, 255, 255, 255);
+                               ImageFilledEllipse($gdimg_cornermask_triple, $radius_x * 3, $radius_y * 3, $radius_x * 4, $radius_y * 4, $color_transparent);
+
+                               ImageFilledRectangle($gdimg_cornermask, 0, 0, ImageSX($gdimg), ImageSY($gdimg), $color_transparent);
+
+                               ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple,                           0,                           0,     $radius_x,     $radius_y, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+                               ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple,                           0, ImageSY($gdimg) - $radius_y,     $radius_x, $radius_y * 3, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+                               ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple, ImageSX($gdimg) - $radius_x, ImageSY($gdimg) - $radius_y, $radius_x * 3, $radius_y * 3, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+                               ImageCopyResampled($gdimg_cornermask, $gdimg_cornermask_triple, ImageSX($gdimg) - $radius_x,                           0, $radius_x * 3,     $radius_y, $radius_x, $radius_y, $radius_x * 2, $radius_y * 2);
+
+                               phpthumb_filters::ApplyMask($gdimg_cornermask, $gdimg);
+                               ImageDestroy($gdimg_cornermask);
+                               $this->DebugMessage('RoundedImageCorners('.$radius_x.', '.$radius_y.') succeeded', __FILE__, __LINE__);
+                               return true;
+
+                       } else {
+                               $this->DebugMessage('FAILED: $gdimg_cornermask = phpthumb_functions::ImageCreateFunction('.ImageSX($gdimg).', '.ImageSY($gdimg).')', __FILE__, __LINE__);
+                       }
+                       ImageDestroy($gdimg_cornermask_triple);
+
+               } else {
+                       $this->DebugMessage('FAILED: $gdimg_cornermask_triple = phpthumb_functions::ImageCreateFunction('.($radius_x * 6).', '.($radius_y * 6).')', __FILE__, __LINE__);
+               }
+               return false;
+       }
+
+
+       function Saturation(&$gdimg, $amount, $color='') {
+               if ($amount == 0) {
+                       return true;
+               } elseif ($amount > 0) {
+                       $amount = 0 - $amount;
+               } else {
+                       $amount = abs($amount);
+               }
+               return phpthumb_filters::Desaturate($gdimg, $amount, $color);
+       }
+
+
+       function Sepia(&$gdimg, $amount, $targetColor) {
+               $amount      = (is_numeric($amount) ? max(0, min(100, $amount)) : 50);
+               $targetColor = (phpthumb_functions::IsHexColor($targetColor) ? $targetColor : 'A28065');
+
+               if ($amount == 0) {
+                       return true;
+               }
+
+               $TargetPixel['red']   = hexdec(substr($targetColor, 0, 2));
+               $TargetPixel['green'] = hexdec(substr($targetColor, 2, 2));
+               $TargetPixel['blue']  = hexdec(substr($targetColor, 4, 2));
+
+               $ImageSX = ImageSX($gdimg);
+               $ImageSY = ImageSY($gdimg);
+               for ($x = 0; $x < $ImageSX; $x++) {
+                       for ($y = 0; $y < $ImageSY; $y++) {
+                               $OriginalPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               $GrayPixel = phpthumb_functions::GrayscalePixel($OriginalPixel);
+
+                               // http://www.gimpguru.org/Tutorials/SepiaToning/
+                               // "In the traditional sepia toning process, the tinting occurs most in
+                               // the mid-tones: the lighter and darker areas appear to be closer to B&W."
+                               $SepiaAmount = ((128 - abs($GrayPixel['red'] - 128)) / 128) * ($amount / 100);
+
+                               foreach ($TargetPixel as $key => $value) {
+                                       $NewPixel[$key] = round(max(0, min(255, $GrayPixel[$key] * (1 - $SepiaAmount) + ($TargetPixel[$key] * $SepiaAmount))));
+                               }
+                               $newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, $NewPixel['red'], $NewPixel['green'], $NewPixel['blue'], $OriginalPixel['alpha']);
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+               return true;
+       }
+
+
+       function Smooth(&$gdimg, $amount=6) {
+               $amount = min(25, max(0, $amount));
+               if ($amount == 0) {
+                       return true;
+               }
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '5.0.0', '>=') && phpthumb_functions::gd_is_bundled()) {
+                       if (ImageFilter($gdimg, IMG_FILTER_SMOOTH, $amount)) {
+                               return true;
+                       }
+                       $this->DebugMessage('FAILED: ImageFilter($gdimg, IMG_FILTER_SMOOTH, '.$amount.')', __FILE__, __LINE__);
+                       // fall through and try it the hard way
+               }
+               // currently not implemented "the hard way"
+               $this->DebugMessage('FAILED: phpthumb_filters::Smooth($gdimg, '.$amount.') [function not implemented]', __FILE__, __LINE__);
+               return false;
+       }
+
+
+       function Threshold(&$gdimg, $cutoff) {
+               $cutoff = min(255, max(0, ($cutoff ? $cutoff : 128)));
+               for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                       for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                               $currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               $grayPixel = phpthumb_functions::GrayscalePixel($currentPixel);
+                               if ($grayPixel['red'] < $cutoff) {
+                                       $newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 0x00, 0x00, 0x00, $currentPixel['alpha']);
+                               } else {
+                                       $newColor = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg, 0xFF, 0xFF, 0xFF, $currentPixel['alpha']);
+                               }
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+               return true;
+       }
+
+
+       function ImageTrueColorToPalette2(&$image, $dither, $ncolors) {
+               // http://www.php.net/manual/en/function.imagetruecolortopalette.php
+               // zmorris at zsculpt dot com (17-Aug-2004 06:58)
+               $width  = ImageSX($image);
+               $height = ImageSY($image);
+               $image_copy = ImageCreateTrueColor($width, $height);
+               //ImageCopyMerge($image_copy, $image, 0, 0, 0, 0, $width, $height, 100);
+               ImageCopy($image_copy, $image, 0, 0, 0, 0, $width, $height);
+               ImageTrueColorToPalette($image, $dither, $ncolors);
+               ImageColorMatch($image_copy, $image);
+               ImageDestroy($image_copy);
+               return true;
+       }
+
+       function ReduceColorDepth(&$gdimg, $colors=256, $dither=true) {
+               $colors = max(min($colors, 256), 2);
+               // ImageTrueColorToPalette usually makes ugly colors, the replacement is a bit better
+               //ImageTrueColorToPalette($gdimg, $dither, $colors);
+               phpthumb_filters::ImageTrueColorToPalette2($gdimg, $dither, $colors);
+               return true;
+       }
+
+
+       function WhiteBalance(&$gdimg, $targetColor='') {
+               if (phpthumb_functions::IsHexColor($targetColor)) {
+                       $targetPixel = array(
+                               'red'   => hexdec(substr($targetColor, 0, 2)),
+                               'green' => hexdec(substr($targetColor, 2, 2)),
+                               'blue'  => hexdec(substr($targetColor, 4, 2))
+                       );
+               } else {
+                       $Analysis = phpthumb_filters::HistogramAnalysis($gdimg, false);
+                       $targetPixel = array(
+                               'red'   => max(array_keys($Analysis['red'])),
+                               'green' => max(array_keys($Analysis['green'])),
+                               'blue'  => max(array_keys($Analysis['blue']))
+                       );
+               }
+               $grayValue = phpthumb_functions::GrayscaleValue($targetPixel['red'], $targetPixel['green'], $targetPixel['blue']);
+               $scaleR = $grayValue / $targetPixel['red'];
+               $scaleG = $grayValue / $targetPixel['green'];
+               $scaleB = $grayValue / $targetPixel['blue'];
+
+               for ($x = 0; $x < ImageSX($gdimg); $x++) {
+                       for ($y = 0; $y < ImageSY($gdimg); $y++) {
+                               $currentPixel = phpthumb_functions::GetPixelColor($gdimg, $x, $y);
+                               $newColor = phpthumb_functions::ImageColorAllocateAlphaSafe(
+                                       $gdimg,
+                                       max(0, min(255, round($currentPixel['red']   * $scaleR))),
+                                       max(0, min(255, round($currentPixel['green'] * $scaleG))),
+                                       max(0, min(255, round($currentPixel['blue']  * $scaleB))),
+                                       $currentPixel['alpha']
+                               );
+                               ImageSetPixel($gdimg, $x, $y, $newColor);
+                       }
+               }
+               return true;
+       }
+
+
+       function WatermarkText(&$gdimg, $text, $size, $alignment, $hex_color='000000', $ttffont='', $opacity=100, $margin=5, $angle=0) {
+               // text watermark requested
+               if (!$text) {
+                       return false;
+               }
+               ImageAlphaBlending($gdimg, true);
+
+               $text = str_replace("\r\n", "\n", $text);
+               $text = str_replace("\r",   "\n", $text);
+               $textlines = explode("\n", $text);
+
+               if (@is_readable($ttffont) && is_file($ttffont)) {
+
+                       $opacity = 100 - intval(max(min($opacity, 100), 0));
+
+                       $this->DebugMessage('Using TTF font "'.$ttffont.'"', __FILE__, __LINE__);
+
+                       $TTFbox = ImageTTFbBox($size, $angle, $ttffont, $text);
+
+                       $min_x = min($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
+                       $max_x = max($TTFbox[0], $TTFbox[2], $TTFbox[4], $TTFbox[6]);
+                       //$text_width = round($max_x - $min_x + ($size * 0.5));
+                       $text_width = round($max_x - $min_x);
+
+                       $min_y = min($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
+                       $max_y = max($TTFbox[1], $TTFbox[3], $TTFbox[5], $TTFbox[7]);
+                       //$text_height = round($max_y - $min_y + ($size * 0.5));
+                       $text_height = round($max_y - $min_y);
+
+                       $TTFboxChar = ImageTTFbBox($size, $angle, $ttffont, 'pH');
+                       $char_min_y = min($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
+                       $char_max_y = max($TTFboxChar[1], $TTFboxChar[3], $TTFboxChar[5], $TTFboxChar[7]);
+                       $char_height = round($char_max_y - $char_min_y);
+
+                       switch ($alignment) {
+                               case 'T':
+                                       $text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
+                                       $text_origin_y = $char_height + $margin;
+                                       break;
+
+                               case 'B':
+                                       $text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
+                                       $text_origin_y = ImageSY($gdimg) - $TTFbox[1] - $margin;
+                                       break;
+
+                               case 'L':
+                                       $text_origin_x = $margin;
+                                       $text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
+                                       break;
+
+                               case 'R':
+                                       $text_origin_x = ImageSX($gdimg) - $text_width  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
+                                       $text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
+                                       break;
+
+                               case 'C':
+                                       $text_origin_x = round((ImageSX($gdimg) - $text_width) / 2);
+                                       $text_origin_y = round((ImageSY($gdimg) - $text_height) / 2) + $char_height;
+                                       break;
+
+                               case 'TL':
+                                       $text_origin_x = $margin;
+                                       $text_origin_y = $char_height + $margin;
+                                       break;
+
+                               case 'TR':
+                                       $text_origin_x = ImageSX($gdimg) - $text_width  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
+                                       $text_origin_y = $char_height + $margin;
+                                       break;
+
+                               case 'BL':
+                                       $text_origin_x = $margin;
+                                       $text_origin_y = ImageSY($gdimg) - $TTFbox[1] - $margin;
+                                       break;
+
+                               case 'BR':
+                               default:
+                                       $text_origin_x = ImageSX($gdimg) - $text_width  + $TTFbox[0] - $min_x + round($size * 0.25) - $margin;
+                                       $text_origin_y = ImageSY($gdimg) - $TTFbox[1] - $margin;
+                                       break;
+                       }
+                       $letter_color_text = phpthumb_functions::ImageHexColorAllocate($gdimg, $hex_color, false, $opacity * 1.27);
+
+                       if ($alignment == '*') {
+
+                               $text_origin_y = $char_height + $margin;
+                               while (($text_origin_y - $text_height) < ImageSY($gdimg)) {
+                                       $text_origin_x = $margin;
+                                       while ($text_origin_x < ImageSX($gdimg)) {
+                                               ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
+                                               $text_origin_x += ($text_width + $margin);
+                                       }
+                                       $text_origin_y += ($text_height + $margin);
+                               }
+
+                       } else {
+
+                               //ImageRectangle($gdimg, $text_origin_x + $min_x, $text_origin_y + $TTFbox[1], $text_origin_x + $min_x + $text_width, $text_origin_y + $TTFbox[1] - $text_height, $letter_color_text);
+                               ImageTTFtext($gdimg, $size, $angle, $text_origin_x, $text_origin_y, $letter_color_text, $ttffont, $text);
+
+                       }
+
+                       return true;
+
+                       //if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
+                       //      if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
+                       //              $letter_color_background      = phpthumb_functions::ImageColorAllocateAlphaSafe($img_watermark,      127, 127, 127, 127);
+                       //              $letter_color_background_mask = phpthumb_functions::ImageColorAllocateAlphaSafe($img_watermark_mask, 127, 127, 127, 127);
+                       //              ImageFilledRectangle($img_watermark,      0, 0, ImageSX($img_watermark),      ImageSY($img_watermark),      $letter_color_background);
+                       //              ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $letter_color_background_mask);
+            //
+                       //              $letter_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
+                       //              $letter_color_watermark_mask = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
+            //
+                       //              ImageTTFtext($img_watermark,      $size, $angle, $TTFbox[0] - $min_x + round($size * 0.25), $TTFbox[1] - $min_y,  $letter_color_watermark,      $ttffont, $text);
+                       //              ImageTTFtext($img_watermark_mask, $size, $angle, $TTFbox[0] - $min_x + round($size * 0.25), $TTFbox[1] - $min_y, -$letter_color_watermark_mask, $ttffont, $text);
+            //
+                       //              $this->ApplyMask($img_watermark_mask, $img_watermark);
+                       //              $this->WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
+            //
+                       //              ImageDestroy($img_watermark);
+                       //              ImageDestroy($img_watermark_mask);
+                       //              return true;
+                       //      }
+                       //}
+
+               } else {
+
+                       $size = min(5, max(1, $size));
+                       $this->DebugMessage('Using built-in font (size='.$size.') for text watermark'.($ttffont ? ' because $ttffont !is_readable('.$ttffont.')' : ''), __FILE__, __LINE__);
+
+                       $text_width  = 0;
+                       $text_height = 0;
+                       foreach ($textlines as $line) {
+                               $text_width   = max($text_width, ImageFontWidth($size) * strlen($line));
+                               $text_height += ImageFontHeight($size);
+                       }
+                       if ($img_watermark = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
+                               ImageAlphaBlending($img_watermark, false);
+                               $text_color_background = phpthumb_functions::ImageColorAllocateAlphaSafe($img_watermark, 255, 255, 255, 127);
+                               ImageFilledRectangle($img_watermark, 0, 0, ImageSX($img_watermark), ImageSY($img_watermark), $text_color_background);
+
+                               if ($angle) {
+                                       if ($img_watermark_mask = phpthumb_functions::ImageCreateFunction($text_width, $text_height)) {
+                                               $mask_color_background = ImageColorAllocate($img_watermark_mask, 0, 0, 0);
+                                               ImageAlphaBlending($img_watermark_mask, false);
+                                               ImageFilledRectangle($img_watermark_mask, 0, 0, ImageSX($img_watermark_mask), ImageSY($img_watermark_mask), $mask_color_background);
+                                               $mask_color_watermark = ImageColorAllocate($img_watermark_mask, 255, 255, 255);
+                                       }
+                               }
+
+                               $text_color_watermark = phpthumb_functions::ImageHexColorAllocate($img_watermark, $hex_color);
+                               foreach ($textlines as $key => $line) {
+                                       switch ($alignment) {
+                                               case 'C':
+                                               case 'T':
+                                               case 'B':
+                                                       $x_offset = round(($text_width - (ImageFontWidth($size) * strlen($line))) / 2);
+                                                       break;
+
+                                               case 'L':
+                                               case 'TL':
+                                               case 'BL':
+                                                       $x_offset = 0;
+                                                       break;
+
+                                               case 'R':
+                                               case 'TR':
+                                               case 'BR':
+                                               default:
+                                                       $x_offset = $text_width - (ImageFontWidth($size) * strlen($line));
+                                                       break;
+                                       }
+                                       ImageString($img_watermark, $size, $x_offset, $key * ImageFontHeight($size), $line, $text_color_watermark);
+                                       if ($angle && $img_watermark_mask) {
+                                               ImageString($img_watermark_mask, $size, $x_offset, $key * ImageFontHeight($size), $text, $mask_color_watermark);
+                                       }
+                               }
+                               if ($angle && $img_watermark_mask) {
+                                       $img_watermark      = ImageRotate($img_watermark,      $angle, $text_color_background);
+                                       $img_watermark_mask = ImageRotate($img_watermark_mask, $angle, $mask_color_background);
+                                       phpthumb_filters::ApplyMask($img_watermark_mask, $img_watermark);
+                               }
+                               phpthumb_filters::WatermarkOverlay($gdimg, $img_watermark, $alignment, $opacity, $margin);
+                               ImageDestroy($img_watermark);
+                               return true;
+                       }
+
+               }
+
+               return false;
+       }
+
+
+       function WatermarkOverlay(&$gdimg_dest, &$img_watermark, $alignment='*', $opacity=50, $margin=5) {
+               if (is_resource($gdimg_dest) && is_resource($img_watermark)) {
+                       $watermark_source_x        = 0;
+                       $watermark_source_y        = 0;
+                       $img_source_width          = ImageSX($gdimg_dest);
+                       $img_source_height         = ImageSY($gdimg_dest);
+                       $watermark_source_width    = ImageSX($img_watermark);
+                       $watermark_source_height   = ImageSY($img_watermark);
+                       $watermark_opacity_percent = max(0, min(100, $opacity));
+                       if ($margin < 1) {
+                               $watermark_margin_percent = 1 - $margin;
+                       } else {
+                               $watermark_margin_percent = (100 - max(0, min(100, $margin))) / 100;
+                       }
+                       $watermark_margin_x = round((1 - $watermark_margin_percent) * $img_source_width);
+                       $watermark_margin_y = round((1 - $watermark_margin_percent) * $img_source_height);
+                       switch ($alignment) {
+                               case '*':
+                                       if ($gdimg_tiledwatermark = phpthumb_functions::ImageCreateFunction($img_source_width, $img_source_height)) {
+
+                                               ImageAlphaBlending($gdimg_tiledwatermark, false);
+                                               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                                                       ImageSaveAlpha($gdimg_tiledwatermark, true);
+                                               }
+                                               $text_color_transparent = phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_tiledwatermark, 255, 0, 255, 127);
+                                               ImageFill($gdimg_tiledwatermark, 0, 0, $text_color_transparent);
+
+                                               // set the tiled image transparent color to whatever the untiled image transparency index is
+//                                             ImageColorTransparent($gdimg_tiledwatermark, ImageColorTransparent($img_watermark));
+
+                                               // a "cleaner" way of doing it, but can't handle the margin feature :(
+//                                             ImageSetTile($gdimg_tiledwatermark, $img_watermark);
+//                                             ImageFill($gdimg_tiledwatermark, 0, 0, IMG_COLOR_TILED);
+//                                             break;
+
+//                                             ImageFill($gdimg_tiledwatermark, 0, 0, ImageColorTransparent($gdimg_tiledwatermark));
+                                               // tile the image as many times as can fit
+                                               for ($x = $watermark_margin_x; $x < ($img_source_width + $watermark_source_width); $x += round($watermark_source_width + ((1 - $watermark_margin_percent) * $img_source_width))) {
+                                                       for ($y = $watermark_margin_y; $y < ($img_source_height + $watermark_source_height); $y += round($watermark_source_height + ((1 - $watermark_margin_percent) * $img_source_height))) {
+                                                               ImageCopy(
+                                                                       $gdimg_tiledwatermark,
+                                                                       $img_watermark,
+                                                                       $x,
+                                                                       $y,
+                                                                       0,
+                                                                       0,
+                                                                       min($watermark_source_width,  $img_source_width  - $x - ((1 - $watermark_margin_percent) * $img_source_width)),
+                                                                       min($watermark_source_height, $img_source_height - $y - ((1 - $watermark_margin_percent) * $img_source_height))
+                                                               );
+                                                       }
+                                               }
+
+                                               $watermark_source_width  = ImageSX($gdimg_tiledwatermark);
+                                               $watermark_source_height = ImageSY($gdimg_tiledwatermark);
+                                               $watermark_destination_x = 0;
+                                               $watermark_destination_y = 0;
+
+                                               ImageDestroy($img_watermark);
+                                               $img_watermark = $gdimg_tiledwatermark;
+                                       }
+                                       break;
+
+                               case 'T':
+                                       $watermark_destination_x = round((($img_source_width  / 2) - ($watermark_source_width / 2)) + $watermark_margin_x);
+                                       $watermark_destination_y = $watermark_margin_y;
+                                       break;
+
+                               case 'B':
+                                       $watermark_destination_x = round((($img_source_width  / 2) - ($watermark_source_width / 2)) + $watermark_margin_x);
+                                       $watermark_destination_y = round(($img_source_height - $watermark_source_height) * $watermark_margin_percent);
+                                       break;
+
+                               case 'L':
+                                       $watermark_destination_x = $watermark_margin_x;
+                                       $watermark_destination_y = round((($img_source_height / 2) - ($watermark_source_height / 2)) + $watermark_margin_y);
+                                       break;
+
+                               case 'R':
+                                       $watermark_destination_x = round(($img_source_width - $watermark_source_width)  * $watermark_margin_percent);
+                                       $watermark_destination_y = round((($img_source_height / 2) - ($watermark_source_height / 2)) + $watermark_margin_y);
+                                       break;
+
+                               case 'C':
+                                       $watermark_destination_x = round(($img_source_width  / 2) - ($watermark_source_width  / 2));
+                                       $watermark_destination_y = round(($img_source_height / 2) - ($watermark_source_height / 2));
+                                       break;
+
+                               case 'TL':
+                                       $watermark_destination_x = $watermark_margin_x;
+                                       $watermark_destination_y = $watermark_margin_y;
+                                       break;
+
+                               case 'TR':
+                                       $watermark_destination_x = round(($img_source_width - $watermark_source_width)  * $watermark_margin_percent);
+                                       $watermark_destination_y = $watermark_margin_y;
+                                       break;
+
+                               case 'BL':
+                                       $watermark_destination_x = $watermark_margin_x;
+                                       $watermark_destination_y = round(($img_source_height - $watermark_source_height) * $watermark_margin_percent);
+                                       break;
+
+                               case 'BR':
+                               default:
+                                       $watermark_destination_x = round(($img_source_width  - $watermark_source_width)  * $watermark_margin_percent);
+                                       $watermark_destination_y = round(($img_source_height - $watermark_source_height) * $watermark_margin_percent);
+                                       break;
+                       }
+                       ImageAlphaBlending($gdimg_dest, false);
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=')) {
+                               ImageSaveAlpha($gdimg_dest, true);
+                               ImageSaveAlpha($img_watermark, true);
+                       }
+                       phpthumb_functions::ImageCopyRespectAlpha($gdimg_dest, $img_watermark, $watermark_destination_x, $watermark_destination_y, 0, 0, $watermark_source_width, $watermark_source_height, $watermark_opacity_percent);
+
+                       return true;
+               }
+               return false;
+       }
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.functions.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.functions.php
new file mode 100644 (file)
index 0000000..97a067a
--- /dev/null
@@ -0,0 +1,512 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpthumb.functions.php - general support functions       //
+//                                                         ///
+//////////////////////////////////////////////////////////////
+
+class phpthumb_functions {
+
+       function user_function_exists($functionname) {
+               if (function_exists('get_defined_functions')) {
+                       static $get_defined_functions = array();
+                       if (empty($get_defined_functions)) {
+                               $get_defined_functions = get_defined_functions();
+                       }
+                       return in_array(strtolower($functionname), $get_defined_functions['user']);
+               }
+               return function_exists($functionname);
+       }
+
+       function builtin_function_exists($functionname) {
+               if (function_exists('get_defined_functions')) {
+                       static $get_defined_functions = array();
+                       if (empty($get_defined_functions)) {
+                               $get_defined_functions = get_defined_functions();
+                       }
+                       return in_array(strtolower($functionname), $get_defined_functions['internal']);
+               }
+               return function_exists($functionname);
+       }
+
+       function version_compare_replacement_sub($version1, $version2, $operator='') {
+               // If you specify the third optional operator argument, you can test for a particular relationship.
+               // The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively.
+               // Using this argument, the function will return 1 if the relationship is the one specified by the operator, 0 otherwise.
+
+               // If a part contains special version strings these are handled in the following order: dev < (alpha = a) < (beta = b) < RC < pl
+               static $versiontype_lookup = array();
+               if (empty($versiontype_lookup)) {
+                       $versiontype_lookup['dev']   = 10001;
+                       $versiontype_lookup['a']     = 10002;
+                       $versiontype_lookup['alpha'] = 10002;
+                       $versiontype_lookup['b']     = 10003;
+                       $versiontype_lookup['beta']  = 10003;
+                       $versiontype_lookup['RC']    = 10004;
+                       $versiontype_lookup['pl']    = 10005;
+               }
+               if (isset($versiontype_lookup[$version1])) {
+                       $version1 = $versiontype_lookup[$version1];
+               }
+               if (isset($versiontype_lookup[$version2])) {
+                       $version2 = $versiontype_lookup[$version2];
+               }
+
+               switch ($operator) {
+                       case '<':
+                       case 'lt':
+                               return intval($version1 < $version2);
+                               break;
+                       case '<=':
+                       case 'le':
+                               return intval($version1 <= $version2);
+                               break;
+                       case '>':
+                       case 'gt':
+                               return intval($version1 > $version2);
+                               break;
+                       case '>=':
+                       case 'ge':
+                               return intval($version1 >= $version2);
+                               break;
+                       case '==':
+                       case '=':
+                       case 'eq':
+                               return intval($version1 == $version2);
+                               break;
+                       case '!=':
+                       case '<>':
+                       case 'ne':
+                               return intval($version1 != $version2);
+                               break;
+               }
+               if ($version1 == $version2) {
+                       return 0;
+               } elseif ($version1 < $version2) {
+                       return -1;
+               }
+               return 1;
+       }
+
+       function version_compare_replacement($version1, $version2, $operator='') {
+               if (function_exists('version_compare')) {
+                       // built into PHP v4.1.0+
+                       return version_compare($version1, $version2, $operator);
+               }
+
+               // The function first replaces _, - and + with a dot . in the version strings
+               $version1 = strtr($version1, '_-+', '...');
+               $version2 = strtr($version2, '_-+', '...');
+
+               // and also inserts dots . before and after any non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'.
+               // Then it splits the results like if you were using explode('.',$ver). Then it compares the parts starting from left to right.
+               $version1 = eregi_replace('([0-9]+)([A-Z]+)([0-9]+)', '\\1.\\2.\\3', $version1);
+               $version2 = eregi_replace('([0-9]+)([A-Z]+)([0-9]+)', '\\1.\\2.\\3', $version2);
+
+               $parts1 = explode('.', $version1);
+               $parts2 = explode('.', $version1);
+               $parts_count = max(count($parts1), count($parts2));
+               for ($i = 0; $i < $parts_count; $i++) {
+                       $comparison = phpthumb_functions::version_compare_replacement_sub($version1, $version2, $operator);
+                       if ($comparison != 0) {
+                               return $comparison;
+                       }
+               }
+               return 0;
+       }
+
+       function phpinfo_array() {
+               static $phpinfo_array = array();
+               if (empty($phpinfo_array)) {
+                       ob_start();
+                       phpinfo();
+                       $phpinfo = ob_get_contents();
+                       ob_end_clean();
+                       $phpinfo_array = explode("\n", $phpinfo);
+               }
+               return $phpinfo_array;
+       }
+
+       function exif_info() {
+               static $exif_info = array();
+               if (empty($exif_info)) {
+                       // based on code by johnschaefer at gmx dot de
+                       // from PHP help on gd_info()
+                       $exif_info = array(
+                               'EXIF Support'           => '',
+                               'EXIF Version'           => '',
+                               'Supported EXIF Version' => '',
+                               'Supported filetypes'    => ''
+                       );
+                       $phpinfo_array = phpthumb_functions::phpinfo_array();
+                       foreach ($phpinfo_array as $line) {
+                               $line = trim(strip_tags($line));
+                               foreach ($exif_info as $key => $value) {
+                                       if (strpos($line, $key) === 0) {
+                                               $newvalue = trim(str_replace($key, '', $line));
+                                               $exif_info[$key] = $newvalue;
+                                       }
+                               }
+                       }
+               }
+               return $exif_info;
+       }
+
+       function ImageTypeToMIMEtype($imagetype) {
+               if (function_exists('image_type_to_mime_type')) {
+                       return image_type_to_mime_type($imagetype);
+               }
+               static $image_type_to_mime_type = array(
+                       1  => 'image/gif',                     // IMAGETYPE_GIF
+                       2  => 'image/jpeg',                    // IMAGETYPE_JPEG
+                       3  => 'image/png',                     // IMAGETYPE_PNG
+                       4  => 'application/x-shockwave-flash', // IMAGETYPE_SWF
+                       5  => 'image/psd',                     // IMAGETYPE_PSD
+                       6  => 'image/bmp',                     // IMAGETYPE_BMP
+                       7  => 'image/tiff',                    // IMAGETYPE_TIFF_II (intel byte order)
+                       8  => 'image/tiff',                    // IMAGETYPE_TIFF_MM (motorola byte order)
+                       9  => 'application/octet-stream',      // IMAGETYPE_JPC
+                       10 => 'image/jp2',                     // IMAGETYPE_JP2
+                       11 => 'application/octet-stream',      // IMAGETYPE_JPX
+                       12 => 'application/octet-stream',      // IMAGETYPE_JB2
+                       13 => 'application/x-shockwave-flash', // IMAGETYPE_SWC
+                       14 => 'image/iff',                     // IMAGETYPE_IFF
+                       15 => 'image/vnd.wap.wbmp',            // IMAGETYPE_WBMP
+                       16 => 'image/xbm');                    // IMAGETYPE_XBM
+
+               return (isset($image_type_to_mime_type[$imagetype]) ? $image_type_to_mime_type[$imagetype] : false);
+       }
+
+       function HexCharDisplay($string) {
+               $len = strlen($string);
+               $output = '';
+               for ($i = 0; $i < $len; $i++) {
+                       $output .= ' 0x'.str_pad(dechex(ord($string{$i})), 2, '0', STR_PAD_LEFT);
+               }
+               return $output;
+       }
+
+       function IsHexColor($HexColorString) {
+               return eregi('^[0-9A-F]{6}$', $HexColorString);
+       }
+
+       function ImageColorAllocateAlphaSafe(&$gdimg_hexcolorallocate, $R, $G, $B, $alpha=false) {
+               if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.2', '>=') && ($alpha !== false)) {
+                       return ImageColorAllocateAlpha($gdimg_hexcolorallocate, $R, $G, $B, intval($alpha));
+               } else {
+                       return ImageColorAllocate($gdimg_hexcolorallocate, $R, $G, $B);
+               }
+       }
+
+       function ImageHexColorAllocate(&$gdimg_hexcolorallocate, $HexColorString, $dieOnInvalid=false, $alpha=false) {
+               if (!is_resource($gdimg_hexcolorallocate)) {
+                       die('$gdimg_hexcolorallocate is not a GD resource in ImageHexColorAllocate()');
+               }
+               if (phpthumb_functions::IsHexColor($HexColorString)) {
+                       $R = hexdec(substr($HexColorString, 0, 2));
+                       $G = hexdec(substr($HexColorString, 2, 2));
+                       $B = hexdec(substr($HexColorString, 4, 2));
+                       return phpthumb_functions::ImageColorAllocateAlphaSafe($gdimg_hexcolorallocate, $R, $G, $B, $alpha);
+               }
+               if ($dieOnInvalid) {
+                       die('Invalid hex color string: "'.$HexColorString.'"');
+               }
+               return ImageColorAllocate($gdimg_hexcolorallocate, 0x00, 0x00, 0x00);
+       }
+
+       function HexColorXOR($hexcolor) {
+               return strtoupper(str_pad(dechex(~hexdec($hexcolor) & 0xFFFFFF), 6, '0', STR_PAD_LEFT));
+       }
+
+       function GetPixelColor(&$img, $x, $y) {
+               return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
+       }
+
+       function GrayscaleValue($r, $g, $b) {
+               return round(($r * 0.30) + ($g * 0.59) + ($b * 0.11));
+       }
+
+       function GrayscalePixel($OriginalPixel) {
+               $gray = phpthumb_functions::GrayscaleValue($OriginalPixel['red'], $OriginalPixel['green'], $OriginalPixel['blue']);
+               return array('red'=>$gray, 'green'=>$gray, 'blue'=>$gray);
+       }
+
+       function ImageResizeFunction(&$dst_im, &$src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH) {
+               if (phpthumb_functions::gd_version() >= 2.0) {
+                       return ImageCopyResampled($dst_im, $src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
+               }
+               return ImageCopyResized($dst_im, $src_im, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
+       }
+
+       function ImageCreateFunction($x_size, $y_size) {
+               $ImageCreateFunction = 'ImageCreate';
+               if (phpthumb_functions::gd_version() >= 2.0) {
+                       $ImageCreateFunction = 'ImageCreateTrueColor';
+               }
+               if (!function_exists($ImageCreateFunction)) {
+                       return phpthumb::ErrorImage($ImageCreateFunction.'() does not exist - no GD support?');
+               }
+               if (($x_size <= 0) || ($y_size <= 0)) {
+                       return phpthumb::ErrorImage('Invalid image dimensions: '.$ImageCreateFunction.'('.$x_size.', '.$y_size.')');
+               }
+               return $ImageCreateFunction($x_size, $y_size);
+       }
+
+       function ImageCopyRespectAlpha(&$dst_im, &$src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct=100) {
+               for ($x = $src_x; $x < $src_w; $x++) {
+                       for ($y = $src_y; $y < $src_h; $y++) {
+                               $RealPixel    = phpthumb_functions::GetPixelColor($dst_im, $dst_x + $x, $dst_y + $y);
+                               $OverlayPixel = phpthumb_functions::GetPixelColor($src_im, $x, $y);
+                               $alphapct = $OverlayPixel['alpha'] / 127;
+                               $opacipct = $pct / 100;
+                               $overlaypct = (1 - $alphapct) * $opacipct;
+
+                               $newcolor = phpthumb_functions::ImageColorAllocateAlphaSafe(
+                                       $dst_im,
+                                       round($RealPixel['red']   * (1 - $overlaypct)) + ($OverlayPixel['red']   * $overlaypct),
+                                       round($RealPixel['green'] * (1 - $overlaypct)) + ($OverlayPixel['green'] * $overlaypct),
+                                       round($RealPixel['blue']  * (1 - $overlaypct)) + ($OverlayPixel['blue']  * $overlaypct),
+                                       //$RealPixel['alpha']);
+                                       0);
+
+                               ImageSetPixel($dst_im, $dst_x + $x, $dst_y + $y, $newcolor);
+                       }
+               }
+               return true;
+       }
+
+       function ProportionalResize($old_width, $old_height, $new_width=false, $new_height=false) {
+               $old_aspect_ratio = $old_width / $old_height;
+               if (($new_width === false) && ($new_height === false)) {
+                       return false;
+               } elseif ($new_width === false) {
+                       $new_width = $new_height * $old_aspect_ratio;
+               } elseif ($new_height === false) {
+                       $new_height = $new_width / $old_aspect_ratio;
+               }
+               $new_aspect_ratio = $new_width / $new_height;
+               if ($new_aspect_ratio == $old_aspect_ratio) {
+                       // great, done
+               } elseif ($new_aspect_ratio < $old_aspect_ratio) {
+                       // limited by width
+                       $new_height = $new_width / $old_aspect_ratio;
+               } elseif ($new_aspect_ratio > $old_aspect_ratio) {
+                       // limited by height
+                       $new_width = $new_height * $old_aspect_ratio;
+               }
+               return array(round($new_width), round($new_height));
+       }
+
+       function SafeExec($command) {
+               static $AllowedExecFunctions = array();
+               if (empty($AllowedExecFunctions)) {
+                       $AllowedExecFunctions = array('shell_exec'=>true, 'passthru'=>true, 'system'=>true, 'exec'=>true);
+                       if (@ini_get('safe_mode')) {
+                               $AllowedExecFunctions['shell_exec'] = false;
+                       }
+                       $disable_functions = explode(',', @ini_get('disable_functions'));
+                       foreach ($AllowedExecFunctions as $key => $value) {
+                               if (in_array($key, $disable_functions)) {
+                                       $AllowedExecFunctions[$key] = false;
+                               }
+                       }
+               }
+               foreach ($AllowedExecFunctions as $execfunction => $is_allowed) {
+                       if (!$is_allowed) {
+                               continue;
+                       }
+                       if ($execfunction == 'passthru') {
+                               ob_start();
+                               $execfunction($command);
+                               $returnvalue = ob_get_contents();
+                               ob_end_clean();
+                       } else {
+                               $returnvalue = @$execfunction($command);
+                       }
+                       return $returnvalue;
+               }
+               return false;
+       }
+
+       function ApacheLookupURIarray($filename) {
+               // apache_lookup_uri() only works when PHP is installed as an Apache module.
+               if (php_sapi_name() == 'apache') {
+                       $keys = array('status', 'the_request', 'status_line', 'method', 'content_type', 'handler', 'uri', 'filename', 'path_info', 'args', 'boundary', 'no_cache', 'no_local_copy', 'allowed', 'send_bodyct', 'bytes_sent', 'byterange', 'clength', 'unparsed_uri', 'mtime', 'request_time');
+                       if ($apacheLookupURIobject = @apache_lookup_uri($filename)) {
+                               $apacheLookupURIarray = array();
+                               foreach ($keys as $key) {
+                                       $apacheLookupURIarray[$key] = @$apacheLookupURIobject->$key;
+                               }
+                               return $apacheLookupURIarray;
+                       }
+               }
+               return false;
+       }
+
+       function gd_is_bundled() {
+               static $isbundled = null;
+               if (is_null($isbundled)) {
+                       $gd_info = phpthumb_functions::gd_info();
+                       $isbundled = (strpos($gd_info['GD Version'], 'bundled') !== false);
+               }
+               return $isbundled;
+       }
+
+       function gd_version($fullstring=false) {
+               static $cache_gd_version = array();
+               if (empty($cache_gd_version)) {
+                       $gd_info = phpthumb_functions::gd_info();
+                       if (eregi('bundled \((.+)\)$', $gd_info['GD Version'], $matches)) {
+                               $cache_gd_version[1] = $gd_info['GD Version'];  // e.g. "bundled (2.0.15 compatible)"
+                               $cache_gd_version[0] = (float) $matches[1];     // e.g. "2.0" (not "bundled (2.0.15 compatible)")
+                       } else {
+                               $cache_gd_version[1] = $gd_info['GD Version'];                       // e.g. "1.6.2 or higher"
+                               $cache_gd_version[0] = (float) substr($gd_info['GD Version'], 0, 3); // e.g. "1.6" (not "1.6.2 or higher")
+                       }
+               }
+               return $cache_gd_version[intval($fullstring)];
+       }
+
+       function gd_info() {
+               if (function_exists('gd_info')) {
+                       // built into PHP v4.3.0+ (with bundled GD2 library)
+                       return gd_info();
+               }
+
+               static $gd_info = array();
+               if (empty($gd_info)) {
+                       // based on code by johnschaefer at gmx dot de
+                       // from PHP help on gd_info()
+                       $gd_info = array(
+                               'GD Version'         => '',
+                               'FreeType Support'   => false,
+                               'FreeType Linkage'   => '',
+                               'T1Lib Support'      => false,
+                               'GIF Read Support'   => false,
+                               'GIF Create Support' => false,
+                               'JPG Support'        => false,
+                               'PNG Support'        => false,
+                               'WBMP Support'       => false,
+                               'XBM Support'        => false
+                       );
+                       $phpinfo_array = phpthumb_functions::phpinfo_array();
+                       foreach ($phpinfo_array as $line) {
+                               $line = trim(strip_tags($line));
+                               foreach ($gd_info as $key => $value) {
+                                       //if (strpos($line, $key) !== false) {
+                                       if (strpos($line, $key) === 0) {
+                                               $newvalue = trim(str_replace($key, '', $line));
+                                               $gd_info[$key] = $newvalue;
+                                       }
+                               }
+                       }
+                       if (empty($gd_info['GD Version'])) {
+                               // probable cause: "phpinfo() disabled for security reasons"
+                               if (function_exists('ImageTypes')) {
+                                       $imagetypes = ImageTypes();
+                                       if ($imagetypes & IMG_PNG) {
+                                               $gd_info['PNG Support'] = true;
+                                       }
+                                       if ($imagetypes & IMG_GIF) {
+                                               $gd_info['GIF Create Support'] = true;
+                                       }
+                                       if ($imagetypes & IMG_JPG) {
+                                               $gd_info['JPG Support'] = true;
+                                       }
+                                       if ($imagetypes & IMG_WBMP) {
+                                               $gd_info['WBMP Support'] = true;
+                                       }
+                               }
+                               // to determine capability of GIF creation, try to use ImageCreateFromGIF on a 1px GIF
+                               if (function_exists('ImageCreateFromGIF')) {
+                                       if ($tempfilename = phpthumb::phpThumb_tempnam()) {
+                                               if ($fp_tempfile = @fopen($tempfilename, 'wb')) {
+                                                       fwrite($fp_tempfile, base64_decode('R0lGODlhAQABAIAAAH//AP///ywAAAAAAQABAAACAUQAOw==')); // very simple 1px GIF file base64-encoded as string
+                                                       fclose($fp_tempfile);
+
+                                                       // if we can convert the GIF file to a GD image then GIF create support must be enabled, otherwise it's not
+                                                       $gd_info['GIF Read Support'] = (bool) @ImageCreateFromGIF($tempfilename);
+                                               }
+                                               unlink($tempfilename);
+                                       }
+                               }
+                               if (function_exists('ImageCreateTrueColor') && @ImageCreateTrueColor(1, 1)) {
+                                       $gd_info['GD Version'] = '2.0.1 or higher (assumed)';
+                               } elseif (function_exists('ImageCreate') && @ImageCreate(1, 1)) {
+                                       $gd_info['GD Version'] = '1.6.0 or higher (assumed)';
+                               }
+                       }
+               }
+               return $gd_info;
+       }
+
+       function filesize_remote($remotefile, $timeout=10) {
+               $size = false;
+               $url = parse_url($remotefile);
+               if ($fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno, $errstr, $timeout)) {
+                       fwrite($fp, 'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=')) {
+                               stream_set_timeout($fp, $timeout);
+                       }
+                       while (!feof($fp)) {
+                               $headerline = fgets($fp, 4096);
+                               if (eregi('^Content-Length: (.*)', $headerline, $matches)) {
+                                       $size = intval($matches[1]);
+                                       break;
+                               }
+                       }
+                       fclose ($fp);
+               }
+               return $size;
+       }
+
+       function filedate_remote($remotefile, $timeout=10) {
+               $date = false;
+               $url = parse_url($remotefile);
+               if ($fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno, $errstr, $timeout)) {
+                       fwrite($fp, 'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
+                       if (phpthumb_functions::version_compare_replacement(phpversion(), '4.3.0', '>=')) {
+                               stream_set_timeout($fp, $timeout);
+                       }
+                       while (!feof($fp)) {
+                               $headerline = fgets($fp, 4096);
+                               if (eregi('^Last-Modified: (.*)', $headerline, $matches)) {
+                                       $date = strtotime($matches[1]) - date('Z');
+                                       break;
+                               }
+                       }
+                       fclose ($fp);
+               }
+               return $date;
+       }
+
+       function md5_file_safe($filename) {
+               // md5_file() doesn't exist in PHP < 4.2.0
+               if (function_exists('md5_file')) {
+                       return md5_file($filename);
+               }
+               if ($fp = @fopen($filename, 'rb')) {
+                       $filedata = fread($fp, filesize($filename));
+                       fclose($fp);
+                       return md5($filedata);
+               }
+               return false;
+       }
+
+       function nonempty_min() {
+               $arg_list = func_get_args();
+               $acceptable = array();
+               foreach ($arg_list as $arg) {
+                       if ($arg) {
+                               $acceptable[] = $arg;
+                       }
+               }
+               return min($acceptable);
+       }
+
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.gif.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.gif.php
new file mode 100644 (file)
index 0000000..e928594
--- /dev/null
@@ -0,0 +1,1168 @@
+<?php
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// GIF Util - (C) 2003 Yamasoft (S/C)
+// http://www.yamasoft.com
+// All Rights Reserved
+// This file can be freely copied, distributed, modified, updated by anyone under the only
+// condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// <gif>  = gif_loadFile(filename, [index])
+// <bool> = gif_getSize(<gif> or filename, &width, &height)
+// <bool> = gif_outputAsPng(<gif>, filename, [bgColor])
+// <bool> = gif_outputAsBmp(<gif>, filename, [bgcolor])
+// <bool> = gif_outputAsJpeg(<gif>, filename, [bgcolor]) - use cjpeg if available otherwise uses GD
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Original code by Fabien Ezber
+// Modified by James Heinrich <info@silisoftware.com> for use in phpThumb() - December 10, 2003
+// * Added function gif_loadFileToGDimageResource() - this returns a GD image resource
+// * Modified gif_outputAsJpeg() to check if it's running under Windows, or if cjpeg is not
+//   available, in which case it will attempt to output JPEG using GD functions
+// * added @ error-suppression to two lines where it checks: if ($this->m_img->m_bTrans)
+//   otherwise warnings are generated if error_reporting == E_ALL
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_loadFile($lpszFileName, $iIndex = 0)
+{
+       $gif = new CGIF();
+       if ($gif->loadFile($lpszFileName, $iIndex)) {
+               return $gif;
+       }
+       return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Added by James Heinrich <info@silisoftware.com> - December 10, 2003
+function gif_loadFileToGDimageResource($gifFilename, $bgColor = -1)
+{
+       if ($gif = gif_loadFile($gifFilename)) {
+
+               @set_time_limit(300);
+               // general strategy: convert raw data to PNG then convert PNG data to GD image resource
+               $PNGdata = $gif->getPng($bgColor);
+               if ($img = @ImageCreateFromString($PNGdata)) {
+
+                       // excellent - PNG image data successfully converted to GD image
+                       return $img;
+
+               } elseif ($img = $gif->getGD_PixelPlotterVersion()) {
+
+                       // problem: ImageCreateFromString() didn't like the PNG image data.
+                       //   This has been known to happen in PHP v4.0.6
+                       // solution: take the raw image data and create a new GD image and plot
+                       //   pixel-by-pixel on the GD image. This is extremely slow, but it does
+                       //   work and a slow solution is better than no solution, right? :)
+                       return $img;
+
+               }
+       }
+       return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_outputAsBmp($gif, $lpszFileName, $bgColor = -1)
+{
+       if (!isSet($gif) || (@get_class($gif) <> 'cgif') || !$gif->loaded() || ($lpszFileName == '')) {
+               return false;
+       }
+
+       $fd = $gif->getBmp($bgColor);
+       if (strlen($fd) <= 0) {
+               return false;
+       }
+
+       if (!($fh = @fopen($lpszFileName, 'wb'))) {
+               return false;
+       }
+       @fwrite($fh, $fd, strlen($fd));
+       @fflush($fh);
+       @fclose($fh);
+       return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_outputAsPng($gif, $lpszFileName, $bgColor = -1)
+{
+       if (!isSet($gif) || (@get_class($gif) <> 'cgif') || !$gif->loaded() || ($lpszFileName == '')) {
+               return false;
+       }
+
+       $fd = $gif->getPng($bgColor);
+       if (strlen($fd) <= 0) {
+               return false;
+       }
+
+       if (!($fh = @fopen($lpszFileName, 'wb'))) {
+               return false;
+       }
+       @fwrite($fh, $fd, strlen($fd));
+       @fflush($fh);
+       @fclose($fh);
+       return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_outputAsJpeg($gif, $lpszFileName, $bgColor = -1)
+{
+       // JPEG output that does not require cjpeg added by James Heinrich <info@silisoftware.com> - December 10, 2003
+       if ((strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') && (file_exists('/usr/local/bin/cjpeg') || `which cjpeg`)) {
+
+               if (gif_outputAsBmp($gif, $lpszFileName.'.bmp', $bgColor)) {
+                       exec('cjpeg '.$lpszFileName.'.bmp >'.$lpszFileName.' 2>/dev/null');
+                       @unLink($lpszFileName.'.bmp');
+
+                       if (@file_exists($lpszFileName)) {
+                               if (@fileSize($lpszFileName) > 0) {
+                                       return true;
+                               }
+
+                               @unLink($lpszFileName);
+                       }
+               }
+
+       } else {
+
+               // either Windows, or cjpeg not found in path
+               if ($img = @ImageCreateFromString($gif->getPng($bgColor))) {
+                       if (@ImageJPEG($img, $lpszFileName)) {
+                               return true;
+                       }
+               }
+
+       }
+
+       return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+function gif_getSize($gif, &$width, &$height)
+{
+       if (isSet($gif) && (@get_class($gif) == 'cgif') && $gif->loaded()) {
+               $width  = $gif->width();
+               $height = $gif->height();
+       } elseif (@file_exists($gif)) {
+               $myGIF = new CGIF();
+               if (!$myGIF->getSize($gif, $width, $height)) {
+                       return false;
+               }
+       } else {
+               return false;
+       }
+
+       return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFLZW
+{
+       var $MAX_LZW_BITS;
+       var $Fresh, $CodeSize, $SetCodeSize, $MaxCode, $MaxCodeSize, $FirstCode, $OldCode;
+       var $ClearCode, $EndCode, $Next, $Vals, $Stack, $sp, $Buf, $CurBit, $LastBit, $Done, $LastByte;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFLZW()
+       {
+               $this->MAX_LZW_BITS = 12;
+               unSet($this->Next);
+               unSet($this->Vals);
+               unSet($this->Stack);
+               unSet($this->Buf);
+
+               $this->Next  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
+               $this->Vals  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
+               $this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
+               $this->Buf   = range(0, 279);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function deCompress($data, &$datLen)
+       {
+               $stLen  = strlen($data);
+               $datLen = 0;
+               $ret    = '';
+
+               // INITIALIZATION
+               $this->LZWCommand($data, true);
+
+               while (($iIndex = $this->LZWCommand($data, false)) >= 0) {
+                       $ret .= chr($iIndex);
+               }
+
+               $datLen = $stLen - strlen($data);
+
+               if ($iIndex != -2) {
+                       return false;
+               }
+
+               return $ret;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function LZWCommand(&$data, $bInit)
+       {
+               if ($bInit) {
+                       $this->SetCodeSize = ord($data{0});
+                       $data = substr($data, 1);
+
+                       $this->CodeSize    = $this->SetCodeSize + 1;
+                       $this->ClearCode   = 1 << $this->SetCodeSize;
+                       $this->EndCode     = $this->ClearCode + 1;
+                       $this->MaxCode     = $this->ClearCode + 2;
+                       $this->MaxCodeSize = $this->ClearCode << 1;
+
+                       $this->GetCode($data, $bInit);
+
+                       $this->Fresh = 1;
+                       for ($i = 0; $i < $this->ClearCode; $i++) {
+                               $this->Next[$i] = 0;
+                               $this->Vals[$i] = $i;
+                       }
+
+                       for (; $i < (1 << $this->MAX_LZW_BITS); $i++) {
+                               $this->Next[$i] = 0;
+                               $this->Vals[$i] = 0;
+                       }
+
+                       $this->sp = 0;
+                       return 1;
+               }
+
+               if ($this->Fresh) {
+                       $this->Fresh = 0;
+                       do {
+                               $this->FirstCode = $this->GetCode($data, $bInit);
+                               $this->OldCode   = $this->FirstCode;
+                       }
+                       while ($this->FirstCode == $this->ClearCode);
+
+                       return $this->FirstCode;
+               }
+
+               if ($this->sp > 0) {
+                       $this->sp--;
+                       return $this->Stack[$this->sp];
+               }
+
+               while (($Code = $this->GetCode($data, $bInit)) >= 0) {
+                       if ($Code == $this->ClearCode) {
+                               for ($i = 0; $i < $this->ClearCode; $i++) {
+                                       $this->Next[$i] = 0;
+                                       $this->Vals[$i] = $i;
+                               }
+
+                               for (; $i < (1 << $this->MAX_LZW_BITS); $i++) {
+                                       $this->Next[$i] = 0;
+                                       $this->Vals[$i] = 0;
+                               }
+
+                               $this->CodeSize    = $this->SetCodeSize + 1;
+                               $this->MaxCodeSize = $this->ClearCode << 1;
+                               $this->MaxCode     = $this->ClearCode + 2;
+                               $this->sp          = 0;
+                               $this->FirstCode   = $this->GetCode($data, $bInit);
+                               $this->OldCode     = $this->FirstCode;
+
+                               return $this->FirstCode;
+                       }
+
+                       if ($Code == $this->EndCode) {
+                               return -2;
+                       }
+
+                       $InCode = $Code;
+                       if ($Code >= $this->MaxCode) {
+                               $this->Stack[$this->sp] = $this->FirstCode;
+                               $this->sp++;
+                               $Code = $this->OldCode;
+                       }
+
+                       while ($Code >= $this->ClearCode) {
+                               $this->Stack[$this->sp] = $this->Vals[$Code];
+                               $this->sp++;
+
+                               if ($Code == $this->Next[$Code]) // Circular table entry, big GIF Error!
+                                       return -1;
+
+                               $Code = $this->Next[$Code];
+                       }
+
+                       $this->FirstCode = $this->Vals[$Code];
+                       $this->Stack[$this->sp] = $this->FirstCode;
+                       $this->sp++;
+
+                       if (($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
+                               $this->Next[$Code] = $this->OldCode;
+                               $this->Vals[$Code] = $this->FirstCode;
+                               $this->MaxCode++;
+
+                               if (($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
+                                       $this->MaxCodeSize *= 2;
+                                       $this->CodeSize++;
+                               }
+                       }
+
+                       $this->OldCode = $InCode;
+                       if ($this->sp > 0) {
+                               $this->sp--;
+                               return $this->Stack[$this->sp];
+                       }
+               }
+
+               return $Code;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function GetCode(&$data, $bInit)
+       {
+               if ($bInit) {
+                       $this->CurBit   = 0;
+                       $this->LastBit  = 0;
+                       $this->Done     = 0;
+                       $this->LastByte = 2;
+                       return 1;
+               }
+
+               if (($this->CurBit + $this->CodeSize) >= $this->LastBit) {
+                       if ($this->Done) {
+                               if ($this->CurBit >= $this->LastBit) {
+                                       // Ran off the end of my bits
+                                       return 0;
+                               }
+                               return -1;
+                       }
+
+                       $this->Buf[0] = $this->Buf[$this->LastByte - 2];
+                       $this->Buf[1] = $this->Buf[$this->LastByte - 1];
+
+                       $Count = ord($data{0});
+                       $data  = substr($data, 1);
+
+                       if ($Count) {
+                               for ($i = 0; $i < $Count; $i++) {
+                                       $this->Buf[2 + $i] = ord($data{$i});
+                               }
+                               $data = substr($data, $Count);
+                       } else {
+                               $this->Done = 1;
+                       }
+
+                       $this->LastByte = 2 + $Count;
+                       $this->CurBit   = ($this->CurBit - $this->LastBit) + 16;
+                       $this->LastBit  = (2 + $Count) << 3;
+               }
+
+               $iRet = 0;
+               for ($i = $this->CurBit, $j = 0; $j < $this->CodeSize; $i++, $j++) {
+                       $iRet |= (($this->Buf[intval($i / 8)] & (1 << ($i % 8))) != 0) << $j;
+               }
+
+               $this->CurBit += $this->CodeSize;
+               return $iRet;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFCOLORTABLE
+{
+       var $m_nColors;
+       var $m_arColors;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFCOLORTABLE()
+       {
+               unSet($this->m_nColors);
+               unSet($this->m_arColors);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($lpData, $num)
+       {
+               $this->m_nColors  = 0;
+               $this->m_arColors = array();
+
+               for ($i = 0; $i < $num; $i++) {
+                       $rgb = substr($lpData, $i * 3, 3);
+                       if (strlen($rgb) < 3) {
+                               return false;
+                       }
+
+                       $this->m_arColors[] = (ord($rgb{2}) << 16) + (ord($rgb{1}) << 8) + ord($rgb{0});
+                       $this->m_nColors++;
+               }
+
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function toString()
+       {
+               $ret = '';
+
+               for ($i = 0; $i < $this->m_nColors; $i++) {
+                       $ret .=
+                               chr(($this->m_arColors[$i] & 0x000000FF))       . // R
+                               chr(($this->m_arColors[$i] & 0x0000FF00) >>  8) . // G
+                               chr(($this->m_arColors[$i] & 0x00FF0000) >> 16);  // B
+               }
+
+               return $ret;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function toRGBQuad()
+       {
+               $ret = '';
+
+               for ($i = 0; $i < $this->m_nColors; $i++) {
+                       $ret .=
+                               chr(($this->m_arColors[$i] & 0x00FF0000) >> 16) . // B
+                               chr(($this->m_arColors[$i] & 0x0000FF00) >>  8) . // G
+                               chr(($this->m_arColors[$i] & 0x000000FF))       . // R
+                               "\x00";
+               }
+
+               return $ret;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function colorIndex($rgb)
+       {
+               $rgb  = intval($rgb) & 0xFFFFFF;
+               $r1   = ($rgb & 0x0000FF);
+               $g1   = ($rgb & 0x00FF00) >>  8;
+               $b1   = ($rgb & 0xFF0000) >> 16;
+               $idx  = -1;
+
+               for ($i = 0; $i < $this->m_nColors; $i++) {
+                       $r2 = ($this->m_arColors[$i] & 0x000000FF);
+                       $g2 = ($this->m_arColors[$i] & 0x0000FF00) >>  8;
+                       $b2 = ($this->m_arColors[$i] & 0x00FF0000) >> 16;
+                       $d  = abs($r2 - $r1) + abs($g2 - $g1) + abs($b2 - $b1);
+
+                       if (($idx == -1) || ($d < $dif)) {
+                               $idx = $i;
+                               $dif = $d;
+                       }
+               }
+
+               return $idx;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFFILEHEADER
+{
+       var $m_lpVer;
+       var $m_nWidth;
+       var $m_nHeight;
+       var $m_bGlobalClr;
+       var $m_nColorRes;
+       var $m_bSorted;
+       var $m_nTableSize;
+       var $m_nBgColor;
+       var $m_nPixelRatio;
+       var $m_colorTable;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFFILEHEADER()
+       {
+               unSet($this->m_lpVer);
+               unSet($this->m_nWidth);
+               unSet($this->m_nHeight);
+               unSet($this->m_bGlobalClr);
+               unSet($this->m_nColorRes);
+               unSet($this->m_bSorted);
+               unSet($this->m_nTableSize);
+               unSet($this->m_nBgColor);
+               unSet($this->m_nPixelRatio);
+               unSet($this->m_colorTable);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($lpData, &$hdrLen)
+       {
+               $hdrLen = 0;
+
+               $this->m_lpVer = substr($lpData, 0, 6);
+               if (($this->m_lpVer <> 'GIF87a') && ($this->m_lpVer <> 'GIF89a')) {
+                       return false;
+               }
+
+               $this->m_nWidth  = $this->w2i(substr($lpData, 6, 2));
+               $this->m_nHeight = $this->w2i(substr($lpData, 8, 2));
+               if (!$this->m_nWidth || !$this->m_nHeight) {
+                       return false;
+               }
+
+               $b = ord(substr($lpData, 10, 1));
+               $this->m_bGlobalClr  = ($b & 0x80) ? true : false;
+               $this->m_nColorRes   = ($b & 0x70) >> 4;
+               $this->m_bSorted     = ($b & 0x08) ? true : false;
+               $this->m_nTableSize  = 2 << ($b & 0x07);
+               $this->m_nBgColor    = ord(substr($lpData, 11, 1));
+               $this->m_nPixelRatio = ord(substr($lpData, 12, 1));
+               $hdrLen = 13;
+
+               if ($this->m_bGlobalClr) {
+                       $this->m_colorTable = new CGIFCOLORTABLE();
+                       if (!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
+                               return false;
+                       }
+                       $hdrLen += 3 * $this->m_nTableSize;
+               }
+
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function w2i($str)
+       {
+               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFIMAGEHEADER
+{
+       var $m_nLeft;
+       var $m_nTop;
+       var $m_nWidth;
+       var $m_nHeight;
+       var $m_bLocalClr;
+       var $m_bInterlace;
+       var $m_bSorted;
+       var $m_nTableSize;
+       var $m_colorTable;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFIMAGEHEADER()
+       {
+               unSet($this->m_nLeft);
+               unSet($this->m_nTop);
+               unSet($this->m_nWidth);
+               unSet($this->m_nHeight);
+               unSet($this->m_bLocalClr);
+               unSet($this->m_bInterlace);
+               unSet($this->m_bSorted);
+               unSet($this->m_nTableSize);
+               unSet($this->m_colorTable);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($lpData, &$hdrLen)
+       {
+               $hdrLen = 0;
+
+               $this->m_nLeft   = $this->w2i(substr($lpData, 0, 2));
+               $this->m_nTop    = $this->w2i(substr($lpData, 2, 2));
+               $this->m_nWidth  = $this->w2i(substr($lpData, 4, 2));
+               $this->m_nHeight = $this->w2i(substr($lpData, 6, 2));
+
+               if (!$this->m_nWidth || !$this->m_nHeight) {
+                       return false;
+               }
+
+               $b = ord($lpData{8});
+               $this->m_bLocalClr  = ($b & 0x80) ? true : false;
+               $this->m_bInterlace = ($b & 0x40) ? true : false;
+               $this->m_bSorted    = ($b & 0x20) ? true : false;
+               $this->m_nTableSize = 2 << ($b & 0x07);
+               $hdrLen = 9;
+
+               if ($this->m_bLocalClr) {
+                       $this->m_colorTable = new CGIFCOLORTABLE();
+                       if (!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
+                               return false;
+                       }
+                       $hdrLen += 3 * $this->m_nTableSize;
+               }
+
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function w2i($str)
+       {
+               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFIMAGE
+{
+       var $m_disp;
+       var $m_bUser;
+       var $m_bTrans;
+       var $m_nDelay;
+       var $m_nTrans;
+       var $m_lpComm;
+       var $m_gih;
+       var $m_data;
+       var $m_lzw;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function CGIFIMAGE()
+       {
+               unSet($this->m_disp);
+               unSet($this->m_bUser);
+               unSet($this->m_bTrans);
+               unSet($this->m_nDelay);
+               unSet($this->m_nTrans);
+               unSet($this->m_lpComm);
+               unSet($this->m_data);
+               $this->m_gih = new CGIFIMAGEHEADER();
+               $this->m_lzw = new CGIFLZW();
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($data, &$datLen)
+       {
+               $datLen = 0;
+
+               while (true) {
+                       $b = ord($data{0});
+                       $data = substr($data, 1);
+                       $datLen++;
+
+                       switch($b) {
+                       case 0x21: // Extension
+                               if (!$this->skipExt($data, $len = 0)) {
+                                       return false;
+                               }
+                               $datLen += $len;
+                               break;
+
+                       case 0x2C: // Image
+                               // LOAD HEADER & COLOR TABLE
+                               if (!$this->m_gih->load($data, $len = 0)) {
+                                       return false;
+                               }
+                               $data = substr($data, $len);
+                               $datLen += $len;
+
+                               // ALLOC BUFFER
+                               if (!($this->m_data = $this->m_lzw->deCompress($data, $len = 0))) {
+                                       return false;
+                               }
+                               $data = substr($data, $len);
+                               $datLen += $len;
+
+                               if ($this->m_gih->m_bInterlace) {
+                                       $this->deInterlace();
+                               }
+                               return true;
+
+                       case 0x3B: // EOF
+                       default:
+                               return false;
+                       }
+               }
+               return false;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function skipExt(&$data, &$extLen)
+       {
+               $extLen = 0;
+
+               $b = ord($data{0});
+               $data = substr($data, 1);
+               $extLen++;
+
+               switch($b) {
+               case 0xF9: // Graphic Control
+                       $b = ord($data{1});
+                       $this->m_disp   = ($b & 0x1C) >> 2;
+                       $this->m_bUser  = ($b & 0x02) ? true : false;
+                       $this->m_bTrans = ($b & 0x01) ? true : false;
+                       $this->m_nDelay = $this->w2i(substr($data, 2, 2));
+                       $this->m_nTrans = ord($data{4});
+                       break;
+
+               case 0xFE: // Comment
+                       $this->m_lpComm = substr($data, 1, ord($data{0}));
+                       break;
+
+               case 0x01: // Plain text
+                       break;
+
+               case 0xFF: // Application
+                       break;
+               }
+
+               // SKIP DEFAULT AS DEFS MAY CHANGE
+               $b = ord($data{0});
+               $data = substr($data, 1);
+               $extLen++;
+               while ($b > 0) {
+                       $data = substr($data, $b);
+                       $extLen += $b;
+                       $b    = ord($data{0});
+                       $data = substr($data, 1);
+                       $extLen++;
+               }
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function w2i($str)
+       {
+               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function deInterlace()
+       {
+               $data = $this->m_data;
+
+               for ($i = 0; $i < 4; $i++) {
+                       switch($i) {
+                       case 0:
+                               $s = 8;
+                               $y = 0;
+                               break;
+
+                       case 1:
+                               $s = 8;
+                               $y = 4;
+                               break;
+
+                       case 2:
+                               $s = 4;
+                               $y = 2;
+                               break;
+
+                       case 3:
+                               $s = 2;
+                               $y = 1;
+                               break;
+                       }
+
+                       for (; $y < $this->m_gih->m_nHeight; $y += $s) {
+                               $lne = substr($this->m_data, 0, $this->m_gih->m_nWidth);
+                               $this->m_data = substr($this->m_data, $this->m_gih->m_nWidth);
+
+                               $data =
+                                       substr($data, 0, $y * $this->m_gih->m_nWidth) .
+                                       $lne .
+                                       substr($data, ($y + 1) * $this->m_gih->m_nWidth);
+                       }
+               }
+
+               $this->m_data = $data;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIF
+{
+       var $m_gfh;
+       var $m_lpData;
+       var $m_img;
+       var $m_bLoaded;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIF()
+       {
+               $this->m_gfh     = new CGIFFILEHEADER();
+               $this->m_img     = new CGIFIMAGE();
+               $this->m_lpData  = '';
+               $this->m_bLoaded = false;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function loadFile($lpszFileName, $iIndex)
+       {
+               if ($iIndex < 0) {
+                       return false;
+               }
+
+               // READ FILE
+               if (!($fh = @fopen($lpszFileName, 'rb'))) {
+                       return false;
+               }
+               $this->m_lpData = @fRead($fh, @fileSize($lpszFileName));
+               fclose($fh);
+
+               // GET FILE HEADER
+               if (!$this->m_gfh->load($this->m_lpData, $len = 0)) {
+                       return false;
+               }
+               $this->m_lpData = substr($this->m_lpData, $len);
+
+               do {
+                       if (!$this->m_img->load($this->m_lpData, $imgLen = 0)) {
+                               return false;
+                       }
+                       $this->m_lpData = substr($this->m_lpData, $imgLen);
+               }
+               while ($iIndex-- > 0);
+
+               $this->m_bLoaded = true;
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function getSize($lpszFileName, &$width, &$height)
+       {
+               if (!($fh = @fopen($lpszFileName, 'rb'))) {
+                       return false;
+               }
+               $data = @fRead($fh, @fileSize($lpszFileName));
+               @fclose($fh);
+
+               $gfh = new CGIFFILEHEADER();
+               if (!$gfh->load($data, $len = 0)) {
+                       return false;
+               }
+
+               $width  = $gfh->m_nWidth;
+               $height = $gfh->m_nHeight;
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function getBmp($bgColor)
+       {
+               $out = '';
+
+               if (!$this->m_bLoaded) {
+                       return false;
+               }
+
+               // PREPARE COLOR TABLE (RGBQUADs)
+               if ($this->m_img->m_gih->m_bLocalClr) {
+                       $nColors = $this->m_img->m_gih->m_nTableSize;
+                       $rgbq    = $this->m_img->m_gih->m_colorTable->toRGBQuad();
+                       if ($bgColor != -1) {
+                               $bgColor = $this->m_img->m_gih->m_colorTable->colorIndex($bgColor);
+                       }
+               } elseif ($this->m_gfh->m_bGlobalClr) {
+                       $nColors = $this->m_gfh->m_nTableSize;
+                       $rgbq    = $this->m_gfh->m_colorTable->toRGBQuad();
+                       if ($bgColor != -1) {
+                               $bgColor = $this->m_gfh->m_colorTable->colorIndex($bgColor);
+                       }
+               } else {
+                       $nColors =  0;
+                       $bgColor = -1;
+               }
+
+               // PREPARE BITMAP BITS
+               $data = $this->m_img->m_data;
+               $nPxl = ($this->m_gfh->m_nHeight - 1) * $this->m_gfh->m_nWidth;
+               $bmp  = '';
+               $nPad = ($this->m_gfh->m_nWidth % 4) ? 4 - ($this->m_gfh->m_nWidth % 4) : 0;
+               for ($y = 0; $y < $this->m_gfh->m_nHeight; $y++) {
+                       for ($x = 0; $x < $this->m_gfh->m_nWidth; $x++, $nPxl++) {
+                               if (
+                                       ($x >= $this->m_img->m_gih->m_nLeft) &&
+                                       ($y >= $this->m_img->m_gih->m_nTop) &&
+                                       ($x <  ($this->m_img->m_gih->m_nLeft + $this->m_img->m_gih->m_nWidth)) &&
+                                       ($y <  ($this->m_img->m_gih->m_nTop  + $this->m_img->m_gih->m_nHeight))) {
+                                       // PART OF IMAGE
+                                       if (@$this->m_img->m_bTrans && (ord($data{$nPxl}) == $this->m_img->m_nTrans)) {
+                                               // TRANSPARENT -> BACKGROUND
+                                               if ($bgColor == -1) {
+                                                       $bmp .= chr($this->m_gfh->m_nBgColor);
+                                               } else {
+                                                       $bmp .= chr($bgColor);
+                                               }
+                                       } else {
+                                               $bmp .= $data{$nPxl};
+                                       }
+                               } else {
+                                       // BACKGROUND
+                                       if ($bgColor == -1) {
+                                               $bmp .= chr($this->m_gfh->m_nBgColor);
+                                       } else {
+                                               $bmp .= chr($bgColor);
+                                       }
+                               }
+                       }
+                       $nPxl -= $this->m_gfh->m_nWidth << 1;
+
+                       // ADD PADDING
+                       for ($x = 0; $x < $nPad; $x++) {
+                               $bmp .= "\x00";
+                       }
+               }
+
+               // BITMAPFILEHEADER
+               $out .= 'BM';
+               $out .= $this->dword(14 + 40 + ($nColors << 2) + strlen($bmp));
+               $out .= "\x00\x00";
+               $out .= "\x00\x00";
+               $out .= $this->dword(14 + 40 + ($nColors << 2));
+
+               // BITMAPINFOHEADER
+               $out .= $this->dword(40);
+               $out .= $this->dword($this->m_gfh->m_nWidth);
+               $out .= $this->dword($this->m_gfh->m_nHeight);
+               $out .= "\x01\x00";
+               $out .= "\x08\x00";
+               $out .= "\x00\x00\x00\x00";
+               $out .= "\x00\x00\x00\x00";
+               $out .= "\x12\x0B\x00\x00";
+               $out .= "\x12\x0B\x00\x00";
+               $out .= $this->dword($nColors % 256);
+               $out .= "\x00\x00\x00\x00";
+
+               // COLOR TABLE
+               if ($nColors > 0) {
+                       $out .= $rgbq;
+               }
+
+               // DATA
+               $out .= $bmp;
+
+               return $out;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function getPng($bgColor)
+       {
+               $out = '';
+
+               if (!$this->m_bLoaded) {
+                       return false;
+               }
+
+               // PREPARE COLOR TABLE (RGBQUADs)
+               if ($this->m_img->m_gih->m_bLocalClr) {
+                       $nColors = $this->m_img->m_gih->m_nTableSize;
+                       $pal     = $this->m_img->m_gih->m_colorTable->toString();
+                       if ($bgColor != -1) {
+                               $bgColor = $this->m_img->m_gih->m_colorTable->colorIndex($bgColor);
+                       }
+               } elseif ($this->m_gfh->m_bGlobalClr) {
+                       $nColors = $this->m_gfh->m_nTableSize;
+                       $pal     = $this->m_gfh->m_colorTable->toString();
+                       if ($bgColor != -1) {
+                               $bgColor = $this->m_gfh->m_colorTable->colorIndex($bgColor);
+                       }
+               } else {
+                       $nColors =  0;
+                       $bgColor = -1;
+               }
+
+               // PREPARE BITMAP BITS
+               $data = $this->m_img->m_data;
+               $nPxl = 0;
+               $bmp  = '';
+               for ($y = 0; $y < $this->m_gfh->m_nHeight; $y++) {
+                       $bmp .= "\x00";
+                       for ($x = 0; $x < $this->m_gfh->m_nWidth; $x++, $nPxl++) {
+                               if (
+                                       ($x >= $this->m_img->m_gih->m_nLeft) &&
+                                       ($y >= $this->m_img->m_gih->m_nTop) &&
+                                       ($x <  ($this->m_img->m_gih->m_nLeft + $this->m_img->m_gih->m_nWidth)) &&
+                                       ($y <  ($this->m_img->m_gih->m_nTop  + $this->m_img->m_gih->m_nHeight))) {
+                                       // PART OF IMAGE
+                                       $bmp .= $data{$nPxl};
+                               } else {
+                                       // BACKGROUND
+                                       if ($bgColor == -1) {
+                                               $bmp .= chr($this->m_gfh->m_nBgColor);
+                                       } else {
+                                               $bmp .= chr($bgColor);
+                                       }
+                               }
+                       }
+               }
+               $bmp = gzcompress($bmp, 9);
+
+               ///////////////////////////////////////////////////////////////////////
+               // SIGNATURE
+               $out .= "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A";
+               ///////////////////////////////////////////////////////////////////////
+               // HEADER
+               $out .= "\x00\x00\x00\x0D";
+               $tmp  = 'IHDR';
+               $tmp .= $this->ndword($this->m_gfh->m_nWidth);
+               $tmp .= $this->ndword($this->m_gfh->m_nHeight);
+               $tmp .= "\x08\x03\x00\x00\x00";
+               $out .= $tmp;
+               $out .= $this->ndword(crc32($tmp));
+               ///////////////////////////////////////////////////////////////////////
+               // PALETTE
+               if ($nColors > 0) {
+                       $out .= $this->ndword($nColors * 3);
+                       $tmp  = 'PLTE';
+                       $tmp .= $pal;
+                       $out .= $tmp;
+                       $out .= $this->ndword(crc32($tmp));
+               }
+               ///////////////////////////////////////////////////////////////////////
+               // TRANSPARENCY
+               if (@$this->m_img->m_bTrans && ($nColors > 0)) {
+                       $out .= $this->ndword($nColors);
+                       $tmp  = 'tRNS';
+                       for ($i = 0; $i < $nColors; $i++) {
+                               $tmp .= ($i == $this->m_img->m_nTrans) ? "\x00" : "\xFF";
+                       }
+                       $out .= $tmp;
+                       $out .= $this->ndword(crc32($tmp));
+               }
+               ///////////////////////////////////////////////////////////////////////
+               // DATA BITS
+               $out .= $this->ndword(strlen($bmp));
+               $tmp  = 'IDAT';
+               $tmp .= $bmp;
+               $out .= $tmp;
+               $out .= $this->ndword(crc32($tmp));
+               ///////////////////////////////////////////////////////////////////////
+               // END OF FILE
+               $out .= "\x00\x00\x00\x00IEND\xAE\x42\x60\x82";
+
+               return $out;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // Added by James Heinrich <info@silisoftware.com> - January 5, 2003
+
+       // Takes raw image data and plots it pixel-by-pixel on a new GD image and returns that
+       // It's extremely slow, but the only solution when ImageCreateFromString() fails
+       function getGD_PixelPlotterVersion()
+       {
+               if (!$this->m_bLoaded) {
+                       return false;
+               }
+
+               // PREPARE COLOR TABLE (RGBQUADs)
+               if ($this->m_img->m_gih->m_bLocalClr) {
+                       $pal = $this->m_img->m_gih->m_colorTable->toString();
+               } elseif ($this->m_gfh->m_bGlobalClr) {
+                       $pal = $this->m_gfh->m_colorTable->toString();
+               } else {
+                       die('No color table available in getGD_PixelPlotterVersion()');
+               }
+
+               $PlottingIMG = ImageCreate($this->m_gfh->m_nWidth, $this->m_gfh->m_nHeight);
+               $NumColorsInPal = floor(strlen($pal) / 3);
+               for ($i = 0; $i < $NumColorsInPal; $i++) {
+                       $ThisImageColor[$i] = ImageColorAllocate(
+                                                                       $PlottingIMG,
+                                                                       ord($pal{(($i * 3) + 0)}),
+                                                                       ord($pal{(($i * 3) + 1)}),
+                                                                       ord($pal{(($i * 3) + 2)}));
+               }
+
+               // PREPARE BITMAP BITS
+               $data = $this->m_img->m_data;
+               $nPxl = ($this->m_gfh->m_nHeight - 1) * $this->m_gfh->m_nWidth;
+               for ($y = 0; $y < $this->m_gfh->m_nHeight; $y++) {
+                       set_time_limit(30);
+                       for ($x = 0; $x < $this->m_gfh->m_nWidth; $x++, $nPxl++) {
+                               if (
+                                       ($x >= $this->m_img->m_gih->m_nLeft) &&
+                                       ($y >= $this->m_img->m_gih->m_nTop) &&
+                                       ($x <  ($this->m_img->m_gih->m_nLeft + $this->m_img->m_gih->m_nWidth)) &&
+                                       ($y <  ($this->m_img->m_gih->m_nTop  + $this->m_img->m_gih->m_nHeight))) {
+                                       // PART OF IMAGE
+                                       if (@$this->m_img->m_bTrans && (ord($data{$nPxl}) == $this->m_img->m_nTrans)) {
+                                               ImageSetPixel($PlottingIMG, $x, $this->m_gfh->m_nHeight - $y - 1, $ThisImageColor[$this->m_gfh->m_nBgColor]);
+                                       } else {
+                                               ImageSetPixel($PlottingIMG, $x, $this->m_gfh->m_nHeight - $y - 1, $ThisImageColor[ord($data{$nPxl})]);
+                                       }
+                               } else {
+                                       // BACKGROUND
+                                       ImageSetPixel($PlottingIMG, $x, $this->m_gfh->m_nHeight - $y - 1, $ThisImageColor[$this->m_gfh->m_nBgColor]);
+                               }
+                       }
+                       $nPxl -= $this->m_gfh->m_nWidth << 1;
+
+               }
+
+               return $PlottingIMG;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function dword($val)
+       {
+               $val = intval($val);
+               return chr($val & 0xFF).chr(($val & 0xFF00) >> 8).chr(($val & 0xFF0000) >> 16).chr(($val & 0xFF000000) >> 24);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function ndword($val)
+       {
+               $val = intval($val);
+               return chr(($val & 0xFF000000) >> 24).chr(($val & 0xFF0000) >> 16).chr(($val & 0xFF00) >> 8).chr($val & 0xFF);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function width()
+       {
+               return $this->m_gfh->m_nWidth;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function height()
+       {
+               return $this->m_gfh->m_nHeight;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function comment()
+       {
+               return $this->m_img->m_lpComm;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function loaded()
+       {
+               return $this->m_bLoaded;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.unsharp.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/phpThumb/phpthumb.unsharp.php
new file mode 100644 (file)
index 0000000..cc32d93
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+//////////////////////////////////////////////////////////////
+////                                                      ////
+////              p h p U n s h a r p M a s k             ////
+////                                                      ////
+////    Unsharp mask algorithm by Torstein Hønsi 2003.    ////
+////               thoensi_at_netcom_dot_no               ////
+////               Please leave this notice.              ////
+////                                                      ////
+//////////////////////////////////////////////////////////////
+/// From: http://vikjavev.no/hovudsida/umtestside.php       //
+//                                                          //
+//  Reformatted by James Heinrich <info@silisoftware.com>   //
+//  for use in phpThumb() on 3 February 2003.               //
+//                                                          //
+//  phpThumb() is found at http://phpthumb.sourceforge.net ///
+//////////////////////////////////////////////////////////////
+
+/*
+WARNING! Due to a known bug in PHP 4.3.2 this script is not working well in this version.
+The sharpened images get too dark. The bug is fixed in version 4.3.3.
+
+Unsharp masking is a traditional darkroom technique that has proven very suitable for
+digital imaging. The principle of unsharp masking is to create a blurred copy of the image
+and compare it to the underlying original. The difference in colour values
+between the two images is greatest for the pixels near sharp edges. When this
+difference is subtracted from the original image, the edges will be
+accentuated.
+
+The Amount parameter simply says how much of the effect you want. 100 is 'normal'.
+Radius is the radius of the blurring circle of the mask. 'Threshold' is the least
+difference in colour values that is allowed between the original and the mask. In practice
+this means that low-contrast areas of the picture are left unrendered whereas edges
+are treated normally. This is good for pictures of e.g. skin or blue skies.
+
+Any suggenstions for improvement of the algorithm, expecially regarding the speed
+and the roundoff errors in the Gaussian blur process, are welcome.
+*/
+
+class phpUnsharpMask {
+
+       function applyUnsharpMask(&$img, $amount, $radius, $threshold) {
+
+               // $img is an image that is already created within php using
+               // imgcreatetruecolor. No url! $img must be a truecolor image.
+
+               // Attempt to calibrate the parameters to Photoshop:
+               $amount = min($amount, 500);
+               $amount = $amount * 0.016;
+               if ($amount == 0) {
+                       return true;
+               }
+
+               $radius = min($radius, 50);
+               $radius = $radius * 2;
+
+               $threshold = min($threshold, 255);
+
+               $radius = abs(round($radius));  // Only integers make sense.
+               if ($radius == 0) {
+                       return true;
+               }
+
+               $w = ImageSX($img);
+               $h = ImageSY($img);
+               $imgCanvas  = ImageCreateTrueColor($w, $h);
+               $imgCanvas2 = ImageCreateTrueColor($w, $h);
+               $imgBlur    = ImageCreateTrueColor($w, $h);
+               $imgBlur2   = ImageCreateTrueColor($w, $h);
+               ImageCopy($imgCanvas,  $img, 0, 0, 0, 0, $w, $h);
+               ImageCopy($imgCanvas2, $img, 0, 0, 0, 0, $w, $h);
+
+
+               // Gaussian blur matrix:
+               //
+               //      1       2       1
+               //      2       4       2
+               //      1       2       1
+               //
+               //////////////////////////////////////////////////
+
+               // Move copies of the image around one pixel at the time and merge them with weight
+               // according to the matrix. The same matrix is simply repeated for higher radii.
+               for ($i = 0; $i < $radius; $i++)        {
+                       ImageCopy     ($imgBlur, $imgCanvas, 0, 0, 1, 1, $w - 1, $h - 1);            // up left
+                       ImageCopyMerge($imgBlur, $imgCanvas, 1, 1, 0, 0, $w,     $h,     50);        // down right
+                       ImageCopyMerge($imgBlur, $imgCanvas, 0, 1, 1, 0, $w - 1, $h,     33.33333);  // down left
+                       ImageCopyMerge($imgBlur, $imgCanvas, 1, 0, 0, 1, $w,     $h - 1, 25);        // up right
+                       ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 1, 0, $w - 1, $h,     33.33333);  // left
+                       ImageCopyMerge($imgBlur, $imgCanvas, 1, 0, 0, 0, $w,     $h,     25);        // right
+                       ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 0, 1, $w,     $h - 1, 20 );       // up
+                       ImageCopyMerge($imgBlur, $imgCanvas, 0, 1, 0, 0, $w,     $h,     16.666667); // down
+                       ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 0, 0, $w,     $h,     50);        // center
+                       ImageCopy     ($imgCanvas, $imgBlur, 0, 0, 0, 0, $w,     $h);
+
+                       // During the loop above the blurred copy darkens, possibly due to a roundoff
+                       // error. Therefore the sharp picture has to go through the same loop to
+                       // produce a similar image for comparison. This is not a good thing, as processing
+                       // time increases heavily.
+                       ImageCopy     ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 20 );
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 16.666667);
+                       ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50);
+                       ImageCopy     ($imgCanvas2, $imgBlur2, 0, 0, 0, 0, $w, $h);
+               }
+
+               // Calculate the difference between the blurred pixels and the original
+               // and set the pixels
+               for ($x = 0; $x < $w; $x++)     { // each row
+                       for ($y = 0; $y < $h; $y++)     { // each pixel
+
+                               $rgbOrig = ImageColorAt($imgCanvas2, $x, $y);
+                               $rOrig = (($rgbOrig >> 16) & 0xFF);
+                               $gOrig = (($rgbOrig >>  8) & 0xFF);
+                               $bOrig =  ($rgbOrig        & 0xFF);
+
+                               $rgbBlur = ImageColorAt($imgCanvas, $x, $y);
+                               $rBlur = (($rgbBlur >> 16) & 0xFF);
+                               $gBlur = (($rgbBlur >>  8) & 0xFF);
+                               $bBlur =  ($rgbBlur        & 0xFF);
+
+                               // When the masked pixels differ less from the original
+                               // than the threshold specifies, they are set to their original value.
+                               $rNew = (abs($rOrig - $rBlur) >= $threshold) ? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig)) : $rOrig;
+                               $gNew = (abs($gOrig - $gBlur) >= $threshold) ? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig)) : $gOrig;
+                               $bNew = (abs($bOrig - $bBlur) >= $threshold) ? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig)) : $bOrig;
+
+                               if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew)) {
+                                       $pixCol = ImageColorAllocate($img, $rNew, $gNew, $bNew);
+                                       ImageSetPixel($img, $x, $y, $pixCol);
+                               }
+                       }
+               }
+               ImageDestroy($imgCanvas);
+               ImageDestroy($imgCanvas2);
+               ImageDestroy($imgBlur);
+               ImageDestroy($imgBlur2);
+
+               return true;
+       }
+
+}
+
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/popup.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/popup.php
new file mode 100644 (file)
index 0000000..4f13bc0
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser dialog - popup
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.0                   Date: 06/14/2005
+       // ================================================
+
+       if ( get_magic_quotes_gpc() ) {
+               $_GET['url'] = stripslashes($_GET['url']);
+       }
+       $src   = @$_REQUEST['url'];
+       $clTxt = (isset($_REQUEST['clTxt']) ? $_REQUEST['clTxt'] : $cfg['clTxt']);              
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta http-equiv="imagetoolbar" content="no" />
+<title>iBrowser Popup</title>
+<script language="JavaScript" type="text/JavaScript">
+       function getRefToDivMod( divID, oDoc ) {
+               if( !oDoc ) { oDoc = document; }
+               if( document.layers ) {
+                       if( oDoc.layers[divID] ) { return oDoc.layers[divID]; } else {
+                               for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) {
+                                       y = getRefToDivNest(divID,oDoc.layers[x].document); }
+                               return y; } }
+               if( document.getElementById ) { return oDoc.getElementById(divID); }
+               if( document.all ) { return oDoc.all[divID]; }
+               return document[divID];
+       }
+
+       function resizeWinTo(idOfDiv) {
+               window.focus();
+               var oH = getRefToDivMod(idOfDiv);
+               if (!oH) {
+                       return false;
+               }
+               var oW = oH.clip ? oH.clip.width : oH.offsetWidth;
+               var oH = oH.clip ? oH.clip.height : oH.offsetHeight;
+               if(!oH) {
+                       return false;
+               }
+               var x = window; x.resizeTo( oW + 200, oH + 200 );
+               var myW = 0, myH = 0, d = x.document.documentElement, b = x.document.body;
+               if( x.innerWidth ) { myW = x.innerWidth; myH = x.innerHeight; }
+               else if( d && d.clientWidth ) { myW = d.clientWidth; myH = d.clientHeight; }
+               else if( b && b.clientWidth ) { myW = b.clientWidth; myH = b.clientHeight; }
+               if( window.opera && !document.childNodes ) { myW += 16; }
+               x.resizeTo( oW + ( ( oW + 200 ) - myW ), oH + ( (oH + 200 ) - myH ) );
+       }
+// ============================================================
+// = load/hide message, date: 02/08/2005                      =
+// ============================================================
+       function hideloadmessage() {
+               document.getElementById('dialogLoadMessage').style.display = 'none'
+       }
+</script>
+<style type="text/css">
+<!--
+body {
+       margin: 0px;
+       padding: 0px;
+       background-color: #efefef;
+}
+#dialogLoadMessage {
+       position:absolute; 
+       z-index:1000; 
+       display:block;
+       width:100%; 
+       height:100%;
+}
+#loadMessage { 
+       border:1px solid #cccccc; 
+       padding: 10px; 
+       width: 150px; 
+       color:#666666;
+       background-color:#efefef; 
+       font-family: verdana,arial,helvetica,sans-serif; 
+       font-size:12px; 
+       font-weight:bold
+}
+-->
+</style>
+</head>
+<body onload="resizeWinTo('iDiv'); hideloadmessage();">
+<?php include dirname(__FILE__) . '/loadmsg.php'; ?>
+       <div id="iDiv" style="position:absolute; left:0px; top:0px;"><img onclick="window.close();" src="<?php echo $src; ?>" border="0" alt="<?php echo $clTxt; ?>" title="<?php echo $clTxt; ?>" style="cursor: pointer;"/></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/random.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/random.php
new file mode 100644 (file)
index 0000000..0f94e5e
--- /dev/null
@@ -0,0 +1,95 @@
+<?php
+//////////////////////////////////////////////////////////////
+///  phpThumb() by James Heinrich <info@silisoftware.com>   //
+//        available at http://phpthumb.sourceforge.net     ///
+//////////////////////////////////////////////////////////////
+///                                                         //
+// phpThumb.demo.random.php                                 //
+// James Heinrich <info@silisoftware.com>                   //
+//                                                          //
+// Display a random image from a specified directory.       //
+// Run with no parameters for usage instructions.           //
+//                                                          //
+//////////////////////////////////////////////////////////////
+
+function SelectRandomImage($dirname='.', $portrait=true, $landscape=true, $square=true) {
+       // return a random image filename from $dirname
+       // the last 3 parameters determine what aspect ratio of images
+       // may be returned
+       $possibleimages = array();
+       if ($dh = opendir($dirname)) {
+               while ($file = readdir($dh)) {
+                       if (is_file($dirname.'/'.$file) && eregi('\.(jpg|jpeg|gif|png|tiff|bmp)$', $file)) {
+                               if ($gis = @GetImageSize($dirname.'/'.$file)) {
+                                       if ($portrait && ($gis[0] < $gis[1])) {
+                                               // portrait
+                                               $possibleimages[] = $file;
+                                       } elseif ($landscape && ($gis[0] > $gis[1])) {
+                                               // landscape
+                                               $possibleimages[] = $file;
+                                       } elseif ($square) {
+                                               // square
+                                               $possibleimages[] = $file;
+                                       }
+                               }
+                       }
+               }
+               closedir($dh);
+       }
+       if (empty($possibleimages)) {
+               return false;
+       }
+       if (phpversion() < '4.2.0') {
+               mt_srand(time());
+       }
+       $randkey = mt_rand(0, count($possibleimages) - 1);
+       return realpath($dirname.'/'.$possibleimages[$randkey]);
+}
+
+if (@$_REQUEST['dir']) {
+       if (is_dir($_REQUEST['dir'])) {
+
+               if (!@$_REQUEST['o']) {
+                       $_REQUEST['o'] = 'PLS';
+               }
+               $_REQUEST['o'] = strtoupper($_REQUEST['o']);
+               $portrait  = (strpos(@$_REQUEST['o'], 'P') !== false);
+               $landscape = (strpos(@$_REQUEST['o'], 'L') !== false);
+               $square    = (strpos(@$_REQUEST['o'], 'S') !== false);
+               $randomSRC = SelectRandomImage($_REQUEST['dir'], $portrait, $landscape, $square);
+               if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
+                       $randomSRC = str_replace('\\', '/', eregi_replace('^'.realpath(@$_SERVER['DOCUMENT_ROOT']), '', realpath($randomSRC)));
+               } else {
+                       $randomSRC = str_replace(realpath(@$_SERVER['DOCUMENT_ROOT']), '', realpath($randomSRC));
+               }
+
+               $otherParams = array();
+               foreach ($_GET as $key => $value) {
+                       if (($key == 'dir') || ($key == 'o')) {
+                               continue;
+                       }
+                       if (is_array($value)) {
+                               foreach ($value as $vkey => $vvalue) {
+                                       $otherParams[] = urlencode($key).'['.urlencode($vkey).']='.urlencode($vvalue);
+                               }
+                       } else {
+                               $otherParams[] = urlencode($key).'='.urlencode($value);
+                       }
+               }
+               header('Location: ./phpThumb/phpThumb.php?src='.urlencode($randomSRC).'&'.implode('&', $otherParams));
+               exit;
+
+       } else {
+               die($_REQUEST['dir'].' is not a directory');
+       }
+
+} else {
+
+       echo '<html><body>Usage: <b>'.basename($_SERVER['PHP_SELF']).'?dir=<i>&lt;directory&gt;</i>&amp;<i>&lt;phpThumb parameters&gt;</i></b>&amp;o=<i>(P|L|S)</i><br><br>Examples:<ul>';
+       echo '<li>'.basename($_SERVER['PHP_SELF']).'?./images/&o=L <i>(landscape images only)</i></li>';
+       echo '<li>'.basename($_SERVER['PHP_SELF']).'?./images/&o=PS <i>(portrait or square images only)</i></li>';
+       echo '</ul></body></html>';
+
+}
+
+?>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/rdirs.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/rdirs.php
new file mode 100644 (file)
index 0000000..4d41878
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser - creates image libraries dynamically
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.0                   Date: 05/10/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // build array of dirs          
+       $files = array();       
+       foreach ($cfg['ilibs_dir'] as $dir) {           
+               if ($cfg['ilibs_dir_show'] == true) {
+                       $files[] = array('value' => absPath(str_replace($cfg['root_dir'],'',$dir)), 'text' => ucfirst(ereg_replace("[^a-z0-9]", ' ', basename($dir))));                                         
+               }               
+               if(dirlist($files, str_replace('//','/',$cfg[ 'root_dir'] . $dir))) { // get dirlist
+                       $cfg['ilibs'] = $files;                 
+               } else {
+                       echo 'directory error';
+                       return false;
+               }       
+       }       
+
+       //-------------------------------------------------------------------------
+       // creates array of directories and sub-directories
+       function dirlist(&$files,$dir) {                
+               //global $files;
+               global $cfg;
+               if ($handle = @opendir($dir)) {                 
+                       while (($file = readdir($handle))) {                            
+                               if ($file == '.' || $file == '..') {
+                                       continue;                                       
+                               }                               
+                               $fullpath = str_replace('//','/',$dir . '/' . $file);   
+                                                               
+                               if (is_dir($fullpath)) {                                                
+                                       $indent = str_repeat('&nbsp;', count(explode('/', trim(str_replace($cfg['root_dir'],'',$dir), '/')))*2);
+                                       $files[] = array('value' => absPath(str_replace( $cfg['root_dir'],'',$fullpath ) . '/'), 'text' => $indent . ucfirst(ereg_replace("[^a-z0-9]", ' ', basename($fullpath))));     
+                                       dirlist($files,$fullpath);                                                                                                                      
+                               }
+                       }
+                       closedir($handle);
+                       asort($files);  
+                       return true;            
+               }
+               return false;           
+       }
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/resizeDialog.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/resizeDialog.js
new file mode 100644 (file)
index 0000000..7ca6f7a
--- /dev/null
@@ -0,0 +1,29 @@
+// ================================================
+// PHP image browser - iBrowser 
+// ================================================
+// iBrowser - resize dialog to content
+// ================================================
+// Developed: net4visions.com
+// Copyright: net4visions.com
+// License: GPL - see license.txt
+// (c)2005 All rights reserved.
+// ================================================
+// Revision: 1.0                   Date: 06/14/2005
+// ================================================
+       function resizeDialogToContent() {              
+               if (iBrowser.isMSIE) {                  
+                       var dw = parseInt(window.dialogWidth);
+                       if(dw) {                                
+                               difw = dw - this.document.body.clientWidth;
+                               window.dialogWidth = this.document.body.scrollWidth + difw + 'px';      
+                               var dh = parseInt(window.dialogHeight);                         
+                               difh = dh - this.document.body.clientHeight;
+                               window.dialogHeight = this.document.body.scrollHeight + difh + 'px';                            
+                       }
+               } else if (iBrowser.isGecko) {                  
+                       window.sizeToContent();                 
+                       window.scrollTo(0,0);
+                       window.moveTo(0,0);
+               }
+       }
+//-------------------------------------------------------------------------
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/rfiles.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/rfiles.php
new file mode 100644 (file)
index 0000000..db54b80
--- /dev/null
@@ -0,0 +1,532 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser dialog - file functions
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.0                   Date: 07/07/2005
+       // ================================================
+       
+       //-------------------------------------------------------------------------
+       // include configuration settings
+       include dirname(__FILE__) . '/../config/config.inc.php';
+       include dirname(__FILE__) . '/../langs/lang.class.php'; 
+       //-------------------------------------------------------------------------
+               
+       // language settings    
+       $l = (isset($_REQUEST['lang']) ? new PLUG_Lang($_REQUEST['lang']) : new PLUG_Lang($cfg['lang']));
+       $l->setBlock('ibrowser');
+       //-------------------------------------------------------------------------     
+       // parameters
+       $param  = (isset($_REQUEST['param']) ? $_REQUEST['param'] : '');
+       if (isset($param)) {
+               $param  = explode('|', $param);
+       }       
+       // set action   
+       $action = (isset($_REQUEST['action']) ? $_REQUEST['action'] : '');                      
+       // set image library            
+       $clib = (isset($_REQUEST['clib']) ? $_REQUEST['clib'] : (isset($_REQUEST['ilibs']) ? $_REQUEST['ilibs'] : $cfg['ilibs'][0]['value']));  
+       // set current file
+       $cfile = (isset($_REQUEST['cfile']) ? $_REQUEST['cfile'] : ''); 
+       // set new file
+       $nfile = (isset($_REQUEST['nfile']) ? $_REQUEST['nfile'] : '');
+       // set list view        
+       $list = (isset($_REQUEST['flist']) ? $_REQUEST['flist'] : $cfg['list']);        
+       //-------------------------------------------------------------------------
+       // file/directory actions                       
+       if ($param[0] == 'delete') {                    // ACTION: delete image
+               $action = $param[0];                            
+               $cfile  = $param[1];                            // current filename                     
+               if(!deleteImg($clib, $cfile)) {
+                       echo $l->m('er_001') . ': ' . $l->m('er_030');                  
+               };      
+       } else if ($param[0] == 'rename') {             // ACTION: rename image                 
+               $action = $param[0];    
+               $cfile  = $param[1];                            // current filename
+               $nfile  = $param[2];                            // new filename
+               if(!$nfile = renameImg($clib, $cfile, $nfile)) {
+                       echo $l->m('er_001') . ': ' . $l->m('er_033');  
+               };
+       } else if ($param[0] == 'upload') {             // ACTION: upload image         
+               $action = $param[0];            
+               $chkT   = (isset($_REQUEST['chkThumbSize']) ? $_REQUEST['chkThumbSize'] : Array() );    // thumb-sizes in Array                                                         
+               $selR   = (isset($_REQUEST['selRotate']) ? $_REQUEST['selRotate'] : '');        // auto rotate  
+               if (isset($_FILES['nfile']['name'][0])) {                       
+                       if (!$nfile = uploadImg($clib, $chkT, $selR)) { 
+                               echo $l->m('er_001') . ': ' . $l->m('er_028');  
+                       }       
+               };      
+       } else if ($param[0] == 'create') {             // ACTION: create directory                     
+               $action = $param[0];    
+               $nfile  = $param[1];                            // new filename
+               if(!createDir($clib, $nfile)) {
+                       echo $l->m('er_001') . ': ' . $l->m('er_034');  
+               };
+       } else if ($param[0] == 'update') {             // ACTION: update image list and select current image                   
+               $action = $param[0];                            
+               $cfile  = $param[1];                            // current filename
+       } else if ($param[0] == 'switch') {             // ACTION: switch image list view (list or thumbnails)                  
+               $action = $param[0];                            
+               $cfile  = $param[1];                            // current filename     
+       }               
+?>
+<!-- do not delete this line - it's need for proper working of the resizeDialogToContent() function -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title><?php echo $l->m('im_002'); ?></title>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $l->getCharset(); ?>">
+<style type="text/css">
+<!--
+@import url("../css/style.css");
+
+html, body {
+       margin: 0px;
+       padding: 0px;
+}
+
+-->
+</style>
+<?php if ($list == false) { // thumbnail view ?> 
+       <style type="text/css">
+       <!--
+               div#iselDiv li {
+                       margin: 5px;
+                       padding: 5px;
+                       display: block;
+                       border: 1px solid #cccccc;      
+                       float: left;    
+               }
+       -->
+       </style>
+<?php } else { // list view ?>
+       <style type="text/css">
+       <!--
+               div#iselDiv li {
+                       margin: 0px;
+                       padding: 0px;
+                       display: block;         
+                       padding-left: 5px;
+                       padding-right: 5px;                     
+               }
+       -->
+       </style>
+<?php }; ?>
+<script language="JavaScript" type="text/JavaScript">
+<!--
+// ============================================================
+// = image list item V 1.0, date: 01/21/2005                  =
+// ============================================================        
+       // list item hover
+       function li_over() {
+               if (this.className != 'cimgdown') {
+                       this.className   = 'cimgover';
+               }
+       }
+       // list item out
+       function li_out() {
+               if (this.className != 'cimgdown') {
+                       this.className   = 'cimgup';
+               }
+       }
+       // list item down
+       function li_down() {
+               if (this.className != 'cimgdown') {
+                       this.className  = 'cimgdown';
+               }
+       }
+       // list item click
+       function li_click() {           
+               x = document.getElementById('iselDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className == 'cimgdown') {
+                               if (x[i] != this) {
+                                       x[i].className = 'cimgup';
+                               }
+                       }
+               }               
+               imageChangeClick(this);         
+       }       
+// ============================================================
+// = init filelist - set attributes V 1.0, date: 04/18/2005   =
+// ============================================================
+       function init() {               
+               var formObj = document.forms[0];
+               // init mouse events on image list <li>
+               var x = document.getElementById('iselDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].className == 'cimgup') {
+                               x[i].onmouseover = li_over;
+                               x[i].onmouseout  = li_out;
+                               x[i].onmousedown = li_down;
+                               x[i].onclick     = li_click;
+                       }
+               }               
+               
+               // actions
+               var action = formObj.action.value;              
+               if (action == 'upload') {
+                       var tfile = '<?php echo $nfile; ?>';                    
+                       getObject(tfile);
+                       self.parent.hideloadmessage();                          
+               } else if (action == 'rename') {
+                       var tfile = '<?php echo $nfile; ?>';                    
+                       getObject(tfile);
+               } else if (action == 'update') {
+                       var tfile = '<?php echo $cfile; ?>';                    
+                       getObject(tfile);
+               } else if (action == 'switch') {
+                       var tfile = '<?php echo $cfile; ?>';                    
+                       getObject(tfile);                                       
+               } else if (action == 'delete') {                        
+                       imageChangeClick();
+               } else if (formObj.action.value == 'create') {  
+                       // parent needs to be refreshed if directory got created        
+                       parent.document.location.reload();      
+               }
+       }
+// ============================================================
+// = image change - set attributes V 1.0, date: 04/18/2005    =
+// ============================================================        
+       function imageChangeClick(obj) {
+               var formObj = document.forms[0];
+               var action  = formObj.action.value;     
+               if (obj) {
+                       parent.document.getElementById('cimg').attributes['cfile'].value   = obj.attributes['ifile'].value;
+                       parent.document.getElementById('cimg').attributes['csize'].value   = obj.attributes['isize'].value;
+                       parent.document.getElementById('cimg').attributes['cheight'].value = obj.attributes['iheight'].value;
+                       parent.document.getElementById('cimg').attributes['cwidth'].value  = obj.attributes['iwidth'].value;
+                       parent.document.getElementById('cimg').attributes['ctype'].value   = obj.attributes['itype'].value;
+                       parent.document.getElementById('cimg').attributes['cmdate'].value  = obj.attributes['imdate'].value;
+                       parent.document.getElementById('cimg').attributes['ccdate'].value  = obj.attributes['icdate'].value;            
+               }
+               self.parent.imageChange(action);
+               formObj.action.value = null; // resetting action status         
+       }
+// ============================================================
+// = get current file - set attrib V 1.0, date: 04/18/2005    =
+// ============================================================                
+       function getObject(tfile) {     
+               var x = document.getElementById('iselDiv').getElementsByTagName('li');
+               for (var i = 0; i < x.length; i++) {
+                       if (x[i].attributes['ifile'].value == tfile) {                                  
+                               x[i].className = 'cimgdown';
+                               imageChangeClick(x[i]);
+                       }
+               }       
+       }
+// ============================================================
+// = load/hide message, date: 02/08/2005                      =
+// ============================================================
+       function hideloadmessage() {
+               document.getElementById('dialogLoadMessage').style.display = 'none'
+       }
+-->
+</script>
+<title>Image list</title>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $l->getCharset(); ?>">
+</head>
+<body onload="init(); hideloadmessage();" dir="<?php echo $l->getDir(); ?>">
+<?php include 'loadmsg.php'; ?>
+<form id="rfiles" name="rfiles" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" target="_self">
+  <input type="hidden" name="lang" value="<?php echo $l->lang; ?>" />
+  <input type="hidden" id= "action" name="action" value="<?php echo $action; ?>" />    
+  <div id="iselDiv">
+    <ul>
+      <?php echo getItems($cfg['root_dir'] . $clib, $cfg['valid'], $list); ?>
+    </ul>
+  </div>
+</form>
+</body>
+</html>
+<?php
+       // get images
+       function getItems($path, $valid, $list) {                       
+               global $cfg;
+               global $l;              
+           
+               $path = str_replace('//','/', $path); // remove double slash in path if any             
+               $retstr = '';                                              
+               if ($handle = @opendir($path)) {                        
+                       $files = array();
+                       $valids = implode('|', $valid);                 
+                       while (($file = readdir($handle)) !== false) {                                                            
+                               if (is_file($path . $file) && eregi('\.(' . $valids . ')$', $file, $matches)) {                                                                                   
+                                       $files[$path . $file] = $matches[0];
+                               }
+                       }
+                       closedir($handle);                                               
+                       ksort($files);                                                  
+                       $dfmt = "m-d-Y";
+                       foreach ($files as $filename => $ext) {                                                                         
+                               $size     = getimagesize($path . basename($filename));                          
+                               $fsize    = filesize($path . basename($filename));                                              
+                               $modified = date($dfmt, filemtime($path . basename($filename)));
+                               $created  = date($dfmt, filectime($path . basename($filename)));                                                                
+                               $ctype    = iType($size[2]);                            
+                               if ($list == true || $list == 1) {
+                                       $retstr .= '<li class="cimgup" ifile="' . basename($filename) . '" iwidth="' . htmlentities($size[0], ENT_QUOTES) . '" iheight="' . htmlentities($size[1], ENT_QUOTES) . '" itype="' . htmlentities($size[2] . '|' . $ctype, ENT_QUOTES) . '" imdate="' . htmlentities($modified, ENT_QUOTES) . '" icdate="' . htmlentities($created, ENT_QUOTES) . '" isize="' .filesize_h($fsize,2) . '">' . htmlentities(basename($filename), ENT_QUOTES,$l->getCharset()) . '</li>' . "\n";
+                               } else {
+                                       $src     = 'phpThumb/phpThumb.php?src=' . absPath(str_replace($cfg['root_dir'],'', $path)) . basename($filename) . '&w=48&h=48&far=1&bg=ffffff&f=jpg';                          
+                                       $retstr .= '<li class="cimgup" ifile="' . basename($filename) . '" iwidth="' . htmlentities($size[0], ENT_QUOTES) . '" iheight="' . htmlentities($size[1], ENT_QUOTES) . '" itype="' . htmlentities($size[2] . '|' . $ctype, ENT_QUOTES) . '" imdate="' . htmlentities($modified, ENT_QUOTES) . '" icdate="' . htmlentities($created, ENT_QUOTES) . '" isize="' .filesize_h($fsize,2) . '">' . '<img src="' . $src . '" width="48" height="48" alt="' . basename($filename) . '; ' . htmlentities($size[0], ENT_QUOTES) . ' x ' . htmlentities($size[1], ENT_QUOTES) . 'px;' . '" title="' . basename($filename) . '; ' . htmlentities($size[0], ENT_QUOTES) . ' x ' . htmlentities($size[1], ENT_QUOTES) . 'px;' . '"/>' . '</li>' . "\n";
+                               }
+                       }                       
+                       return $retstr;
+               }
+               echo $l->m('er_036');                   
+               return false;           
+       }
+       // get image types
+       function iType($type) {         
+               switch ($type) {
+                       case 1:
+                               $str = 'GIF'; break;
+                       case 2:
+                               $str = 'JPG'; break;
+                       case 3:
+                               $str = 'PNG'; break;
+                       case 4:
+                               $str = 'SWF'; break;
+                       case 5:
+                               $str = 'PSD'; break;
+                       case 6:
+                               $str = 'BMP'; break;
+                       case 7:
+                               $str = 'TIFF'; break;
+                       case 8:
+                               $str = 'TIFF'; break;
+                       case 15:
+                               $str = 'WBMP'; break;
+                       default:
+                               $str = 'n/a'; break;
+               }
+               return $str;
+       }
+       
+       //-------------------------------------------------------------------------
+       // Return the human readable size of a file
+       // @param int $size a file size
+       // @param int $dec a number of decimal places
+       function filesize_h($size, $dec = 1) {
+               $sizes = array('b', 'kb', 'mb', 'gb');
+               $count = count($sizes);
+               $i = 0;
+               while ($size >= 1024 && ($i < $count - 1)) {
+                       $size /= 1024;
+                       $i++;
+               }
+               return round($size, $dec) . '|' . $sizes[$i];
+       }
+       
+       //-------------------------------------------------------------------------
+       // delete image
+       function deleteImg($clib, $cfile) {             
+               global $cfg;            
+               global $l;
+                 
+               if (!$cfg['delete']) {
+                       return false;
+               }               
+               $path = str_replace('//', '/', $cfg['root_dir'] . $clib);       // remove double slash in path          
+               return @unlink($path . $cfile);                                                         // returns true or false                                
+       }
+       
+       //-------------------------------------------------------------------------
+       // rename image 
+       function renameImg($clib, $cfile, $nfile) {             
+               global $cfg;            
+               global $l;
+                               
+               if (!$cfg['rename']) {
+                       return false;
+               }
+               
+               $path = str_replace('//', '/', $cfg['root_dir'] . $clib);       // remove double slash in path                                  
+               if (file_exists($path . $cfile)) {              
+                       $nfile = fixFileName($nfile);                                                   // remove invalid characters in file name
+               $nfile = chkFileName($path, $nfile);                                    // rename if file already exists
+                       
+                       @rename($path . $cfile, $path . $nfile);                                
+               return $nfile;                  
+               }
+               return false;
+       }
+       
+       //-------------------------------------------------------------------------
+       // create directory
+       function createDir($clib, $nfile) {             
+               global $cfg;            
+               global $l; 
+                
+               if (!$cfg['create']) {
+                       return false;
+               }
+               
+               $nfile = fixFileName($nfile);
+               $tfile = $nfile;
+               $path = str_replace('//', '/', $cfg['root_dir'] . $clib);       // remove double slash in path          
+               
+               // renaming directory if it already exists
+               // keep looping and incrementing _i filenumber until a non-existing one is found                
+               $i = 1;
+               while (file_exists($path . $nfile)) {                   
+                       $nfile = $tfile . '_' . $i;                             
+                       $i++;
+               }               
+               
+               $perm = 0777;
+               $oumask = umask(0);
+               umask();
+               if(@mkdir($path . $nfile, $perm)) {
+                       umask($oumask);
+                       return true;
+               }
+               umask($oumask);
+               return false;   
+       }       
+       //-------------------------------------------------------------------------
+       // upload image
+       function uploadImg($clib, $chkT, $selR) {               
+               global $cfg;
+               global $l;
+                 
+               if (!$cfg['upload']) {
+                       return false;
+               }
+               
+               foreach ($_FILES['nfile']['size'] as $key => $size) {                   
+                       if ($size > 0) {                        
+                               // get file extension and check for validity                            
+                               $ext = pathinfo($_FILES['nfile']['name'][$key]);
+                               $ext = strtolower($ext['extension']);                           
+                               if (!in_array($ext, $cfg['valid'])) {                                           // invalid image                        
+                                       echo $l->m('er_029');                   
+                                       return false;
+                               }
+                               
+                               $path  = str_replace('//', '/', $cfg['root_dir'] . $clib);      // remove double slash in path  
+                               $nfile = fixFileName($_FILES['nfile']['name'][$key]);           // remove invalid characters in filename                                        
+                               
+                               // move file to temp directory for processing
+                               if (!move_uploaded_file($_FILES['nfile']['tmp_name'][$key], $cfg['temp'] . '/' . $nfile)) { // upload image to temp dir
+                                       echo $l->m('er_028');                           
+                                       return false;
+                               }
+                               
+                               $size = getimagesize($cfg['temp'] . '/' . $nfile);      
+                               
+                               // process (thumbnail) images                   
+                               $arr = $cfg['thumbs'];                          
+                               foreach($arr as $key => $thumb) {
+                                       if (in_array($key, $chkT)) {                                                                            
+                                               // create new phpThumb() object
+                                               require_once(dirname(__FILE__) . '/phpThumb/phpthumb.class.php');
+                                               $phpThumb = new phpThumb();                                                     // create object
+                                               // parameters
+                                               $phpThumb->config_cache_disable_warning = true;         // disable cache warning                        
+                                               $phpThumb->config_output_format = $ext;                         // output format        
+                                               $phpThumb->src = $cfg['temp'] . '/' . $nfile;           // destination
+                                               $phpThumb->q = 95;                                                                      // compression level for jpeg
+                                               if ($selR != '') {                                                                      // set auto rotate
+                                                       $phpThumb->ar = $selR;
+                                               };                                                                              
+                                               //-------------------------------------------------------------------------
+                                               if ($thumb['size'] > 0 && ($size[0] >= $thumb['size'] || $size[1] >= $thumb['size'])) { // size value is set -> RESIZING and source image is larger than preset sizes
+                                                       // resize parameters
+                                                       if ($size[0] < $size[1]) {                      // portrait
+                                                               $phpThumb->h  = $thumb['size'];                         // max. height
+                                                       } else {
+                                                               $phpThumb->w  = $thumb['size'];                         // max. width
+                                                       }
+                                                       // crop parameters 
+                                                       if($thumb['crop'] == true) {
+                                                               $phpThumb->zc = 1;                                                      // set zoom crop                                                                
+                                                               $phpThumb->w  = $thumb['size'];                         // width
+                                                               $phpThumb->h  = $thumb['size'];                         // height
+                                                       }
+                                                       // create file suffix
+                                                       if ($thumb['ext'] == '*') {                                             // image size is used
+                                                               $dim = '_' . $thumb['size'];                            // e.g. _1280
+                                                       } else if ($thumb['ext'] == '') {                               // no suffix is created
+                                                               $dim = '';                                                                      
+                                                       } else {                                                                                // suffix is set to $thumb['ext']
+                                                               $dim = '_'. $thumb['ext'];
+                                                       }
+                                               //-------------------------------------------------------------------------
+                                               } elseif ($thumb['size'] == 0 || $thumb['size'] == '*') {                                       // size value is set to '0' -> NO RESIZING
+                                                       // crop parameters
+                                                       if ($thumb['crop'] == true) {
+                                                               $phpThumb->zc = 1;                                                      // set zoom crop
+                                                               if($size[0] < $size[1]) {                                       // portrait
+                                                                       $phpThumb->w  = $size[0];                               // getimagesize width value
+                                                                       $phpThumb->h  = $size[0];                               // getimagesize width value
+                                                               } else {                                                                        // landscape
+                                                                       $phpThumb->w  = $size[1];                               // getimagesize height value
+                                                                       $phpThumb->h  = $size[1];                               // getimagesize height value
+                                                               }
+                                                       }
+                                                       // create file suffix                                                   
+                                                       if ($thumb['ext'] == '*') {                                             // image size is used
+                                                               $dim = '_' . (($size[0] <= $size[1]) ? $size[1] : $size[0]);    // source height or width - e.g. _1280
+                                                       } else if ($thumb['ext'] == '') {                               // no suffix is created
+                                                               $dim = '';
+                                                       } else {                                                                                // suffix is set to $thumb['ext']
+                                                               $dim = '_'. $thumb['ext'];
+                                                       }
+                                               //-------------------------------------------------------------------------
+                                               } else {                                                                                        // default setting - images smaller than predefined sizes
+                                                       $dim = '';                                                                              // no file suffix is used
+                                               }
+                                               //-------------------------------------------------------------------------
+                                               $nthumb = fixFileName(basename($nfile, '.' . $ext) . $dim . '.' . $ext);                                        
+                                               $nthumb = chkFileName($path, $nthumb);                          // rename if file already exists                                                                
+                                               
+                                               if ($phpThumb->GenerateThumbnail()) {
+                                                       $phpThumb->RenderToFile($path . $nthumb);
+                                                       @chmod($path . $nthumb, 0755) or die($l->m('er_028'));                                  
+                                               } else {                                                                                        // error                                
+                                                       echo $l->m('er_028');
+                                                       return false;
+                                               }                                                                               
+                                               unset($phpThumb);                                       
+                                       }                                       
+                               }
+                               @unlink($cfg['temp'] . '/' . $nfile);                                           // delete temporary file                                        
+                       }
+               }               
+               return $nthumb;                                 
+       }
+       //-------------------------------------------------------------------------
+       // escape and clean up file name (only lowercase letters, numbers and underscores are allowed) 
+       function fixFileName($file) {
+               $file = ereg_replace("[^a-z0-9._]", "", str_replace(" ", "_", str_replace("%20", "_", strtolower($file))));
+               return $file;
+       }
+       //-------------------------------------------------------------------------
+       // check whether file already exists; rename file if filename already exists
+       // keep looping and incrementing _i filenumber until a non-existing filename is found
+       function chkFileName($path, $nfile) {
+               $tfile = $nfile;
+               $i = 1;
+               while (file_exists($path . $nfile)) {
+                       $nfile = ereg_replace('(.*)(\.[a-zA-Z]+)$', '\1_' . sprintf('%02d',$i) . '\2', $tfile);                         
+                       $i++;
+               }
+               return $nfile;          
+       }
+       // ============================================================
+       // = abs path - add slashes V 1.0, date: 05/10/2005           =
+       // ============================================================
+       function absPath($path) {               
+               if(substr($path,-1)  != '/') $path .= '/';
+               if(substr($path,0,1) != '/') $path = '/' . $path;
+               return $path;
+       }
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/symbols.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/symbols.php
new file mode 100644 (file)
index 0000000..4128823
--- /dev/null
@@ -0,0 +1,428 @@
+<?php
+       // ================================================
+       // PHP image browser - iBrowser 
+       // ================================================
+       // iBrowser dialog - special characters
+       // ================================================
+       // Developed: net4visions.com
+       // Copyright: net4visions.com
+       // License: GPL - see license.txt
+       // (c)2005 All rights reserved.
+       // ================================================
+       // Revision: 1.0                   Date: 06/04/2005
+       // ================================================
+
+       //-------------------------------------------------------------------------
+       // include configuration settings
+       include '../config/config.inc.php';     
+       include '../langs/lang.class.php';      
+       // language settings    
+       $l = (@$_REQUEST['lang'] ? new PLUG_Lang(@$_REQUEST['lang']) : new PLUG_Lang($cfg['lang']));
+       $l->setBlock('symbols');
+?>
+<!-- do not delete this line - it's need for proper working of the resizeDialogToContent() function -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<head>
+<title><?php echo $l->m('title'); ?></title>
+<meta http-equiv="Pragma" content="no-cache">
+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $l->getCharset()?>">
+<style type="text/css">
+<!--
+@import url("../css/style.css");
+-->
+</style>
+<script language="javascript" type="text/javascript" src="../scripts/resizeDialog.js"></script>
+<script language="javascript" type="text/javascript">
+<!--
+       
+       var charmap = new Array();      
+       charmap = [
+               ['&nbsp;',    '&#160;',  true, 'no-break space'],
+               ['&amp;',     '&#38;',   true, 'ampersand'],
+               ['&quot;',    '&#34;',   true, 'quotation mark'],
+       // finance
+               ['$',             '&#36;',   true, 'dollar sign'],
+               ['&cent;',    '&#162;',  true, 'cent sign'],
+               ['&euro;',    '&#8364;', true, 'euro sign'],
+               ['&pound;',   '&#163;',  true, 'pound sign'],
+               ['&yen;',     '&#165;',  true, 'yen sign'],
+       // signs
+               ['&copy;',    '&#169;',  true, 'copyright sign'],
+               ['&reg;',     '&#174;',  true, 'registered sign'],
+               ['&trade;',   '&#8482;', true, 'trade mark sign'],
+               ['&permil;',  '&#8240;', true, 'per mille sign'],
+               ['&micro;',   '&#181;',  true, 'micro sign'],
+               ['&middot;',  '&#183;',  true, 'middle dot'],
+               ['&bull;',    '&#8226;', true, 'bullet'],
+               ['&hellip;',  '&#8230;', true, 'three dot leader'],
+               ['&prime;',   '&#8242;', true, 'minutes / feet'],
+               ['&Prime;',   '&#8243;', true, 'seconds / inches'],
+               ['&sect;',    '&#167;',  true, 'section sign'],
+               ['&para;',    '&#182;',  true, 'paragraph sign'],
+               ['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
+       // quotations
+               ['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
+               ['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
+               ['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
+               ['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
+               ['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
+               ['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
+               ['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
+               ['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
+               ['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
+               ['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
+               ['&lt;',      '&#60;',   true, 'less-than sign'],
+               ['&gt;',      '&#62;',   true, 'greater-than sign'],
+               ['&le;',      '&#8804;', true, 'less-than or equal to'],
+               ['&ge;',      '&#8805;', true, 'greater-than or equal to'],
+               ['&ndash;',   '&#8211;', true, 'en dash'],
+               ['&mdash;',   '&#8212;', true, 'em dash'],
+               ['&macr;',    '&#175;',  true, 'macron'],
+               ['&oline;',   '&#8254;', true, 'overline'],
+               ['&curren;',  '&#164;',  true, 'currency sign'],
+               ['&brvbar;',  '&#166;',  true, 'broken bar'],
+               ['&uml;',     '&#168;',  true, 'diaeresis'],
+               ['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
+               ['&iquest;',  '&#191;',  true, 'turned question mark'],
+               ['&circ;',    '&#710;',  true, 'circumflex accent'],
+               ['&tilde;',   '&#732;',  true, 'small tilde'],
+               ['&deg;',     '&#176;',  true, 'degree sign'],
+               ['&minus;',   '&#8722;', true, 'minus sign'],
+               ['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
+               ['&divide;',  '&#247;',  true, 'division sign'],
+               ['&frasl;',   '&#8260;', true, 'fraction slash'],
+               ['&times;',   '&#215;',  true, 'multiplication sign'],
+               ['&sup1;',    '&#185;',  true, 'superscript one'],
+               ['&sup2;',    '&#178;',  true, 'superscript two'],
+               ['&sup3;',    '&#179;',  true, 'superscript three'],
+               ['&frac14;',  '&#188;',  true, 'fraction one quarter'],
+               ['&frac12;',  '&#189;',  true, 'fraction one half'],
+               ['&frac34;',  '&#190;',  true, 'fraction three quarters'],
+       // math / logical
+               ['&fnof;',    '&#402;',  true, 'function / florin'],
+               ['&int;',     '&#8747;', true, 'integral'],
+               ['&sum;',     '&#8721;', true, 'n-ary sumation'],
+               ['&infin;',   '&#8734;', true, 'infinity'],
+               ['&radic;',   '&#8730;', true, 'square root'],
+               ['&sim;',     '&#8764;', false,'similar to'],
+               ['&cong;',    '&#8773;', false,'approximately equal to'],
+               ['&asymp;',   '&#8776;', true, 'almost equal to'],
+               ['&ne;',      '&#8800;', true, 'not equal to'],
+               ['&equiv;',   '&#8801;', true, 'identical to'],
+               ['&isin;',    '&#8712;', false,'element of'],
+               ['&notin;',   '&#8713;', false,'not an element of'],
+               ['&ni;',      '&#8715;', false,'contains as member'],
+               ['&prod;',    '&#8719;', true, 'n-ary product'],
+               ['&and;',     '&#8743;', false,'logical and'],
+               ['&or;',      '&#8744;', false,'logical or'],
+               ['&not;',     '&#172;',  true, 'not sign'],
+               ['&cap;',     '&#8745;', true, 'intersection'],
+               ['&cup;',     '&#8746;', false,'union'],
+               ['&part;',    '&#8706;', true, 'partial differential'],
+               ['&forall;',  '&#8704;', false,'for all'],
+               ['&exist;',   '&#8707;', false,'there exists'],
+               ['&empty;',   '&#8709;', false,'diameter'],
+               ['&nabla;',   '&#8711;', false,'backward difference'],
+               ['&lowast;',  '&#8727;', false,'asterisk operator'],
+               ['&prop;',    '&#8733;', false,'proportional to'],
+               ['&ang;',     '&#8736;', false,'angle'],
+       // undefined
+               ['&acute;',   '&#180;',  true, 'acute accent'],
+               ['&cedil;',   '&#184;',  true, 'cedilla'],
+               ['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
+               ['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
+               ['&dagger;',  '&#8224;', true, 'dagger'],
+               ['&Dagger;',  '&#8225;', true, 'double dagger'],
+       // alphabetical special chars
+               ['&Agrave;',  '&#192;',  true, 'A - grave'],
+               ['&Aacute;',  '&#193;',  true, 'A - acute'],
+               ['&Acirc;',   '&#194;',  true, 'A - circumflex'],
+               ['&Atilde;',  '&#195;',  true, 'A - tilde'],
+               ['&Auml;',    '&#196;',  true, 'A - diaeresis'],
+               ['&Aring;',   '&#197;',  true, 'A - ring above'],
+               ['&AElig;',   '&#198;',  true, 'ligature AE'],
+               ['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
+               ['&Egrave;',  '&#200;',  true, 'E - grave'],
+               ['&Eacute;',  '&#201;',  true, 'E - acute'],
+               ['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
+               ['&Euml;',    '&#203;',  true, 'E - diaeresis'],
+               ['&Igrave;',  '&#204;',  true, 'I - grave'],
+               ['&Iacute;',  '&#205;',  true, 'I - acute'],
+               ['&Icirc;',   '&#206;',  true, 'I - circumflex'],
+               ['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
+               ['&ETH;',     '&#208;',  true, 'ETH'],
+               ['&Ntilde;',  '&#209;',  true, 'N - tilde'],
+               ['&Ograve;',  '&#210;',  true, 'O - grave'],
+               ['&Oacute;',  '&#211;',  true, 'O - acute'],
+               ['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
+               ['&Otilde;',  '&#213;',  true, 'O - tilde'],
+               ['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
+               ['&Oslash;',  '&#216;',  true, 'O - slash'],
+               ['&OElig;',   '&#338;',  true, 'ligature OE'],
+               ['&Scaron;',  '&#352;',  true, 'S - caron'],
+               ['&Ugrave;',  '&#217;',  true, 'U - grave'],
+               ['&Uacute;',  '&#218;',  true, 'U - acute'],
+               ['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
+               ['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
+               ['&Yacute;',  '&#221;',  true, 'Y - acute'],
+               ['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
+               ['&THORN;',   '&#222;',  true, 'THORN'],
+               ['&agrave;',  '&#224;',  true, 'a - grave'],
+               ['&aacute;',  '&#225;',  true, 'a - acute'],
+               ['&acirc;',   '&#226;',  true, 'a - circumflex'],
+               ['&atilde;',  '&#227;',  true, 'a - tilde'],
+               ['&auml;',    '&#228;',  true, 'a - diaeresis'],
+               ['&aring;',   '&#229;',  true, 'a - ring above'],
+               ['&aelig;',   '&#230;',  true, 'ligature ae'],
+               ['&ccedil;',  '&#231;',  true, 'c - cedilla'],
+               ['&egrave;',  '&#232;',  true, 'e - grave'],
+               ['&eacute;',  '&#233;',  true, 'e - acute'],
+               ['&ecirc;',   '&#234;',  true, 'e - circumflex'],
+               ['&euml;',    '&#235;',  true, 'e - diaeresis'],
+               ['&igrave;',  '&#236;',  true, 'i - grave'],
+               ['&iacute;',  '&#237;',  true, 'i - acute'],
+               ['&icirc;',   '&#238;',  true, 'i - circumflex'],
+               ['&iuml;',    '&#239;',  true, 'i - diaeresis'],
+               ['&eth;',     '&#240;',  true, 'eth'],
+               ['&ntilde;',  '&#241;',  true, 'n - tilde'],
+               ['&ograve;',  '&#242;',  true, 'o - grave'],
+               ['&oacute;',  '&#243;',  true, 'o - acute'],
+               ['&ocirc;',   '&#244;',  true, 'o - circumflex'],
+               ['&otilde;',  '&#245;',  true, 'o - tilde'],
+               ['&ouml;',    '&#246;',  true, 'o - diaeresis'],
+               ['&oslash;',  '&#248;',  true, 'o slash'],
+               ['&oelig;',   '&#339;',  true, 'ligature oe'],
+               ['&scaron;',  '&#353;',  true, 's - caron'],
+               ['&ugrave;',  '&#249;',  true, 'u - grave'],
+               ['&uacute;',  '&#250;',  true, 'u - acute'],
+               ['&ucirc;',   '&#251;',  true, 'u - circumflex'],
+               ['&uuml;',    '&#252;',  true, 'u - diaeresis'],
+               ['&yacute;',  '&#253;',  true, 'y - acute'],
+               ['&thorn;',   '&#254;',  true, 'thorn'],
+               ['&yuml;',    '&#255;',  true, 'y - diaeresis'],
+               ['&Alpha;',   '&#913;',  true, 'Alpha'],
+               ['&Beta;',    '&#914;',  true, 'Beta'],
+               ['&Gamma;',   '&#915;',  true, 'Gamma'],
+               ['&Delta;',   '&#916;',  true, 'Delta'],
+               ['&Epsilon;', '&#917;',  true, 'Epsilon'],
+               ['&Zeta;',    '&#918;',  true, 'Zeta'],
+               ['&Eta;',     '&#919;',  true, 'Eta'],
+               ['&Theta;',   '&#920;',  true, 'Theta'],
+               ['&Iota;',    '&#921;',  true, 'Iota'],
+               ['&Kappa;',   '&#922;',  true, 'Kappa'],
+               ['&Lambda;',  '&#923;',  true, 'Lambda'],
+               ['&Mu;',      '&#924;',  true, 'Mu'],
+               ['&Nu;',      '&#925;',  true, 'Nu'],
+               ['&Xi;',      '&#926;',  true, 'Xi'],
+               ['&Omicron;', '&#927;',  true, 'Omicron'],
+               ['&Pi;',      '&#928;',  true, 'Pi'],
+               ['&Rho;',     '&#929;',  true, 'Rho'],
+               ['&Sigma;',   '&#931;',  true, 'Sigma'],
+               ['&Tau;',     '&#932;',  true, 'Tau'],
+               ['&Upsilon;', '&#933;',  true, 'Upsilon'],
+               ['&Phi;',     '&#934;',  true, 'Phi'],
+               ['&Chi;',     '&#935;',  true, 'Chi'],
+               ['&Psi;',     '&#936;',  true, 'Psi'],
+               ['&Omega;',   '&#937;',  true, 'Omega'],
+               ['&alpha;',   '&#945;',  true, 'alpha'],
+               ['&beta;',    '&#946;',  true, 'beta'],
+               ['&gamma;',   '&#947;',  true, 'gamma'],
+               ['&delta;',   '&#948;',  true, 'delta'],
+               ['&epsilon;', '&#949;',  true, 'epsilon'],
+               ['&zeta;',    '&#950;',  true, 'zeta'],
+               ['&eta;',     '&#951;',  true, 'eta'],
+               ['&theta;',   '&#952;',  true, 'theta'],
+               ['&iota;',    '&#953;',  true, 'iota'],
+               ['&kappa;',   '&#954;',  true, 'kappa'],
+               ['&lambda;',  '&#955;',  true, 'lambda'],
+               ['&mu;',      '&#956;',  true, 'mu'],
+               ['&nu;',      '&#957;',  true, 'nu'],
+               ['&xi;',      '&#958;',  true, 'xi'],
+               ['&omicron;', '&#959;',  true, 'omicron'],
+               ['&pi;',      '&#960;',  true, 'pi'],
+               ['&rho;',     '&#961;',  true, 'rho'],
+               ['&sigmaf;',  '&#962;',  true, 'final sigma'],
+               ['&sigma;',   '&#963;',  true, 'sigma'],
+               ['&tau;',     '&#964;',  true, 'tau'],
+               ['&upsilon;', '&#965;',  true, 'upsilon'],
+               ['&phi;',     '&#966;',  true, 'phi'],
+               ['&chi;',     '&#967;',  true, 'chi'],
+               ['&psi;',     '&#968;',  true, 'psi'],
+               ['&omega;',   '&#969;',  true, 'omega'],
+       // symbols
+               ['&alefsym;', '&#8501;', false,'alef symbol'],
+               ['&piv;',     '&#982;',  false,'pi symbol'],
+               ['&real;',    '&#8476;', false,'real part symbol'],
+               ['&thetasym;','&#977;',  false,'theta symbol'],
+               ['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
+               ['&weierp;',  '&#8472;', false,'Weierstrass p'],
+               ['&image;',   '&#8465;', false,'imaginary part'],
+       // arrows
+               ['&larr;',    '&#8592;', true, 'leftwards arrow'],
+               ['&uarr;',    '&#8593;', true, 'upwards arrow'],
+               ['&rarr;',    '&#8594;', true, 'rightwards arrow'],
+               ['&darr;',    '&#8595;', true, 'downwards arrow'],
+               ['&harr;',    '&#8596;', true, 'left right arrow'],
+               ['&crarr;',   '&#8629;', false,'carriage return'],
+               ['&lArr;',    '&#8656;', false,'leftwards double arrow'],
+               ['&uArr;',    '&#8657;', false,'upwards double arrow'],
+               ['&rArr;',    '&#8658;', false,'rightwards double arrow'],
+               ['&dArr;',    '&#8659;', false,'downwards double arrow'],
+               ['&hArr;',    '&#8660;', false,'left right double arrow'],
+               ['&there4;',  '&#8756;', false,'therefore'],
+               ['&sub;',     '&#8834;', false,'subset of'],
+               ['&sup;',     '&#8835;', false,'superset of'],
+               ['&nsub;',    '&#8836;', false,'not a subset of'],
+               ['&sube;',    '&#8838;', false,'subset of or equal to'],
+               ['&supe;',    '&#8839;', false,'superset of or equal to'],
+               ['&oplus;',   '&#8853;', false,'circled plus'],
+               ['&otimes;',  '&#8855;', false,'circled times'],
+               ['&perp;',    '&#8869;', false,'perpendicular'],
+               ['&sdot;',    '&#8901;', false,'dot operator'],
+               ['&lceil;',   '&#8968;', false,'left ceiling'],
+               ['&rceil;',   '&#8969;', false,'right ceiling'],
+               ['&lfloor;',  '&#8970;', false,'left floor'],
+               ['&rfloor;',  '&#8971;', false,'right floor'],
+               ['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
+               ['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
+               ['&loz;',     '&#9674;', true,'lozenge'],
+               ['&spades;',  '&#9824;', false,'black spade suit'],
+               ['&clubs;',   '&#9827;', true, 'black club suit'],
+               ['&hearts;',  '&#9829;', true, 'black heart suit'],
+               ['&diams;',   '&#9830;', true, 'black diamond suit'],
+               ['&ensp;',    '&#8194;', false,'en space'],
+               ['&emsp;',    '&#8195;', false,'em space'],
+               ['&thinsp;',  '&#8201;', false,'thin space'],
+               ['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
+               ['&zwj;',     '&#8205;', false,'zero width joiner'],
+               ['&lrm;',     '&#8206;', false,'left-to-right mark'],
+               ['&rlm;',     '&#8207;', false,'right-to-left mark'],
+               ['&shy;',     '&#173;',  false,'soft hyphen']
+       ];
+// ============================================================
+// = create symbol table V 1.0, date: 03/31/2005              =
+// ============================================================
+    function renderCharMapHTML() {
+        var charsPerRow = 20, tdWidth=20, tdHeight=20;
+        var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
+        var cols=-1;
+        for (var i=0; i<charmap.length; i++) {
+            if (charmap[i][2] == true) {
+                cols++;
+                html += ''
+                    + '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
+                    + ' onmouseover="this.className=\'charmapOver\';'
+                    + 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
+                    + ' onmouseout="this.className=\'charmap\';"'
+                    + ' onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\'); return false;"'
+                    + ' title="' + charmap[i][3] + '" nowrap="nowrap">'
+                    + charmap[i][1]
+                    + '</td>';
+                if ((cols+1) % charsPerRow == 0)
+                    html += '</tr><tr height="' + tdHeight + '">';
+            }
+         }
+        if (cols % charsPerRow > 0) {
+            var padd = charsPerRow - (cols % charsPerRow);
+            for (var i=0; i < padd-1; i++)
+                html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
+        }
+        html += '</tr></table>';
+        document.write(html);
+    }
+// ============================================================
+// = insert current symbol V 1.0, date: 03/31/2005            =
+// ============================================================
+    function insertChar(chr) {        
+               var args = window.dialogArguments;
+               var rArgs = {};
+               rArgs.elm = args.elm; // passing calling object/element back to parent
+               rArgs.chr = '\&#' + chr + ';'           
+               window.returnValue = rArgs;             
+               window.close();
+               if (iBrowser.isGecko) {                         
+                       <?php
+                               if (!empty($_REQUEST['callback'])) {
+                                       echo "opener." . $_REQUEST['callback'] . "('" . "',this);\n";                                   
+                               }
+                       ?>
+               }               
+    }  
+// ============================================================
+// = preview current symbol V 1.0, date: 03/31/2005           =
+// ============================================================
+    function previewChar(codeA, codeB, codeN) {
+        var elmA = document.getElementById('codeA');
+        var elmB = document.getElementById('codeB');
+        var elmV = document.getElementById('codeV');
+        var elmN = document.getElementById('codeN');
+
+        if (codeA=='#160;') {
+            elmV.innerHTML = '__';
+        } else {
+            elmV.innerHTML = '&' + codeA;
+        }
+
+        elmB.innerHTML = '&amp;' + codeA;
+        elmA.innerHTML = '&amp;' + codeB;
+        elmN.innerHTML = codeN;
+    }  
+// ============================================================
+// = symbols init V 1.0, date: 03/31/2005                     =
+// ============================================================
+       function init() {               
+               var args = window.dialogArguments;              
+               iBrowser = args.iBrowser;
+               resizeDialogToContent();
+               window.focus();
+       }
+//-->
+</script>
+</head>
+<body onLoad="init()" dir="<?php echo $l->getDir() ;?>">
+<div id="dialog">
+  <div class="headerDiv">
+    <?php echo $l->m('title'); ?>
+  </div>
+  <div class="brdPad">
+    <table border="0" cellspacing="5" cellpadding="0">
+      <tr>
+        <td valign="middle" ><script language="javascript" type="text/javascript">
+            <!--
+                renderCharMapHTML();
+            //-->
+            </script></td>
+        <td width="60" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
+            <tr>
+              <td class="charPrev" id="codeV">&nbsp;</td>
+            </tr>
+          </table></td>
+      </tr>
+      <tr>
+        <td><table width="100%" border="0" cellspacing="5" cellpadding="0">
+            <tr>
+              <td colspan="3"><strong>Name:</strong>
+                <span id="codeN">
+&nbsp;
+                </span></td>
+            </tr>
+            <tr>
+              <td width="33%"><strong>HTML Code:</strong>
+                <span id="codeA">
+&nbsp;
+                </span></td>
+              <td width="33%"><strong>Num Code:</strong>
+                <span id="codeB">
+&nbsp;
+                </span></td>
+              <td>&nbsp;</td>
+            </tr>
+          </table></td>
+        <td><img src="../images/spacer.gif" width="60" height="1" /></td>
+      </tr>
+    </table>
+  </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/validateForm.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/scripts/validateForm.js
new file mode 100644 (file)
index 0000000..c21b581
--- /dev/null
@@ -0,0 +1,145 @@
+///////////////////////////////////////////////////
+///    JavaScript Form Validation Functions      //
+//   by James Heinrich <info@silisoftware.com>   //
+//   available at http://www.silisoftware.com   ///
+///////////////////////////////////////////////////
+///                                              //
+//  v1.0.3 - 17 Mar 2005                         //
+//    ¤ Added IsValidHexColor() function         //
+//                                               //
+//  v1.0.2 - 07 Mar 2005                         //
+//    ¤ Added CharacterReplace() function        //
+//                                               //
+//  v1.0.1 - 12 Dec 2004                         //
+//    ¤ Added generic MatchesPattern() function  //
+//      and made IsValidEmail() and IsValidURL() //
+//      work through it                          //
+//                                               //
+//  v1.0.0 - 11 Dec 2004                         //
+//    ¤ Initial public release                   //
+//                                              ///
+///////////////////////////////////////////////////
+
+// ex: <input type="text" name="Name"  onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \-]');">
+// ex: <input type="text" name="Email" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \@\.\-]'); ForceLowercase(this);">
+// ex: <input type="submit" value="Submit" onClick="if (!IsValidEmail(theform.email.value)) { alert("Please enter a valid E-mail address"); theform.email.focus(); return false; } else if (!IsValidURL(theform.url.value)) { alert("Please enter a valid URL"); theform.url.focus(); return false; }">
+
+// Note: onChange event will not fire in IE if onKeyUp event returns true, so add a return false, like this:
+// <input type="text" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \-]'); return false;" onChange="doSomethingElse();">
+
+function RemoveInvalidChars(theinput, pattern) {
+       reg = new RegExp(pattern, 'g');
+       newstring = theinput.value.replace(reg, '');
+       // only update the input if invalid chars have been replaced
+       // to avoid annoying behavior (e.g. moving cursor to end of text)
+       if (newstring != theinput.value) {
+               theinput.value = newstring;
+       }
+       return true;
+}
+
+function ForceUppercase(theinput) {
+       // ex: <input type="text" onKeyUp="RemoveInvalidChars(this, '[^A-Za-z0-9 \-]');">
+       newstring = theinput.value.toUpperCase();
+       // only update the input if invalid chars have been replaced
+       // to avoid annoying behavior (e.g. moving cursor to end of text)
+       if (newstring != theinput.value) {
+               theinput.value = newstring;
+       }
+       return true;
+}
+
+function ForceLowercase(theinput) {
+       newstring = theinput.value.toLowerCase();
+       // only update the input if invalid chars have been replaced
+       // to avoid annoying behavior (e.g. moving cursor to end of text)
+       if (newstring != theinput.value) {
+               theinput.value = newstring;
+       }
+       return true;
+}
+
+function CharacterReplace(theinput, from, to) {
+       newstring = theinput.value.replace(from, to);
+       if (newstring != theinput.value) {
+               theinput.value = newstring;
+       }
+       return true;
+}
+
+function FormatPhoneNumber(theinput) {
+       reg = new RegExp('[^0-9]', 'g');
+       numbersonly = theinput.value.replace(reg, '');
+
+       if (numbersonly.length > 7) {
+               newstring = '(' + numbersonly.substr(0, 3) + ')' + numbersonly.substr(3, 3) + '-' + numbersonly.substr(6, 4);
+       } else if (numbersonly.length > 3) {
+               newstring = numbersonly.substr(0, 3) + '-' + numbersonly.substr(3, 4);
+       } else {
+               newstring = numbersonly;
+       }
+       // only update the input if the text has changed
+       // to avoid annoying behavior (e.g. moving cursor to end of text)
+       if (newstring != theinput.value) {
+               theinput.value = newstring;
+       }
+       return true;
+}
+
+function MatchesPattern(theString, pattern) {
+       // Note: regular expressions passed to this function that have escaped
+       // characters also need the escape character escaped, otherwise JavaScript
+       // will make it disappear, for example:
+       // MatchesPattern(mystring, '\w\.\w');    // won't work
+       // MatchesPattern(mystring, '\\w\\.\\w'); // will work
+       reg = new RegExp(pattern, 'g');
+       return Boolean(reg.exec(theString));
+}
+
+function IsValidEmail(emailstring) {
+       // regex adapted from http://www.yxscripts.com/fg/form.html
+       return MatchesPattern(emailstring, '\\w[\\w\\-\\.]*\\@\\w[\\w\\-]+(\\.[\\w\\-]{2,})+');
+}
+
+function IsValidURL(urlstring) {
+       return MatchesPattern(urlstring, 'http:\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+');
+}
+
+function IsValidHexColor(urlstring) {
+       return MatchesPattern(urlstring, '^#[0-9a-zA-Z]{6}$');
+}
+
+function SetElementTextColor(theelement, thecolor) {
+       if (theelement.style) {
+               theelement.style.color = thecolor;
+       }
+       return true;
+}
+
+function HighlightThis(theelement) {
+       if (theelement.style) {
+               theelement.style.background = '#FFFF00';
+       }
+       return true;
+}
+
+function UnHighlightThis(theelement) {
+       if (theelement.style) {
+               theelement.style.background = '#FFFFFF';
+       }
+       return true;
+}
+
+function StringPad(string, length, character) {
+       while (string.length < length) {
+               string = character + string;
+       }
+       return string;
+}
+
+function RGB2hex(red, green, blue) {
+       r = StringPad(parseInt(red).toString(16),   2, '0');
+       g = StringPad(parseInt(green).toString(16), 2, '0');
+       b = StringPad(parseInt(blue).toString(16),  2, '0');
+       return r+g+b;
+} 
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/temp/index.php b/trunk/NP_TinyMCE2j/tinymce2j/plugins/ibrowser/temp/index.php
new file mode 100644 (file)
index 0000000..cee9927
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+header('Location: /');
+exit;
+?>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/blank.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/blank.htm
new file mode 100644 (file)
index 0000000..0ebdc75
--- /dev/null
@@ -0,0 +1,19 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>blank_page</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+       <script language="javascript">
+               function init() {
+                       document.body.contentEditable = true;
+                       document.designMode = 'on';
+                       parent.initIframe(document);
+                       window.focus();
+               }
+       </script>
+       <link href="css/blank.css" rel="stylesheet" type="text/css" />
+       <base target="_self" />
+</head>
+<body onload="init();">
+
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/css/blank.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/css/blank.css
new file mode 100644 (file)
index 0000000..89b0303
--- /dev/null
@@ -0,0 +1,13 @@
+body {
+       background-color: #FFFFFF;
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+       scrollbar-3dlight-color: #F0F0EE;
+       scrollbar-arrow-color: #676662;
+       scrollbar-base-color: #F0F0EE;
+       scrollbar-darkshadow-color: #DDDDDD;
+       scrollbar-face-color: #E0E0DD;
+       scrollbar-highlight-color: #F0F0EE;
+       scrollbar-shadow-color: #F0F0EE;
+       scrollbar-track-color: #F5F5F5;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/css/pasteword.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/css/pasteword.css
new file mode 100644 (file)
index 0000000..77685fd
--- /dev/null
@@ -0,0 +1,3 @@
+.sourceIframe {
+       border: 1px solid #808080;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/editor_plugin.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/editor_plugin.js
new file mode 100644 (file)
index 0000000..438c83e
--- /dev/null
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('paste','ja_utf8,ja_euc,en,sv,cs,zh_cn,fr_ca,da,he,nb,de,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,es,cy,is,pl,nl,fr,pt_br');function TinyMCE_paste_getInfo(){return{longname:'Paste text/word',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_paste.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_paste_initInstance(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_paste_handleEvent);}function TinyMCE_paste_handleEvent(e){switch(e.type){case "paste":var html=TinyMCE_paste__clipboardHTML();tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false;}return true;}function TinyMCE_paste_getControlHTML(control_name){switch(control_name){case "pastetext":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePasteText\', true);return false;';return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" target="_self" onmousedown="return false;"><img id="{$editor_id}pastetext" src="{$pluginurl}/images/pastetext.gif" title="{$lang_paste_text_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreClass(this);" /></a>';case "pasteword":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePasteWord\', true);return false;';return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" target="_self" onmousedown="return false;"><img id="{$editor_id}pasteword" src="{$pluginurl}/images/pasteword.gif" title="{$lang_paste_word_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreClass(this);" /></a>';case "selectall":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSelectAll\');return false;';return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" target="_self" onmousedown="return false;"><img id="{$editor_id}selectall" src="{$pluginurl}/images/selectall.gif" title="{$lang_selectall_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreClass(this);" /></a>';}return '';}function TinyMCE_paste_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_paste__insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'});}}else TinyMCE_paste__insertText(value['html'],value['linebreaks']);return true;case "mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){var html=TinyMCE_paste__clipboardHTML();if(html&&html.length>0)TinyMCE_paste__insertWordContent(html);}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'});}}else TinyMCE_paste__insertWordContent(value);return true;case "mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true;}return false;}function TinyMCE_paste__insertText(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=tinyMCE.regexpReplace(content,"\r\n\r\n","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\r\r","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\n\n","</p><p>","gi");if((pos=content.indexOf('</p><p>'))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">";}before+="<p>";content=before+content.substring(pos+7)+after;}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi");}}tinyMCE.execCommand("mceInsertRawHTML",false,content);}}function TinyMCE_paste__insertWordContent(content){if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>');}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");content=content.replace(/<\/?span[^>]*>/gi,"");content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case "all":content=content.replace(/<(\w[^>]*)class=([^|>]*)([^>]*)/gi,"<$1$3");break;case "mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+TinyMCE_paste__reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*)lang=([^|>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/--page break--\s*<p>&nbsp;<\/p>/gi,"");content=content.replace(/--page break--/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi');}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_paste_convertMiddots(div,"--list--"));while(TinyMCE_paste_convertMiddots(div,middot,className));while(TinyMCE_paste_convertMiddots(div,bull));content=div.innerHTML;}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi,'<p>&nbsp;&nbsp;</p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b>&nbsp;<\/b>/gi,'<b>&nbsp;&nbsp;</b>');content=content.replace(/^(&nbsp;)*/gi,'');}content=content.replace(/--list--/gi,"");tinyMCE.execCommand("mceInsertContent",false,content);tinyMCE.execCommand("mceCleanup");}}function TinyMCE_paste__reEscape(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c;}return o;}function TinyMCE_paste_convertMiddots(div,search,class_name){var mdot=String.fromCharCode(183);var bull=String.fromCharCode(8226);var nodes=div.getElementsByTagName("p");for(var i=0;i<nodes.length;i++){var p=nodes[i];if(p.innerHTML.indexOf(search)!=-1){var ul=document.createElement("ul");if(class_name)ul.className=class_name;var li=document.createElement("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');ul.appendChild(li);var np=p.nextSibling;while(np){if(np.nodeType!=1||np.innerHTML.indexOf(search)==-1)break;var cp=np.nextSibling;var li=document.createElement("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp;}p.parentNode.replaceChild(ul,p);return true;}}return false;}function TinyMCE_paste__clipboardHTML(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1;}document.body.appendChild(div);}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html;}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pastetext.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pastetext.gif
new file mode 100644 (file)
index 0000000..e381cc6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pastetext.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pasteword.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pasteword.gif
new file mode 100644 (file)
index 0000000..0ccb008
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/pasteword.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/selectall.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/selectall.gif
new file mode 100644 (file)
index 0000000..c4f9901
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/images/selectall.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/jscripts/pastetext.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/jscripts/pastetext.js
new file mode 100644 (file)
index 0000000..624c485
--- /dev/null
@@ -0,0 +1,34 @@
+function saveContent() {
+       if (document.forms[0].htmlSource.value == '') {
+               tinyMCEPopup.close();
+               return false;
+       }
+
+       tinyMCEPopup.execCommand('mcePasteText', false, {
+               html : document.forms[0].htmlSource.value,
+               linebreaks : document.forms[0].linebreaks.checked
+       });
+
+       tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       resizeInputs();
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+       if (!tinyMCE.isMSIE) {
+               wHeight = self.innerHeight-80;
+               wWidth = self.innerWidth-17;
+       } else {
+               wHeight = document.body.clientHeight-80;
+               wWidth = document.body.clientWidth-17;
+       }
+
+       document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
+       document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/jscripts/pasteword.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/jscripts/pasteword.js
new file mode 100644 (file)
index 0000000..38813fd
--- /dev/null
@@ -0,0 +1,46 @@
+function saveContent() {
+       var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;
+
+       if (html == ''){
+               tinyMCEPopup.close();
+               return false;
+       }
+
+       tinyMCEPopup.execCommand('mcePasteWord', false, html);
+       tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       // Fix for endless reloading in FF
+       window.setTimeout('createIFrame();', 10);
+}
+
+function createIFrame() {
+       document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function initIframe(doc) {
+       var dir = tinyMCE.selectedInstance.settings['directionality'];
+       doc.body.dir = dir;
+       resizeInputs();
+}
+
+function resizeInputs() {
+       if (!tinyMCE.isMSIE) {
+               wHeight = self.innerHeight - 80;
+               wWidth = self.innerWidth - 18;
+       } else {
+               wHeight = document.body.clientHeight - 80;
+               wWidth = document.body.clientWidth - 18;
+       }
+
+       var elm = document.getElementById('frmData');
+       if (elm) {
+               elm.style.height = Math.abs(wHeight) + 'px';
+               elm.style.width  = Math.abs(wWidth) + 'px';
+       }
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/cs.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/cs.js
new file mode 100644 (file)
index 0000000..5b2051f
--- /dev/null
@@ -0,0 +1,16 @@
+/**
+ * Czech lang variables 
+ * encoding: utf-8
+ *  
+ * $Id: cs.js,v 1.1 2006-10-02 05:37:05 shizuki Exp $ 
+ */  
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Vložit neformátovaný text',
+paste_text_title : 'Použij CTRL + V na klávesnici pro vložení textu do okna.',
+paste_text_linebreaks : 'Nechej přerušení řádků',
+paste_word_desc : 'Vložit text z aplikace Word',
+paste_word_title : 'Použij CTRL + V na klávesnici pro vložení textu do okna.',
+selectall_desc : 'Označit vše'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/cy.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/cy.js
new file mode 100644 (file)
index 0000000..757d6b5
--- /dev/null
@@ -0,0 +1,10 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Gludo fel Testun Plaen',
+paste_text_title : 'Defnyddia CTRL+V ar dy fysellfwrdd i ludo\'r testun i fewn i\'r ffenest.',
+paste_text_linebreaks : 'Cadw toriadau llinell',
+paste_word_desc : 'Gludo o Word',
+paste_word_title : 'Defnyddia CTRL+V ar dy fysellfwrdd i ludo\'r testun i fewn i\'r ffenest.',
+selectall_desc : 'Dewis Popeth'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/da.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/da.js
new file mode 100644 (file)
index 0000000..6dbac06
--- /dev/null
@@ -0,0 +1,10 @@
+// DK lang variables contributed by Jan Moelgaard
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Inds&#230;t som ren tekst',
+paste_text_title : 'Brug CTRL+V p&#229; tastaturett inds&#230;tte teksten i vinduet.',
+paste_text_linebreaks : 'Behold linjebrud',
+paste_word_desc : 'Inds&#230;t fra Word',
+paste_word_title : 'Brug CTRL+V p&#229; tastaturett inds&#230;tte teksten i vinduet.',
+selectall_desc : 'V&#230;lg alt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/de.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/de.js
new file mode 100644 (file)
index 0000000..6970228
--- /dev/null
@@ -0,0 +1,10 @@
+// DE lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Als unformatierten Text einf&uuml;gen',
+paste_text_title : 'Benutzen Sie Strg+V/Apfel-V auf Ihrer Tastatur, um Text in das Fenster einzuf&uuml;gen.',
+paste_text_linebreaks : 'Zeilenumbr&uuml;che beibehalten',
+paste_word_desc : 'Microsoft Word-Text einf&uuml;gen',
+paste_word_title : 'Benutzen Sie Strg+V/Apfel-V auf Ihrer Tastatur, um Text in das Fenster einzuf&uuml;gen.',
+selectall_desc : 'Alles ausw&auml;hlen'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/en.js
new file mode 100644 (file)
index 0000000..76fce8f
--- /dev/null
@@ -0,0 +1,10 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Paste as Plain Text',
+paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
+paste_text_linebreaks : 'Keep linebreaks',
+paste_word_desc : 'Paste from Word',
+paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
+selectall_desc : 'Select All'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/es.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/es.js
new file mode 100644 (file)
index 0000000..2c2e02a
--- /dev/null
@@ -0,0 +1,12 @@
+// ES lang variables by Alvaro Velasco and Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>
+// Last Updated : October 2005
+// TinyMCE Version : 2.0RC3
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Pegar como texto plano',
+paste_text_title : 'Use CTRL+V para pegar el texto en la ventana.',
+paste_text_linebreaks : 'Mantener saltos de linea',
+paste_word_desc : 'Pegar desde Word',
+paste_word_title : 'Use CTRL+V para pegar el texto en la ventana.',
+selectall_desc : 'Seleccionar todo'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fi.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fi.js
new file mode 100644 (file)
index 0000000..c6b97ff
--- /dev/null
@@ -0,0 +1,10 @@
+// FI lang variables by Tuomo Aura, Ateco.fi
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Liit&auml; tavallisena tekstin&auml;',
+paste_text_title : 'Paina CTRL+V liitt&auml;&auml;ksesi leikkaamasi/kopioimasi tekstin ikkunaan.',
+paste_text_linebreaks : 'S&auml;ilyt&auml; rivinvaihdot',
+paste_word_desc : 'Liit&auml; Wordista',
+paste_word_title : 'Paina CTRL+V liitt&auml;&auml;ksesi leikkaamasi/kopioimasi tekstin ikkunaan.',
+selectall_desc : 'Valitse kaikki'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fr.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fr.js
new file mode 100644 (file)
index 0000000..1dc855a
--- /dev/null
@@ -0,0 +1,10 @@
+// Traduit par Normand Lamoureux le 2005-11-12
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Coller comme du texte',
+paste_text_title : 'Faites CTRL+V pour coller le texte dans la fenêtre.',
+paste_text_linebreaks : 'Conserver les retours à la ligne',
+paste_word_desc : 'Coller depuis Word',
+paste_word_title : 'Faites CTRL+V pour coller le texte dans la fenêtre.',
+selectall_desc : 'Sélectionner tout'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fr_ca.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/fr_ca.js
new file mode 100644 (file)
index 0000000..5183378
--- /dev/null
@@ -0,0 +1,10 @@
+// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Coller texte seulement',
+paste_text_title : 'Utilisez CTRL+V sur votre clavier pour coller le texte dans la fenêtre.',
+paste_text_linebreaks : 'Garder les sauts de ligne',
+paste_word_desc : 'Coller à partir de Word',
+paste_word_title : 'Utilisez CTRL+V sur votre clavier pour coller le texte dans la fenêtre.',
+selectall_desc : 'Selectionner tout'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/he.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/he.js
new file mode 100644 (file)
index 0000000..bdca6d2
--- /dev/null
@@ -0,0 +1,10 @@
+// HE lang variables by Liron Newman, http://eesh.net
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'äãá÷ ëè÷ñè øâéì',
+paste_text_title : 'äùúîù á-CTRL+V ùòì äî÷ìãú ùìê ëãé ìäãáé÷ àú äè÷ñè ìçìåï.',
+paste_text_linebreaks : 'ùîåø òì îòáøé ùåøä',
+paste_word_desc : 'äãá÷ î-Word',
+paste_word_title : 'äùúîù á-CTRL+V ùòì äî÷ìãú ùìê ëãé ìäãáé÷ àú äè÷ñè ìçìåï.',
+selectall_desc : 'áçø äëì'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/hu.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/hu.js
new file mode 100644 (file)
index 0000000..d292534
--- /dev/null
@@ -0,0 +1,10 @@
+// HU lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Beillesztés sima szövegként',
+paste_text_title : 'Használd a CTRL+V -t a billentyûzeten a szöveg beillesztéséhez az ablakba.',
+paste_text_linebreaks : 'Keep linebreaks',
+paste_word_desc : 'Beillesztés Word-bõl',
+paste_word_title : 'Használd a CTRL+V -t a billentyûzeten a szöveg beillesztéséhez az ablakba.',
+selectall_desc : 'Mindet kijelöl'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/is.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/is.js
new file mode 100644 (file)
index 0000000..5f94a29
--- /dev/null
@@ -0,0 +1,10 @@
+// Iceland lang variables by Johannes Birgir Jensson
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Skeyta texta eing&ouml;ngu',
+paste_text_title : 'Notaðu CTRL+V á lyklaborðinu til að skeyta textanum í gluggann.',
+paste_text_linebreaks : 'Halda l&iacute;nubilum',
+paste_word_desc : 'Skeyta &uacute;r Word',
+paste_word_title : 'Notaðu CTRL+V á lyklaborðinu til að skeyta textanum í gluggann.',
+selectall_desc : 'Velja allt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ja_euc.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ja_euc.js
new file mode 100644 (file)
index 0000000..1fffea8
--- /dev/null
@@ -0,0 +1,10 @@
+// JP utf-8 lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : '¥Æ¥­¥¹¥ÈŽÉÕ¤±',
+paste_text_title : 'CTRL+V¤Ç¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Î¾ðÊó¤ò¤³¤³¤ËŽÉÕ¤±¤Æ²¼¤µ¤¤',
+paste_text_linebreaks : '²þ¹Ô¤òÊÝ»ý¤¹¤ë',
+paste_word_desc : 'Word·Á¼°¤ÎŽÉÕ¤±',
+paste_word_title : 'CTRL+V¤Ç¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Î¾ðÊó¤ò¤³¤³¤ËŽÉÕ¤±¤Æ²¼¤µ¤¤',
+selectall_desc : '¤¹¤Ù¤ÆÁªÂò'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ja_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ja_utf8.js
new file mode 100644 (file)
index 0000000..f67e2ed
--- /dev/null
@@ -0,0 +1,10 @@
+// JP utf-8 lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'テキスト貼付け',
+paste_text_title : 'CTRL+Vでクリップボードの情報をここに貼付けて下さい',
+paste_text_linebreaks : '改行を保持する',
+paste_word_desc : 'Word形式の貼付け',
+paste_word_title : 'CTRL+Vでクリップボードの情報をここに貼付けて下さい',
+selectall_desc : 'すべて選択'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nb.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nb.js
new file mode 100644 (file)
index 0000000..7984c1f
--- /dev/null
@@ -0,0 +1,10 @@
+// nb = Norwegian (bokm&aring;l) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Lim inn som vanlig tekst',
+paste_text_title : 'Bruk CTRL+V p&aring; tastaturet ditt for &aring; lime inn i dette vinduet.',
+paste_text_linebreaks : 'Spar linjebrudd',
+paste_word_desc : 'Lim inn fra Office (Word)',
+paste_word_title : 'Bruk CTRL+V p&aring; tastaturet ditt for &aring; lime inn i dette vinduet.',
+selectall_desc : 'Velg alt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nl.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nl.js
new file mode 100644 (file)
index 0000000..340ce3d
--- /dev/null
@@ -0,0 +1,10 @@
+// NL lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Plakken als platte tekst',
+paste_text_title : 'Gebruik CTRL+V op uw toetsenbord om de tekst in het venster te plakken.',
+paste_text_linebreaks : 'Behoud regeleinden',
+paste_word_desc : 'Plakken uit Word',
+paste_word_title : 'Gebruik CTRL+V op uw toetsenbord om de tekst in het venster te plakken.',
+selectall_desc : 'Alles selecteren'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nn.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/nn.js
new file mode 100644 (file)
index 0000000..227456b
--- /dev/null
@@ -0,0 +1,10 @@
+// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Lim inn som vanleg tekst',
+paste_text_title : 'Bruk CTRL+V p&aring; tastaturet ditt for &aring; lime inn i dette vindauget.',
+paste_text_linebreaks : 'Spar linjebrudd',
+paste_word_desc : 'Lim inn frå Office (Word)',
+paste_word_title : 'Bruk CTRL+V p&aring; tastaturet ditt for &aring; lime inn i dette vindauget.',
+selectall_desc : 'Velg alt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/pl.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/pl.js
new file mode 100644 (file)
index 0000000..52a29b6
--- /dev/null
@@ -0,0 +1,12 @@
+// PL lang variables
+// fixed by Wooya
+// http://www.mfusion.prv.pl
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Wklej jako czysty tekst',
+paste_text_title : 'U¿yj CTRL+V na klawiaturze, aby wkleiæ tekst do okna.',
+paste_text_linebreaks : 'Zachowaj ³amanie linii',
+paste_word_desc : 'Wklej z Worda',
+paste_word_title : 'U¿yj CTRL+V na klawiaturze, aby wkleiæ tekst do okna.',
+selectall_desc : 'Zaznacz wszystko'
+});
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/pt_br.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/pt_br.js
new file mode 100644 (file)
index 0000000..6cb2949
--- /dev/null
@@ -0,0 +1,17 @@
+/**
+ * pt_br lang variables
+ * Brazilian Portuguese
+ *
+ * Authors :
+ *           Marcio Barbosa (mpg) <mpg@mpg.com.br>
+ * Last Updated : November 26, 2005
+ * TinyMCE Version : 2.0RC4
+ */
+tinyMCE.addToLang('',{
+paste_text_desc : 'Colar um texto simples',
+paste_text_title : 'Use CTRL+V no seu teclado para colar o texto dentro da janela.',
+paste_text_linebreaks : 'Manter quebras de linha',
+paste_word_desc : 'Colar do Word',
+paste_word_title : 'Use CTRL+V no seu teclado para colar o texto dentro da janela.',
+selectall_desc : 'Selecionar tudo'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru.js
new file mode 100644 (file)
index 0000000..1c8a9a1
--- /dev/null
@@ -0,0 +1,10 @@
+// RU cp1251 lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Âñòàâèòü êàê ïðîñòîé òåêñò',
+paste_text_title : 'Èñïîëüçóéòå CTRL+V äëÿ âñòàâêè òåêñòà â îêîøêî.',
+paste_text_linebreaks : 'Ñîõðàíèòü ïåðåíîñû ñòðîê',
+paste_word_desc : 'Âñòàâèòü èç Word',
+paste_word_title : 'Èñïîëüçóéòå CTRL+V äëÿ âñòàâêè òåêñòà â îêîøêî.',
+selectall_desc : 'Âûäåëèòü âñ¸'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru_KOI8-R.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru_KOI8-R.js
new file mode 100644 (file)
index 0000000..465fcac
--- /dev/null
@@ -0,0 +1,10 @@
+// RU KOI8-R lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : '÷ÓÔÁ×ÉÔØ ËÁË ÐÒÏÓÔÏÊ ÔÅËÓÔ',
+paste_text_title : 'éÓÐÏÌØÚÕÊÔÅ CTRL+V ÄÌÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ × ÏËÏÛËÏ.',
+paste_text_linebreaks : 'óÏÈÒÁÎÉÔØ ÐÅÒÅÎÏÓÙ ÓÔÒÏË',
+paste_word_desc : '÷ÓÔÁ×ÉÔØ ÉÚ Word',
+paste_word_title : 'éÓÐÏÌØÚÕÊÔÅ CTRL+V ÄÌÑ ×ÓÔÁ×ËÉ ÔÅËÓÔÁ × ÏËÏÛËÏ.',
+selectall_desc : '÷ÙÄÅÌÉÔØ ×Ó£'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru_UTF-8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/ru_UTF-8.js
new file mode 100644 (file)
index 0000000..7d7706c
--- /dev/null
@@ -0,0 +1,10 @@
+// RU UTF-8 lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Вставить как простой текст',
+paste_text_title : 'Используйте CTRL+V для вставки текста в окошко.',
+paste_text_linebreaks : 'Сохранить переносы строк',
+paste_word_desc : 'Вставить из Word',
+paste_word_title : 'Используйте CTRL+V для вставки текста в окошко.',
+selectall_desc : 'Выделить всё'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/sk.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/sk.js
new file mode 100644 (file)
index 0000000..341bd68
--- /dev/null
@@ -0,0 +1,18 @@
+/**
+ * Slovak lang variables 
+ * encoding: utf-8
+ * 
+ * @author Vladimir VASIL vvasil@post.sk
+ *    
+ * $Id: sk.js,v 1.1 2006-10-02 05:37:05 shizuki Exp $ 
+ */  
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Vložiť neformatovaný text',
+paste_text_title : 'Použi CTRL + V na klávesnici pre vloženie textu do okna.',
+paste_text_linebreaks : 'Nechaj prerušenie riadkov',
+paste_word_desc : 'Vložiť text s aplikáce Word',
+paste_word_title : 'Použi CTRL + V na klávesnici pre vloženie textu do okna.',
+selectall_desc : 'Označiť všetko'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/sv.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/sv.js
new file mode 100644 (file)
index 0000000..2a84ce1
--- /dev/null
@@ -0,0 +1,10 @@
+// SV lang variables
+
+tinyMCE.addToLang('',{
+paste_text_desc : 'Klistra in som vanlig text',
+paste_text_title : 'Anv&auml;nd CTRL+V p&aring; ditt tangentbord f&ouml;r att klistra in i detta f&ouml;nster.',
+paste_text_linebreaks : 'Spara radbrytningar',
+paste_word_desc : 'Klistra in fr&aring;n Word',
+paste_word_title : 'Anv&auml;nd CTRL+V p&aring; ditt tangentbord f&ouml;r att klistra in i detta f&ouml;nster.',
+selectall_desc : 'Select All'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_cn.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_cn.js
new file mode 100644 (file)
index 0000000..120e7df
--- /dev/null
@@ -0,0 +1,10 @@
+// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com)
+
+tinyMCE.addToLang('',{
+paste_text_desc : '×÷Ϊ´¿Îı¾Õ³Ìù',
+paste_text_title : 'ʹÓÿì½Ý¼ü CTRL+V ½«Îı¾±¾Õ³Ìùµ½ÒÔÏ´°¿ÚÖÐ',
+paste_text_linebreaks : '±£Áô»»Ðзû',
+paste_word_desc : '´ÓWordÕ³Ìù',
+paste_word_title : 'ʹÓÿì½Ý¼ü CTRL+V ½«Îı¾Õ³Ìùµ½ÒÔÏ´°¿Ú',
+selectall_desc : 'ȫѡ'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_tw.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_tw.js
new file mode 100644 (file)
index 0000000..74de639
--- /dev/null
@@ -0,0 +1,11 @@
+// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com
+
+tinyMCE.addToLang('',{
+paste_text_desc : '±Ä¯Â¤å¦r¼Ò¦¡¶K¤W',
+paste_text_title : '¨Ï¥ÎÁä½L¤Wªº CTRL+V ²Õ¦XÁä±N¤å¦r¶K¤J§@·~°Ï¤¤',
+paste_text_linebreaks : '«O¯d´«¦æ²Å¸¹',
+paste_word_desc : '¦Û Word ¤ºÂà¶K',
+paste_word_title : '¨Ï¥ÎÁä½L¤Wªº CTRL+V ²Õ¦XÁä±N¤å¦r¶K¤J§@·~°Ï¤¤',
+selectall_desc : '¥þ¿ï'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_tw_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/langs/zh_tw_utf8.js
new file mode 100644 (file)
index 0000000..4cbf704
--- /dev/null
@@ -0,0 +1,11 @@
+// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com
+
+tinyMCE.addToLang('',{
+paste_text_desc : '採純文字模式貼上',
+paste_text_title : '使用鍵盤上的 CTRL+V 組合鍵將文字貼入作業區中',
+paste_text_linebreaks : '保留換行符號',
+paste_word_desc : '自 Word 內轉貼',
+paste_word_title : '使用鍵盤上的 CTRL+V 組合鍵將文字貼入作業區中',
+selectall_desc : '全選'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/pastetext.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/pastetext.htm
new file mode 100644 (file)
index 0000000..0b8e85f
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_paste_text_desc}</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/pastetext.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
+<form name="source" onsubmit="saveContent();">
+       <div style="float: left" class="title">{$lang_paste_text_desc}</div>
+
+       <div style="float: right">
+               <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{$lang_paste_text_linebreaks}</label>
+       </div>
+
+       <br style="clear: both" />
+
+       <div>{$lang_paste_text_title}</div>
+
+       <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>
+
+       <div class="mceActionPanel">
+               <div style="float: left">
+                       <input type="button" name="insert" value="{$lang_insert}" onclick="saveContent();" id="insert" />
+               </div>
+
+               <div style="float: right">
+                       <input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+               </div>
+       </div>
+</form>
+</body> 
+</html>
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/pasteword.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/pasteword.htm
new file mode 100644 (file)
index 0000000..40a86df
--- /dev/null
@@ -0,0 +1,29 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+       <title>{$lang_paste_word_desc}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/pasteword.js"></script>
+       <link href="css/pasteword.css" rel="stylesheet" type="text/css" />
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
+       <form name="source" onsubmit="saveContent();" action="#">
+               <div class="title">{$lang_paste_word_desc}</div>
+
+               <div>{$lang_paste_word_title}</div>
+
+               <div id="iframecontainer"></div>
+
+               <div class="mceActionPanel">
+                       <div style="float: left">
+                               <input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="saveContent();" />
+                       </div>
+
+                       <div style="float: right">
+                               <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+                       </div>
+               </div>
+       </form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/paste/readme.txt
new file mode 100644 (file)
index 0000000..6bc6d7d
--- /dev/null
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/readme.txt
new file mode 100644 (file)
index 0000000..9192b26
--- /dev/null
@@ -0,0 +1 @@
+This is the location you place TinyMCE plugins.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/editor_plugin.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/editor_plugin.js
new file mode 100644 (file)
index 0000000..579e4e9
--- /dev/null
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('searchreplace','ja_utf8,ja_euc,en,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk');function TinyMCE_searchreplace_getInfo(){return{longname:'Search/Replace',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_searchreplace_getControlHTML(control_name){switch(control_name){case "search":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearch\',true);return false;';return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" target="_self" onmousedown="return false;"><img id="{$editor_id}_search" src="{$pluginurl}/images/search.gif" title="{$lang_searchreplace_search_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';case "replace":var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearchReplace\',true);return false;';return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" target="_self" onmousedown="return false;"><img id="{$editor_id}_replace" src="{$pluginurl}/images/replace.gif" title="{$lang_searchreplace_replace_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';}return "";}function TinyMCE_searchreplace_execCommand(editor_id,element,command,user_interface,value){function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key];}function replaceSel(search_str,str){if(!tinyMCE.isMSIE){var sel=instance.contentWindow.getSelection();var rng=sel.getRangeAt(0);}else{var rng=instance.contentWindow.document.selection.createRange();}if(!tinyMCE.isMSIE){var doc=instance.contentWindow.document;if(str.indexOf(search_str)==-1){rng.deleteContents();rng.insertNode(rng.createContextualFragment(str));rng.collapse(false);}else{doc.execCommand("insertimage",false,"#mce_temp_url#");var elm=tinyMCE.getElementByAttributeValue(doc.body,"img","src","#mce_temp_url#");elm.parentNode.replaceChild(doc.createTextNode(str),elm);}}else{if(rng.item)rng.item(0).outerHTML=str;else rng.pasteHTML(str);}}var instance=tinyMCE.getInstanceById(editor_id);if(!value)value=new Array();defValue("editor_id",editor_id);defValue("searchstring","");defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");switch(command){case "mceResetSearch":tinyMCE.lastSearchRng=null;return true;case "mceSearch":if(user_interface){var template=new Array();if(value['replacestring']!=null){template['file']='../../plugins/searchreplace/replace.htm';template['width']=320;template['height']=120+(tinyMCE.isNS7?20:0);template['width']+=tinyMCE.getLang('lang_searchreplace_replace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_replace_delta_height',0);}else{template['file']='../../plugins/searchreplace/search.htm';template['width']=310;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_searchreplace_search_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_replace_delta_height',0);}tinyMCE.openWindow(template,value);}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;if(body.innerHTML==""){alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true;}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring']);value['replacemode']="none";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}if(tinyMCE.isMSIE){var rng=tinyMCE.lastSearchRng?tinyMCE.lastSearchRng:doc.selection.createRange();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){alert('This operation is currently not supported by this browser.');return true;}if(value['replacemode']=="all"){while(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(false);replaceSel(value['string'],value['replacestring']);}alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(value['backwards']);tinyMCE.lastSearchRng=rng;}else alert(tinyMCE.getLang('lang_searchreplace_notfound'));}else{if(value['replacemode']=="all"){while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))replaceSel(value['string'],value['replacestring']);alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))alert(tinyMCE.getLang('lang_searchreplace_notfound'));}}return true;case "mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}return false;}function TinyMCE_searchreplace_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){return true;}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/editor_plugin_src.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..b6b0a55
--- /dev/null
@@ -0,0 +1,195 @@
+/* Import theme        specific language pack */
+tinyMCE.importPluginLanguagePack('searchreplace', 'en,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk');
+
+function TinyMCE_searchreplace_getInfo() {
+       return {
+               longname : 'Search/Replace',
+               author : 'Moxiecode Systems',
+               authorurl : 'http://tinymce.moxiecode.com',
+               infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',
+               version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+       };
+};
+
+function TinyMCE_searchreplace_getControlHTML(control_name)    {
+       switch (control_name) {
+               case "search":
+                       var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearch\',true);return false;';
+                       return '<a href="javascript:' + cmd + '" onclick="' + cmd + '" target="_self" onmousedown="return false;"><img id="{$editor_id}_search" src="{$pluginurl}/images/search.gif" title="{$lang_searchreplace_search_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';
+
+               case "replace":
+                       var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearchReplace\',true);return false;';
+                       return '<a href="javascript:' + cmd + '" onclick="' + cmd + '" target="_self" onmousedown="return false;"><img id="{$editor_id}_replace" src="{$pluginurl}/images/replace.gif" title="{$lang_searchreplace_replace_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';
+       }
+
+       return "";
+}
+
+/**
+ * Executes    the     search/replace commands.
+ */
+function TinyMCE_searchreplace_execCommand(editor_id, element, command,        user_interface, value) {
+       function defValue(key, default_value) {
+               value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
+       }
+
+       function replaceSel(search_str, str) {
+               // Get current selection
+               if (!tinyMCE.isMSIE) {
+                       var sel = instance.contentWindow.getSelection();
+                       var rng = sel.getRangeAt(0);
+               } else {
+                       var rng = instance.contentWindow.document.selection.createRange();
+               }
+
+               // Replace current one
+               if (!tinyMCE.isMSIE) {
+                       var doc = instance.contentWindow.document;
+
+                       // This way works when the replace doesn't contain the search string
+                       if (str.indexOf(search_str) == -1) {
+                               rng.deleteContents();
+                               rng.insertNode(rng.createContextualFragment(str));
+                               rng.collapse(false);
+                       } else {
+                               // Insert content ugly way! Needed to move selection to after replace item
+                               doc.execCommand("insertimage", false, "#mce_temp_url#");
+                               var elm = tinyMCE.getElementByAttributeValue(doc.body, "img", "src", "#mce_temp_url#");
+                               elm.parentNode.replaceChild(doc.createTextNode(str), elm);
+                       }
+               } else {
+                       if (rng.item)
+                               rng.item(0).outerHTML = str;
+                       else
+                               rng.pasteHTML(str);
+               }
+       }
+
+       var instance = tinyMCE.getInstanceById(editor_id);
+
+       if (!value)
+               value = new Array();
+
+       // Setup defualt values
+       defValue("editor_id", editor_id);
+       defValue("searchstring", "");
+       defValue("replacestring", null);
+       defValue("replacemode", "none");
+       defValue("casesensitive", false);
+       defValue("backwards", false);
+       defValue("wrap", false);
+       defValue("wholeword", false);
+       defValue("inline", "yes");
+
+       // Handle commands
+       switch (command) {
+               case "mceResetSearch":
+                       tinyMCE.lastSearchRng = null;
+                       return true;
+
+               case "mceSearch":
+                       if (user_interface) {
+                               // Open search dialog
+                               var template = new Array();
+
+                               if (value['replacestring'] != null) {
+                                       template['file'] = '../../plugins/searchreplace/replace.htm'; // Relative to theme
+                                       template['width'] = 320;
+                                       template['height'] = 120 + (tinyMCE.isNS7 ? 20 : 0);
+                                       template['width'] += tinyMCE.getLang('lang_searchreplace_replace_delta_width', 0);
+                                       template['height'] += tinyMCE.getLang('lang_searchreplace_replace_delta_height', 0);
+                               } else {
+                                       template['file'] = '../../plugins/searchreplace/search.htm'; // Relative to theme
+                                       template['width'] = 310;
+                                       template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0);
+                                       template['width'] += tinyMCE.getLang('lang_searchreplace_search_delta_width', 0);
+                                       template['height'] += tinyMCE.getLang('lang_searchreplace_replace_delta_height', 0);
+                               }
+
+                               tinyMCE.openWindow(template, value);
+                       } else {
+                               var win = tinyMCE.getInstanceById(editor_id).contentWindow;
+                               var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
+                               var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
+
+                               // Whats the point
+                               if (body.innerHTML == "") {
+                                       alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+                                       return true;
+                               }
+
+                               // Handle replace current
+                               if (value['replacemode'] == "current") {
+                                       replaceSel(value['string'], value['replacestring']);
+
+                                       // Search next one
+                                       value['replacemode'] = "none";
+                                       tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
+
+                                       return true;
+                               }
+
+                               if (tinyMCE.isMSIE) {
+                                       var rng = tinyMCE.lastSearchRng ? tinyMCE.lastSearchRng : doc.selection.createRange();
+                                       var flags = 0;
+
+                                       if (value['wholeword'])
+                                               flags = flags | 2;
+
+                                       if (value['casesensitive'])
+                                               flags = flags | 4;
+
+                                       if (!rng.findText) {
+                                               alert('This operation is currently not supported by this browser.');
+                                               return true;
+                                       }
+
+                                       // Handle replace all mode
+                                       if (value['replacemode'] == "all") {
+                                               while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
+                                                       rng.scrollIntoView();
+                                                       rng.select();
+                                                       rng.collapse(false);
+                                                       replaceSel(value['string'], value['replacestring']);
+                                               }
+
+                                               alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+                                               return true;
+                                       }
+
+                                       if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
+                                               rng.scrollIntoView();
+                                               rng.select();
+                                               rng.collapse(value['backwards']);
+                                               tinyMCE.lastSearchRng = rng;
+                                       } else
+                                               alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+                               } else {
+                                       if (value['replacemode'] == "all") {
+                                               while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
+                                                       replaceSel(value['string'], value['replacestring']);
+
+                                               alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+                                               return true;
+                                       }
+
+                                       if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
+                                               alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+                               }
+                       }
+                       return true;
+
+               case "mceSearchReplace":
+                       value['replacestring'] = "";
+
+                       tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
+                       return true;
+       }
+
+       // Pass to next handler in chain
+       return false;
+}
+
+function TinyMCE_searchreplace_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
+       return true;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/replace.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/replace.gif
new file mode 100644 (file)
index 0000000..784c73e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/replace.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/search.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/search.gif
new file mode 100644 (file)
index 0000000..cfe76b5
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/images/search.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/jscripts/replace.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/jscripts/replace.js
new file mode 100644 (file)
index 0000000..89eb2d4
--- /dev/null
@@ -0,0 +1,40 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       var formObj = document.forms[0];
+
+       formObj.searchstring.value = tinyMCE.getWindowArg("searchstring");
+       formObj.replacestring.value = tinyMCE.getWindowArg("replacestring");
+       formObj.casesensitivebox.checked = tinyMCE.getWindowArg("casesensitive");
+       formObj.backwards[0].checked = tinyMCE.getWindowArg("backwards");
+       formObj.backwards[1].checked = !tinyMCE.getWindowArg("backwards");
+//             formObj.wrapatend.checked = tinyMCE.getWindowArg("wrap");
+//             formObj.wholeword.checked = tinyMCE.getWindowArg("wholeword");
+
+       tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);
+}
+
+function searchNext(replacemode) {
+       var formObj = document.forms[0];
+
+       // Whats the point?
+       if (formObj.searchstring.value == "" || formObj.searchstring.value == formObj.replacestring.value)
+               return;
+
+       // Do search
+       tinyMCEPopup.execCommand('mceSearch', false, { 
+               string : formObj.searchstring.value,
+               replacestring : formObj.replacestring.value,
+               replacemode : replacemode,
+               casesensitive : formObj.casesensitivebox.checked,
+               backwards : formObj.backwards[0].checked
+//                     wrap : formObj.wrapatend.checked,
+//                     wholeword : formObj.wholeword.checked
+               }, false);
+
+       window.focus();
+}
+
+function cancelAction() {
+       tinyMCEPopup.close();
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/jscripts/search.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/jscripts/search.js
new file mode 100644 (file)
index 0000000..dec8b9b
--- /dev/null
@@ -0,0 +1,36 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       var formObj = document.forms[0];
+
+       formObj.searchstring.value = tinyMCE.getWindowArg("searchstring");
+       formObj.casesensitivebox.checked = tinyMCE.getWindowArg("casesensitive");
+       formObj.backwards[0].checked = tinyMCE.getWindowArg("backwards");
+       formObj.backwards[1].checked = !tinyMCE.getWindowArg("backwards");
+//             formObj.wrapatend.checked = tinyMCE.getWindowArg("wrap");
+//             formObj.wholeword.checked = tinyMCE.getWindowArg("wholeword");
+
+       tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);
+}
+
+function searchNext() {
+       var formObj = document.forms[0];
+
+       if (formObj.searchstring.value == "")
+               return;
+
+       // Do search
+       tinyMCEPopup.execCommand('mceSearch', false, { 
+               string : formObj.searchstring.value,
+               casesensitive : formObj.casesensitivebox.checked,
+               backwards : formObj.backwards[0].checked
+//                     wrap : formObj.wrapatend.checked,
+//                     wholeword : formObj.wholeword.checked
+               }, false);
+
+       window.focus();
+}
+
+function cancelAction() {
+       tinyMCEPopup.close();
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/cs.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/cs.js
new file mode 100644 (file)
index 0000000..5317592
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+ * Czech lang variables 
+ * encoding: utf-8
+ *  
+ * $Id: cs.js,v 1.1 2006-10-02 05:37:05 shizuki Exp $ 
+ */  
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Najdi',
+searchreplace_searchnext_desc : 'Najdi znova',
+searchreplace_replace_desc : 'Najdi/Nahradit',
+searchreplace_notfound : 'Vyhledávaní ukončeno. Řetězec nemusel být nalezen.',
+searchreplace_search_title : 'Najdi',
+searchreplace_replace_title : 'Najdi/Nahradit',
+searchreplace_allreplaced : 'Všechny výskyty řetězce byly změněny.',
+searchreplace_findwhat : 'Najít',
+searchreplace_replacewith : 'Nahradit',
+searchreplace_direction : 'Směr',
+searchreplace_up : 'Nahoru',
+searchreplace_down : 'Dolů',
+searchreplace_case : 'Přesná shoda',
+searchreplace_findnext : 'Najdi&nbsp;další',
+searchreplace_replace : 'Nahradit',
+searchreplace_replaceall : 'Nahradit&nbsp;vše',
+searchreplace_cancel : 'Zrušit'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/cy.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/cy.js
new file mode 100644 (file)
index 0000000..a5dfbcd
--- /dev/null
@@ -0,0 +1,22 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Canfod',
+searchreplace_searchnext_desc : 'Canfod eto',
+searchreplace_replace_desc : 'Canfod/Cyfnewid',
+searchreplace_notfound : 'Cwblhauwyd y chwilio. Methwyd dod o hyd i\'r testun canfod.',
+searchreplace_search_title : 'Canfod',
+searchreplace_replace_title : 'Canfod/Cyfnewid',
+searchreplace_allreplaced : 'Cyfnewidiwyd holl achosion y testun chwilio.',
+searchreplace_findwhat : 'Canfod beth',
+searchreplace_replacewith : 'Cyfnewid gyda',
+searchreplace_direction : 'Cyfeiriad',
+searchreplace_up : 'Fyny',
+searchreplace_down : 'Lawr',
+searchreplace_case : 'Maint llythrennau\'n bwysig',
+searchreplace_findnext : 'Canfod&nbsp;nesaf',
+searchreplace_replace : 'Cyfnewid',
+searchreplace_replaceall : 'Cyfnewid&nbsp;popeth',
+searchreplace_cancel : 'Diddymu',
+searchreplace_replace_delta_width : 75
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/da.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/da.js
new file mode 100644 (file)
index 0000000..bbd6fc9
--- /dev/null
@@ -0,0 +1,21 @@
+// DK lang variables contributed by Jan Moelgaard
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'S&#248;g',
+searchreplace_searchnext_desc : 'S&#248;g igen',
+searchreplace_replace_desc : 'S&#248;g og erstat',
+searchreplace_notfound : 'S&#248;gningen er f&#230;rdig. S&#248;geudtrykket kunne ikke findes.',
+searchreplace_search_title : 'S&#248;g',
+searchreplace_replace_title : 'S&#248;g og erstat',
+searchreplace_allreplaced : 'Alle forekomster af s&#248;geudtrykket blev erstattet.',
+searchreplace_findwhat : 'Hvad skal vi s&#248;ge efter',
+searchreplace_replacewith : 'Erstat det med',
+searchreplace_direction : 'Retning',
+searchreplace_up : 'Op',
+searchreplace_down : 'Ned',
+searchreplace_case : 'Skelne mellem store og sm&#229; bogstaver',
+searchreplace_findnext : 'S&#248;g efter&nbsp;n&#230;ste',
+searchreplace_replace : 'Erstat',
+searchreplace_replaceall : 'Erstat&nbsp;alle',
+searchreplace_cancel : 'Fortryd'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/de.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/de.js
new file mode 100644 (file)
index 0000000..34394b9
--- /dev/null
@@ -0,0 +1,22 @@
+// DE lang variables 
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Suchen',
+searchreplace_searchnext_desc : 'Erneut suchen',
+searchreplace_replace_desc : 'Suchen/Ersetzen',
+searchreplace_notfound : 'Die Suche wurde abgeschlossen. Das Suchwort wurde nicht gefunden.',
+searchreplace_search_title : 'Suchen',
+searchreplace_replace_title : 'Suchen/Ersetzen',
+searchreplace_allreplaced : 'Die Suche wurde abgeschlossen. Alle Vorkommen wurden ersetzt.',
+searchreplace_findwhat : 'Suchen nach',
+searchreplace_replacewith : 'Ersetzen durch',
+searchreplace_direction : 'Suchrichtung',
+searchreplace_up : 'R&uuml;ckw&auml;rts',
+searchreplace_down : 'Vorw&auml;rts',
+searchreplace_case : 'Gro&szlig;-/Kleinschreibung beachten',
+searchreplace_findnext : 'Weitersuchen',
+searchreplace_replace : 'Ersetzen',
+searchreplace_replaceall : 'Alle ersetzen',
+searchreplace_cancel : 'Abbrechen',
+searchreplace_replace_delta_width : 50
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/en.js
new file mode 100644 (file)
index 0000000..6860f46
--- /dev/null
@@ -0,0 +1,21 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Find',
+searchreplace_searchnext_desc : 'Find again',
+searchreplace_replace_desc : 'Find/Replace',
+searchreplace_notfound : 'The search has been compleated. The search string could not be found.',
+searchreplace_search_title : 'Find',
+searchreplace_replace_title : 'Find/Replace',
+searchreplace_allreplaced : 'All occurrences of the search string was replaced.',
+searchreplace_findwhat : 'Find what',
+searchreplace_replacewith : 'Replace with',
+searchreplace_direction : 'Direction',
+searchreplace_up : 'Up',
+searchreplace_down : 'Down',
+searchreplace_case : 'Match case',
+searchreplace_findnext : 'Find&nbsp;next',
+searchreplace_replace : 'Replace',
+searchreplace_replaceall : 'Replace&nbsp;all',
+searchreplace_cancel : 'Cancel'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/es.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/es.js
new file mode 100644 (file)
index 0000000..2f01e94
--- /dev/null
@@ -0,0 +1,30 @@
+/**
+ * ES lang variables
+ * 
+ * Authors : Alvaro Velasco,
+ *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
+ *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
+ * Last Updated : October 17, 2005
+ * TinyMCE Version : 2.0RC3
+ */
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Buscar',
+searchreplace_searchnext_desc : 'Buscar de nuevo',
+searchreplace_replace_desc : 'Buscar/Replazar',
+searchreplace_notfound : 'La búsqueda ha terminado. No se ha encontrado el elemento buscado.',
+searchreplace_search_title : 'Buscar',
+searchreplace_replace_title : 'Buscar/Replazar',
+searchreplace_allreplaced : 'Todas las ocurrencias del elemento buscado han sido remplazadas.',
+searchreplace_findwhat : 'Buscar',
+searchreplace_replacewith : 'Replazar con',
+searchreplace_direction : 'Dirección',
+searchreplace_up : 'Arriba',
+searchreplace_down : 'Abajo',
+searchreplace_case : 'Búsqueda exacta (mayúsculas y minúsculas)',
+searchreplace_findnext : 'Buscar siguiente',
+searchreplace_replace : 'Replazar',
+searchreplace_replaceall : 'Replazar todo',
+searchreplace_cancel : 'Cancelar',
+searchreplace_replace_delta_width : 70
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fa.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fa.js
new file mode 100644 (file)
index 0000000..36e543c
--- /dev/null
@@ -0,0 +1,26 @@
+// IR lang variables
+// Persian (Farsi) language pack (for IRAN)
+// By: Morteza Zafari
+// Lost@LostLord.com
+// http://www.LostLord.com
+
+tinyMCE.addToLang('',{
+dir : 'rtl',
+searchreplace_search_desc : '?????',
+searchreplace_searchnext_desc : '?????? ????',
+searchreplace_replace_desc : '?????/????????',
+searchreplace_notfound : '????? ????? ????. ??? ????? ???? ???.',
+searchreplace_search_title : '?????',
+searchreplace_replace_title : '?????/????????',
+searchreplace_allreplaced : '??? ????? ??????? ?????.',
+searchreplace_findwhat : '????? ?? ?????',
+searchreplace_replacewith : '???????? ??',
+searchreplace_direction : '??? ?????',
+searchreplace_up : '?? ??? ????',
+searchreplace_down : '?? ??? ?????',
+searchreplace_case : '????? ???? ???? ? ????',
+searchreplace_findnext : '????-????',
+searchreplace_replace : '???????-??',
+searchreplace_replaceall : '????????-???',
+searchreplace_cancel : '??????'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fi.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fi.js
new file mode 100644 (file)
index 0000000..1f24d6d
--- /dev/null
@@ -0,0 +1,21 @@
+// FI lang variables by Tuomo Aura, Ateco.fi
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Etsi',
+searchreplace_searchnext_desc : 'Etsi uudelleen',
+searchreplace_replace_desc : 'Etsi/Korvaa',
+searchreplace_notfound : 'Haku on p&auml;&auml;ttynyt. Haettua merkkijonoa ei l&ouml;ytynyt.',
+searchreplace_search_title : 'Etsi',
+searchreplace_replace_title : 'Etsi/Korvaa',
+searchreplace_allreplaced : 'Kaikki esiintyneet hakutermit korvattiin.',
+searchreplace_findwhat : 'Etsitt&auml;v&auml;',
+searchreplace_replacewith : 'Korvaava',
+searchreplace_direction : 'Suunta',
+searchreplace_up : 'Yl&ouml;s',
+searchreplace_down : 'Alas',
+searchreplace_case : 'Sama kirjainkoko',
+searchreplace_findnext : 'Etsi&nbsp;seuraava',
+searchreplace_replace : 'Korvaa',
+searchreplace_replaceall : 'Korvaa&nbsp;kaikki',
+searchreplace_cancel : 'Peruuta'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fr.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fr.js
new file mode 100644 (file)
index 0000000..1db82d7
--- /dev/null
@@ -0,0 +1,22 @@
+// Franch lang variables by Laurent Dran
+// Modifié par Normand Lamoureux le 2005-11-12
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Rehercher',
+searchreplace_searchnext_desc : 'Rehercher suivant',
+searchreplace_replace_desc : 'Rechercher/Remplacer',
+searchreplace_notfound : 'Recherche complétée. La fin du document a été atteinte.',
+searchreplace_search_title : 'Rechercher',
+searchreplace_replace_title : 'Rechercher/Remplacer',
+searchreplace_allreplaced : 'Action terminée avec succès. Les remplacements\nont été faits dans l\'ensemble du document.',
+searchreplace_findwhat : 'Trouver le mot',
+searchreplace_replacewith : 'Remplacer avec',
+searchreplace_direction : 'Direction',
+searchreplace_up : 'Vers le haut',
+searchreplace_down : 'Vers le bas',
+searchreplace_case : 'Respecter la casse',
+searchreplace_findnext : 'Suivant',
+searchreplace_replace : 'Remplacer',
+searchreplace_replaceall : 'Remplacer tout',
+searchreplace_cancel : 'Annuler'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fr_ca.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/fr_ca.js
new file mode 100644 (file)
index 0000000..6969dc2
--- /dev/null
@@ -0,0 +1,21 @@
+// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Chercher',
+searchreplace_searchnext_desc : 'Chercher suivant',
+searchreplace_replace_desc : 'Chercher/Remplacer',
+searchreplace_notfound : 'La recherche est terminée.  Aucune occurence trouvée.',
+searchreplace_search_title : 'Chercher',
+searchreplace_replace_title : 'Chercher/Remplacer',
+searchreplace_allreplaced : 'Toutes les occurences ont été remplacées.',
+searchreplace_findwhat : 'Chercher quoi',
+searchreplace_replacewith : 'Remplacer par',
+searchreplace_direction : 'Direction',
+searchreplace_up : 'Monter',
+searchreplace_down : 'Descendre',
+searchreplace_case : 'Sensible à la case',
+searchreplace_findnext : 'Chercher&nbsp,suivant',
+searchreplace_replace : 'Remplacer',
+searchreplace_replaceall : 'Remplacer&nbsp,tous',
+searchreplace_cancel : 'Annuler'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/he.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/he.js
new file mode 100644 (file)
index 0000000..44c865f
--- /dev/null
@@ -0,0 +1,21 @@
+// HE lang variables by Liron Newman, http://eesh.net
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'çôù',
+searchreplace_searchnext_desc : 'çôù ùåá',
+searchreplace_replace_desc : 'çôù/äçìó',
+searchreplace_notfound : 'äçéôåù äåùìí. îçøåæú äçéôåù ìà ðîöàä.',
+searchreplace_search_title : 'çôù',
+searchreplace_replace_title : 'çôù/äçìó',
+searchreplace_allreplaced : 'îçøåæú äçéôåù äåçìôä áëì î÷åí áå äéà ðîöàä.',
+searchreplace_findwhat : 'îä ìçôù',
+searchreplace_replacewith : 'ìäçìéó á-',
+searchreplace_direction : 'ëéååï',
+searchreplace_up : 'ìîòìä',
+searchreplace_down : 'ìîèä',
+searchreplace_case : 'äúàí âåãì àåúéåú',
+searchreplace_findnext : 'îöà&nbsp;àú&nbsp;äáà',
+searchreplace_replace : 'äçìó',
+searchreplace_replaceall : 'äçìó&nbsp;äëì',
+searchreplace_cancel : 'áèì'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/hu.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/hu.js
new file mode 100644 (file)
index 0000000..a7317c9
--- /dev/null
@@ -0,0 +1,21 @@
+// HU lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Keresés',
+searchreplace_searchnext_desc : 'Újra keresés',
+searchreplace_replace_desc : 'Keres/Cserél',
+searchreplace_notfound : 'A keresés elkészült. A keresési szöveg nem található.',
+searchreplace_search_title : 'Keres',
+searchreplace_replace_title : 'Keres/Cserél',
+searchreplace_allreplaced : 'A kereséséi szöveg minden elõfordulása cserélve lett.',
+searchreplace_findwhat : 'Mit keres',
+searchreplace_replacewith : 'Mire cserél',
+searchreplace_direction : 'Hatókör',
+searchreplace_up : 'Fel',
+searchreplace_down : 'Le',
+searchreplace_case : 'Teljes szó',
+searchreplace_findnext : 'Következõt&nbsp;keres',
+searchreplace_replace : 'Cserél',
+searchreplace_replaceall : 'Mindent&nbsp;cserél',
+searchreplace_cancel : 'Mégse'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/is.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/is.js
new file mode 100644 (file)
index 0000000..e8349fc
--- /dev/null
@@ -0,0 +1,22 @@
+// Iceland lang variables by Johannes Birgir Jensson
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Finna',
+searchreplace_searchnext_desc : 'Finna aftur',
+searchreplace_replace_desc : 'Finna/skipta',
+searchreplace_notfound : 'Leit er lokið. Leitarorð fannst ekki.',
+searchreplace_search_title : 'Finna',
+searchreplace_replace_title : 'Finna/skipta',
+searchreplace_allreplaced : 'Skipt var um öll tilvik.',
+searchreplace_findwhat : 'Finna hvar',
+searchreplace_replacewith : 'Skipta &uacute;t fyrir ',
+searchreplace_direction : '&Aacute;tt',
+searchreplace_up : 'Upp',
+searchreplace_down : 'Ni&eth;ur',
+searchreplace_case : 'Passa h&aacute;-/l&aacute;gstafi',
+searchreplace_findnext : 'Finna&nbsp;n&aelig;st',
+searchreplace_replace : 'Skipta',
+searchreplace_replaceall : 'Skipta&nbsp;&ouml;llum',
+searchreplace_cancel : 'H&aelig;tta vi&eth;',
+searchreplace_replace_delta_width : 30
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ja_euc.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ja_euc.js
new file mode 100644 (file)
index 0000000..12c8078
--- /dev/null
@@ -0,0 +1,21 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : '¸¡º÷',
+searchreplace_searchnext_desc : 'ºÆ¸¡º÷',
+searchreplace_replace_desc : '¸¡º÷/ÃÖ´¹',
+searchreplace_notfound : '¸¡º÷½ªÎ»¡£¸¡º÷ÂоÝʸ»úÎó¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿',
+searchreplace_search_title : '¸¡º÷',
+searchreplace_replace_title : '¸¡º÷/ÃÖ´¹',
+searchreplace_allreplaced : '¤¹¤Ù¤ÆÃÖ´¹¤·¤Þ¤·¤¿',
+searchreplace_findwhat : '¸¡º÷¤¹¤ëʸ»úÎó',
+searchreplace_replacewith : 'ÃÖ´¹¸å¤Îʸ»úÎó',
+searchreplace_direction : '¸¡º÷¤¹¤ëÊý¸þ',
+searchreplace_up : '¾å¤Ø',
+searchreplace_down : '²¼¤Ø',
+searchreplace_case : 'Àµµ¬É½¸½¤ò»È¤¦',
+searchreplace_findnext : '¼¡¤ò¸¡º÷',
+searchreplace_replace : 'ÃÖ´¹',
+searchreplace_replaceall : '¤¹¤Ù¤ÆÃÖ´¹',
+searchreplace_cancel : '¥­¥ã¥ó¥»¥ë'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ja_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ja_utf8.js
new file mode 100644 (file)
index 0000000..a231d6f
--- /dev/null
@@ -0,0 +1,21 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : '検索',
+searchreplace_searchnext_desc : '再検索',
+searchreplace_replace_desc : '検索/置換',
+searchreplace_notfound : '検索終了。検索対象文字列は見つかりませんでした',
+searchreplace_search_title : '検索',
+searchreplace_replace_title : '検索/置換',
+searchreplace_allreplaced : 'すべて置換しました',
+searchreplace_findwhat : '検索する文字列',
+searchreplace_replacewith : '置換後の文字列',
+searchreplace_direction : '検索する方向',
+searchreplace_up : '上へ',
+searchreplace_down : '下へ',
+searchreplace_case : '正規表現を使う',
+searchreplace_findnext : '次を検索',
+searchreplace_replace : '置換',
+searchreplace_replaceall : 'すべて置換',
+searchreplace_cancel : 'キャンセル'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nb.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nb.js
new file mode 100644 (file)
index 0000000..4d8f058
--- /dev/null
@@ -0,0 +1,21 @@
+// nb = Norwegian (bokm&aring;l) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'S&oslash;k',
+searchreplace_searchnext_desc : 'S&oslash;k igjen',
+searchreplace_replace_desc : 'S&oslash;k/Erstatt',
+searchreplace_notfound : 'S&oslash;kingen avsluttet. Fant ikke s&oslash;kestrengen.',
+searchreplace_search_title : 'S&oslash;k',
+searchreplace_replace_title : 'S&oslash;k/Erstatt',
+searchreplace_allreplaced : 'Alle treff p&aring; s&oslash;kestrengen erstattes',
+searchreplace_findwhat : 'S&oslash;k p&aring;',
+searchreplace_replacewith : 'Erstatt med',
+searchreplace_direction : 'S&oslash;keretning',
+searchreplace_up : 'Oppover',
+searchreplace_down : 'Nedover',
+searchreplace_case : 'Skill mellom store og sm&aring; tegn',
+searchreplace_findnext : 'Neste s&oslash;k',
+searchreplace_replace : 'Erstatt',
+searchreplace_replaceall : 'Erstatt alle',
+searchreplace_cancel : 'Avbryt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nl.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nl.js
new file mode 100644 (file)
index 0000000..ac0e0b4
--- /dev/null
@@ -0,0 +1,21 @@
+// NL lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Zoeken',
+searchreplace_searchnext_desc : 'Opnieuw zoeken',
+searchreplace_replace_desc : 'Zoeken/Vervangen',
+searchreplace_notfound : 'Het doorzoeken van document is voltooid. De gezochte tekst is niet gevonden.',
+searchreplace_search_title : 'Zoeken',
+searchreplace_replace_title : 'Zoeken/Vervangen',
+searchreplace_allreplaced : 'Alle zoekargumenten werden vervangen.',
+searchreplace_findwhat : 'Zoeken naar',
+searchreplace_replacewith : 'Vervangen door',
+searchreplace_direction : 'Richting',
+searchreplace_up : 'Omhoog',
+searchreplace_down : 'Omlaag',
+searchreplace_case : 'Identieke hoofdletters/kleine letters',
+searchreplace_findnext : 'Volgende zoeken',
+searchreplace_replace : 'Vervangen',
+searchreplace_replaceall : 'Alles&nbsp;vervangen',
+searchreplace_cancel : 'Annuleren'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nn.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/nn.js
new file mode 100644 (file)
index 0000000..80b5475
--- /dev/null
@@ -0,0 +1,21 @@
+// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'S&oslash;k',
+searchreplace_searchnext_desc : 'S&oslash;k igjen',
+searchreplace_replace_desc : 'S&oslash;k/Erstatt',
+searchreplace_notfound : 'S&oslash;kingen avsluttet. Fant ikkje s&oslash;kestrengen.',
+searchreplace_search_title : 'S&oslash;k',
+searchreplace_replace_title : 'S&oslash;k/Erstatt',
+searchreplace_allreplaced : 'Alle treff p&aring; s&oslash;kestrengen erstattes',
+searchreplace_findwhat : 'S&oslash;k p&aring;',
+searchreplace_replacewith : 'Erstatt med',
+searchreplace_direction : 'S&oslash;keretning',
+searchreplace_up : 'Oppover',
+searchreplace_down : 'Nedover',
+searchreplace_case : 'Skill mellom store og sm&aring; tegn',
+searchreplace_findnext : 'Neste s&oslash;k',
+searchreplace_replace : 'Erstatt',
+searchreplace_replaceall : 'Erstatt alle',
+searchreplace_cancel : 'Avbryt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/pl.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/pl.js
new file mode 100644 (file)
index 0000000..70a5a05
--- /dev/null
@@ -0,0 +1,23 @@
+// PL lang variables
+// fixed by Wooya
+// http://www.mfusion.prv.pl
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Znajd¼',
+searchreplace_searchnext_desc : 'Znajd¼ ponownie',
+searchreplace_replace_desc : 'Znajd¼/Zast±p',
+searchreplace_notfound : 'Ukoñczono wyszukiwanie. Poszukiwana fraza nie zosta³a odnaleziona.',
+searchreplace_search_title : 'Znajd¼',
+searchreplace_replace_title : 'Znajd¼/Zast±p',
+searchreplace_allreplaced : 'Wszystkie wyst±pienia poszukiwanej frazy zosta³y zast±pione. ',
+searchreplace_findwhat : 'Znajd¼',
+searchreplace_replacewith : 'Zast±p',
+searchreplace_direction : 'Kierunek',
+searchreplace_up : 'Do góry',
+searchreplace_down : 'Do do³u',
+searchreplace_case : 'Wielko¶æ liter',
+searchreplace_findnext : 'Znajd¼&nbsp;nastêpny',
+searchreplace_replace : 'Zast±p',
+searchreplace_replaceall : 'Zast±p&nbsp;wszystkie',
+searchreplace_cancel : 'Wyjd¼'
+});
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/pt_br.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/pt_br.js
new file mode 100644 (file)
index 0000000..75e8bee
--- /dev/null
@@ -0,0 +1,29 @@
+/**
+ * pt_br lang variables
+ * Brazilian Portuguese
+ *
+ * Authors : ????
+ * Revision and modifications:
+ *           Marcio Barbosa (mpg) <mpg@mpg.com.br>
+ * Last Updated : November 26, 2005
+ * TinyMCE Version : 2.0RC4
+ */
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Procurar',
+searchreplace_searchnext_desc : 'Procurar novamente',
+searchreplace_replace_desc : 'Procurar/Substituir',
+searchreplace_notfound : 'A procura foi concluída. A expressão procurada não foi encontrada.',
+searchreplace_search_title : 'Procurar',
+searchreplace_replace_title : 'Procurar/Substituir',
+searchreplace_allreplaced : 'Todas as ocorrências encontradas foram substituídas.',
+searchreplace_findwhat : 'Procurar por',
+searchreplace_replacewith : 'Substituir com',
+searchreplace_direction : 'Direção',
+searchreplace_up : 'Acima',
+searchreplace_down : 'Abaixo',
+searchreplace_case : 'Procurar exatamente',
+searchreplace_findnext : 'Procurar&nbsp,próxima',
+searchreplace_replace : 'Substituir',
+searchreplace_replaceall : 'Substituir&nbsp,tudo',
+searchreplace_cancel : 'Cancelar'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru.js
new file mode 100644 (file)
index 0000000..ccf4278
--- /dev/null
@@ -0,0 +1,22 @@
+// RU cp1251 lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Íàéòè',
+searchreplace_searchnext_desc : 'Íàéòè îïÿòü',
+searchreplace_replace_desc : 'Íàéòè/Çàìåíèòü',
+searchreplace_notfound : 'Ïîèñê çàâåðø¸í. Èñêîìîå âûðàæåíèå íå íàéäåíî.',
+searchreplace_search_title : 'Íàéòè',
+searchreplace_replace_title : 'Íàéòè/Çàìåíèòü',
+searchreplace_allreplaced : 'Çàìåíà áûëà âûïîëíåíà âî âñåõ ñëó÷àÿõ ñîâïàäåíèÿ èñêîìîãî âûðàæåíèÿ.',
+searchreplace_findwhat : 'Íàéòè ÷òî',
+searchreplace_replacewith : 'Çàìåíèòü ÷åì',
+searchreplace_direction : 'Íàïðàâëåíèå',
+searchreplace_up : 'Ââåðõ',
+searchreplace_down : 'Âíèç',
+searchreplace_case : 'Ñ ó÷¸òîì ðåãèñòðà',
+searchreplace_findnext : 'Íàéòè&nbsp;ñëåäóþùåå',
+searchreplace_replace : 'Çàìåíèòü',
+searchreplace_replaceall : 'Çàìåíèòü&nbsp;âåçäå',
+searchreplace_cancel : 'Îòìåíèòü',
+searchreplace_replace_delta_width : 150
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru_KOI8-R.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru_KOI8-R.js
new file mode 100644 (file)
index 0000000..6f2d84a
--- /dev/null
@@ -0,0 +1,21 @@
+// RU KOI8-R lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'îÁÊÔÉ',
+searchreplace_searchnext_desc : 'îÁÊÔÉ ÏÐÑÔØ',
+searchreplace_replace_desc : 'îÁÊÔÉ/úÁÍÅÎÉÔØ',
+searchreplace_notfound : 'ðÏÉÓË ÚÁ×ÅÒÛ£Î. éÓËÏÍÏÅ ×ÙÒÁÖÅÎÉÅ ÎÅ ÎÁÊÄÅÎÏ.',
+searchreplace_search_title : 'îÁÊÔÉ',
+searchreplace_replace_title : 'îÁÊÔÉ/úÁÍÅÎÉÔØ',
+searchreplace_allreplaced : 'úÁÍÅÎÁ ÂÙÌÁ ×ÙÐÏÌÎÅÎÁ ×Ï ×ÓÅÈ ÓÌÕÞÁÑÈ ÓÏ×ÐÁÄÅÎÉÑ ÉÓËÏÍÏÇÏ ×ÙÒÁÖÅÎÉÑ.',
+searchreplace_findwhat : 'îÁÊÔÉ ÞÔÏ',
+searchreplace_replacewith : 'úÁÍÅÎÉÔØ ÞÅÍ',
+searchreplace_direction : 'îÁÐÒÁ×ÌÅÎÉÅ',
+searchreplace_up : '÷×ÅÒÈ',
+searchreplace_down : '÷ÎÉÚ',
+searchreplace_case : 'ó ÕÞ£ÔÏÍ ÒÅÇÉÓÔÒÁ',
+searchreplace_findnext : 'îÁÊÔÉ&nbsp;ÓÌÅÄÕÀÝÅÅ',
+searchreplace_replace : 'úÁÍÅÎÉÔØ',
+searchreplace_replaceall : 'úÁÍÅÎÉÔØ&nbsp;×ÅÚÄÅ',
+searchreplace_cancel : 'ïÔÍÅÎÉÔØ'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru_UTF-8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/ru_UTF-8.js
new file mode 100644 (file)
index 0000000..79885c5
--- /dev/null
@@ -0,0 +1,21 @@
+// RU UTF-8 lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Найти',
+searchreplace_searchnext_desc : 'Найти опять',
+searchreplace_replace_desc : 'Найти/Заменить',
+searchreplace_notfound : 'Поиск завершён. Искомое выражение не найдено.',
+searchreplace_search_title : 'Найти',
+searchreplace_replace_title : 'Найти/Заменить',
+searchreplace_allreplaced : 'Замена была выполнена во всех случаях совпадения искомого выражения.',
+searchreplace_findwhat : 'Найти что',
+searchreplace_replacewith : 'Заменить чем',
+searchreplace_direction : 'Направление',
+searchreplace_up : 'Вверх',
+searchreplace_down : 'Вниз',
+searchreplace_case : 'С учётом регистра',
+searchreplace_findnext : 'Найти&nbsp;следующее',
+searchreplace_replace : 'Заменить',
+searchreplace_replaceall : 'Заменить&nbsp;везде',
+searchreplace_cancel : 'Отменить'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/sk.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/sk.js
new file mode 100644 (file)
index 0000000..1674660
--- /dev/null
@@ -0,0 +1,29 @@
+/**
+ * Slovak lang variables 
+ * encoding: utf-8
+ * 
+ * @author Vladimir VASIL vvasil@post.sk
+ *    
+ * $Id: sk.js,v 1.1 2006-10-02 05:37:05 shizuki Exp $ 
+ */  
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'Nájdi',
+searchreplace_searchnext_desc : 'Nájdi znova',
+searchreplace_replace_desc : 'Nájdi/Nahradiť',
+searchreplace_notfound : 'Vyhľadávanie ukončené. Reťazec nemusel byť nájdený.',
+searchreplace_search_title : 'Nájdi',
+searchreplace_replace_title : 'Nájdi/Nahradiť',
+searchreplace_allreplaced : 'Všetky výskyty reťazca boly zmenené.',
+searchreplace_findwhat : 'Nájsť',
+searchreplace_replacewith : 'Nahradiť',
+searchreplace_direction : 'Smer',
+searchreplace_up : 'Nahor',
+searchreplace_down : 'Dole',
+searchreplace_case : 'Presná shoda',
+searchreplace_findnext : 'Nájdi&nbsp;ďalší',
+searchreplace_replace : 'Nahradiť',
+searchreplace_replaceall : 'Nahradiť&nbsp;všetko',
+searchreplace_cancel : 'Zrušiť'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/sv.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/sv.js
new file mode 100644 (file)
index 0000000..87fb12c
--- /dev/null
@@ -0,0 +1,21 @@
+// SE lang variables
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : 'S&ouml;k',
+searchreplace_searchnext_desc : 'S&ouml;k igen',
+searchreplace_replace_desc : 'S&ouml;k/Ers&auml;tt',
+searchreplace_notfound : 'S&ouml;kningen &auml;r slutf&ouml;rd. S&ouml;kstr&auml;ngen kunde inte hittas.',
+searchreplace_search_title : 'S&ouml;k',
+searchreplace_replace_title : 'S&ouml;k/Ers&auml;tt',
+searchreplace_allreplaced : 'Alla tr&auml;ffar p&aring; s&ouml;kstr&auml;ngen ersattes',
+searchreplace_findwhat : 'S&ouml;k p&aring;',
+searchreplace_replacewith : 'Ers&auml;tt med',
+searchreplace_direction : 'S&ouml;kriktning',
+searchreplace_up : 'Upp&aring;t',
+searchreplace_down : 'Ner&aring;t',
+searchreplace_case : 'Matcha gemener/VERSALER',
+searchreplace_findnext : 'S&ouml;k&nbsp;n&auml;sta',
+searchreplace_replace : 'Ers&auml;tt',
+searchreplace_replaceall : 'Ers&auml;tt&nbsp;alla',
+searchreplace_cancel : 'Avbryt'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_cn.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_cn.js
new file mode 100644 (file)
index 0000000..33e0da5
--- /dev/null
@@ -0,0 +1,21 @@
+// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com)
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : '²éÕÒ',
+searchreplace_searchnext_desc : 'ÔٴβéÕÒ',
+searchreplace_replace_desc : '²éÕÒ/Ìæ»»',
+searchreplace_notfound : 'ËÑË÷Íê±Ï£¬Ã»ÓÐÕÒµ½Òª²éÕÒµÄ×Ö·û´®¡£',
+searchreplace_search_title : '²éÕÒ',
+searchreplace_replace_title : '²éÕÒ/Ìæ»»',
+searchreplace_allreplaced : 'ËùÓзûºÏÌõ¼þµÄ×Ö·û´®ÒÑÌæ»»Íê±Ï¡£',
+searchreplace_findwhat : '²éÕÒ',
+searchreplace_replacewith : 'Ì滻Ϊ',
+searchreplace_direction : '·½Ïò',
+searchreplace_up : 'ÏòÉÏ',
+searchreplace_down : 'ÏòÏÂ',
+searchreplace_case : 'Æ¥Åä´óСд',
+searchreplace_findnext : '²éÕÒÏÂÒ»¸ö',
+searchreplace_replace : 'Ìæ»»',
+searchreplace_replaceall : 'È«²¿Ìæ»»',
+searchreplace_cancel : 'È¡Ïû'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_tw.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_tw.js
new file mode 100644 (file)
index 0000000..19e71f2
--- /dev/null
@@ -0,0 +1,22 @@
+// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : '¬d¸ß',
+searchreplace_searchnext_desc : '¦A¦¸¬d¸ß',
+searchreplace_replace_desc : '¬d¸ß©Î´À´«',
+searchreplace_notfound : '¤w§¹¦¨¬d¸ß¡C¨S§ä¨ì«ü©wªº¦r¦ê¡C',
+searchreplace_search_title : '¬d¸ß',
+searchreplace_replace_title : '¬d¸ß©Î´À´«',
+searchreplace_allreplaced : '©Ò¦³§ä¨ìªº¦r¦ê¤w§¹¦¨´À´«',
+searchreplace_findwhat : '§ä¤°»ò',
+searchreplace_replacewith : '´À´«¦¨',
+searchreplace_direction : '¤è¦V',
+searchreplace_up : '©¹¤W',
+searchreplace_down : '¦V¤U',
+searchreplace_case : '¬Û²Åµ²ªG',
+searchreplace_findnext : '¬d¸ß¤U­Ó',
+searchreplace_replace : '´À´«',
+searchreplace_replaceall : '¥þ³¡´À´«',
+searchreplace_cancel : '¨ú®ø'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_tw_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/langs/zh_tw_utf8.js
new file mode 100644 (file)
index 0000000..de30d42
--- /dev/null
@@ -0,0 +1,22 @@
+// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com
+
+tinyMCE.addToLang('',{
+searchreplace_search_desc : '查詢',
+searchreplace_searchnext_desc : '再次查詢',
+searchreplace_replace_desc : '查詢或替換',
+searchreplace_notfound : '已完成查詢。沒找到指定的字串。',
+searchreplace_search_title : '查詢',
+searchreplace_replace_title : '查詢或替換',
+searchreplace_allreplaced : '所有找到的字串已完成替換',
+searchreplace_findwhat : '找什麼',
+searchreplace_replacewith : '替換成',
+searchreplace_direction : '方向',
+searchreplace_up : '往上',
+searchreplace_down : '向下',
+searchreplace_case : '相符結果',
+searchreplace_findnext : '查詢下個',
+searchreplace_replace : '替換',
+searchreplace_replaceall : '全部替換',
+searchreplace_cancel : '取消'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/readme.txt
new file mode 100644 (file)
index 0000000..6bc6d7d
--- /dev/null
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/replace.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/replace.htm
new file mode 100644 (file)
index 0000000..93eda47
--- /dev/null
@@ -0,0 +1,49 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_searchreplace_replace_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/replace.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
+<form onsubmit="searchNext('none');return false;" action="#">
+  <table border="0" cellspacing="0" cellpadding="2">
+         <tr>
+               <td><label for="searchstring">{$lang_searchreplace_findwhat}</label></td>
+               <td><input type="text" id="searchstring" name="searchstring" style="width: 200px" /></td>
+         </tr>
+         <tr>
+               <td><label for="replacestring">{$lang_searchreplace_replacewith}</label></td>
+               <td><input type="text" id="replacestring" name="replacestring" style="width: 200px" /></td>
+         </tr>
+        <tr>
+          <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+            <tr>
+              <td><label>{$lang_searchreplace_direction}</label></td>
+              <td><input id="backwardsu" name="backwards" class="radio" type="radio" value="true" /></td>
+              <td><label for="backwardsu">{$lang_searchreplace_up}</label></td>
+              <td><input id="backwardsd" name="backwards" class="radio" type="radio" value="false" /></td>
+              <td><label for="backwardsd">{$lang_searchreplace_down}</label></td>
+            </tr>
+          </table></td>
+        </tr>
+        <tr>
+<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+  <tr>
+    <td><input id="casesensitivebox" name="casesensitivebox" class="checkbox" type="checkbox" value="true" /></td>
+    <td><label for="casesensitivebox">{$lang_searchreplace_case}</label></td>
+  </tr>
+</table></td>
+</tr>
+      </table>
+  <table border="0" width="300" cellspacing="0" cellpadding="4">
+    <tr>
+      <td><input id="insertBtn" name="insertBtn" type="button" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" /></td>
+      <td><input name="replaceBtn" type="button" id="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" /></td>
+      <td><input name="replaceBtn" type="button" id="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');" /></td>
+     <td align="right"><input name="cancelBtn" type="button" id="cancelBtn" value="{$lang_searchreplace_cancel}" onclick="cancelAction();" /></td>
+    </tr>
+  </table>
+</form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/search.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/searchreplace/search.htm
new file mode 100644 (file)
index 0000000..4cf7fdf
--- /dev/null
@@ -0,0 +1,42 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_searchreplace_search_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/search.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
+<form onsubmit="searchNext();return false;" action="#">
+  <table border="0" cellspacing="0" cellpadding="2">
+        <tr>
+          <td><label for="searchstring">{$lang_searchreplace_findwhat}</label>&nbsp;<input type="text" id="searchstring" name="searchstring" style="width: 200px" /></td>
+        </tr>
+        <tr>
+          <td><table border="0" cellspacing="0" cellpadding="0">
+            <tr>
+              <td><label>{$lang_searchreplace_direction}</label></td>
+              <td><input id="backwardsu" name="backwards" class="radio" type="radio" value="true" /></td>
+              <td><label for="backwardsu">{$lang_searchreplace_up}</label></td>
+              <td><input id="backwardsd" name="backwards" class="radio" type="radio" value="false" /></td>
+              <td><label for="backwardsd">{$lang_searchreplace_down}</label></td>
+            </tr>
+          </table></td>
+        </tr>
+        <tr>
+<td><table border="0" cellspacing="0" cellpadding="0">
+  <tr>
+    <td><input id="casesensitivebox" name="casesensitivebox" class="checkbox" type="checkbox" value="true" /></td>
+    <td><label for="casesensitivebox">{$lang_searchreplace_case}</label></td>
+  </tr>
+</table></td>
+</tr>
+      </table>
+  <table border="0" width="300" cellspacing="0" cellpadding="4">
+    <tr>
+      <td><input id="insert" name="insert" type="submit" value="{$lang_searchreplace_findnext}" /></td>
+      <td align="right"><input id="cancel" name="cancel" type="button" value="{$lang_searchreplace_cancel}" onclick="cancelAction();" /></td>
+    </tr>
+  </table>
+</form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/cell.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/cell.htm
new file mode 100644 (file)
index 0000000..e30fb88
--- /dev/null
@@ -0,0 +1,182 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_table_cell_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/cell.js"></script>
+       <link href="css/cell.css" rel="stylesheet" type="text/css" />
+       <base target="_self" />
+</head>
+<body id="tablecell" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+       <form onsubmit="updateAction();return false;" action="#">
+               <div class="tabs">
+                       <ul>
+                               <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
+                               <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+                       </ul>
+               </div>
+
+               <div class="panel_wrapper">
+                       <div id="general_panel" class="panel current">
+                               <fieldset>
+                                       <legend>{$lang_table_general_props}</legend>
+
+                                       <table border="0" cellpadding="4" cellspacing="0">
+                                               <tr>
+                                                       <td><label for="align">{$lang_table_align}</label></td>
+                                                       <td>
+                                                               <select id="align" name="align">
+                                                                       <option value="">{$lang_not_set}</option>
+                                                                       <option value="center">{$lang_table_align_middle}</option>
+                                                                       <option value="left">{$lang_table_align_left}</option>
+                                                                       <option value="right">{$lang_table_align_right}</option>
+                                                               </select>
+                                                       </td>
+               
+                                                       <td><label for="celltype">{$lang_table_cell_type}</label></td>
+                                                       <td>
+                                                               <select id="celltype" name="celltype">
+                                                                       <option value="td">{$lang_table_td}</option>
+                                                                       <option value="th">{$lang_table_th}</option>
+                                                               </select>
+                                                       </td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="valign">{$lang_table_valign}</label></td>
+                                                       <td>
+                                                               <select id="valign" name="valign">
+                                                                       <option value="">{$lang_not_set}</option>
+                                                                       <option value="top">{$lang_table_align_top}</option>
+                                                                       <option value="middle">{$lang_table_align_middle}</option>
+                                                                       <option value="bottom">{$lang_table_align_bottom}</option>
+                                                               </select>
+                                                       </td>
+
+                                                       <td><label for="scope">{$lang_table_scope}</label></td>
+                                                       <td>
+                                                               <select id="scope" name="scope">
+                                                                       <option value="">{$lang_not_set}</option>
+                                                                       <option value="col">{$lang_table_col}</option>
+                                                                       <option value="row">{$lang_table_row}</option>
+                                                                       <option value="rowgroup">{$lang_table_rowgroup}</option>
+                                                                       <option value="colgroup">{$lang_table_colgroup}</option>
+                                                               </select>
+                                                       </td>
+
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="width">{$lang_table_width}</label></td>
+                                                       <td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+
+                                                       <td><label for="height">{$lang_table_height}</label></td>
+                                                       <td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="class">{$lang_class_name}</label></td>
+                                                       <td colspan="3">
+                                                               <select id="class" name="class">
+                                                                       <option value="" selected="selected">{$lang_not_set}</option>
+                                                               </select>
+                                                       </td>
+                                               </tr>
+                                       </table>
+                               </fieldset>
+                       </div>
+
+                       <div id="advanced_panel" class="panel">
+                               <fieldset>
+                                       <legend>{$lang_table_advanced_props}</legend>
+
+                                       <table border="0" cellpadding="0" cellspacing="4">
+                                               <tr>
+                                                       <td class="column1"><label for="id">{$lang_table_id}</label></td> 
+                                                       <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="style">{$lang_table_style}</label></td>
+                                                       <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+                                                       <td>
+                                                               <select id="dir" name="dir" style="width: 200px"> 
+                                                                               <option value="">{$lang_not_set}</option> 
+                                                                               <option value="ltr">{$lang_table_ltr}</option> 
+                                                                               <option value="rtl">{$lang_table_rtl}</option> 
+                                                               </select>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 
+                                                       <td>
+                                                               <input id="lang" name="lang" type="text" value="" style="width: 200px" />
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
+                                                                               <td id="backgroundimagebrowsercontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
+                                                                               <td id="bordercolor_pickcontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+                                                                               <td id="bgcolor_pickcontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+                                       </table>
+                               </fieldset>
+                       </div>
+               </div>
+
+               <div class="mceActionPanel">
+                       <div>
+                               <select id="action" name="action">
+                                       <option value="cell">{$lang_table_cell_cell}</option>
+                                       <option value="row">{$lang_table_cell_row}</option>
+                                       <option value="all">{$lang_table_cell_all}</option>
+                               </select>
+                       </div>
+
+                       <div style="float: left">
+                               <div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+                       </div>
+
+                       <div style="float: right">
+                               <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+                       </div>
+               </div>
+       </form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/cell.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/cell.css
new file mode 100644 (file)
index 0000000..a47cc1a
--- /dev/null
@@ -0,0 +1,17 @@
+/* CSS file for cell dialog in the table plugin */
+
+.panel_wrapper div.current {
+       height: 200px;
+}
+
+.advfield {
+       width: 200px;
+}
+
+#action {
+       margin-bottom: 3px;
+}
+
+#class {
+       width: 150px;
+}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/row.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/row.css
new file mode 100644 (file)
index 0000000..0e397db
--- /dev/null
@@ -0,0 +1,25 @@
+/* CSS file for row dialog in the table plugin */
+
+.panel_wrapper div.current {
+       height: 200px;
+}
+
+.advfield {
+       width: 200px;
+}
+
+#action {
+       margin-bottom: 3px;
+}
+
+#rowtype,#align,#valign,#class,#height {
+       width: 150px;
+}
+
+#height {
+       width: 50px;    
+}
+
+.col2 {
+       padding-left: 20px;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/table.css b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/css/table.css
new file mode 100644 (file)
index 0000000..82bb548
--- /dev/null
@@ -0,0 +1,13 @@
+/* CSS file for table dialog in the table plugin */
+
+.panel_wrapper div.current {
+       height: 220px;
+}
+
+.advfield {
+       width: 200px;
+}
+
+#class {
+       width: 150px;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/editor_plugin.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/editor_plugin.js
new file mode 100644 (file)
index 0000000..d287327
--- /dev/null
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('table','ja_utf8,ja_euc,ja,en');function TinyMCE_table_getInfo(){return{longname:'Tables',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_table.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};};function TinyMCE_table_initInstance(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_table_mouseDownHandler);}inst.tableRowClipboard=null;}function TinyMCE_table_mouseDownHandler(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);},10);}}function TinyMCE_table_getControlHTML(control_name){var controls=new Array(['table','table.gif','{$lang_table_desc}','mceInsertTable',true],['delete_col','table_delete_col.gif','{$lang_table_delete_col_desc}','mceTableDeleteCol'],['delete_row','table_delete_row.gif','{$lang_table_delete_row_desc}','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','{$lang_table_col_after_desc}','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','{$lang_table_col_before_desc}','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','{$lang_table_row_after_desc}','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','{$lang_table_row_before_desc}','mceTableInsertRowBefore'],['row_props','table_row_props.gif','{$lang_table_row_desc}','mceTableRowProps',true],['cell_props','table_cell_props.gif','{$lang_table_cell_desc}','mceTableCellProps',true],['split_cells','table_split_cells.gif','{$lang_table_split_cells_desc}','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','{$lang_table_merge_cells_desc}','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name&&(tinyMCE.isMSIE||!tinyMCE.settings['button_tile_map']))return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" onmousedown="return false;" target="_self"><img id="{$editor_id}_'+but[0]+'" src="{$pluginurl}/images/'+but[1]+'" title="'+but[2]+'" width="20" height="20" class="mceButtonDisabled" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';else if(but[0]==control_name)return '<a href="javascript:'+cmd+'" onclick="'+cmd+'" onmousedown="return false;" target="_self"><img id="{$editor_id}_'+but[0]+'" src="{$themeurl}/images/spacer.gif" style="background-image:url({$pluginurl}/images/buttons.gif); background-position: '+(0-(i*20))+'px 0px" title="'+but[2]+'" width="20" height="20" class="mceButtonDisabled" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html;}return "";}function TinyMCE_table_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceInsertTable":case "mceTableRowProps":case "mceTableCellProps":case "mceTableSplitCells":case "mceTableMergeCells":case "mceTableInsertRowBefore":case "mceTableInsertRowAfter":case "mceTableDeleteRow":case "mceTableInsertColBefore":case "mceTableInsertColAfter":case "mceTableDeleteCol":case "mceTableCutRow":case "mceTableCopyRow":case "mceTablePasteRowBefore":case "mceTablePasteRowAfter":case "mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_table_doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true;}return false;}function TinyMCE_table_doExecCommand(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getTableGrid(table){var grid=new Array();var rows=table.rows;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].cells.length;x++){var td=rows[y].cells[x];var sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(var y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(var x2=xstart;x2<xstart+sd['colspan'];x2++){grid[y2][x2]=td;}}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table);var cpos=getCellPos(grid,td);if(new_tr.cells.length!=tr.childNodes.length){var cells=tr.childNodes;var lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node;}}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case "mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"});}return true;case "mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"});}return true;case "mceInsertTable":if(user_interface){var template=new Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value});}return true;case "mceTableDelete":var table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint();}return true;case "mceTableSplitCells":case "mceTableMergeCells":case "mceTableInsertRowBefore":case "mceTableInsertRowAfter":case "mceTableDeleteRow":case "mceTableInsertColBefore":case "mceTableInsertColAfter":case "mceTableDeleteCol":case "mceTableCutRow":case "mceTableCopyRow":case "mceTablePasteRowBefore":case "mceTablePasteRowAfter":if(!tableElm)return true;if(tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case "mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);break;case "mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case "mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case "mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case "mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case "mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}break;case "mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm.parentNode.removeChild(tableElm);return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;inst.selectNode(getCell(grid,cpos.rowindex,0),true,true);break;case "mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case "mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case "mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm.parentNode.removeChild(tableElm);return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;inst.selectNode(getCell(grid,0,cpos.cellindex),true,true);break;case "mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case "mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}break;}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint();}return true;}return false;}function TinyMCE_table_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1";var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClassSticky(editor_id+'_table','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonDisabled',true);if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonSelected',false);if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonSelected',false);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonNormal',false);colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonNormal',false);}if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClassSticky(editor_id+'_table','mceButtonSelected');tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonNormal',false);}}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/buttons.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/buttons.gif
new file mode 100644 (file)
index 0000000..bfc1568
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/buttons.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table.gif
new file mode 100644 (file)
index 0000000..2911830
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_cell_props.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_cell_props.gif
new file mode 100644 (file)
index 0000000..bee7ed6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_cell_props.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete.gif
new file mode 100644 (file)
index 0000000..2a00e6a
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_col.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_col.gif
new file mode 100644 (file)
index 0000000..91f53af
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_col.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_row.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_row.gif
new file mode 100644 (file)
index 0000000..7025733
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_delete_row.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_after.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_after.gif
new file mode 100644 (file)
index 0000000..8505808
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_after.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_before.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_before.gif
new file mode 100644 (file)
index 0000000..b669d4f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_col_before.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_after.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_after.gif
new file mode 100644 (file)
index 0000000..b9c1446
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_after.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_before.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_before.gif
new file mode 100644 (file)
index 0000000..157d373
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_insert_row_before.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_merge_cells.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_merge_cells.gif
new file mode 100644 (file)
index 0000000..6834e61
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_merge_cells.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_row_props.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_row_props.gif
new file mode 100644 (file)
index 0000000..e5c7cc3
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_row_props.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_split_cells.gif b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_split_cells.gif
new file mode 100644 (file)
index 0000000..8ccb1b5
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/images/table_split_cells.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/cell.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/cell.js
new file mode 100644 (file)
index 0000000..d0768a0
--- /dev/null
@@ -0,0 +1,249 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+       document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+       document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
+
+       var inst = tinyMCE.selectedInstance;
+       var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style"));
+
+       // Get table cell data
+       var celltype = tdElm.nodeName.toLowerCase();
+       var align = tinyMCE.getAttrib(tdElm, 'align');
+       var valign = tinyMCE.getAttrib(tdElm, 'valign');
+       var width = trimSize(getStyle(tdElm, 'width', 'width'));
+       var height = trimSize(getStyle(tdElm, 'height', 'height'));
+       var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
+       var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
+       var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false);
+       var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+       var id = tinyMCE.getAttrib(tdElm, 'id');
+       var lang = tinyMCE.getAttrib(tdElm, 'lang');
+       var dir = tinyMCE.getAttrib(tdElm, 'dir');
+       var scope = tinyMCE.getAttrib(tdElm, 'scope');
+
+       // Setup form
+       addClassesToList('class', 'table_cell_styles');
+       formObj.bordercolor.value = bordercolor;
+       formObj.bgcolor.value = bgcolor;
+       formObj.backgroundimage.value = backgroundimage;
+       formObj.width.value = width;
+       formObj.height.value = height;
+       formObj.id.value = id;
+       formObj.lang.value = lang;
+       formObj.style.value = tinyMCE.serializeStyle(st);
+       selectByValue(formObj, 'align', align);
+       selectByValue(formObj, 'valign', valign);
+       selectByValue(formObj, 'class', className);
+       selectByValue(formObj, 'celltype', celltype);
+       selectByValue(formObj, 'dir', dir);
+       selectByValue(formObj, 'scope', scope);
+
+       // Resize some elements
+       if (isVisible('backgroundimagebrowser'))
+               document.getElementById('backgroundimage').style.width = '180px';
+
+       updateColor('bordercolor_pick', 'bordercolor');
+       updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+       tinyMCEPopup.restoreSelection();
+
+       var inst = tinyMCE.selectedInstance;
+       var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
+       var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+       var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+       var formObj = document.forms[0];
+
+       inst.execCommand('mceBeginUndoLevel');
+
+       switch (getSelectValue(formObj, 'action')) {
+               case "cell":
+                       var celltype = getSelectValue(formObj, 'celltype');
+                       var scope = getSelectValue(formObj, 'scope');
+
+                       if (tinyMCE.getParam("accessibility_warnings")) {
+                               if (celltype == "th" && scope == "")
+                                       var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true));
+                               else
+                                       var answer = true;
+
+                               if (!answer)
+                                       return;
+                       }
+
+                       updateCell(tdElm);
+                       break;
+
+               case "row":
+                       var cell = trElm.firstChild;
+
+                       if (cell.nodeName != "TD" && cell.nodeName != "TH")
+                               cell = nextCell(cell);
+
+                       do {
+                               cell = updateCell(cell, true);
+                       } while ((cell = nextCell(cell)) != null);
+
+                       break;
+
+               case "all":
+                       var rows = tableElm.getElementsByTagName("tr");
+
+                       for (var i=0; i<rows.length; i++) {
+                               var cell = rows[i].firstChild;
+
+                               if (cell.nodeName != "TD" && cell.nodeName != "TH")
+                                       cell = nextCell(cell);
+
+                               do {
+                                       cell = updateCell(cell, true);
+                               } while ((cell = nextCell(cell)) != null);
+                       }
+
+                       break;
+       }
+
+       tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+       tinyMCE.triggerNodeChange();
+       inst.execCommand('mceEndUndoLevel');
+       tinyMCEPopup.close();
+}
+
+function nextCell(elm) {
+       while ((elm = elm.nextSibling) != null) {
+               if (elm.nodeName == "TD" || elm.nodeName == "TH")
+                       return elm;
+       }
+
+       return null;
+}
+
+function updateCell(td, skip_id) {
+       var inst = tinyMCE.selectedInstance;
+       var formObj = document.forms[0];
+       var curCellType = td.nodeName.toLowerCase();
+       var celltype = getSelectValue(formObj, 'celltype');
+       var doc = inst.getDoc();
+
+       if (!skip_id)
+               td.setAttribute('id', formObj.id.value);
+
+       td.setAttribute('align', formObj.align.value);
+       td.setAttribute('vAlign', formObj.valign.value);
+       td.setAttribute('lang', formObj.lang.value);
+       td.setAttribute('dir', getSelectValue(formObj, 'dir'));
+       td.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
+       td.setAttribute('scope', formObj.scope.value);
+       tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
+
+       // Clear deprecated attributes
+       tinyMCE.setAttrib(td, 'width', '');
+       tinyMCE.setAttrib(td, 'height', '');
+       tinyMCE.setAttrib(td, 'bgColor', '');
+       tinyMCE.setAttrib(td, 'borderColor', '');
+       tinyMCE.setAttrib(td, 'background', '');
+
+       // Set styles
+       td.style.width = getCSSSize(formObj.width.value);
+       td.style.height = getCSSSize(formObj.height.value);
+       if (formObj.bordercolor.value != "") {
+               td.style.borderColor = formObj.bordercolor.value;
+               td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
+               td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
+       } else
+               td.style.borderColor = '';
+
+       td.style.backgroundColor = formObj.bgcolor.value;
+
+       if (formObj.backgroundimage.value != "")
+               td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+       else
+               td.style.backgroundImage = '';
+
+       if (curCellType != celltype) {
+               // changing to a different node type
+               var newCell = doc.createElement(celltype);
+
+               for (var c=0; c<td.childNodes.length; c++)
+                       newCell.appendChild(td.childNodes[c].cloneNode(1));
+
+               for (var a=0; a<td.attributes.length; a++) {
+                       var attr = td.attributes[a];
+                       newCell.setAttribute(attr.name, attr.value);
+               }
+
+               td.parentNode.replaceChild(newCell, td);
+               td = newCell;
+       }
+
+       return td;
+}
+
+function changedBackgroundImage() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedSize() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       var width = formObj.width.value;
+       if (width != "")
+               st['width'] = getCSSSize(width);
+       else
+               st['width'] = "";
+
+       var height = formObj.height.value;
+       if (height != "")
+               st['height'] = getCSSSize(height);
+       else
+               st['height'] = "";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedColor() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       st['background-color'] = formObj.bgcolor.value;
+       st['border-color'] = formObj.bordercolor.value;
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedStyle() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       if (st['background-image'])
+               formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+       else
+               formObj.backgroundimage.value = '';
+
+       if (st['width'])
+               formObj.width.value = trimSize(st['width']);
+
+       if (st['height'])
+               formObj.height.value = trimSize(st['height']);
+
+       if (st['background-color']) {
+               formObj.bgcolor.value = st['background-color'];
+               updateColor('bgcolor_pick','bgcolor');
+       }
+
+       if (st['border-color']) {
+               formObj.bordercolor.value = st['border-color'];
+               updateColor('bordercolor_pick','bordercolor');
+       }
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/merge_cells.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/merge_cells.js
new file mode 100644 (file)
index 0000000..ca379cf
--- /dev/null
@@ -0,0 +1,19 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       var formObj = document.forms[0];
+
+       formObj.numcols.value = tinyMCE.getWindowArg('numcols', 1);
+       formObj.numrows.value = tinyMCE.getWindowArg('numrows', 1);
+}
+
+function mergeCells() {
+       var args = new Array();
+       var formObj = document.forms[0];
+
+       args["numcols"] = formObj.numcols.value;
+       args["numrows"] = formObj.numrows.value;
+
+       tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
+       tinyMCEPopup.close();
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/row.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/row.js
new file mode 100644 (file)
index 0000000..804875c
--- /dev/null
@@ -0,0 +1,200 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+       document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+       var inst = tinyMCE.selectedInstance;
+       var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));
+
+       // Get table row data
+       var rowtype = trElm.parentNode.nodeName.toLowerCase();
+       var align = tinyMCE.getAttrib(trElm, 'align');
+       var valign = tinyMCE.getAttrib(trElm, 'valign');
+       var height = trimSize(getStyle(trElm, 'height', 'height'));
+       var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'), false);
+       var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
+       var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+       var id = tinyMCE.getAttrib(trElm, 'id');
+       var lang = tinyMCE.getAttrib(trElm, 'lang');
+       var dir = tinyMCE.getAttrib(trElm, 'dir');
+
+       // Setup form
+       addClassesToList('class', 'table_row_styles');
+       formObj.bgcolor.value = bgcolor;
+       formObj.backgroundimage.value = backgroundimage;
+       formObj.height.value = height;
+       formObj.id.value = id;
+       formObj.lang.value = lang;
+       formObj.style.value = tinyMCE.serializeStyle(st);
+       selectByValue(formObj, 'align', align);
+       selectByValue(formObj, 'valign', valign);
+       selectByValue(formObj, 'class', className);
+       selectByValue(formObj, 'rowtype', rowtype);
+       selectByValue(formObj, 'dir', dir);
+
+       // Resize some elements
+       if (isVisible('backgroundimagebrowser'))
+               document.getElementById('backgroundimage').style.width = '180px';
+
+       updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+       tinyMCEPopup.restoreSelection();
+
+       var inst = tinyMCE.selectedInstance;
+       var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+       var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+       var formObj = document.forms[0];
+       var action = getSelectValue(formObj, 'action');
+
+       inst.execCommand('mceBeginUndoLevel');
+
+       switch (action) {
+               case "row":
+                       updateRow(trElm);
+                       break;
+
+               case "all":
+                       var rows = tableElm.getElementsByTagName("tr");
+
+                       for (var i=0; i<rows.length; i++)
+                               updateRow(rows[i], true);
+
+                       break;
+
+               case "odd":
+               case "even":
+                       var rows = tableElm.getElementsByTagName("tr");
+
+                       for (var i=0; i<rows.length; i++) {
+                               if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
+                                       updateRow(rows[i], true, true);
+                       }
+
+                       break;
+       }
+
+       tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+       tinyMCE.triggerNodeChange();
+       inst.execCommand('mceEndUndoLevel');
+       tinyMCEPopup.close();
+}
+
+function updateRow(tr_elm, skip_id, skip_parent) {
+       var inst = tinyMCE.selectedInstance;
+       var formObj = document.forms[0];
+       var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
+       var rowtype = getSelectValue(formObj, 'rowtype');
+       var doc = inst.getDoc();
+
+       // Update row element
+       if (!skip_id)
+               tr_elm.setAttribute('id', formObj.id.value);
+
+       tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
+       tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
+       tr_elm.setAttribute('lang', formObj.lang.value);
+       tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
+       tr_elm.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
+       tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
+
+       // Clear deprecated attributes
+       tr_elm.setAttribute('background', '');
+       tr_elm.setAttribute('bgColor', '');
+       tr_elm.setAttribute('height', '');
+
+       // Set styles
+       tr_elm.style.height = getCSSSize(formObj.height.value);
+       tr_elm.style.backgroundColor = formObj.bgcolor.value;
+
+       if (formObj.backgroundimage.value != "")
+               tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+       else
+               tr_elm.style.backgroundImage = '';
+
+       // Setup new rowtype
+       if (curRowType != rowtype && !skip_parent) {
+               // first, clone the node we are working on
+               var newRow = tr_elm.cloneNode(1);
+
+               // next, find the parent of its new destination (creating it if necessary)
+               var theTable = tinyMCE.getParentElement(tr_elm, "table");
+               var dest = rowtype;
+               var newParent = null;
+               for (var i = 0; i < theTable.childNodes.length; i++) {
+                       if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
+                               newParent = theTable.childNodes[i];
+               }
+
+               if (newParent == null) {
+                       newParent = doc.createElement(dest);
+
+                       if (dest == "thead")
+                               theTable.insertBefore(newParent, theTable.firstChild);
+                       else
+                               theTable.appendChild(newParent);
+               }
+
+               // append the row to the new parent
+               newParent.appendChild(newRow);
+
+               // remove the original
+               tr_elm.parentNode.removeChild(tr_elm);
+
+               // set tr_elm to the new node
+               tr_elm = newRow;
+       }
+}
+
+function changedBackgroundImage() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedStyle() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       if (st['background-image'])
+               formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+       else
+               formObj.backgroundimage.value = '';
+
+       if (st['height'])
+               formObj.height.value = trimSize(st['height']);
+
+       if (st['background-color']) {
+               formObj.bgcolor.value = st['background-color'];
+               updateColor('bgcolor_pick','bgcolor');
+       }
+}
+
+function changedSize() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       var height = formObj.height.value;
+       if (height != "")
+               st['height'] = getCSSSize(height);
+       else
+               st['height'] = "";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedColor() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       st['background-color'] = formObj.bgcolor.value;
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/table.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/jscripts/table.js
new file mode 100644 (file)
index 0000000..193dff3
--- /dev/null
@@ -0,0 +1,327 @@
+var action, orgTableWidth, orgTableHeight;
+
+function insertTable() {
+       tinyMCEPopup.restoreSelection();
+
+       var formObj = document.forms[0];
+       var inst = tinyMCE.selectedInstance;
+       var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className;
+       var html = '';
+       var elm = tinyMCE.tableElm;
+
+       // Get form data
+       cols = formObj.elements['cols'].value;
+       rows = formObj.elements['rows'].value;
+       border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
+       cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
+       cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
+       align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
+       width = formObj.elements['width'].value;
+       height = formObj.elements['height'].value;
+       bordercolor = formObj.elements['bordercolor'].value;
+       bgcolor = formObj.elements['bgcolor'].value;
+       className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
+       id = formObj.elements['id'].value;
+       summary = formObj.elements['summary'].value;
+       style = formObj.elements['style'].value;
+       dir = formObj.elements['dir'].value;
+       lang = formObj.elements['lang'].value;
+       background = formObj.elements['backgroundimage'].value;
+
+       // Update table
+       if (action == "update") {
+               inst.execCommand('mceBeginUndoLevel');
+
+               tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
+               tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
+               tinyMCE.setAttrib(elm, 'border', border, true);
+               tinyMCE.setAttrib(elm, 'align', align);
+               tinyMCE.setAttrib(elm, 'class', className);
+               tinyMCE.setAttrib(elm, 'style', style);
+               tinyMCE.setAttrib(elm, 'id', id);
+               tinyMCE.setAttrib(elm, 'summary', summary);
+               tinyMCE.setAttrib(elm, 'dir', dir);
+               tinyMCE.setAttrib(elm, 'lang', lang);
+
+               // Not inline styles
+               if (!tinyMCE.getParam("inline_styles"))
+                       tinyMCE.setAttrib(elm, 'width', width, true);
+
+               // Remove these since they are not valid XHTML
+               tinyMCE.setAttrib(elm, 'borderColor', '');
+               tinyMCE.setAttrib(elm, 'bgColor', '');
+               tinyMCE.setAttrib(elm, 'background', '');
+               tinyMCE.setAttrib(elm, 'height', '');
+
+               if (background != '')
+                       elm.style.backgroundImage = "url('" + background + "')";
+               else
+                       elm.style.backgroundImage = '';
+
+               if (tinyMCE.getParam("inline_styles"))
+                       elm.style.borderWidth = border + "px";
+
+               if (tinyMCE.getParam("inline_styles")) {
+                       if (width != '')
+                               elm.style.width = getCSSSize(width);
+               }
+
+               if (bordercolor != "") {
+                       elm.style.borderColor = bordercolor;
+                       elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
+                       elm.style.borderWidth = border == "" ? "1px" : border;
+               } else
+                       elm.style.borderColor = '';
+
+               elm.style.backgroundColor = bgcolor;
+               elm.style.height = getCSSSize(height);
+
+               tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
+
+               // Fix for stange MSIE align bug
+               tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
+
+               tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+               tinyMCE.triggerNodeChange();
+               inst.execCommand('mceEndUndoLevel');
+
+               // Repaint if dimensions changed
+               if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
+                       inst.repaint();
+
+               tinyMCEPopup.close();
+               return true;
+       }
+
+       // Create new table
+       html += '<table';
+
+       html += makeAttrib('id', id);
+       html += makeAttrib('border', border);
+       html += makeAttrib('cellpadding', cellpadding);
+       html += makeAttrib('cellspacing', cellspacing);
+       html += makeAttrib('width', width);
+       //html += makeAttrib('height', height);
+       //html += makeAttrib('bordercolor', bordercolor);
+       //html += makeAttrib('bgcolor', bgcolor);
+       html += makeAttrib('align', align);
+       html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
+       html += makeAttrib('style', style);
+       html += makeAttrib('summary', summary);
+       html += makeAttrib('dir', dir);
+       html += makeAttrib('lang', lang);
+
+       html += '>';
+
+       for (var y=0; y<rows; y++) {
+               html += "<tr>";
+
+               for (var x=0; x<cols; x++)
+                       html += '<td>&nbsp;</td>';
+
+               html += "</tr>";
+       }
+
+       html += "</table>";
+
+       inst.execCommand('mceBeginUndoLevel');
+       inst.execCommand('mceInsertContent', false, html);
+       tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
+       inst.execCommand('mceEndUndoLevel');
+
+       tinyMCEPopup.close();
+}
+
+function makeAttrib(attrib, value) {
+       var formObj = document.forms[0];
+       var valueElm = formObj.elements[attrib];
+
+       if (typeof(value) == "undefined" || value == null) {
+               value = "";
+
+               if (valueElm)
+                       value = valueElm.value;
+       }
+
+       if (value == "")
+               return "";
+
+       // XML encode it
+       value = value.replace(/&/g, '&amp;');
+       value = value.replace(/\"/g, '&quot;');
+       value = value.replace(/</g, '&lt;');
+       value = value.replace(/>/g, '&gr;');
+
+       return ' ' + attrib + '="' + value + '"';
+}
+
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+       document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+       document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+       document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+       var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing = "";
+       var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
+       var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
+       var inst = tinyMCE.selectedInstance;
+       var formObj = document.forms[0];
+       var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+
+       tinyMCE.tableElm = elm;
+       action = tinyMCE.getWindowArg('action');
+       if (action == null)
+               action = tinyMCE.tableElm ? "update" : "insert";
+
+       if (tinyMCE.tableElm && action != "insert") {
+               var rowsAr = tinyMCE.tableElm.rows;
+               var cols = 0;
+               for (var i=0; i<rowsAr.length; i++)
+                       if (rowsAr[i].cells.length > cols)
+                               cols = rowsAr[i].cells.length;
+
+               cols = cols;
+               rows = rowsAr.length;
+
+               st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));
+               border = trimSize(getStyle(elm, 'border', 'borderWidth'));
+               cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
+               cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
+               width = trimSize(getStyle(elm, 'width', 'width'));
+               height = trimSize(getStyle(elm, 'height', 'height'));
+               bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
+               bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
+               align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
+               className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
+               id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
+               summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
+               style = tinyMCE.serializeStyle(st);
+               dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
+               lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
+               background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+               orgTableWidth = width;
+               orgTableHeight = height;
+
+               action = "update";
+       }
+
+       addClassesToList('class', "table_styles");
+
+       // Update form
+       selectByValue(formObj, 'align', align);
+       selectByValue(formObj, 'class', className);
+       formObj.cols.value = cols;
+       formObj.rows.value = rows;
+       formObj.border.value = border;
+       formObj.cellpadding.value = cellpadding;
+       formObj.cellspacing.value = cellspacing;
+       formObj.width.value = width;
+       formObj.height.value = height;
+       formObj.bordercolor.value = bordercolor;
+       formObj.bgcolor.value = bgcolor;
+       formObj.id.value = id;
+       formObj.summary.value = summary;
+       formObj.style.value = style;
+       formObj.dir.value = dir;
+       formObj.lang.value = lang;
+       formObj.backgroundimage.value = background;
+       formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
+
+       updateColor('bordercolor_pick', 'bordercolor');
+       updateColor('bgcolor_pick', 'bgcolor');
+
+       // Resize some elements
+       if (isVisible('backgroundimagebrowser'))
+               document.getElementById('backgroundimage').style.width = '180px';
+
+       // Disable some fields in update mode
+       if (action == "update") {
+               formObj.cols.disabled = true;
+               formObj.rows.disabled = true;
+       }
+}
+
+function changedSize() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       var width = formObj.width.value;
+       if (width != "")
+               st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";
+       else
+               st['width'] = "";
+
+       var height = formObj.height.value;
+       if (height != "")
+               st['height'] = getCSSSize(height);
+       else
+               st['height'] = "";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedBackgroundImage() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedBorder() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       // Update border width if the element has a color
+       if (formObj.border.value != "" && formObj.bordercolor.value != "")
+               st['border-width'] = formObj.border.value + "px";
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedColor() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       st['background-color'] = formObj.bgcolor.value;
+
+       if (formObj.bordercolor.value != "") {
+               st['border-color'] = formObj.bordercolor.value;
+
+               // Add border-width if it's missing
+               if (!st['border-width'])
+                       st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
+       }
+
+       formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function changedStyle() {
+       var formObj = document.forms[0];
+       var st = tinyMCE.parseStyle(formObj.style.value);
+
+       if (st['background-image'])
+               formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+       else
+               formObj.backgroundimage.value = '';
+
+       if (st['width'])
+               formObj.width.value = trimSize(st['width']);
+
+       if (st['height'])
+               formObj.height.value = trimSize(st['height']);
+
+       if (st['background-color']) {
+               formObj.bgcolor.value = st['background-color'];
+               updateColor('bgcolor_pick','bgcolor');
+       }
+
+       if (st['border-color']) {
+               formObj.bordercolor.value = st['border-color'];
+               updateColor('bordercolor_pick','bordercolor');
+       }
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/en.js
new file mode 100644 (file)
index 0000000..b061b34
--- /dev/null
@@ -0,0 +1,75 @@
+// UK lang variables
+
+tinyMCE.addToLang('table',{
+general_tab : 'General',
+advanced_tab : 'Advanced',
+general_props : 'General properties',
+advanced_props : 'Advanced properties',
+desc : 'Inserts a new table',
+row_before_desc : 'Insert row before',
+row_after_desc : 'Insert row after',
+delete_row_desc : 'Delete row',
+col_before_desc : 'Insert column before',
+col_after_desc : 'Insert column after',
+delete_col_desc : 'Remove column',
+rowtype : 'Row in table part',
+title : 'Insert/Modify table',
+width : 'Width',
+height : 'Height',
+cols : 'Columns',
+rows : 'Rows',
+cellspacing : 'Cellspacing',
+cellpadding : 'Cellpadding',
+border : 'Border',
+align : 'Alignment',
+align_default : 'Default',
+align_left : 'Left',
+align_right : 'Right',
+align_middle : 'Center',
+row_title : 'Table row properties',
+cell_title : 'Table cell properties',
+cell_type : 'Cell type',
+row_desc : 'Table row properties',
+cell_desc : 'Table cell properties',
+valign : 'Vertical alignment',
+align_top : 'Top',
+align_bottom : 'Bottom',
+props_desc : 'Table properties',
+bordercolor : 'Border color',
+bgcolor : 'Background color',
+merge_cells_title : 'Merge table cells',
+split_cells_desc : 'Split table cells',
+merge_cells_desc : 'Merge table cells',
+cut_row_desc : 'Cut table row',
+copy_row_desc : 'Copy table row',
+paste_row_before_desc : 'Paste table row before',
+paste_row_after_desc : 'Paste table row after',
+id : 'Id',
+style: 'Style',
+langdir : 'Language direction',
+langcode : 'Language code',
+mime : 'Target MIME type',
+ltr : 'Left to right',
+rtl : 'Right to left',
+bgimage : 'Background image',
+summary : 'Summary',
+td : "Data",
+th : "Header",
+cell_cell : 'Update current cell',
+cell_row : 'Update all cells in row',
+cell_all : 'Update all cells in table',
+row_row : 'Update current row',
+row_odd : 'Update odd rows in table',
+row_even : 'Update even rows in table',
+row_all : 'Update all rows in table',
+thead : 'Table Head',
+tbody : 'Table Body',
+tfoot : 'Table Foot',
+del : 'Delete table',
+scope : 'Scope',
+row : 'Row',
+col : 'Col',
+rowgroup : 'Row Group',
+colgroup : 'Col Group',
+missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/es.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/es.js
new file mode 100644 (file)
index 0000000..133ad7b
--- /dev/null
@@ -0,0 +1,84 @@
+/**
+ * ES lang variables
+ * 
+ * Authors : Alvaro Velasco,
+ *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
+ *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
+ * Last Updated : October 17, 2005
+ * TinyMCE Version : 2.0RC3
+ */
+
+tinyMCE.addToLang('table',{
+general_tab : 'General',
+advanced_tab : 'Avanzado',
+general_props : 'Propiedades generales',
+advanced_props : 'Propiedades avanzadas',
+desc : 'Insertar/Modificar tabla',
+row_before_desc : 'Insertar una fila antes',
+row_after_desc : 'Insert una fila después',
+delete_row_desc : 'Eliminar fila',
+col_before_desc : 'Insertar una columna antes',
+col_after_desc : 'Insertar una columna después',
+delete_col_desc : 'Eliminar columna',
+rowtype : 'File en parte de tabla',
+title : 'Insertar/Modificar tabla',
+width : 'Ancho',
+height : 'ALto',
+cols : 'Columnas',
+rows : 'Filas',
+cellspacing : 'Espacio entre celdas',
+cellpadding : 'Borde interior de las celdas',
+border : 'Borde',
+align : 'Alineación horizontal',
+align_default : 'Defecto',
+align_left : 'Izquierda',
+align_right : 'Derecha',
+align_middle : 'Centrado',
+row_title : 'Propiedades de la fila',
+cell_title : 'Propiedades de la celda',
+cell_type : 'Tipo de celda',
+row_desc : 'Propiedades de la fila',
+cell_desc : 'Propiedades de la celda',
+valign : 'Alineación vertical',
+align_top : 'Arriba',
+align_bottom : 'Abajo',
+props_desc : 'Propiedades de la tabla',
+bordercolor : 'Color del borde',
+bgcolor : 'Color del fondo',
+merge_cells_title : 'Combinar celdas',
+split_cells_desc : 'Dividir celdas',
+merge_cells_desc : 'Combinar celdas',
+cut_row_desc : 'Cortar fila',
+copy_row_desc : 'Copiar fila',
+paste_row_before_desc : 'Pegar fila antes',
+paste_row_after_desc : 'Pegar fila después',
+id : 'Id',
+style: 'Estilo',
+langdir : 'Dirección del texto',
+langcode : 'Código del idioma',
+mime : 'Tipo MIME del target',
+ltr : 'De izquierda a derecha',
+rtl : 'De derecha a izquierda',
+bgimage : 'Imagen de fondo',
+summary : 'Resumen',
+td : "Datos",
+th : "Cabecera",
+cell_cell : 'Actualizar la celda actual',
+cell_row : 'Actualizar todas las celdas de la fila',
+cell_all : 'Actualizar todas las celdas de la tabla',
+row_row : 'Actualizar la fila actual',
+row_odd : 'Actualizar las filas impares de la tabla',
+row_even : 'Actualizar las filas pares de la tabla',
+row_all : 'Actualizar todas las filas de la tabla',
+thead : 'Cabecera de la tabla',
+tbody : 'Cuerpo de la tabla',
+tfoot : 'Pie de la tabla',
+del : 'Eliminar tabla',
+scope : 'Alcance',
+row : 'Fila',
+col : 'Columna',
+rowgroup : 'Grupo de filas',
+colgroup : 'Grupo de columnas',
+missing_scope: '¿Estás seguro que quieres continuar sin especificar el alcance para esta celda de tipo cabecera? Sin ello, puede dificultar a algunos usuarios con discapacidades el poder entender el contenido o los datos mostrados en la tabla.',
+cellprops_delta_width : 55
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja.js
new file mode 100644 (file)
index 0000000..8b19fd0
--- /dev/null
@@ -0,0 +1,43 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+table_desc : '\e$B%F!<%V%k\e(B',
+table_insert_row_before_desc : '\e$B9TA^F~\e(B(\e$BA0\e(B)',
+table_insert_row_after_desc : '\e$B9TA^F~\e(B(\e$B8e\e(B)',
+table_delete_row_desc : '\e$B9T:o=|\e(B',
+table_insert_col_before_desc : '\e$BNsA^F~\e(B(\e$BA0\e(B)',
+table_insert_col_after_desc : '\e$BNsA^F~\e(B(\e$B8e\e(B)',
+table_delete_col_desc : '\e$BNs:o=|\e(B',
+insert_table_title : '\e$B%F!<%V%k$NA^F~\e(B/\e$BJT=8\e(B',
+insert_table_cols : '\e$BNs?t\e(B',
+insert_table_rows : '\e$B9T?t\e(B',
+insert_table_cellspacing : '\e$B%;%kM>Gr\e(B',
+insert_table_cellpadding : '\e$B%;%k5M$a\e(B',
+insert_table_align : '\e$B0LCVD4@0\e(B',
+insert_table_align_default : '\e$B0EL[\e(B',
+insert_table_align_left : '\e$B:85M$a\e(B',
+insert_table_align_right : '\e$B1&5M$a\e(B',
+insert_table_align_middle : '\e$BCf1{4s$;\e(B',
+insert_table_width : '\e$BI}\e(B',
+insert_table_height : '\e$B9b$5\e(B',
+insert_table_border : '\e$B6-3&@~\e(B',
+insert_table_class : '\e$B%/%i%9\e(B',
+table_row_title : 'Table row properties',
+table_cell_title : 'Table cell properties',
+table_row_desc : 'Table row properties',
+table_cell_desc : 'Table cell properties',
+insert_table_valign : 'Vertical alignment',
+insert_table_align_top : 'Top',
+insert_table_align_bottom : 'Bottom',
+table_props_desc : 'Table properties',
+table_bordercolor : 'Border color',
+table_bgcolor : 'Bg color',
+table_merge_cells_title : 'Merge table cells',
+table_split_cells_desc : 'Split table cells',
+table_merge_cells_desc : 'Merge table cells',
+table_cut_row_desc : 'Cut table row',
+table_copy_row_desc : 'Copy table row',
+table_paste_row_before_desc : 'Paste table row before',
+table_paste_row_after_desc : 'Paste table row after',
+table_insert_desc : 'Insert a new table'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja_euc.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja_euc.js
new file mode 100644 (file)
index 0000000..5fb1e38
--- /dev/null
@@ -0,0 +1,75 @@
+// UK lang variables
+
+tinyMCE.addToLang('table',{
+general_tab : '´ðËÜ',
+advanced_tab : '¾ÜºÙ',
+general_props : '´ðËÜÀßÄê',
+advanced_props : '¾ÜºÙÀßÄê',
+desc : 'ɽ¤ÎÁÞÆþ',
+row_before_desc : '¹ÔÁÞÆþ(Á°)',
+row_after_desc : '¹ÔÁÞÆþ(¸å)',
+delete_row_desc : '¹Ôºï½ü',
+col_before_desc : 'ÎóÁÞÆþ(Á°)',
+col_after_desc : 'ÎóÁÞÆþ(¸å)',
+delete_col_desc : 'Îóºï½ü',
+rowtype : 'Row in table part',
+title : 'Insert/Modify table',
+width : 'Éý',
+height : '¹â¤µ',
+cols : 'Îó',
+rows : '¹Ô',
+cellspacing : '¥»¥ë´Ö¤Î;Çò',
+cellpadding : '¥»¥ëÆâ¤Î;Çò',
+border : '·ÓÀþ',
+align : '·¤¨°ÌÃÖ',
+align_default : '̤»ØÄê',
+align_left : 'º¸',
+align_right : '±¦',
+align_middle : 'Ãæ±û',
+row_title : '¹Ô¤Î¥×¥í¥Ñ¥Æ¥£',
+cell_title : '¥»¥ë¤Î¥×¥í¥Ñ¥Æ¥£s',
+cell_type : '¥»¥ë¤Î¼ïÎà',
+row_desc : '¹Ô¤Î¥×¥í¥Ñ¥Æ¥£',
+cell_desc : '¥»¥ë¤Î¥×¥í¥Ñ¥Æ¥£',
+valign : '½Ä·¤¨°ÌÃÖ',
+align_top : 'Top',
+align_bottom : 'Bottom',
+props_desc : 'ɽ¤Î¥×¥í¥Ñ¥Æ¥£',
+bordercolor : '·ÓÀþ¤Î¿§',
+bgcolor : 'ÇØ·Ê¿§',
+merge_cells_title : '¥»¥ë¤Î·ë¹ç',
+split_cells_desc : '¥»¥ë¤Îʬ³ä',
+merge_cells_desc : '¥»¥ë¤ò·ë¹ç¤¹¤ë',
+cut_row_desc : '¹Ô¤ÎÀÚ¼è¤ê',
+copy_row_desc : '¹Ô¤Î¥³¥Ô¡¼',
+paste_row_before_desc : '¹Ô¤ÎŽÉÕ¤±(Á°¤Ø)',
+paste_row_after_desc : '¹Ô¤ÎŽÉÕ¤±(¸å¤í¤Ø)',
+id : 'Id',
+style: '¥¹¥¿¥¤¥ë',
+langdir : 'Language direction',
+langcode : 'Language code',
+mime : 'Target MIME type',
+ltr : 'Left to right',
+rtl : 'Right to left',
+bgimage : 'ÇطʤβèÁü',
+summary : 'Summary',
+td : "Data",
+th : "Header",
+cell_cell : '¸½ºß¤Î¥»¥ë¤Ë¥»¥Ã¥È¤¹¤ë',
+cell_row : '¤³¤Î¹Ô¤Î¥»¥ë¤Ë¥»¥Ã¥È¤¹¤ë',
+cell_all : 'ɽÆâ¤Î¤¹¤Ù¤Æ¤Î¥»¥ë¤Ë¥»¥Ã¥È¤¹¤ë',
+row_row : '¸½ºß¤Î¹Ô¤ò¾å½ñ¤­',
+row_odd : '´ñ¿ô¹Ô¤Î¥»¥ë¤ò¾å½ñ¤­',
+row_even : '¶ö¿ô¹Ô¤Î¥»¥ë¤ò¾å½ñ¤­',
+row_all : 'ɽÆâ¤Î¤¹¤Ù¤Æ¤Î¥»¥ë¤ò¾å½ñ¤­',
+thead : 'Table Head',
+tbody : 'Table Body',
+tfoot : 'Table Foot',
+del : 'ɽ¤òºï½ü',
+scope : 'Scope',
+row : '¹Ô',
+col : 'Îó',
+rowgroup : '¥°¥ë¡¼¥×¹Ô',
+colgroup : '¥°¥ë¡¼¥×Îó',
+missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/ja_utf8.js
new file mode 100644 (file)
index 0000000..70753c3
--- /dev/null
@@ -0,0 +1,75 @@
+// UK lang variables
+
+tinyMCE.addToLang('table',{
+general_tab : '基本',
+advanced_tab : '詳細',
+general_props : '基本設定',
+advanced_props : '詳細設定',
+desc : '表の挿入',
+row_before_desc : '行挿入(前)',
+row_after_desc : '行挿入(後)',
+delete_row_desc : '行削除',
+col_before_desc : '列挿入(前)',
+col_after_desc : '列挿入(後)',
+delete_col_desc : '列削除',
+rowtype : 'Row in table part',
+title : 'Insert/Modify table',
+width : '幅',
+height : '高さ',
+cols : '列',
+rows : '行',
+cellspacing : 'セル間の余白',
+cellpadding : 'セル内の余白',
+border : '罫線',
+align : '揃え位置',
+align_default : '未指定',
+align_left : '左',
+align_right : '右',
+align_middle : '中央',
+row_title : '行のプロパティ',
+cell_title : 'セルのプロパティs',
+cell_type : 'セルの種類',
+row_desc : '行のプロパティ',
+cell_desc : 'セルのプロパティ',
+valign : '縦揃え位置',
+align_top : 'Top',
+align_bottom : 'Bottom',
+props_desc : '表のプロパティ',
+bordercolor : '罫線の色',
+bgcolor : '背景色',
+merge_cells_title : 'セルの結合',
+split_cells_desc : 'セルの分割',
+merge_cells_desc : 'セルを結合する',
+cut_row_desc : '行の切取り',
+copy_row_desc : '行のコピー',
+paste_row_before_desc : '行の貼付け(前へ)',
+paste_row_after_desc : '行の貼付け(後ろへ)',
+id : 'Id',
+style: 'スタイル',
+langdir : 'Language direction',
+langcode : 'Language code',
+mime : 'Target MIME type',
+ltr : 'Left to right',
+rtl : 'Right to left',
+bgimage : '背景の画像',
+summary : 'Summary',
+td : "Data",
+th : "Header",
+cell_cell : '現在のセルにセットする',
+cell_row : 'この行のセルにセットする',
+cell_all : '表内のすべてのセルにセットする',
+row_row : '現在の行を上書き',
+row_odd : '奇数行のセルを上書き',
+row_even : '偶数行のセルを上書き',
+row_all : '表内のすべてのセルを上書き',
+thead : 'Table Head',
+tbody : 'Table Body',
+tfoot : 'Table Foot',
+del : '表を削除',
+scope : 'Scope',
+row : '行',
+col : '列',
+rowgroup : 'グループ行',
+colgroup : 'グループ列',
+missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/langs/readme.txt
new file mode 100644 (file)
index 0000000..e32bcf0
--- /dev/null
@@ -0,0 +1,4 @@
+Theme specific language packs.
+
+The language pack codes are based on ISO-639-2
+http://www.loc.gov/standards/iso639-2/englangn.html
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/merge_cells.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/merge_cells.htm
new file mode 100644 (file)
index 0000000..82628ee
--- /dev/null
@@ -0,0 +1,37 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_table_merge_cells_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/merge_cells.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="margin: 8px" style="display: none">
+<form onsubmit="insertTable();return false;" action="#">
+       <fieldset>
+               <legend>{$lang_table_merge_cells_title}</legend>
+                 <table border="0" cellpadding="0" cellspacing="3" width="100%">
+                         <tr>
+                               <td>{$lang_table_cols}:</td>
+                               <td align="right"><input type="text" name="numcols" value="" style="width: 30px" /></td>
+                               <td>
+                         </tr>
+                         <tr>
+                               <td>{$lang_table_rows}:</td>
+                               <td align="right"><input type="text" name="numrows" value="" style="width: 30px" /></td>
+                         </tr>
+                 </table>
+       </fieldset>
+
+       <div class="mceActionPanel">
+               <div style="float: left">
+                       <input type="button" id="insert" name="insert" value="{$lang_update}" onclick="mergeCells();" />
+               </div>
+
+               <div style="float: right">
+                       <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+               </div>
+       </div>
+</form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/readme.txt
new file mode 100644 (file)
index 0000000..6bc6d7d
--- /dev/null
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/row.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/row.htm
new file mode 100644 (file)
index 0000000..43c8bca
--- /dev/null
@@ -0,0 +1,159 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_table_row_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/row.js"></script>
+       <link href="css/row.css" rel="stylesheet" type="text/css" />
+       <base target="_self" />
+</head>
+<body id="tablerow" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+       <form onsubmit="updateAction();return false;">
+               <div class="tabs">
+                       <ul>
+                               <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
+                               <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+                       </ul>
+               </div>
+
+               <div class="panel_wrapper">
+                       <div id="general_panel" class="panel current">
+                               <fieldset>
+                                       <legend>{$lang_table_general_props}</legend>
+
+                                       <table border="0" cellpadding="4" cellspacing="0">
+                                               <tr>
+                                                       <td><label for="rowtype">{$lang_table_rowtype}</label></td>
+                                                       <td class="col2">
+                                                               <select id="rowtype" name="rowtype">
+                                                                       <option value="thead">{$lang_table_thead}</option>
+                                                                       <option value="tbody">{$lang_table_tbody}</option>
+                                                                       <option value="tfoot">{$lang_table_tfoot}</option>
+                                                               </select>
+                                                       </td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="align">{$lang_table_align}</label></td>
+                                                       <td class="col2">
+                                                               <select id="align" name="align">
+                                                                       <option value="">{$lang_not_set}</option>
+                                                                       <option value="center">{$lang_table_align_middle}</option>
+                                                                       <option value="left">{$lang_table_align_left}</option>
+                                                                       <option value="right">{$lang_table_align_right}</option>
+                                                               </select>
+                                                       </td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="valign">{$lang_table_valign}</label></td>
+                                                       <td class="col2">
+                                                               <select id="valign" name="valign">
+                                                                       <option value="">{$lang_not_set}</option>
+                                                                       <option value="top">{$lang_table_align_top}</option>
+                                                                       <option value="middle">{$lang_table_align_middle}</option>
+                                                                       <option value="bottom">{$lang_table_align_bottom}</option>
+                                                               </select>
+                                                       </td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="class">{$lang_class_name}</label></td>
+                                                       <td class="col2">
+                                                               <select id="class" name="class">
+                                                                       <option value="" selected="selected">{$lang_not_set}</option>
+                                                               </select>
+                                                       </td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="height">{$lang_table_height}</label></td>
+                                                       <td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+                                               </tr>
+                                       </table>
+                               </fieldset>
+                       </div>
+
+                       <div id="advanced_panel" class="panel">
+                               <fieldset>
+                                       <legend>{$lang_table_advanced_props}</legend>
+
+                                       <table border="0" cellpadding="0" cellspacing="4">
+                                               <tr>
+                                                       <td class="column1"><label for="id">{$lang_table_id}</label></td> 
+                                                       <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="style">{$lang_table_style}</label></td>
+                                                       <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+                                                       <td>
+                                                               <select id="dir" name="dir" style="width: 200px"> 
+                                                                               <option value="">{$lang_not_set}</option> 
+                                                                               <option value="ltr">{$lang_table_ltr}</option> 
+                                                                               <option value="rtl">{$lang_table_rtl}</option> 
+                                                               </select>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 
+                                                       <td>
+                                                               <input id="lang" name="lang" type="text" value="" style="width: 200px" />
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
+                                                                               <td id="backgroundimagebrowsercontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+                                                                               <td id="bgcolor_pickcontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+                                       </table>
+                               </fieldset>
+                       </div>
+               </div>
+
+               <div class="mceActionPanel">
+                       <div>
+                               <select id="action" name="action">
+                                       <option value="row">{$lang_table_row_row}</option>
+                                       <option value="odd">{$lang_table_row_odd}</option>
+                                       <option value="even">{$lang_table_row_even}</option>
+                                       <option value="all">{$lang_table_row_all}</option>
+                               </select>
+                       </div>
+
+                       <div style="float: left">
+                               <div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>
+                       </div>
+
+                       <div style="float: right">
+                               <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+                       </div>
+               </div>
+       </form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/table.htm b/trunk/NP_TinyMCE2j/tinymce2j/plugins/table/table.htm
new file mode 100644 (file)
index 0000000..17fb5a8
--- /dev/null
@@ -0,0 +1,155 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_table_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/table.js"></script>
+       <link href="css/table.css" rel="stylesheet" type="text/css" />
+       <base target="_self" />
+</head>
+<body id="table" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+       <form onsubmit="insertTable();return false;" action="#">
+               <div class="tabs">
+                       <ul>
+                               <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>
+                               <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>
+                       </ul>
+               </div>
+
+               <div class="panel_wrapper">
+                       <div id="general_panel" class="panel current">
+                               <fieldset>
+                                       <legend>{$lang_table_general_props}</legend>
+
+                                         <table border="0" cellpadding="4" cellspacing="0" width="100%">
+                                                         <tr>
+                                                               <td><label id="colslabel" for="cols">{$lang_table_cols}</label></td>
+                                                               <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" /></td>
+                                                               <td><label id="rowslabel" for="rows">{$lang_table_rows}</label></td>
+                                                               <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" /></td>
+                                                         </tr>
+                                                         <tr>
+                                                               <td><label id="cellpaddinglabel" for="cellpadding">{$lang_table_cellpadding}</label></td>
+                                                               <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" /></td>
+                                                               <td><label id="cellspacinglabel" for="cellspacing">{$lang_table_cellspacing}</label></td>
+                                                               <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" /></td>
+                                                         </tr>
+                                                         <tr>
+                                                               <td><label id="alignlabel" for="align">{$lang_table_align}</label></td>
+                                                               <td><select id="align" name="align">
+                                                                       <option value="">{$lang_not_set}</option>
+                                                                       <option value="center">{$lang_table_align_middle}</option>
+                                                                       <option value="left">{$lang_table_align_left}</option>
+                                                                       <option value="right">{$lang_table_align_right}</option>
+                                                                 </select></td>
+                                                               <td><label id="borderlabel" for="border">{$lang_table_border}</label></td>
+                                                               <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" /></td>
+                                                         </tr>
+                                                         <tr>
+                                                               <td><label id="widthlabel" for="width">{$lang_table_width}</label></td>
+                                                               <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+                                                               <td><label id="heightlabel" for="height">{$lang_table_height}</label></td>
+                                                               <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+                                                         </tr>
+                                                         <tr>
+                                                               <td><label id="classlabel" for="class">{$lang_class_name}</label></td>
+                                                               <td colspan="3">
+                                                                <select id="class" name="class">
+                                                                       <option value="" selected>{$lang_not_set}</option>
+                                                                </select></td>
+                                                         </tr>
+                                                       </table>
+                               </fieldset>
+                       </div>
+
+                       <div id="advanced_panel" class="panel">
+                               <fieldset>
+                                       <legend>{$lang_table_advanced_props}</legend>
+
+                                       <table border="0" cellpadding="0" cellspacing="4">
+                                               <tr>
+                                                       <td class="column1"><label for="id">{$lang_table_id}</label></td> 
+                                                       <td><input id="id" name="id" type="text" value="" class="advfield" /></td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="summary">{$lang_table_summary}</label></td> 
+                                                       <td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td><label for="style">{$lang_table_style}</label></td>
+                                                       <td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 
+                                                       <td>
+                                                               <select id="dir" name="dir" class="advfield"> 
+                                                                               <option value="">{$lang_not_set}</option> 
+                                                                               <option value="ltr">{$lang_table_ltr}</option> 
+                                                                               <option value="rtl">{$lang_table_rtl}</option> 
+                                                               </select>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label id="langlabel" for="lang">{$lang_table_langcode}</label></td> 
+                                                       <td>
+                                                               <input id="lang" name="lang" type="text" value="" class="advfield" />
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
+                                                                               <td id="backgroundimagebrowsercontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
+                                                                               <td id="bordercolor_pickcontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+
+                                               <tr>
+                                                       <td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 
+                                                       <td>
+                                                               <table border="0" cellpadding="0" cellspacing="0">
+                                                                       <tr>
+                                                                               <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+                                                                               <td id="bgcolor_pickcontainer">&nbsp;</td>
+                                                                       </tr>
+                                                               </table>
+                                                       </td> 
+                                               </tr>
+                                       </table>
+                               </fieldset>
+                       </div>
+               </div>
+
+               <div class="mceActionPanel">
+                       <div style="float: left">
+                               <input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertTable();" />
+                       </div>
+
+                       <div style="float: right">
+                               <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+                       </div>
+               </div>
+       </form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/about.htm
new file mode 100644 (file)
index 0000000..b4ea37b
--- /dev/null
@@ -0,0 +1,53 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_about_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/about.js"></script>
+       <link href="css/dialog_about.css" rel="stylesheet" type="text/css" />
+       <base target="_self" />
+</head>
+<body id="about" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+               <div class="tabs">
+                       <ul>
+                               <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_about}</a></span></li>
+                               <li id="help_tab"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{$lang_help}</a></span></li>
+                               <li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{$lang_plugins}</a></span></li>
+                       </ul>
+               </div>
+
+               <div class="panel_wrapper">
+                       <div id="general_panel" class="panel current">
+                               <h3>{$lang_about_title}</h3>
+                               <p>Version: {$tinymce_version} ({$tinymce_releasedate})</p>
+                               <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
+                               by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
+                               <p>Copyright &copy; 2005, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
+                               <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
+
+                               <div id="buttoncontainer"></div>
+                       </div>
+
+                       <div id="plugins_panel" class="panel">
+                               <div id="pluginscontainer">
+                                       <h3>{$lang_loaded_plugins}</h3>
+
+                                       <div id="plugintablecontainer">
+                                       </div>
+
+                                       <p>&nbsp;</p>
+                               </div>
+                       </div>
+
+                       <div id="help_panel" class="panel noscroll" style="overflow: visible;">
+                               <div id="iframecontainer"></div>
+                       </div>
+               </div>
+
+               <div class="mceActionPanel">
+                       <div style="float: right">
+                               <input type="button" id="cancel" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" />
+                       </div>
+               </div>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/anchor.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/anchor.htm
new file mode 100644 (file)
index 0000000..988bcb6
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_insert_anchor_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/anchor.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertAnchor();return false;" action="#">
+
+       <table border="0" cellpadding="4" cellspacing="0">
+               <tr>
+                       <td colspan="2" class="title">{$lang_insert_anchor_title}</td>
+               </tr>
+               <tr>
+                       <td nowrap="nowrap">{$lang_insert_anchor_name}:</td>
+                       <td><input name="anchorName" type="text" id="anchorName" value="" style="width: 200px" /></td>
+               </tr>
+       </table>
+
+       <div class="mceActionPanel">
+               <div style="float: left">
+                       <input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAnchor();" />
+               </div>
+
+               <div style="float: right">
+                       <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+               </div>
+       </div>
+
+</form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/charmap.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/charmap.htm
new file mode 100644 (file)
index 0000000..fbd472b
--- /dev/null
@@ -0,0 +1,53 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_theme_charmap_title}</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/charmap.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<table align="center" border="0" cellspacing="0" cellpadding="2">
+    <tr>
+        <td colspan="2" class="title">{$lang_theme_charmap_title}</td>
+    </tr>
+    <tr>
+        <td rowspan="2" align="left" valign="top">
+            <script language="javascript" type="text/javascript">renderCharMapHTML();</script>
+        </td>
+        <td width="100" align="center" valign="top">
+            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height: 100px">
+                <tr>
+                    <td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 10px; font-family: Arial, Helvetica, sans-serif; text-align:center;" id="codeN">&nbsp;</td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+    <tr>
+        <td valign="bottom" style="padding-bottom: 3px;">
+            <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
+                <tr>
+                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 1px;">&nbsp;</td>
+                </tr>
+                <tr>
+                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
+                </tr>
+                <tr>
+                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
+                </tr>
+            </table>
+        </td>
+    </tr>
+</table>
+
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/color_picker.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/color_picker.htm
new file mode 100644 (file)
index 0000000..02ba220
--- /dev/null
@@ -0,0 +1,13 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_theme_colorpicker_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/color_picker.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" marginheight="3" topmargin="3" leftmargin="3" marginwidth="3" style="display: none">
+       <div align="center">
+          <script language="javascript" type="text/javascript">renderColorMap();</script>
+       </div>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_content.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_content.css
new file mode 100644 (file)
index 0000000..91b9588
--- /dev/null
@@ -0,0 +1,55 @@
+/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
+/* You can extend this CSS by adding your own CSS file with the the content_css option */
+
+body {
+       background-color: #FFFFFF;
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+       scrollbar-3dlight-color: #F0F0EE;
+       scrollbar-arrow-color: #676662;
+       scrollbar-base-color: #F0F0EE;
+       scrollbar-darkshadow-color: #DDDDDD;
+       scrollbar-face-color: #E0E0DD;
+       scrollbar-highlight-color: #F0F0EE;
+       scrollbar-shadow-color: #F0F0EE;
+       scrollbar-track-color: #F5F5F5;
+}
+
+td {
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+}
+
+pre {
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+}
+
+.mceVisualAid {
+       border: 1px dashed #BBBBBB !important;
+}
+
+.mceItemAnchor {
+       width: 12px;
+       line-height: 6px;
+       overflow: hidden;
+       padding-left: 12px;
+       background-image: url('../images/anchor_symbol.gif');
+       background-position: bottom;
+       background-repeat: no-repeat;
+}
+
+/* Important is needed in Gecko browsers inorder to style links */
+/*
+a {
+       color: green !important;
+}
+*/
+
+/* Style selection range colors in Gecko browsers */
+/*
+::-moz-selection {
+       background-color: red;
+       color: green;
+}
+*/
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_popup.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_popup.css
new file mode 100644 (file)
index 0000000..5c31f10
--- /dev/null
@@ -0,0 +1,319 @@
+/* This file contains the CSS data for all popups in TinyMCE */
+
+body {
+       background-color: #F0F0EE;
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 11px;
+       scrollbar-3dlight-color: #F0F0EE;
+       scrollbar-arrow-color: #676662;
+       scrollbar-base-color: #F0F0EE;
+       scrollbar-darkshadow-color: #DDDDDD;
+       scrollbar-face-color: #E0E0DD;
+       scrollbar-highlight-color: #F0F0EE;
+       scrollbar-shadow-color: #F0F0EE;
+       scrollbar-track-color: #F5F5F5;
+       margin: 8px;
+}
+
+td {
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 11px;
+}
+
+input {
+       background: #FFFFFF;
+       border: 1px solid #cccccc;
+}
+
+td, input, select, textarea {
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 10px;
+}
+
+input, select, textarea {
+       border: 1px solid #808080;
+}
+
+.input_noborder {
+       border: 0px solid #808080;
+}
+
+#insert {
+   font-weight: bold;
+   width: 90px;
+   height: 21px;
+   border: 0px;
+   background-image: url('../images/insert_button_bg.gif');
+   cursor: pointer;
+}
+
+#cancel {
+   font-weight: bold;
+   width: 90px;
+   height: 21px;
+   border: 0px;
+   background-image: url('../images/cancel_button_bg.gif');
+   cursor: pointer;
+}
+
+/* Mozilla only style */
+html>body #insert, html>body #cancel {
+       padding-bottom: 2px;
+}
+
+.title {
+       font-size: 12px;
+       font-weight: bold;
+       color: #2B6FB6;
+}
+
+table.charmap {
+       border-style: solid;
+       border-width: 1px;
+       border-color: #AAAAAA;
+}
+
+td.charmap, td.charmapOver {
+       color: #000000;
+       border-color: #AAAAAA;
+       border-style: solid;
+       border-width: 1px;
+       text-align: center;
+       font-size: 12px;
+}
+
+td.charmapOver {
+       background-color: #CCCCCC;
+       cursor: arrow;
+}
+
+a.charmap {
+       color: #000000;
+       text-decoration: none
+}
+
+.wordWrapCode {
+       vertical-align: middle;
+       border: 1px none #000000;
+       background-color: transparent;
+}
+
+input.radio {
+       border: 1px none #000000;
+       background-color: transparent;
+       vertical-align: middle;
+}
+
+input.checkbox {
+       border: 1px none #000000;
+       background-color: transparent;
+       vertical-align: middle;
+}
+
+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
+       margin-left: 1px;
+}
+
+.mceButtonNormal {
+       border-top: 1px solid;
+       border-left: 1px solid;
+       border-bottom: 1px solid;
+       border-right: 1px solid;
+       border-color: #F0F0EE;
+       cursor: arrow;
+}
+
+.mceButtonOver {
+       border: 1px solid #0A246A;
+       cursor: arrow;
+       background-color: #B6BDD2;
+}
+
+.mceButtonDown {
+       cursor: arrow;
+       border: 1px solid #0A246A;
+       background-color: #8592B5;
+}
+
+.mceButtonDisabled {
+       filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
+       -moz-opacity:0.3;
+       opacity: 0.3;
+       border-top: 1px solid;
+       border-left: 1px solid;
+       border-bottom: 1px solid;
+       border-right: 1px solid;
+       border-color: #F0F0EE;
+       cursor: arrow;
+}
+
+.mceActionPanel {
+       margin-top: 5px;
+}
+
+/* Tabs classes */
+
+.tabs {
+       float: left;
+       width: 100%;
+       line-height: normal;
+       background-image: url("../images/xp/tabs_bg.gif");
+}
+
+.tabs ul {
+       margin: 0;
+       padding: 0px 0px 0;
+       list-style: none;
+}
+
+.tabs li {
+       float: left;
+       background: url("../images/xp/tab_bg.gif") no-repeat left top;
+       margin: 0;
+       margin-left: 0px;
+       margin-right: 2px;
+       padding: 0 0 0 10px;
+       line-height: 18px;
+}
+
+.tabs li.current {
+       background: url("../images/xp/tab_sel_bg.gif") no-repeat left top;
+       margin-right: 2px;
+}
+
+.tabs span {
+       float: left;
+       display: block;
+       background: url("../images/xp/tab_end.gif") no-repeat right top;
+       padding: 0px 10px 0px 0px;
+}
+
+.tabs .current span {
+       background: url("../images/xp/tab_sel_end.gif") no-repeat right top;
+}
+
+.tabs a {
+       text-decoration: none;
+       font-family: Verdana, Arial;
+       font-size: 10px;
+}
+
+.tabs a:link, .tabs a:visited, .tabs a:hover {
+       color: black;
+}
+
+.tabs a:hover {
+}
+
+.tabs .current {
+}
+
+.tabs .current a, .tabs .current a:link, .tabs .current a:visited {
+}
+
+.panel_wrapper div.panel {
+       display: none;
+}
+
+.panel_wrapper div.current {
+       display: block;
+       width: 100%;
+       height: 300px;
+       overflow: visible; /* Should be auto but that breaks Safari */
+}
+
+.panel_wrapper {
+       border: 1px solid #919B9C;
+       border-top: 0px;
+       padding: 10px;
+       padding-top: 5px;
+       clear: both;
+       background-color: white;
+}
+
+fieldset {
+       border: 1px solid #919B9C;
+       font-family: Verdana, Arial;
+       font-size: 10px;
+       padding: 0px;
+       margin: 0px;
+       padding: 4px;
+}
+
+legend {
+       color: #2B6FB6;
+       font-weight: bold;
+}
+
+.properties {
+       width: 100%;
+}
+
+.properties .column1 {
+}
+
+.properties .column2 {
+       text-align: left;
+}
+
+a:link, a:visited {
+       color: black;
+}
+
+a:hover {
+       color: #2B6FB6;
+}
+
+#plugintable thead {
+       font-weight: bold;
+       background-color: #DDDDDD;
+}
+
+#plugintable, #about #plugintable td {
+       border: 1px solid #919B9C;
+}
+
+#plugintable {
+       width: 99%;
+       margin-top: 10px;
+}
+
+#pluginscontainer {
+       height: 290px;
+       overflow: auto;
+}
+
+/* MSIE Specific styles */
+
+* html .panel_wrapper {
+       width: 100%;
+}
+
+.column {
+       float: left;
+}
+
+h1, h2, h3, h4 {
+       color: #2B6FB6;
+       margin: 0px;
+       padding: 0px;
+       padding-top: 5px;
+}
+
+h3 {
+       font-size: 14px;
+}
+
+/* Disables the advanced tab in the table plugin. */
+/*
+#table #advanced_tab {
+       display: none;
+}
+*/
+
+/* Disables the border input field and label in the table plugin. */
+/*
+#table #border, #table #borderlabel {
+       display: none;
+}
+*/
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_ui.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/css/editor_ui.css
new file mode 100644 (file)
index 0000000..a8d680d
--- /dev/null
@@ -0,0 +1,173 @@
+/* This file contains the CSS data for the editor UI of TinyMCE instances */
+
+.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {
+       border: 0px; margin: 0px; padding: 0px; background: transparent;
+}
+
+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceSeparatorLine, .mceButtonDisabled, .mceButtonSelected {
+       border: 0px; margin: 0px; padding: 0px; background: transparent;
+       margin-top: 1px;
+       margin-left: 1px;
+       padding: 0px;
+}
+
+.mceButtonNormal {
+       border: 1px solid #F0F0EE !important;
+       cursor: arrow;
+}
+
+.mceButtonOver {
+       border: 1px solid #0A246A !important;
+       cursor: arrow;
+       background-color: #B6BDD2;
+}
+
+.mceButtonDown {
+       cursor: arrow;
+       border: 1px solid #0A246A !important;
+       background-color: #8592B5;
+}
+
+.mceButtonSelected {
+       border: 1px solid #C0C0BB !important;
+       cursor: arrow;
+}
+
+.mceButtonDisabled {
+       filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
+       -moz-opacity:0.3;
+       opacity: 0.3;
+       border: 1px solid #F0F0EE !important;
+       cursor: arrow;
+}
+
+.mceSeparator {
+       border-top: 1px solid buttonhighlight;
+       border-left: 1px solid buttonhighlight;
+       border-bottom: 1px solid buttonshadow;
+       border-right: 1px solid buttonshadow;
+       margin-right: 2px;
+       margin-left: 2px;
+}
+
+.mceSeparatorLine {
+       margin:2px;
+       margin-left: 4px;
+       background-color: #F0F0EE;
+       border-top: 1px solid buttonshadow;
+       border-left: 1px solid buttonshadow;
+       border-bottom: 1px solid buttonhighlight;
+       border-right: 1px solid buttonhighlight;
+       width: 0px;
+       height: 15px;
+}
+
+.mceSelectList {
+       font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
+       font-size: 7pt !important;
+       font-weight: normal;
+       margin-top: 3px;
+       padding: 0px;
+       display: inline;
+       vertical-align: top;
+       background-color: #F0F0EE
+}
+
+.mceLabel, .mceLabelDisabled {
+       font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
+       font-size: 9pt;
+}
+
+.mceLabel {
+       color: #000000;
+}
+
+.mceLabelDisabled {
+       cursor: text;
+       color: #999999;
+}
+
+.mceEditor {
+       background: #F0F0EE;
+       border: 1px solid #cccccc;
+       padding: 0px;
+       margin: 0px;
+}
+
+.mceEditorArea {
+       font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
+       background: #FFFFFF;
+       padding: 0px;
+       margin: 0px;
+}
+
+.mceToolbarTop, .mceToolbarBottom {
+       background: #F0F0EE;
+       line-height: 1px;
+       font-size: 1px;
+}
+
+.mceToolbarTop {
+       border-bottom: 1px solid #cccccc;
+}
+
+.mceToolbarBottom {
+       border-top: 1px solid #cccccc;
+}
+
+.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {
+       height: 20px;
+}
+
+.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {
+       font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
+       font-size: 9pt;
+       padding: 2px;
+       line-height: 16px;
+       overflow: visible;
+}
+
+.mceStatusbarTop {
+       border-bottom: 1px solid #cccccc;
+}
+
+.mceStatusbarBottom {
+       border-top: 1px solid #cccccc;
+}
+
+.mceStatusbar {
+       border-bottom: 1px solid #cccccc;
+}
+
+.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {
+       text-decoration: none;
+       font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
+       font-size: 9pt;
+       color: #000000;
+}
+
+.mcePathItem:hover {
+       text-decoration: underline;
+}
+
+.mceStatusbarPathText {
+       float: left;
+}
+
+.mceStatusbarResize {
+       float: right;
+       background-image: url('../images/statusbar_resize.gif');
+       background-repeat: no-repeat;
+       width: 11px;
+       height: 20px;
+       cursor: se-resize;
+}
+
+.mceResizeBox {
+       width: 10px;
+       height: 10px;
+       display: none;
+       border: 1px dotted gray;
+       margin: 0px;
+       padding: 0px;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/about.htm
new file mode 100644 (file)
index 0000000..a1c6dff
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>O TinyMCE</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">O TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE je malý WYSIWYG editor pro webové prohlí¾eèe jako jsou MSIE nebo Mozilla,
+kterým lze HTML obsah upravovat mnohem jednodu¹eji. Obsahuje bì¾né funkce,
+je¾ lze nalézt ve vìt¹inì textových editorù, proto by jeho pou¾ívání nemìlo být slo¾ité.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Jdi na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahoru</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/common_buttons.htm
new file mode 100644 (file)
index 0000000..d306276
--- /dev/null
@@ -0,0 +1,170 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Bì¾ná tlaèítka</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Bì¾ná tlaèítka</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Ní¾e je krátce popsáno ka¾dé tlaèítko.
+<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/cut.gif" width="20" height="20"></td>
+    <td>Zkopíruje aktuálnì vybraný obsah do schránky. (Ctrl+C)</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/copy.gif" width="20" height="20"></td>
+    <td>Vyjme aktuálnì vybraný obsah do schránky. (Ctrl+X)</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/paste.gif" width="20" height="20"></td>
+    <td>Vlo¾í obsah schránky do okna editoru. (Ctrl+P)</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Ztuèní text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Naformátuje text kurzívou.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Podtrhne text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Pøe¹krtne text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Zarovná vlevo.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Zarovná na støed.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Zarovná vpravo.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Zarovná do bloku.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Neøazený seznam/seznam s odrá¾ky.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Øazený seznam/èíslovaný seznam.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Pøedsadí/sní¾í odsazení.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Odsadí/zvý¹í odsazení.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Vrátí zpìt naposledy provedenou akci.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Obnoví poslední akci.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Vlo¾í nový odkaz, více o této funkci v èásti <a href="insert_link_button.htm">Vlo¾it odkaz</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Zru¹í odkaz v aktuálním výbìru/odstranit v¹echny vybrané odkazy.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Vlo¾í nový obrázek, více o této funkci v èásti <a href="insert_image_button.htm">Vlo¾it obrázek</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Vyèistí kód/odstraní nechtìné formátování. Tato funkce se hodí kdy¾
+      kopírujete obsah napøíklad z kanceláøského balíku.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Zobrazí tuto nápovìdu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Otevøe editor s HTML zdrojem. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table.gif" width="20" height="20"></td>
+    <td>Do aktuální pozice vlo¾í novou 2x2 tabulku.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Pøidá øádek pøed aktuální. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Pøidá øádek pod aktuální. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Odstraní øádek. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Pøidá sloupec pøed aktuální.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Pøidá sloupec za aktuální.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Odstraní aktuální sloupec.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Pøidá nový vodorovný oddìlovaè.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Odstraní z výbìru formátování. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Vytvoøí z vybraného textu dolní index. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Vytvoøí z vybraného textu horní index. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Jdi na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahoru</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_image_window.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_image_window.png
new file mode 100644 (file)
index 0000000..5d9ea98
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_image_window.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_link_window.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_link_window.png
new file mode 100644 (file)
index 0000000..94a0c2e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_link_window.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_table_window.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_table_window.png
new file mode 100644 (file)
index 0000000..17c46d0
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/images/insert_table_window.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/index.htm
new file mode 100644 (file)
index 0000000..12eea5b
--- /dev/null
@@ -0,0 +1,26 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Nápovìda</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Obsah</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Kliknutím na odkazy ní¾e zvolte po¾adovanou èást nápovìdy.
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Bì¾ná tlaèítka</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Tlaèítko vlo¾it obrázek</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Tlaèítko vlo¾it odkaz</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Tlaèítko vlo¾it tabulku</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_image_button.htm
new file mode 100644 (file)
index 0000000..71f421d
--- /dev/null
@@ -0,0 +1,66 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tlaèítko vlo¾it obrázek</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tlaèítko vlo¾it obrázek</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Tlaèítko vlo¾it obrázek otevøe následující okno.<br>
+<br>
+<img src="images/insert_image_window.png" width="348" height="290"><br>
+<br>
+Jen vlo¾te URL obrázku, který chcete pøidat a zadáte jeho popis, jen¾ bude
+zobrazován jako alternativní popisek obrázku.<br>
+<br>
+<strong>Popis políèek:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>URL obrázku</strong></td>
+    <td>URL/cesta k obrázku.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Popis obrázku</strong></td>
+    <td>Alternativní popis toho, co je na obrázku.</td>
+  </tr>
+  <tr>
+    <td><strong>Rozmìry</strong></td>
+    <td>©íøka/vý¹ka obrázku. </td>
+  </tr>
+  <tr>
+    <td><strong>Zarovnání</strong></td>
+    <td>Zarovnání obrázku, vhodné pro obtékání obrázku textem.</td>
+  </tr>
+  <tr>
+    <td><strong>Rámeèek</strong></td>
+    <td>Tlou¹»ka rámeèku. </td>
+  </tr>
+  <tr>
+    <td><strong>Vertikální okraj</strong></td>
+    <td>Vertikální okraj, vhodné pro zalomení textu kolem obrázku.</td>
+  </tr>
+  <tr>
+    <td><strong>Horizontální okraj</strong></td>
+    <td>Horizontální okraj, vhodné pro zalomení textu kolem obrázku.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Jdi na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahoru</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_link_button.htm
new file mode 100644 (file)
index 0000000..7d62b62
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tlaèítko vlo¾it odkaz</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tlaèítko vlo¾it odkaz</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Toto tlaèítko otevøe nové okno s mo¾ností vlo¾ení/úpravy odkazu.<br>
+<br>
+<img src="images/insert_link_window.png" width="328" height="160"><br>
+<br>
+V tomto oknì jsou dvì políèka. &quot;URL odkazu&quot; je adresa stránky, na 
+kterou odkazujeme. &quot;Cíl&quot; urèuje, jak má být odkazovaná stránka otevøena.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Jdi na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahoru</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/insert_table_button.htm
new file mode 100644 (file)
index 0000000..dc7a96d
--- /dev/null
@@ -0,0 +1,68 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tlaèítko vlo¾it tabulku</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tlaèítko vlo¾it tabulku</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Tlaèítko vlo¾it tabulku otevøe následující okno, v nìm¾ mù¾ete definovat novou tabulku.<br>
+<br>
+<img src="images/insert_table_window.png" width="338" height="210"><br>
+<br>
+<strong>Popis políèek:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Sloupce</strong></td>
+    <td>Poèet sloupcù v tabulce.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Øádky</strong></td>
+    <td>Poèet øádkù v tabulce.</td>
+  </tr>
+  <tr>
+    <td><strong>Vnitøní okraj bunìk</strong></td>
+    <td>Vnitøní okraj bunìk tabulky.</td>
+  </tr>
+  <tr>
+    <td><strong>Vnìj¹í okraj bunìk</strong></td>
+    <td>Vnitøní okraj bunìk tabulky.</td>
+  </tr>
+  <tr>
+    <td><strong>Zarovnání</strong></td>
+    <td>Zarovnání tabulky.</td>
+  </tr>
+  <tr>
+    <td><strong>Rámeèek</strong></td>
+    <td>Tlou¹»ka rámeèku tabulky.</td>
+  </tr>
+  <tr>
+    <td><strong>©íøka</strong></td>
+    <td>©íøka tabulky v pixelech.</td>
+  </tr>
+  <tr>
+    <td><strong>Vý¹ka</strong></td>
+    <td>Vý¹ka tabulky v pixelech.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Jdi na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahoru</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/cs/style.css
new file mode 100644 (file)
index 0000000..59c464d
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: 0; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/about.htm
new file mode 100644 (file)
index 0000000..6d87515
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Om TinyMCE</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE er et kompakt WYSIWYG editeringsmodul, der kan anvendes i browsere som MS Internet 
+Explorer eller Mozilla. Modulet gør det muligt for dig at redigere HTML-indhold 
+på en mere brugervenlig måde. Den er forsynet med de samme funktioner, som man 
+finder i de fleste tekstbehandlingssystemer og skulle ikke være svær at anvende. <br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/common_buttons.htm
new file mode 100644 (file)
index 0000000..707c777
--- /dev/null
@@ -0,0 +1,162 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Common buttons</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">De mest almindelige knapper</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">IF</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Herunder finder du en beskrivelse af de enkelte knapper.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20" alt="Bold text icon" /></td>
+    <td>Fed tekst (Ctrl+B).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20" alt="Italic text icon" /></td>
+    <td>Kursiv (Ctrl+I).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20" alt="Underline text icon." /></td>
+    <td>Understregning (Ctrl+U).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20" alt="Strikethrough text icon." /></td>
+    <td>Gennemstregning.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20" alt="Align left icon." /></td>
+    <td>Juster til venstre.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20" alt="Align center icon." /></td>
+    <td>Centrer.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20" alt="Align right icon." /></td>
+    <td>Juster til højre.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20" alt="Align full icon." /></td>
+    <td>Lige højre margen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20" alt="Unordered list/bullet list icon." /></td>
+    <td>Uordnet list med bullets.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20" alt="Ordered list/numbered list icon." /></td>
+    <td>Ordnet liste med tal</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20" alt="Outdent/decrease indentation icon." /></td>
+    <td>Flyt tekst til venstre.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20" alt="Indent/increase indentation icon." /></td>
+    <td>Flyt tekst til højre.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20" alt="Undo the last operation." /></td>
+    <td>Fortryd sidste valg (Ctrl+Z).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20" alt="Redo the last operation icon." /></td>
+    <td>Gentag sidste valg (Ctrl+Y).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20" alt="Insert a new link icon." /></td>
+    <td>Indsæt nyt link - læs mere om denne funktion i afsnittet <a href="insert_link_button.htm">Indsættelse 
+       af link</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20" alt="Unlinks the current selection icon." /></td>
+    <td>Fjern aktuelt valgte link(s).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20" alt="Insert a new anchor icon." /></td>
+    <td>Indsæt nyt bogmærke - læs mere om denne funktion i afsnittet om
+       <a href="insert_anchor_button.htm">Bogmærker.</a></td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20" alt="Insert a new image icon." /></td>
+    <td>Indsæt nyt billede - læs mere om denne funktion i afsnittet om
+       <a href="insert_image_button.htm">Billedbehandling</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20" alt="Cleanup code icon." /></td>
+    <td>Ryd op i koden / fjern uønsket formatering. Denne funktion er brugbar, 
+       når man indsætter tekst f. eks. fra et office-produkt.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20" alt="Show help icon." /></td>
+    <td>Viser dette hjælpevindue.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20" alt="Source code editor icon." /></td>
+    <td>Åbner editoren til redigering af HTML-kode. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20" alt="Insert table icon." /></td>
+    <td>Indsætter en ny tabel, hvor cursoren aktuelt er anbragt. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20" alt="Adds a row above icon." /></td>
+    <td>Tilføjer en række over den aktuelle. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20" alt="Adds a row under icon." /></td>
+    <td>Tilføjer en række under den aktuelle. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20" alt="Remove row icon." /></td>
+    <td>Fjerner en række. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20" alt="Add column before icon." /></td>
+    <td>Tilføjer en kolonne før den aktuelle.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20" alt="Add column after icon." /></td>
+    <td>Tilføjer en kolonne efter den aktuelle.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20" alt="Remove column icon." /></td>
+    <td>Fjerner den aktuelle kolonne.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20" alt="Insert horizontal ruler icon." /></td>
+    <td>Indsætter en vandret streg </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20" alt="Remove formatting icon." /></td>
+    <td>Fjerner al formatering fra den aktuelt valgte tekst. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20" alt="Subscript icon." /></td>
+    <td>Sætter det valgte som sænket skrift. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20" alt="Superscript icon." /></td>
+    <td>Sætter det valgte som hævet skrift. </td>
+  </tr>
+</table>
+<br>
+<hr noshade="noshade" />
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdsfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/create_accessible_content.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/create_accessible_content.htm
new file mode 100644 (file)
index 0000000..28cf3fa
--- /dev/null
@@ -0,0 +1,76 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Skabe tilgængeligt indhold</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<p>TinyMCE kan producere HTML, der vil være tilgængeligt for alle brugere, også 
+dem med handicaps, som anvender forskellige hjælpeteknikker. Den kan også skabe 
+indhold, der er tilgængeligt for brugere, som anvender tekstbaserede browsere 
+eller dem, der browser uden at vise billederne frem på siderne.&nbsp; </p>
+
+<p><strong>Ting du selv kan gøre, for at gøre dine tekste tilgængelige:</strong></p>
+<ol>
+<li><strong>Lav en billedbeskrivelse:</strong> Blinde brugere eller andre, som 
+ikke er i stand til at se billeder, er helt afhængige af billedbeskrivelsen 
+eller alt-teksten, som erstatter selve billedet. Hvis et billede ingen betydning 
+har - dvs. hvis det blot fungerer som dekoration eller som et blankt område, så 
+lad billedbeskrivelsen stå tom.&nbsp; Så vil TinyMCE indsætte et tomt alt-felt, 
+der vil tvinge hjælpeprogrammerne til at ignorere billedet. <br /><br /></li>
+
+<li> <strong>Tilføj udstrækning til en tabels overskriftsceller:</strong> I den 
+dialog, som gør det muligt at styre en tabels attributter, bør man angive en 
+overskrifts udstrækning. Det vil fungere sådan, at overskriften automatisk 
+knyttes til alle værdier i tabellen, hvilket gør det nemmere for blinde brugere 
+at forstå, hvad indholdet i den enkelte celle betyder.&nbsp; <br /><br /></li>
+
+<li><strong> Strukturer indholdet med fornuftige overskrifter:</strong> Vælg 
+standardformaterede overskrifter (som f. eks. H1-6) for at lave overskrifter til 
+dit indhold - går det i stedet for at lave dine egne standarder. Blinde brugere 
+anvender en læser, der kan genkende disse standardformater og på den måde lave 
+en indholdsfortegnelse over siden. På den måde kan en blind bruger lettere 
+bevæge sig rundt på siden og springe fra afsnit til afsnit.<br>
+&nbsp;<br /></li>
+
+<li><strong> Husk at lave alternativt indhold:</strong> Lav en alternativ side 
+der repræsenterer ikke-HTML-formateret indhold - så som Flash, Java applets 
+eller indlejrede videosekvenser. Denne kan laves som et stykke statisk grafik 
+kombineret med en beskrivelse af billedet og en beskrivelse af det indhold, som&nbsp; 
+ville være dukket op, hvis man havde set siden på normal vis. En alternativ 
+HTML-side kan også laves, hvorefter man så kan lægge et link på til den ved 
+siden af Falsh-referencen eller referencen til Java appletten. På denne måde 
+sikrer du, at indholdet også er tilgængeligt for folk, som bruger 
+hjælpeteknologier, som ikke er i stand til at vise eller afvikle dit indhold 
+eller som mangler den relevante player eller plugin.<br /><br /></li>
+
+<li><strong> Kontroller tilgængeligheden: </strong> Når AChecker plugin'en er 
+installeret sammen med TinyMCE, kan du blot trykke på den relevante knap for at 
+blive adviseret om mulige tilgængelighedsproblemer.<br /><br /></li>
+
+</ol>
+
+<p>Besøg <a href="http://checker.atrc.utoronto.ca" target="_new">ACheckers 
+hjemmeside</a> for at se yderligere informationer om, hvordan man skaber 
+indhold, som alle brugere kan tilgå.<br />
+</p>
+
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdsfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..5b5f528
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..cdc617e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..7bad758
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..23b3814
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/index.htm
new file mode 100644 (file)
index 0000000..e010ef7
--- /dev/null
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Help Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Indholdsfortegnelse</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Klik på et link herunder for at springe til en hjælpetekst. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">De mest almindelige knapper</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Indsæt billeder</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Indsæt links</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Indsæt bogmærker</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Indsæt tabeller</a></li>
+ <li class="toc_li"><a href="create_accessible_content.htm">Skab tilgængeligt 
+       indhold</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..cd66eb3
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert anchor button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Indsæt bogmærke</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denne knap åbner et nyt vindue, som rummer bogmærkefunktionen.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139" alt="Anchor dialog/window" /><br>
+<br>
+Der er kun et enkelt felt i dette vindue - i det skriver du navnet på dit 
+bogmærke. Husk at to bogmærker ikke kan hedde det samme. <br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdsfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_image_button.htm
new file mode 100644 (file)
index 0000000..1c58b3c
--- /dev/null
@@ -0,0 +1,67 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert image button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Indsæt billeder</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Knappen &quot;Indsæt billede&quot; åbner et vindue, der ser ud som nedenfor.<br>
+<br>
+<img src="images/insert_image_window.gif" alt="Insert image dialog/window" /><br>
+<br>
+Her indskriver man ganske enkelt adressen på det billede, man vil linke til samt 
+en billedbeskrivelse. Denne beskrivelse bliver derefter vist som den alternative 
+tekstbeskrivelse af billedet. <br>
+<br>
+<strong>Feltbeskrivelser:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Image URL </strong></td>
+    <td>Adressen på eller stien til billedet.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Image description </strong></td>
+    <td>Alternativ tekstbeskrivelse af billedet.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimentions</strong></td>
+    <td>Billedets bredde / højde. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Billedets justering - brugbar når der skal sættes tekst på plads omkring 
+       et billede.</td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Ramme bredde. </td>
+  </tr>
+  <tr>
+    <td><strong>VSpace</strong></td>
+    <td>Vertikal margen - brugbart når billedet skal placeres i en tekst.</td>
+  </tr>
+  <tr>
+    <td><strong>HSpace</strong></td>
+    <td>Horisontal margen - brugbart når billedet skal placeres i en tekst.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdsfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_link_button.htm
new file mode 100644 (file)
index 0000000..a2c3bfc
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert link button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Indsæt link</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denne knap åbner et nyt vindue, som rummer linkfunktionen.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159" alt="Insert link dialog/window" /><br>
+<br>
+Der er to felter i dette vindue. I det første skal man indskrive adressen på 
+linket - i det andet det &quot;target&quot;, som linket skal pege på - dvs. hvordan linket 
+åbnes, når brugeren trykker på det.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdsfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/insert_table_button.htm
new file mode 100644 (file)
index 0000000..0934b70
--- /dev/null
@@ -0,0 +1,72 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Indsæt tabel</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Trykker man på indsæt tabel knappen åbnes det vindue, som du kan se herunder. I 
+dette vindue kan du oprette nye tabeller. <br>
+<br>
+<img border="0" src="images/insert_table_window.gif" width="384" height="321"><br>
+<br>
+<strong>Feltbeskrivelser:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kolonner</strong></td>
+    <td>Antal kolonner i tabellen. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rækker</strong></td>
+    <td>Antal rækker i tabellen.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellemargin</strong></td>
+    <td>Tabellens cellemargin. </td>
+  </tr>
+  <tr>
+    <td><strong>Indvendig margin</strong></td>
+    <td>Indvendig margin i cellerne.</td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Tabellens justering. </td>
+  </tr>
+  <tr>
+    <td><strong>Kant</strong></td>
+    <td>Kantbredden i tabellen.</td>
+  </tr>
+  <tr>
+    <td><strong>Bredde</strong></td>
+    <td>Tabellens bredde i pixels.</td>
+  </tr>
+  <tr>
+    <td><strong>Højde</strong></td>
+    <td>Tabellens højde i pixels.</td>
+  </tr>
+  <tr>
+    <td><strong>Klasse</strong></td>
+    <td>Style eller stylesheet klasse for tabellen.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Tilbage til: <a href="index.htm">Indholdsfortegnelse</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/da/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/about.htm
new file mode 100644 (file)
index 0000000..2074efe
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>&Uuml;ber TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">&Uuml;ber TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Inhalt</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE ist ein kompakter WYSIWYG-Editor f&uuml;r Webbrowser wie MSIE oder Mozilla
+der es Ihnen erm&ouml;glicht HTML-Inhalte auf eine benutzerfreundliche Weise zu
+editieren. Es verf&uuml;gt über die wichtigsten Funktionen die in den meisten
+Textverarbeitungen vorkommen und sollte einfach zu benutzen sein.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
+    <td align="right"><a href="#">nach oben</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/common_buttons.htm
new file mode 100644 (file)
index 0000000..d86831e
--- /dev/null
@@ -0,0 +1,107 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>
+    <td align="right"><a href="index.htm">Inhalt</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
+    <td>Fetter Text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
+    <td>Kursiver Text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Unterstrichener Text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Durchgestrichener Text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Linksb&uuml;ndig.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Zentriert.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Rechtsb&uuml;ndig.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Blocksatz.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Unsortierte Liste / Punktierte Liste.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Sortierte Liste / Nummerierte Liste.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Einzug verkleinern.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Einzug vergr&ouml;ssern.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Letzte Aktion r&uuml;ckg&auml;ngig machen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Letzte Aktion wiederholen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Einen neuen Hyperlink einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_link_button.htm">Hyperlink einf&uuml;gen</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Den gegenw&auml;rtige markierten Hyperlink entfernen / Alle gegenw&auml;rtig markierten Hyperlinks entfernen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Ein neues Bild einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_image_button.htm">Bild einf&uuml;gen</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>unsauberen Code aufr&auml;umen / Entfernt ungewollte Formatierungen. Diese Funktion ist n&uuml;tzlich,
+               wenn Sie beispielsweise Inhalte aus einem Office Produkt kopieren.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Zeigt diese Hilfe an.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
+    <td align="right"><a href="#">nach oben</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..751de28
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..14871d7
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/index.htm
new file mode 100644 (file)
index 0000000..cb84977
--- /dev/null
@@ -0,0 +1,24 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Inhaltsverzeichnis</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Klicken Sie auf die untenstehenden Links um die verschiedenen Bereiche der Hilfe zu betrachten. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">&Uuml;ber TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Allgemeine Schaltfl&auml;chen</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Schaltfl&auml;che Bild einf&uuml;gen</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Schaltfl&auml;che Hyperlink einf&uuml;gen</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/insert_image_button.htm
new file mode 100644 (file)
index 0000000..4707d9c
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Schaltfl&auml;che Bild einf&uuml;gen</span></td>
+    <td align="right"><a href="index.htm">Inhalt</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Die Schaltfl&auml;che &quot;Bild einf&uuml;gen&quot; &ouml;ffnet das unten gezeigte Fenster.<br>
+<br>
+<img src="images/insert_image_window.gif" width="350" height="166"><br>
+<br>
+Sie geben einfach die URL zu dem Bild ein, das Sie verknüpfen möchten und eine
+Beschreibung des Bildes, welche dann als alternative Textbeschreibung verwendet wird.
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
+    <td align="right"><a href="#">nach oben</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/insert_link_button.htm
new file mode 100644 (file)
index 0000000..d705865
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Schaltfl&auml;che Hyperlink einf&uuml;gen</span></td>
+    <td align="right"><a href="index.htm">Inhalt</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Diese Schaltfl&auml;che &ouml;ffnet das Fenster f&uuml;r die &quot;Hyperlink einf&uuml;gen / bearbeiten&quot;-Funktion.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="166"><br>
+<br>
+Zwei Felder sind in diesem Fenster auszufüllen. Das Erste, &quot;Hyperlink URL&quot;, ist f&uuml;r
+die URL der Verknüpfung. Das &quot;Ziel&quot; erlaubt Ihnen auszuwählen wie die Verkn&uuml;pfung
+ge&ouml;ffnet werden soll.
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
+    <td align="right"><a href="#">nach oben</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/de/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/about.htm
new file mode 100644 (file)
index 0000000..b3e4342
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">About TinyMCE</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla 
+that enables you to edit HTML contents in a more user friendly way. It has common 
+features that are found in most word processors and should not be difficult to 
+use.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/common_buttons.htm
new file mode 100644 (file)
index 0000000..73ca8b5
--- /dev/null
@@ -0,0 +1,162 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Common buttons</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Common buttons</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Below is a short description about each button.
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20" alt="Bold text icon" /></td>
+    <td>Bold text style (Ctrl+B).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20" alt="Italic text icon" /></td>
+    <td>Italic text style (Ctrl+I).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20" alt="Underline text icon." /></td>
+    <td>Underline text style (Ctrl+U).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20" alt="Strikethrough text icon." /></td>
+    <td>Strikethrough text style.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20" alt="Align left icon." /></td>
+    <td>Align left.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20" alt="Align center icon." /></td>
+    <td>Align center.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20" alt="Align right icon." /></td>
+    <td>Align right.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20" alt="Align full icon." /></td>
+    <td>Align full.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20" alt="Unordered list/bullet list icon." /></td>
+    <td>Unordered list/bullet list.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20" alt="Ordered list/numbered list icon." /></td>
+    <td>Ordered list/numbered list</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20" alt="Outdent/decrease indentation icon." /></td>
+    <td>Outdent/decrease indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20" alt="Indent/increase indentation icon." /></td>
+    <td>Indent/increase indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20" alt="Undo the last operation." /></td>
+    <td>Undo the last operation (Ctrl+Z).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20" alt="Redo the last operation icon." /></td>
+    <td>Redo the last operation (Ctrl+Y).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20" alt="Insert a new link icon." /></td>
+    <td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert 
+      link section</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20" alt="Unlinks the current selection icon." /></td>
+    <td>Unlinks the current selection/removes all selected links.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20" alt="Insert a new anchor icon." /></td>
+    <td>Insert a new anchor, read more about this function in the <a href="insert_anchor_button.htm">Insert anchor section.</a></td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20" alt="Insert a new image icon." /></td>
+    <td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert 
+      image section</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20" alt="Cleanup code icon." /></td>
+    <td>Cleanup code/Removes unwanted formating. This function is useful when 
+      you copy contents from for example a office product.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20" alt="Show help icon." /></td>
+    <td>Shows this help window.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20" alt="Source code editor icon." /></td>
+    <td>Opens HTML source code editor. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20" alt="Insert table icon." /></td>
+    <td>Inserts a new table at the current location. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20" alt="Adds a row above icon." /></td>
+    <td>Adds a row above the current one. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20" alt="Adds a row under icon." /></td>
+    <td>Adds a row under the current one. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20" alt="Remove row icon." /></td>
+    <td>Removes the row. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20" alt="Add column before icon." /></td>
+    <td>Adds a column before the current one.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20" alt="Add column after icon." /></td>
+    <td>Adds a column after the current one.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20" alt="Remove column icon." /></td>
+    <td>Removes the current column.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20" alt="Insert horizontal ruler icon." /></td>
+    <td>Inserts a new horizontal ruler </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20" alt="Remove formatting icon." /></td>
+    <td>Removes formatting from the selection. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20" alt="Subscript icon." /></td>
+    <td>Makes the selection to be subscript. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20" alt="Superscript icon." /></td>
+    <td>Makes the selection to be superscripted. </td>
+  </tr>
+</table>
+<br>
+<hr noshade="noshade" />
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/create_accessible_content.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/create_accessible_content.htm
new file mode 100644 (file)
index 0000000..eacfbe2
--- /dev/null
@@ -0,0 +1,45 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Create accessible content</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<p>TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off. </p>
+
+<p><strong>Things you can do to make your content accessible:</strong></p>
+<ol>
+<li><strong>Include an Image Description:</strong> Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image. <br /><br /></li>
+
+<li> <strong>Add Scope to data table header cells:</strong> In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents. <br /><br /></li>
+
+<li><strong> Structure content with properly nested headings:</strong> In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content,  rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.<br /><br /></li>
+
+<li><strong> Include alternate content:</strong> Create an alternate page for non-HTML content such as Flash, Java applets, or  embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.<br /><br /></li>
+
+<li><strong> Check accessbility: </strong> When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.<br /><br /></li>
+
+</ol>
+
+<p>See the <a href="http://checker.atrc.utoronto.ca" target="_new">AChecker Web Site</a> for further details about creating content that will be accessible to all users.<br />
+</p>
+
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..5b5f528
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..cdc617e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..7bad758
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..6a032c5
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/index.htm
new file mode 100644 (file)
index 0000000..478011d
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Help Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Table of contents</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Click the links below to go to the different help sections. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">About TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Insert anchor button</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Insert table button</a></li>
+ <li class="toc_li"><a href="create_accessible_content.htm">Create accessible content</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..ee1c23a
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert anchor button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert anchor button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+This button opens a new window with the insert/edit anchor function.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139" alt="Anchor dialog/window" /><br>
+<br>
+There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique. <br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_image_button.htm
new file mode 100644 (file)
index 0000000..9aa5c33
--- /dev/null
@@ -0,0 +1,65 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert image button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert image button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+The insert image button opens the window shown below.<br>
+<br>
+<img src="images/insert_image_window.gif" alt="Insert image dialog/window" /><br>
+<br>
+You simply enter a URL to the image you want to link to and enter a image description, 
+this is then displayed as an alternative text descripton of the image on the page.<br>
+<br>
+<strong>Field descriptions:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Image URL </strong></td>
+    <td>URL/path to the image.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Image description </strong></td>
+    <td>Alternative description of image contents.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimentions</strong></td>
+    <td>Image width/height. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Image alignment, useful when wrapping text around images.</td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Border thickness. </td>
+  </tr>
+  <tr>
+    <td><strong>VSpace</strong></td>
+    <td>Vertical space, useful when wrapping text around images.</td>
+  </tr>
+  <tr>
+    <td><strong>HSpace</strong></td>
+    <td>Horizontal space, useful when wrapping text around images.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_link_button.htm
new file mode 100644 (file)
index 0000000..2f17d46
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert link button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert link button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+This button opens a new window with the insert/edit link function.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159" alt="Insert link dialog/window" /><br>
+<br>
+There are two fields in this window the first one &quot;Link URL&quot; is the 
+URL of the link. The target enables you to select how the link is to be opened.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/insert_table_button.htm
new file mode 100644 (file)
index 0000000..2f1e1eb
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insert table button</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+The insert table button opens the window shown below. This action enables you to create tables. <br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="229" alt="Image of table window" /><br>
+<br>
+<strong>Field descriptions:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Columns</strong></td>
+    <td>Number of columns in the  table. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rows</strong></td>
+    <td>Number of rows in the new table.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Cellpadding of the table . </td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Cellspacing of the table .</td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Table alignment . </td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Border thinkness of table.</td>
+  </tr>
+  <tr>
+    <td><strong>Width</strong></td>
+    <td>Width in pixels of table .</td>
+  </tr>
+  <tr>
+    <td><strong>Height</strong></td>
+    <td>Height in pixels of table.</td>
+  </tr>
+  <tr>
+    <td><strong>Class</strong></td>
+    <td>Style or CSS class of table.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Table of contents</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/en/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/about.htm
new file mode 100644 (file)
index 0000000..ebbb77b
--- /dev/null
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Acerca de TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Acerca de  TinyMCE</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE es un editor WYSIWYG para navegadores como  MSIE o Mozilla que te permite editar el contenido HTML de una manera m&aacute;s amigable. Tiene la mayor&iacute;a de las opciones de un procesador de texto y no deber&iacute;a ser dificil de usar.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/common_buttons.htm
new file mode 100644 (file)
index 0000000..ade7897
--- /dev/null
@@ -0,0 +1,155 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Botones de uso com&uacute;n</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Botones de uso com&uacute;n</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Peque&ntilde;a descripci&oacute;n de cada boto&oacute;n.<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Texto en negrita.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Texto en cursiva.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Texto subrayado.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Texto tachado.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Alinear a la izquierda.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Alinear al centro.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Alinear a la derecha.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Alinear justificado.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Lista desordenada/lista por puntos.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Lista ordenada/lista numerada</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Disminuir la sangr&iacute;a.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Aumentar la sangr&iacute;a.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Deshacer la &uacute;ltima operaci&oacute;n.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Rehacer la &uacute;ltima operaci&oacute;n.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Insertar un enlace, m&aacute;s informaci&oacute;n en <a href="insert_link_button.htm">insertar enlace</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Quita el enlace al texto seleccionado.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Insertar un imagen, m&aacute;s informaci&oacute;n en <a href="insert_image_button.htm">insertar imagen</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Limpiar c&oacute;digo, esta funci&oacute;n es &uacute;til cuando copias el c&oacute;digo de otra p&aacute;gina.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Muestra esta ventana de ayuda.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Abre el editor de HTML. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Inserta una nueva tabla de 2x2. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>A&ntilde;ade una fila encima. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>A&ntilde;ade una fila debajo. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Elimina una fila. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>A&ntilde;ade una columna antes de la actual .</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>A&ntilde;ade una columna despu&eacute;s de la actual.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Elimina la columna actual.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Inserta un separador horizontal </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Elimina el formato de la selecci&oacute;n. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Sub&iacute;ndice. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Super&iacute;ndice. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..cdc617e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..7bad758
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..5e8497f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/index.htm
new file mode 100644 (file)
index 0000000..f5b5b97
--- /dev/null
@@ -0,0 +1,25 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>&Iacute;ndice de la ayuda</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lista de contenidos</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Selecciona una secci&oacute;n para ver la ayuda. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Acerca de  TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Botones</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Insertar imagen</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Insertar enlaces</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Insertar tabla</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_image_button.htm
new file mode 100644 (file)
index 0000000..1d66e70
--- /dev/null
@@ -0,0 +1,64 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insertar imagen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insertar imagen</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+El bot&oacute;n insertar imagen abre la siguiente ventana.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+Tu s&oacute;lo tienes que escribir la URL de la imagen que quieres que aparezca y escribir una descripci&oacute;n de esta, esta descripci&oacute;n aparecera como un texto alternativo que describa la imagen.<br>
+<br>
+<strong>Descripci&oacute;n de los campos:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Image URL </strong></td>
+    <td>URL de la imagen.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Image description </strong></td>
+    <td>Descripci&oacute;n alternativa del contenido de la imagen.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimentions</strong></td>
+    <td>Altura/anchura de la imagen. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Alineamiento, &uacute;til cuando colocas texto alrededor de la imagen.</td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Anchura del borde. </td>
+  </tr>
+  <tr>
+    <td><strong>VSpace</strong></td>
+    <td>Espacio vertical, &uacute;til cuando colocas texto alrededor de la imagen.</td>
+  </tr>
+  <tr>
+    <td><strong>HSpace</strong></td>
+    <td>Espacio horizontal, &uacute;til cuando colocas texto alrededor de la imagen.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_link_button.htm
new file mode 100644 (file)
index 0000000..d34b39d
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insertar enlaces</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insertar enlaces</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Este bot&oacute;n abre una nueva ventana con la funci&oacute;n insertar/editar enlace.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159"><br>
+<br>
+Hay dos campos en esta ventana, el primero &quot;Link URL&quot; es donde hay que escribir la direcci&oacute;n del enlace. El segundo &quot;Target&quot; indica c&oacute;mo se abrir&aacute; el enlace.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/insert_table_button.htm
new file mode 100644 (file)
index 0000000..3f9998b
--- /dev/null
@@ -0,0 +1,67 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insertar tabla</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Insertar tabla</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+El bot&oacute;n insertar tabla abre la siguiente ventana. Esta acci&ocaute;n te permite crear tablas.<br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="209"><br>
+<br>
+<strong>Descripci&oacute;n de los campos:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Columns</strong></td>
+    <td>N&uacute;mero de columnas.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rows</strong></td>
+    <td>NA&uacute;mero de filas.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Desplazamiento entre celdas . </td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Espacio entre celdas .</td>
+  </tr>
+  <tr>
+    <td><strong>Alignment</strong></td>
+    <td>Alineamiento de la tabla. </td>
+  </tr>
+  <tr>
+    <td><strong>Border</strong></td>
+    <td>Anchura del borde de la tabla.</td>
+  </tr>
+  <tr>
+    <td><strong>Width</strong></td>
+    <td>Anchura de la tabla en pixels .</td>
+  </tr>
+  <tr>
+    <td><strong>Height</strong></td>
+    <td>Altura de la tabla en pixels.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ir a: <a href="index.htm">Tabla de contenidos</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/es/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/about.htm
new file mode 100644 (file)
index 0000000..5ddee2b
--- /dev/null
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lisätietoa TinyMCE:stä</span></td>
+    <td align="right"><a href="index.htm">Sisällysluettelo</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE on pieni WYSIWYG sisällönmuokkausohjain webbiselaimille kuten MSIE tai Mozilla joka mahdollistaa HTML sisällön muokkauksen käyttäjäystävällisellä tavalla. Se tarjoaa yleiset tekstinkäsittelyohjelmien tarjoamat toiminnot eikä ole vaikea käyttää.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Mene: <a href="index.htm">Sisällysluetteloon</a></td>
+    <td align="right"><a href="#">Alkuun</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/common_buttons.htm
new file mode 100644 (file)
index 0000000..4a93ad2
--- /dev/null
@@ -0,0 +1,156 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Common buttons</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Yleiset napit</span></td>
+    <td align="right"><a href="index.htm">Sisällysluettelo</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Alla on lyhyt selostus kaikista toimintonapeista.<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Lihavointi.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Kursivointi.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Alleviivaus.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Yliviivaus.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>vasen tasaus.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Keskitys.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Oikea tasaus.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Pakotettu tasaus.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Järjestämätön lista.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Järjestetty lista/numeroitu lista</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Poista / vähennä sisennystä.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Sisennä.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Peruuta viimeinen muutos.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Tee uudelleen viimeinen peruutettu muutos.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Lisää linkki. Lisätietoa tästä toiminnosta <a href="insert_link_button.htm">lisää linkki -osiosta</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Poista linkki valitusta tekstistä.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Lisää kuva. Lue lisää tästä toiminnosta <a href="insert_image_button.htm"> lisää kuva -osiosta</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Siisti koodi. Tämä toiminto on käytännöllinen kun liität tekstiä toimistosovelluksista.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Näyttäää tämän apuikkunan.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Avaa HTML lähdekoodieditorin. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Lisää tualu. Lue lisää tästä toiminnosta <a href="insert_table_button.htm"> lisää taulu -osiosta</a>. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Lisää rivi valitun rivin edelle. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Lisää rivi valitun rivin jälkeen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Poista valittu rivi. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Lisää saraka valitun sarakkeen jälkeen.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Lisää sarake valitun sarakkeen edelle.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Poistaa valitun sarakkeen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Lisää vaakaviiva. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Poista muotoilu valitusta tekstistä. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Tekee valitusta tekstistä alamääreistä. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Tekee valitusta tekstistä ylämääreistä. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Mene: <a href="index.htm">Sisällysluetteloon</a></td>
+    <td align="right"><a href="#">Alkuun</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..29dc616
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..6406a6f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..b243646
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/index.htm
new file mode 100644 (file)
index 0000000..ac5af4c
--- /dev/null
@@ -0,0 +1,25 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Apua sisällysluettelo</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Sisällysluettelo</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Napsauta alla olevista linkeistä mennäksesi eri osa-alueisiin. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Lisätietoa TinyMCE:stä</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Toimintonapit</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Kuvan lisäysnapit</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Linkin lisäysnapit</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Taulun lisäysnapit</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_image_button.htm
new file mode 100644 (file)
index 0000000..7a119c4
--- /dev/null
@@ -0,0 +1,65 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert image button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lisää linkki -nappi</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Lisää linkki -nappi avaa alla näkyvän ikkunan.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+Kirjoita haluamasi kuvan URL osoite ja lisää kuvalle selite. Selite näytetään vaihtoehtoisena selitteenä sivulla. 
+<br>
+<br>
+<strong>Kenttien selitykset:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kuvan URL</strong></td>
+    <td>Kuvan URL tai polku.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Kuvan selite</strong></td>
+    <td>Vaihtoehtoinen selite kuvan sisällöstä.</td>
+  </tr>
+  <tr>
+    <td><strong>Ulottuvuudet</strong></td>
+    <td>Kuvan leveys ja korkeus. </td>
+  </tr>
+  <tr>
+    <td><strong>Asettelu</strong></td>
+    <td>Kuvan asettelu, käytännöllinen kun halutaan tekstin rivittyvän kuvan ympärille.</td>
+  </tr>
+  <tr>
+    <td><strong>Reuna</strong></td>
+    <td>Kuvaa ympäröivän reunan leveys. </td>
+  </tr>
+  <tr>
+    <td><strong>Pystyväli</strong></td>
+    <td>Pystyväli, käytännöllinen kun halutaan tekstin rivittyvän kuvan ympärille.</td>
+  </tr>
+  <tr>
+    <td><strong>Vaakaväli</strong></td>
+    <td>Vaakaväli, useful when wrapping text around images.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Mene: <a href="index.htm">Sisällysluetteloon</a></td>
+    <td align="right"><a href="#">Alkuun</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_link_button.htm
new file mode 100644 (file)
index 0000000..3605517
--- /dev/null
@@ -0,0 +1,35 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert link button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lisää linkki</span></td>
+    <td align="right"><a href="index.htm">Sisällysluettelo</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Tämä nappi avaa uuden ikkunan jossa on linkin lisäys- ja muokkaustoiminnallisuus.<br>
+<br>
+<img src="images/insert_link_window.gif" width="336" height="208"><br>
+<br>
+
+Tässä ikkunassa on kaksi kenttää. Ensimmäinen kenttä, &quot;Linkin URL&quot;, on linkin osoittama URL -osoite. 
+Toinen kenttä, &quot;kohde&quot;, vaikuttaa siihen miten linkki avataan. 
+The target enables you to select how the link is to be opened.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Mene: <a href="index.htm">Sisällysluetteloon</a></td>
+    <td align="right"><a href="#">Alkuun</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/insert_table_button.htm
new file mode 100644 (file)
index 0000000..b43df36
--- /dev/null
@@ -0,0 +1,67 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lisää taulu -nappi</span></td>
+    <td align="right"><a href="index.htm">Sisällysluettelo</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Lisää taulu -nappi avaa alla näkyvän ikkunan. Tämä toimonto mahdollistaa taulujen luonnin.<br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="209"><br>
+<br>
+<strong>Kenttien selitteet:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Sarakkeet</strong></td>
+    <td>Taulussa olevien saraakkeiden määrä. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rivit</strong></td>
+    <td>Taulussa olevien rivien määrä.</td>
+  </tr>
+  <tr>
+    <td><strong>Solun reunan ja sisällön väli</strong></td>
+    <td>Taulun sisällä olevan solun reunan ja sisällön väli. </td>
+  </tr>
+  <tr>
+    <td><strong>Solujen väli</strong></td>
+    <td>Taulun sisällä olevien solujen väli.</td>
+  </tr>
+  <tr>
+    <td><strong>Asettelu</strong></td>
+    <td>Taulun asettelu. </td>
+  </tr>
+  <tr>
+    <td><strong>Reuna</strong></td>
+    <td>Reunan leveys.</td>
+  </tr>
+  <tr>
+    <td><strong>Leveys</strong></td>
+    <td>Taulun leveys pikseleinä.</td>
+  </tr>
+  <tr>
+    <td><strong>Korkeus</strong></td>
+    <td>Taulun korkeus pikseleinä.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Mene: <a href="index.htm">Sisällysluetteloon</a></td>
+    <td align="right"><a href="#">Alkuun</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fi/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/about.htm
new file mode 100644 (file)
index 0000000..ea3b69d
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>&Agrave; propos de TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">&Agrave; propos de TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui
+vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.
+Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans
+les traitements de texte.
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/common_buttons.htm
new file mode 100644 (file)
index 0000000..cd8c1f1
--- /dev/null
@@ -0,0 +1,160 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outils communs</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outils communs</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>
+    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Barre le texte s&eacute;lectionn&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Alignement &agrave; gauche.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Alignement au centr&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Alignement &agrave; droite.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Texte justifi&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Liste &agrave; puces.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Liste num&eacute;rot&eacute;e</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>R&eacute;duit l'indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Augmente l'indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Annule la derni&egrave;re op&eacute;ration.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">
+        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">
+        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil
+    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels
+    de bureatique.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Affiche cette page d'aide.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Ouvre un &eacute;diteur permettant de modifier le code HTML. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re un nouveau tableau &agrave; la position actuelle.  Allez &agrave; la page <a href="insert_table_button.htm">
+        Outil d'ajout de tableau</a> pour plus de d&eacute;tails.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Ajoute une ligne au tableau avant la ligne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Ajoute une ligne au tableau apr&egrave;s la ligne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Supprime la ligne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Ajoute une colonne au tableau avant la colonne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Ajoute une colonne au tableau apr&egrave;s la colonne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Supprime la colonne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re un s&eacute;parateur horizontal. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Supprime les formattages du texte s&eacute;lectionn&eacute;. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Transforme le texte s&eacute;lectionn&eacute; en texte souscrit. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Transforme le texte s&eacute;lectionn&eacute; en indice sup&eacute;rieur. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..4ee31bd
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..9700921
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..1a26522
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/index.htm
new file mode 100644 (file)
index 0000000..2a4b23e
--- /dev/null
@@ -0,0 +1,25 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Table des mati&egrave;res de l'aide</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Table des mati&egrave;res</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Faites votre s&eacute;lection parmis les th&egrave;mes suivants:
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Outil d'ajout de tableau</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_image_button.htm
new file mode 100644 (file)
index 0000000..95324db
--- /dev/null
@@ -0,0 +1,66 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout d'images</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout d'images</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et
+entrez une description facultative.  La description sera affich&eacute;e en texte alternatif
+sur l'image lorsqu'elle sera publi&eacute;e.<br>
+<br>
+<strong>Description des champs:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Adresse de l'image </strong></td>
+    <td>Adresse URL de l'image &agrave; ins&eacute;rer.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Description de l'image </strong></td>
+    <td>Description alternative de l'image.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimensions</strong></td>
+    <td>Largeur et Hauteur de l'image en pixel. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignement</strong></td>
+    <td>Alignement de l'image. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
+  </tr>
+  <tr>
+    <td><strong>Bordure</strong></td>
+    <td>&Eacute;paisseur en pixel de la bordure. </td>
+  </tr>
+  <tr>
+    <td><strong>VSpace</strong></td>
+    <td>Espacement vertical. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
+  </tr>
+  <tr>
+    <td><strong>HSpace</strong></td>
+    <td>Espacement horizontal. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_link_button.htm
new file mode 100644 (file)
index 0000000..723216d
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout d'hyperliens</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout d'hyperliens</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>
+<br>
+<img src="images/insert_link_window.gif"><br>
+<br>
+Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse
+de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on
+l'hyperlien sera ouvert.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/insert_table_button.htm
new file mode 100644 (file)
index 0000000..59e554b
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout de tableau</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout de tableau</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout de tableau ouvre la fen&ecirc;tre ci-dessous.  Elle vous permet de créer dfes talbeaux.<br>
+<br>
+<img src="images/insert_table_window.gif"><br>
+<br>
+<strong>Description des champs:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Colonnes</strong></td>
+    <td>Nombre de colonnes du tableau. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Lignes</strong></td>
+    <td>Nombre de lignes du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Marge à l'intérieur des cellules du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Espacement entre les cellules du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignement</strong></td>
+    <td>Alignement du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Bordure</strong></td>
+    <td>Épaisseur des bordures du tableau.</td>
+  </tr>
+  <tr>
+    <td><strong>Largeur</strong></td>
+    <td>Largeur en pixel du tableau.</td>
+  </tr>
+  <tr>
+    <td><strong>Hauteur</strong></td>
+    <td>Hauteur en pixel du tableau.</td>
+  </tr>
+  <tr>
+    <td><strong>Classe CSS</strong></td>
+    <td>Nom de la classe CSS pour appliquer un style.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/about.htm
new file mode 100644 (file)
index 0000000..ea3b69d
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>&Agrave; propos de TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">&Agrave; propos de TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui
+vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.
+Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans
+les traitements de texte.
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/common_buttons.htm
new file mode 100644 (file)
index 0000000..cd8c1f1
--- /dev/null
@@ -0,0 +1,160 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outils communs</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outils communs</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>
+    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Barre le texte s&eacute;lectionn&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Alignement &agrave; gauche.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Alignement au centr&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Alignement &agrave; droite.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Texte justifi&eacute;.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Liste &agrave; puces.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Liste num&eacute;rot&eacute;e</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>R&eacute;duit l'indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Augmente l'indentation.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Annule la derni&egrave;re op&eacute;ration.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">
+        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">
+        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil
+    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels
+    de bureatique.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Affiche cette page d'aide.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Ouvre un &eacute;diteur permettant de modifier le code HTML. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re un nouveau tableau &agrave; la position actuelle.  Allez &agrave; la page <a href="insert_table_button.htm">
+        Outil d'ajout de tableau</a> pour plus de d&eacute;tails.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Ajoute une ligne au tableau avant la ligne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Ajoute une ligne au tableau apr&egrave;s la ligne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Supprime la ligne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Ajoute une colonne au tableau avant la colonne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Ajoute une colonne au tableau apr&egrave;s la colonne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Supprime la colonne courante. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Ins&egrave;re un s&eacute;parateur horizontal. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Supprime les formattages du texte s&eacute;lectionn&eacute;. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Transforme le texte s&eacute;lectionn&eacute; en texte souscrit. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Transforme le texte s&eacute;lectionn&eacute; en indice sup&eacute;rieur. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..71f4179
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..4ee31bd
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..9700921
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..1a26522
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/index.htm
new file mode 100644 (file)
index 0000000..2a4b23e
--- /dev/null
@@ -0,0 +1,25 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Table des mati&egrave;res de l'aide</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Table des mati&egrave;res</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Faites votre s&eacute;lection parmis les th&egrave;mes suivants:
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Outil d'ajout de tableau</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..a9e8e83
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout d'ancres</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout d'ancres</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout d'ancres ouvre la fen&ecirc;tre ci-dessous.<br>
+<br>
+<img src="images/insert_anchor_window.gif"><br>
+<br>
+Il y a un seul champ dans cette fenêtre, c'est le nom de cette ancre.  Rappelez-vous, les noms doivent être unique dans la page.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_image_button.htm
new file mode 100644 (file)
index 0000000..95324db
--- /dev/null
@@ -0,0 +1,66 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout d'images</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout d'images</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et
+entrez une description facultative.  La description sera affich&eacute;e en texte alternatif
+sur l'image lorsqu'elle sera publi&eacute;e.<br>
+<br>
+<strong>Description des champs:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Adresse de l'image </strong></td>
+    <td>Adresse URL de l'image &agrave; ins&eacute;rer.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Description de l'image </strong></td>
+    <td>Description alternative de l'image.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimensions</strong></td>
+    <td>Largeur et Hauteur de l'image en pixel. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignement</strong></td>
+    <td>Alignement de l'image. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
+  </tr>
+  <tr>
+    <td><strong>Bordure</strong></td>
+    <td>&Eacute;paisseur en pixel de la bordure. </td>
+  </tr>
+  <tr>
+    <td><strong>VSpace</strong></td>
+    <td>Espacement vertical. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
+  </tr>
+  <tr>
+    <td><strong>HSpace</strong></td>
+    <td>Espacement horizontal. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_link_button.htm
new file mode 100644 (file)
index 0000000..723216d
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout d'hyperliens</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout d'hyperliens</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>
+<br>
+<img src="images/insert_link_window.gif"><br>
+<br>
+Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse
+de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on
+l'hyperlien sera ouvert.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/insert_table_button.htm
new file mode 100644 (file)
index 0000000..59e554b
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Outil d'ajout de tableau</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Outil d'ajout de tableau</span></td>
+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+L'outil d'ajout de tableau ouvre la fen&ecirc;tre ci-dessous.  Elle vous permet de créer dfes talbeaux.<br>
+<br>
+<img src="images/insert_table_window.gif"><br>
+<br>
+<strong>Description des champs:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Colonnes</strong></td>
+    <td>Nombre de colonnes du tableau. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Lignes</strong></td>
+    <td>Nombre de lignes du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Marge à l'intérieur des cellules du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Espacement entre les cellules du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Alignement</strong></td>
+    <td>Alignement du tableau. </td>
+  </tr>
+  <tr>
+    <td><strong>Bordure</strong></td>
+    <td>Épaisseur des bordures du tableau.</td>
+  </tr>
+  <tr>
+    <td><strong>Largeur</strong></td>
+    <td>Largeur en pixel du tableau.</td>
+  </tr>
+  <tr>
+    <td><strong>Hauteur</strong></td>
+    <td>Hauteur en pixel du tableau.</td>
+  </tr>
+  <tr>
+    <td><strong>Classe CSS</strong></td>
+    <td>Nom de la classe CSS pour appliquer un style.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
+    <td align="right"><a href="#">Haut de page</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/fr_ca/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/about.htm
new file mode 100644 (file)
index 0000000..c6bffff
--- /dev/null
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>&Uuml;ber TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">A TinyMCE-r&#337;l</span></td>
+    <td align="right"><a href="index.htm">Tartalom</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+A TinyMCE egy kompakt WYSIWYG-szerkeszt&#337; az MSIE-hoz &eacute;s a Mozill&aacute;hoz hasonl&oacute; webb&ouml;ng&eacute;sz&#337;k sz&aacute;m&aacute;ra, mely lehet&#337;s&eacute;get ny&uacute;jt &ouml;nnek a HTML tartalmak egyszer&#369; szerkeszt&eacute;s&eacute;re. A legt&ouml;bb sz&ouml;vegszerkeszt&#337;ben el&eacute;rhet&#337; funkci&oacute;kat ny&uacute;jtja egyszer&#369;en kezelhet&#337; form&aacute;ban.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/common_buttons.htm
new file mode 100644 (file)
index 0000000..fec961c
--- /dev/null
@@ -0,0 +1,106 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>
+    <td align="right"><a href="index.htm">Tartalom</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Félkövér szöveg.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Dõlt szöveg .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Aláhúzott szöveg .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Áthúzott szöveg .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Balra igazítás .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Középre igazítás .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Jobbra igazíás .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Sorkizárt.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Felsorolás / pontozott lista. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Felsorolás / számozott lista.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Behúzás balra .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>behúzás jobbra .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Utolsó parancs visszavonása .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Utolsó parancs ismétlése .</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Új link beillesztése, bõvebb információért olvassa el a <a href="insert_link_button.htm">Link beillesztését</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>A kijelölt link eltávolítása  / Az összes kijelölt link eltávolítása.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Egy új kép beillesztése, bõvebb információért olvassa el a <a href="insert_image_button.htm">Kép beillesztését </a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Kód tisztítása  / Eltávolítja a nemkívánt formázásokat. Ez a funkció akkor hasznos, ha például Office dokumentumból másol tartalmat.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Ennek a segítségnek az elérése.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ugrás a <a href="index.htm">Tartalomjegyzékre</a></td>
+    <td align="right"><a href="#">ugrás a lap tetejére </a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..a60e1fa
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..e72357b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/index.htm
new file mode 100644 (file)
index 0000000..47e5029
--- /dev/null
@@ -0,0 +1,24 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tartalomjegyzék</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Kattintson az alábbi linkekre a segítség különbözõ részeinek eléréséhez.
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">A TinyMCE-rõl</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Általános gombok </a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Kép beillesztése gomb </a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Link beillesztése gomb </a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/insert_image_button.htm
new file mode 100644 (file)
index 0000000..351e7d0
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">K&eacute;p beilleszt&eacute;se gomb </span></td>
+    <td align="right"><a href="index.htm">Tartalom</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br> 
+A K&eacute;p beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.
+<br>
+<br>
+<img src="images/insert_image_window.gif" width="350" height="166"><br>
+<br>
+Egyszer&#369;en meg kell adni a beilleszteni k&iacute;v&aacute;nt k&eacute;p el&eacute;r&eacute;s&eacute;nek URL-j&eacute;t, valamint egy r&ouml;vd le&iacute;r&aacute;st, mely alternat&iacute;v sz&ouml;vegk&eacute;nt ker&uuml;l megjelen&iacute;t&eacute;sre (pl. nem grafikus b&ouml;ng&eacute;sz&#337;kben).<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/insert_link_button.htm
new file mode 100644 (file)
index 0000000..ca67885
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Link beilleszt&eacute;se gomb </span></td>
+    <td align="right"><a href="index.htm">Tartalom</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+A Link beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="166"><br>
+<br>
+K&eacute;t mez&#337;t kell kit&ouml;ltenie ebben az ablakban. Az els&#337; - &quot;Link URL&quot; - a hivatkoz&aacute;s URL-je. A m&aacute;sodik lehet&#337;s&eacute;get ad &Ouml;nnek a hivatkozt&aacute;s megjelen&iacute;t&eacute;s&eacute;nek kiv&aacute;laszt&aacute;s&aacute;hoz.<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/hu/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table.gif
new file mode 100644 (file)
index 0000000..f8a0054
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_col.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_col.gif
new file mode 100644 (file)
index 0000000..0b2f0fb
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_col.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_row.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_row.gif
new file mode 100644 (file)
index 0000000..1997065
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_delete_row.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_after.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_after.gif
new file mode 100644 (file)
index 0000000..c30dafa
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_after.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_before.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_before.gif
new file mode 100644 (file)
index 0000000..5d1ff37
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_col_before.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_after.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_after.gif
new file mode 100644 (file)
index 0000000..c3aa15f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_after.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_before.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_before.gif
new file mode 100644 (file)
index 0000000..c3271e5
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/images/table_insert_row_before.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/about.htm
new file mode 100644 (file)
index 0000000..ea448cb
--- /dev/null
@@ -0,0 +1,37 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>Informazioni su TinyMCE</title>
+  <link href="style.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td><span class="title">Informazioni su TinyMCE</span></td>
+      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+    </tr>
+  </tbody>
+</table>
+<hr noshade="noshade">
+<br>
+TinyMCE &egrave; un piccolo WYSIWYG (What You See Is What You Get,
+quello che vedi &egrave; quello che ottieni) editor per i web browser
+come MSIE o Mozilla che permette di editare HTML in modo comodo. Ha le
+funzionalit&agrave; comuni di molti word processor e non dovrebbe
+essere difficile da usare.<br>
+<br>
+<hr noshade="noshade">
+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
+      <td align="right"><a href="#">Su</a></td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/common_buttons.htm
new file mode 100644 (file)
index 0000000..c27cce6
--- /dev/null
@@ -0,0 +1,180 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>Pulsanti comuni</title>
+  <link href="style.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td><span class="title">Pulsanti comuni<br>
+      </span></td>
+      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+    </tr>
+  </tbody>
+</table>
+<hr noshade="noshade">
+<br>
+Di seguito una breve descrizione di ogni pulsante.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tbody>
+    <tr>
+      <td><img src="../../images/bold.gif" height="20" width="20"></td>
+      <td>Testo <span style="font-weight: bold;">grassetto</span>.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/italic.gif" height="20" width="20"></td>
+      <td>Testo <span style="font-style: italic;">corsivo</span>.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/underline.gif" height="20" width="20"></td>
+      <td>Testo <span style="text-decoration: underline;">sottolineato</span>.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/strikethrough.gif" height="20"
+ width="20"></td>
+      <td>Testo <span style="text-decoration: line-through;">barrato</span>.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/justifyleft.gif" height="20" width="20"></td>
+      <td>Allinea a sinistra.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/justifycenter.gif" height="20" width="20"></td>
+      <td>Allinea al centro.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/justifyright.gif" height="20" width="20"></td>
+      <td>Allinea a destra.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/justifyfull.gif" height="20" width="20"></td>
+      <td>Giustifica.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/bullist.gif" height="20" width="20"></td>
+      <td>Lista non ordinata.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/numlist.gif" height="20" width="20"></td>
+      <td>Lista ordianta.<br>
+      </td>
+    </tr>
+    <tr>
+      <td><img src="../../images/outdent.gif" height="20" width="20"></td>
+      <td>Diminuisci l'indentazione.<br>
+      </td>
+    </tr>
+    <tr>
+      <td><img src="../../images/indent.gif" height="20" width="20"></td>
+      <td>Aumenta l'indentazione.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/undo.gif" height="20" width="20"></td>
+      <td>Annulla l'ultima operazione.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/redo.gif" height="20" width="20"></td>
+      <td>Ripeti l'ultima operazione.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/link.gif" height="20" width="20"></td>
+      <td>Inserieci un nuovo collegamento, maggiori informazioni su
+questa funzione nella <a href="insert_link_button.htm">Sezione
+'Inserisci un collegamento'</a></td>
+    </tr>
+    <tr>
+      <td><img src="../../images/unlink.gif" height="20" width="20"></td>
+      <td>Rimuovi tutti i collegamenti selezionati<br>
+      </td>
+    </tr>
+    <tr>
+    <td><img src="../../images/anchor.gif" height="20" width="20"></td>
+    <td>Inserisci una nuova &agrave;ncora, maggiori informazioni su
+questa funzione nella <a href="insert_anchor_button.htm">Sezione 'Inserisci un'&agrave;ncora'.</a></td>
+  </tr>
+    <tr>
+      <td><img src="../../images/image.gif" height="20" width="20"></td>
+      <td>Inserieci una nuova immagine, maggiori informazioni su questa
+funzione nella <a href="insert_image_button.htm">Sezione 'Inserisci
+una immagine'</a>.</td>
+    </tr>
+    <tr>
+      <td><img src="../../images/cleanup.gif" height="20" width="20"></td>
+      <td>Ripulisci il codice/rimuovi la formattazione non voluta.
+Questa funzione &egrave; utile quando si copia per esempio da un
+programma office<br>
+      </td>
+    </tr>
+    <tr>
+      <td><img src="../../images/help.gif" height="20" width="20"></td>
+      <td>Mostra questa guida<br>
+      </td>
+    </tr>
+
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Apre l'editor del sorgente HTML. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Inserisce una nuova tabella 2x2 alla posizione corrente.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Aggiunge una riga sopra quella corrente.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Aggiunge una roga sotto quella corrente.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Rimuove la riga corrente. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Aggiunge una colonna prima di quella corrente.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Aggiunge una colonna dopo quella corrente.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Rimuove la colonna corrente.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Inserisce una nuova riga orizzontale.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Rimuove la formattazione dalla selezione. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Formatta la selezione come pedice. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Formatta la selezione come apice. </td>
+  </tr>
+
+  </tbody>
+</table>
+<br>
+<hr noshade="noshade">
+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
+      <td align="right"><a href="#">Su</a></td>
+    </tr>
+  </tbody>
+</table>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..cc9fc9d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..2b5b8e9
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..9c778e2
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..5cb25cf
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/index.htm
new file mode 100644 (file)
index 0000000..4193600
--- /dev/null
@@ -0,0 +1,30 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>Indice della guida</title>
+  <link href="style.css" rel="stylesheet" type="text/css">
+</head>
+<body onload="window.focus();">
+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td><span class="title">Tavola dei contenuti<br>
+      </span></td>
+      <td align="right">&nbsp;</td>
+    </tr>
+  </tbody>
+</table>
+<hr noshade="noshade">
+<br>
+Seleziona un argomento:<br>
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Informazioni su TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Pulsanti comuni</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Pulsante 'Inserisci immagine'<br></a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Pulsante 'Inserisci collegamento'</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Pulsante 'Inserisci &agrave;ncora'</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Pulsante 'Inserisci tabella'</a></li>
+</ul>
+<hr noshade="noshade">
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..aab9135
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Bottone 'Inserisci &agrave;ncora'</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Bottone 'Inserisci &agrave;ncora'</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Questo bottone apre una nuova finestra che permette di aggiungere o modificare un'&agrave;ncora<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="326" height="117"><br>
+<br>
+C'&egrave; un solo campo in questa finestra, dove devi inserire il nome del tuo punto di &agrave;ncoraggio. Ricorda che il nome dell' &agrave;ncora deve essere univoco. <br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
+    <td align="right"><a href="#">Top</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_image_button.htm
new file mode 100644 (file)
index 0000000..8a7eabd
--- /dev/null
@@ -0,0 +1,66 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Pulsante 'Inserisci immagine'</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Pulsante 'Inserisci immagine'</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Il pulsante 'inserisci immagine' apre la finestra mostrata qui sotto.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+Si inserisce semplicemente l'url dell'immagine che si vuole collegare e una descrizione di quell'immagine,
+che sar&agrave; mostrato come testo alternativo dell'immagine sulla pagina.
+<br>
+<br>
+<strong>Descrizione dei parametri:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>URL immagine </strong></td>
+    <td>URL/indirizzo dell'immagine.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Descrizione dell'immagine </strong></td>
+    <td>Descrizione alternativa del contenuto dell'immagine.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimensioni</strong></td>
+    <td>Larghezza/Altezza dell'immagine. </td>
+  </tr>
+  <tr>
+    <td><strong>Allineamento</strong></td>
+    <td>Allineamento dell'immagine, utile quando si inserisce del testo attorno all'immagine.</td>
+  </tr>
+  <tr>
+    <td><strong>Bordo</strong></td>
+    <td>Spessore del bordo. </td>
+  </tr>
+  <tr>
+    <td><strong>Spazio verticale</strong></td>
+    <td>Spazio verticale,  utile quando si inserisce del testo attorno all'immagine.</td>
+  </tr>
+  <tr>
+    <td><strong>Spazio orizzontale</strong></td>
+    <td>Spazio orizzontale, utile quando si inserisce del testo attorno all'immagine.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
+    <td align="right"><a href="#">Su</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_link_button.htm
new file mode 100644 (file)
index 0000000..64f3e2e
--- /dev/null
@@ -0,0 +1,41 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>Pulsante 'Inserisci collegamento'</title>
+  <link href="style.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td><span class="title">Pulsante 'Inserisci collegamento'<br>
+      </span></td>
+      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+    </tr>
+  </tbody>
+</table>
+<hr noshade="noshade">
+<br>
+Questo pulsante apre una nuova finstra con le funzioni di
+inserimento/modifica del collegamento.<br>
+<br>
+<img src="images/insert_link_window.gif" height="156" width="326"><br>
+<br>
+Ci sono due campi in questa finestra: il primo, "Link URL" &egrave;
+l'indirizzo del collegamento. Il 'target' permette di selezionare come
+il collegamento deve essere aperto.<br>
+<br>
+<hr noshade="noshade">
+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
+ width="100%">
+  <tbody>
+    <tr>
+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
+      <td align="right"><a href="#">Su</a></td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/insert_table_button.htm
new file mode 100644 (file)
index 0000000..7720f95
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Pulsante 'Inserisci tabella'</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Pulsante 'Inserisci tabella'</span></td>
+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Il pulsante 'Inserisci tabella' apre la finestra mostrata qui sotto. Questa azione permette di creare tabelle.<br>
+<br>
+<img src="images/insert_table_window.gif" width="346" height="225"><br>
+<br>
+<strong>Descrizione dei parametri:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Colonne</strong></td>
+    <td>Numero di colonne nella nuova tabella. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Righe</strong></td>
+    <td>Numero di righe nella nuova tabella.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Spazio tra il bordo di una cella e il suo contenuto. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Spazio tra le celle della tabella.</td>
+  </tr>
+  <tr>
+    <td><strong>Allineamento</strong></td>
+    <td>Allineamento della tabella. </td>
+  </tr>
+  <tr>
+    <td><strong>Bordo</strong></td>
+    <td>Spessore del bordo della tabella.</td>
+  </tr>
+  <tr>
+    <td><strong>Larghezza</strong></td>
+    <td>Larghezza, in pixel, della tabella.</td>
+  </tr>
+  <tr>
+    <td><strong>Altezza</strong></td>
+    <td>Altezza, in pixel, della tabella.</td>
+  </tr>
+    <tr>
+    <td><strong>Classe</strong></td>
+    <td>Stile o classe CSS della tabella.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
+    <td align="right"><a href="#">Su</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/it/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/about.htm
new file mode 100644 (file)
index 0000000..9541380
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Om TinyMCE</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE er en liten WYSIWYG-editor for weblesere som
+f.eks. MSIE, Mozilla og Firefox og gj&oslash;r det mulig &aring; redigere
+HTML-innhold p&aring; et mer anvendervennlig vis.
+Applikasjonen har funksjoner som ligner dem man finner i vanlige tekstbehandlere
+og burde ikke v&aelig;re spesielt vanskelig &aring; benytte.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/common_buttons.htm
new file mode 100644 (file)
index 0000000..f6bea80
--- /dev/null
@@ -0,0 +1,163 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Vanlige knapper</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Grunnleggende knapper</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Nedenfor finner du en kort beskrivelse av hver knapp/funksjon.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
+    <td>Fet tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
+    <td>Kursiv tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Understreket tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Gjennomstreket tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Rett venstremarg.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Sentrer.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Rett h&oslash;yremarg.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Rette marger.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Punktliste.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Nummerliste</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Reduser innrykk.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>&Oslash;k innrykk.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Angre seneste endring.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Gj&oslash;r om seneste endring.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Lage/Redigere lenke, l&aelig;r mer om denne funksjonen i
+      kapittelet <a href="insert_link_button.htm">Lage/Redigere lenke</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Ta bort lenker fra markerte lenker.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
+    <td>Lage/Redigere anker, l&aelig;r mer om denne funksjonen i
+      kapittelet <a href="insert_anchor_button.htm">Lage/Redigere anker</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Lage/Redigere bilde, l&aelig;r mer om denne funksjonen i 
+      kapittelet <a href="insert_image_button.htm">Lage/Redigere bilde</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Rense/Ordne koden. Denne funksjonen tar bort un&oslash;dvendig
+      formatering. B&oslash;r anvendes n&aring;r man f.eks. kopierer tekst
+      fra Office-program. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Viser denne hjelp.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>&Aring;pner en HTML-kodeeditor. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Lager en ny tabell (2x2). </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Lager en rad ovenfor den n&aring;v&aelig;rende raden. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Lager en rad under den n&aring;v&aelig;rende raden. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Tar bort en rad. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Lager en kolonne f&oslash;r den n&aring;v&aelig;rende kolonnen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Lager en kolonne etter den n&aring;v&aelig;rende kolonnen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Tar bort en kolonne. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Lager en horisontal linje. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Tar bort formatering fra markert omr&aring;de. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Lager nedsenket tekst. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Lager opph&oslash;yd tekst. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..1c38437
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..c3d7379
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..2a56e79
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..e8b69ef
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/index.htm
new file mode 100644 (file)
index 0000000..53a0389
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Hjelp Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Innholdsoversikt</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Klikk p&aring; lenkene nedenfor for &aring; g&aring; til de ulike
+hjelp-kapitlene.
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Grunnleggende funksjoner</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Lage/Redigere bilde</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Lage/Redigere lenke</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Lage/Redigere anker </a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Lage/Redigere tabell</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..3cacca7
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere anker</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere anker</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denne funksjon &aring;pner et nytt vindu lik det nedenfor.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
+<br>
+Dette vinduet har et felt som man skal fylle i med et unikt
+navn, denne funksjon  gj&oslash;r det mulig &aring; skape
+ankerpunkter/bokmerker.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_image_button.htm
new file mode 100644 (file)
index 0000000..4f7635d
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere bilde</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere bilde</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Funksjonen "Lage/Redigere bilde" &aring;pner et nytt vindu som ser ut som 
+bildet nedenfor.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+I dette vinduet skriver du inn URL:en til bildet du vil lenke til
+samt en bildebeskrivelse, denne beskrivelsen kommer til &aring; vises som en alternativ 
+tekst til bildet.<br>
+<br>
+<strong>Feltforklaring:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Bildets URL </strong></td>
+    <td>URL/s&oslash;kevei til bildet.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Bildets beskrivelse</strong></td>
+    <td>Bildets beskrivelse, denne beskrivelsen kommer til &aring; vises som en
+      alternativ tekst til bildet.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimensjoner</strong></td>
+    <td>Bildets bredde og h&oslash;yde. </td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Bildets justering, kan v&aelig;re anvendelig n&aring;r man vil at
+      tekst skal flyte rundt bildet. </td>
+  </tr>
+  <tr>
+    <td><strong>Ramme</strong></td>
+    <td>Bilderammens bredde. </td>
+  </tr>
+  <tr>
+    <td><strong>Vertikalt tomrom </strong></td>
+    <td>Vertikalt tomrom , kan v&aelig;ra anvendelig n&aring;r man vil
+      at tekst skal flyte rundt bildet. </td>
+  </tr>
+  <tr>
+    <td><strong>Horisontalt tomrom</strong></td>
+    <td>Horisontalt tomrom, kan v&aelig;re anvendelig n&aring;r man vil
+      at tekst skal flyte rundt bildet. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_link_button.htm
new file mode 100644 (file)
index 0000000..861c018
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere lenke</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere lenke</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denne funksjon &aring;pner et nytt vindu lik det nedenfor.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159"><br>
+<br>
+Dette vinduet har to felt, lenkens URL/addresse samt hvordan lenken 
+skal &aring;pnes.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/insert_table_button.htm
new file mode 100644 (file)
index 0000000..0b27188
--- /dev/null
@@ -0,0 +1,72 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere tabell</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere tabell </span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Lage tabell-knappen &aring;pner et nytt vindu, ved hjelp av
+dette vinduet kan du lage tabeller.<br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="229"><br>
+<br>
+<strong>Feltforklaring:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kolonner</strong></td>
+    <td>Antall kolonner i tabellen.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rader</strong></td>
+    <td>Antall rader i tabellen.</td>
+  </tr>
+  <tr>
+    <td><strong>Celleutfylling</strong></td>
+    <td>Antall pixler utfylling i hver celle. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellemellomrom</strong></td>
+    <td>Antall pixler mellomrom mellom cellene.</td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Tabellens justering. </td>
+  </tr>
+  <tr>
+    <td><strong>Rammebredde</strong></td>
+    <td>Rammens bredde.</td>
+  </tr>
+  <tr>
+    <td><strong>Bredde</strong></td>
+    <td>Bredde i pixler.</td>
+  </tr>
+  <tr>
+    <td><strong>H&oslash;yde</strong></td>
+    <td>H&oslash;yde i pixler. </td>
+  </tr>
+  <tr>
+    <td><strong>Stil</strong></td>
+    <td>Stilmal p&aring; tabellen. </td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nb/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/about.htm
new file mode 100644 (file)
index 0000000..e5146fb
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Over TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Over TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE is een kleine <i>What-You-See-Is-What-You-Get</i> (WYSIWYG)
+editor voor teksten. De bediening vindt plaats in de web browser, zoals MSIE of Mozilla.
+Het werken met deze editor is eenvoudig, omdat de bediening veel lijkt op het werken
+met teksten in (office-)tekstverwerkers.
+<br><br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/common_buttons.htm
new file mode 100644 (file)
index 0000000..7a684a4
--- /dev/null
@@ -0,0 +1,188 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Functies van TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr>
+    <td><span class="title">Functies van TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Het werken met de editor komt sterk overeen met wat u gewend bent van uw tekstverwerker:
+Dubbel-klik op een woord in de tekst, of trek een kader met de muis terwijl u
+de linkerknop inhoudt om een gedeelte van de tekst te kiezen. Het aldus gemarkeerde woord of
+tekstfragment noemen we 'selecteerd'. Met de knoppen en stijl-keuzelijsten
+in de editor kunt u hiervan vervolgens de opmaak aanpassen of (indien deze reeds was toegekend) verwijderen.
+<br><br>
+De meeste functies voert u eenvoudig uit door het klikken
+van de knoppen (buttons) boven het tekstvenster in de editor. Hieronder vindt u van elk van deze
+knoppen een beknopte beschrijving.
+<br>
+<br>
+<table width=100% border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td width=20><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment 'Vet' (Bold) maken.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment 'Cursief' (Italic) maken.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment 'Onderstrepen' (Underline).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment 'Doorstrepen' (Strikethrough).</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment naar links uitlijnen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment centreren.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment naar rechts uitlijnen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment 'uitvullen' tot complete regels.</td>
+  </tr>
+</table>
+<br>
+<table width=100% border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment omzetten naar ongeordende (bullet-)lijst of opsomming.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Gekozen tekstfragment omzetten naar doorgenummerde lijst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Inspringniveau van het gekozen tekstfragment verkleinen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Inspringniveau van het gekozen tekstfragment vergroten.</td>
+  </tr>
+  <tr>
+    <td width=20><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>De laaste bewerking ongedaan maken. De toetscombinatie CRTL-Z doet hetzelfde.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>De laatste bewerking opnieuw uitvoeren.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Invoegen van een <i>Link</i> (Cross-Link) via dialoogmenu.<br>
+                 Zie de beschrijving bij <a href="insert_link_button.htm">Links en verwijzingen in tekst invoegen</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Verwijdert alle gevonden <i>Links</i> (Cross-Links) uit de tekstselectie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
+    <td>Anker aan de tekstselectie toekennen of wijzigen.<br>
+                 Zie de beschrijving bij <a href="insert_anchor_button.htm">Anker Toevoegen.</a></td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Voegt een afbeelding in.<br>
+                 Zie de beschrijving bij <a href="insert_image_button.htm">Afbeeldingen invoegen</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Schoont ongewenste opmaak en codering van de tekstselectie op. Deze functie is erg nuttig na het
+                 overkopi&euml;ren van teksten vanuit uw (Office-)tekstverwerker.</td>
+  </tr>
+       <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Toont dit helpvenster met uitleg van alle functionaliteit van de editor.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Opent het venster met de HTML-broncode voor het direct maken van wijzigingen
+                 in de achterliggende pagina-codering. Kennis van de HTML-taal is vereist.</td>
+  </tr>
+</table>
+
+<br>
+<table width=100% border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Voegt een nieuwe tabel met 2 rijen en kolommen in op de huidige positie in te tekst. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Voegt een nieuwe rij toe aan de tabel boven de huidige.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Voegt een nieuwe rij toe aan de tabel onder de huidige.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Verwijdert de huidige rij uit de tabel.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Voegt een nieuwe kolom toe aan de tabel voor de huidige.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Voegt een nieuwe kolom toe aan de tabel achter de huidige.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Verwijdert de huidige kolom uit de tabel.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Voegt een horizontale lijn in de tekst toe.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Verwijdert alle tekst-opmaak van de tekstselectie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/visualaid.gif" width="20" height="20"></td>
+    <td>Toon of verberg hulplijnen voor tabellen in het tekstvenster.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Verandert het gekozen tekstfragment in <i>Subscript</i>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Verandert het gekozen tekstfragment in <i>Superscript</i>.</td>
+  </tr>
+       <tr>
+    <td><img src="../../images/charmap.gif" width="20" height="20"></td>
+    <td>De <i>Karaktertabel</i> maakt het eenvoudig invoegen van bijzondere karakters mogelijk.<br>
+                 Zie de beschrijving bij <a href="insert_specchar_button.htm">Bijzondere karakers in de tekst invoegen.</a></td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/html_source_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/html_source_window.gif
new file mode 100644 (file)
index 0000000..db933dc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/html_source_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..17dde58
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..05354a4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..e1d01a8
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_specchar_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_specchar_window.gif
new file mode 100644 (file)
index 0000000..986fa51
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_specchar_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..e65679d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/index.htm
new file mode 100644 (file)
index 0000000..6e27526
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Help Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Inhoudsopgave</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Klik op de onderwerpen in onderstaande inhoudsopgave voor meer informatie.
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Over TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Functies van TinyMCE</a></li>
+       <li class="toc_li"><a href="insert_image_button.htm">Afbeeldingen invoegen</a></li>
+       <li class="toc_li"><a href="insert_link_button.htm">Links en verwijzingen in tekst invoegen</a></li>
+  <li class="toc_li"><a href="insert_specchar_button.htm">Bijzondere karakers in de tekst invoegen</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Ankers in de tekst gebruiken</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Tabellen invoegen en aanpassen</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..7600c2a
--- /dev/null
@@ -0,0 +1,37 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Ankers in de tekst gebruiken</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr>
+    <td><span class="title">Ankers in de tekst gebruiken</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Met de knop 'Invoegen Anker' kunt u in de tekst z.g. HTML-ankers invoegen en
+aanpassen. Deze ankers maken het mogelijk snel naar bepaalde tekstfragmenten te springen.
+Door het toevoegen van de ankernaam (voorafgegaan door een '#')
+aan de link naar een pagina (Zie <a href="insert_link_button.htm">'Links en verwijzingen in tekst invoegen'</a>)
+kan op deze wijze desgewenst direct naar een bepaalde passage in een pagina worden doorgelinkt.
+<br><br>
+Voor het toevoegen of aanpassen van een anker wordt onderstaand dialoogvenster getoond.<br>
+<br>
+<center><img src="images/insert_anchor_window.gif"></center>
+<br>
+Bij het veld 'Anker naam' kan de gewenste naam van het anker worden ingevuld.
+Let op: Binnen een complete pagina binnen uw website dient de naam van dit anker uniek zijn.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_image_button.htm
new file mode 100644 (file)
index 0000000..bca6a16
--- /dev/null
@@ -0,0 +1,65 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Afbeeldingen invoegen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Afbeeldingen invoegen</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Voer simpelweg de URL van de afbeelding en de beschrijving in.
+De omschrijvende tekst wordt in sommige browsers bij de muiswijzer getoond
+wanneer deze boven de afbeelding wordt stilgehouden.
+De knop 'Afbeelding Invoegen' opent onderstaand dialoogvenster.<br>
+<br>
+<center><img src="images/insert_image_window.gif"></center>
+<br>
+<strong>Omschrijving van de velden:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Afbeelding</strong></td>
+    <td>In dit veld dient u een complete URL op te geven van de afbeelding.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Beschrijving</strong></td>
+    <td>Omschrijvende tekst die in sommige browsers bij de muiswijzer wordt getoond wanneer deze boven de afbeelding wordt stilgehouden.</td>
+  </tr>
+  <tr>
+    <td><strong>Uitlijning</strong></td>
+    <td>Uit de lijst kan worden gekozen op welke wijze de afbeelding in de tekst wordt ingebed.</td>
+  </tr>
+       <tr>
+    <td><strong>Afmetingen</strong></td>
+    <td>De breedte en hoogte van de afbeelding in pixels. Laat deze velden leeg als de originele afmetingen gewenst zijn.</td>
+  </tr>
+  <tr>
+    <td><strong>Omranding</strong></td>
+    <td>De dikte (in pixels) van de omranding om de afbeelding.</td>
+  </tr>
+  <tr>
+    <td><strong>Verticale marge</strong></td>
+    <td>De verticale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.</td>
+  </tr>
+  <tr>
+    <td><strong>Horizontale marge</strong></td>
+    <td>De horizontale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_link_button.htm
new file mode 100644 (file)
index 0000000..ce5e71c
--- /dev/null
@@ -0,0 +1,35 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Links en verwijzingen in tekst invoegen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Links en verwijzingen in tekst invoegen</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+De knop 'Link Invoegen' leidt u naar onderstaand dialoogvenster waarmee u eenvoudig
+een <i>Link</i> (Cross-Link) kunt aanbrengen in uw teksten.
+<br><br>
+<center><img src="images/insert_link_window.gif"></center>
+<br>
+Bij 'Link URL' dient de de url van
+de link te worden ingevuld (desgewenst voorafgegaan door 'http://' voor een externe
+website), bij 'target' kan worden bepaald hoe de link moet openen.
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_specchar_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_specchar_button.htm
new file mode 100644 (file)
index 0000000..ae5245a
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Bijzondere karakers in de tekst invoegen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr>
+    <td><span class="title">Bijzondere karakers in de tekst invoegen</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Met de knop 'Bijzondere Karakters' kunt u in de tekst bijzondere karakters, die soms
+op het toetsenbord lastig te vinden zijn, invoegen.
+<br><br>
+Voor het invoegen van een deze karakters wordt onderstaand keuzevenster getoond.
+Door het eenvoudigweg klikken op het gewenste karakter in het overzicht, wordt het op de huidige positie in de tekst ingevoegd.<br>
+<br>
+<center><img src="images/insert_specchar_window.gif"></center>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/insert_table_button.htm
new file mode 100644 (file)
index 0000000..00858ea
--- /dev/null
@@ -0,0 +1,73 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tabellen invoegen en aanpassen</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tabellen invoegen en aanpassen</span></td>
+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+De knop 'Invoegen Tabel' stelt u in staat op de huidige plek een nieuwe tabel
+in uw tekst in te voegen en opent onderstaand dialoogvenster.<br>
+<br>
+<center><img src="images/insert_table_window.gif"></center>
+<br>
+<strong>Omschrijving van de velden:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kolommen</strong></td>
+    <td>Het gewenste aantal kolommen in de tabel.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rijen</strong></td>
+    <td>Het gewenste aantal rijen in de tabel.</td>
+  </tr>
+  <tr>
+    <td><strong>Celvulling</strong></td>
+    <td>De 'Celvulling' (Cellpadding)<br>
+               De opvulmarge rondom binnen elke cel in de tabel in pixels.</td>
+  </tr>
+  <tr>
+    <td><strong>Celafstand</strong></td>
+    <td>De 'Celafstand' (Cellspacing)<br>
+               De ruimte tussen de cellen onderling binnen de tabel in pixels.</td>
+  </tr>
+  <tr>
+    <td><strong>Positionering</strong></td>
+    <td>De positionering van de tabel in de paragraaf.</td>
+  </tr>
+  <tr>
+    <td><strong>Omranding</strong></td>
+    <td>De dikte in pixels van de omranding van de tabel.</td>
+  </tr>
+  <tr>
+    <td><strong>Breedte</strong></td>
+    <td>De breedte van de tabel (in pixels of percentuele notatie).</td>
+  </tr>
+  <tr>
+    <td><strong>Hoogte</strong></td>
+    <td>De breedte van de tabel (in pixels of percentuele notatie).</td>
+  </tr>
+  <tr>
+    <td><strong>CSS-Stijl</strong></td>
+    <td>Optionele stijlkeuze uit de voor de website aangemaakte <i>Cascading Style Sheet</i> (CSS).</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr>
+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
+    <td align="right"><a href="#">Naar boven</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nl/style.css
new file mode 100644 (file)
index 0000000..9444101
--- /dev/null
@@ -0,0 +1,28 @@
+/* body { background-color: #FFFFFF; } */
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/about.htm
new file mode 100644 (file)
index 0000000..894df99
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Om TinyMCE</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE er ein liten WYSIWYG-editor for weblesere som
+f.eks. MSIE, Mozilla og Firefox og gjer det mulig &aring; redigere
+HTML-innhald p&aring; eit meir anvendervennlig vis.
+Applikasjonen har funksjoner som likner dem man finner i vanlege tekstbehandlere
+og burde ikkje vere spesielt vanskelig &aring; benytte.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innhaldsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/common_buttons.htm
new file mode 100644 (file)
index 0000000..e31fba3
--- /dev/null
@@ -0,0 +1,163 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Vanlege knapper</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Grunnleggende knapper</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Nedanfor finner du ein kort beskrivelse av kvar knapp/funksjon.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
+    <td>Feit tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
+    <td>Kursiv tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Understreket tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Gjennomstreket tekst.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Rett venstremarg.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Sentrer.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Rett h&oslash;gremarg.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Rette marger.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Punktliste.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Nummerliste</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Reduser innrykk.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Auk innrykk.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Angre seinaste endring.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Gjer om seinaste endring.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Lage/Redigere lenke, l&aelig;r meir om denne funksjonen i
+      kapittelet <a href="insert_link_button.htm">Lage/Redigere lenke</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Ta bort lenker fr&aring; markerte lenker.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
+    <td>Lage/Redigere anker, l&aelig;r meir om denne funksjonen i
+      kapittelet <a href="insert_anchor_button.htm">Lage/Redigere anker</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Lage/Redigere bilde, l&aelig;r meir om denne funksjonen i 
+      kapittelet <a href="insert_image_button.htm">Lage/Redigere bilde</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Rense/Ordne koden. Denne funksjonen tar bort un&oslash;dvendig
+      formatering. B&oslash;r anvendes n&aring;r man f.eks. kopierer tekst
+      fr&aring; Office-program. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Viser denne hjelp.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>&Aring;pner ein HTML-kodeeditor. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Lager ein ny tabell (2x2). </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Lager ei rad ovenfor den noverande raden. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Lager ei rad under den noverande raden. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Tar bort ei rad. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Lager ei kolonne f&oslash;r den noverande kolonnen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Lager ei kolonne etter den noverande kolonnen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Tar bort ei kolonne. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Lager ei horisontal linje. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Tar bort formatering fr&aring; markert omr&aring;de. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Lager nedsenket tekst. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Lager opph&oslash;gd tekst. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innhaldsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/html_source_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/html_source_window.gif
new file mode 100644 (file)
index 0000000..db933dc
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/html_source_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..1c38437
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..c3d7379
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..2a56e79
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_specchar_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_specchar_window.gif
new file mode 100644 (file)
index 0000000..986fa51
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_specchar_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..e8b69ef
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/index.htm
new file mode 100644 (file)
index 0000000..d3dc3f0
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Hjelp Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Innhaldsoversikt</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Klikk p&aring; lenkene nedanfor for &aring; g&aring; til dei ulike
+hjelp-kapitlene.
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Grunnleggende funksjoner</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Lage/Redigere bilde</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Lage/Redigere lenke</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Lage/Redigere anker </a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Lage/Redigere tabell</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..7a3678f
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere anker</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere anker</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denne funksjon &aring;pner eit nytt vindauge lik det nedanfor.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
+<br>
+Dette vindauget har eit felt som man skal fylle i med eit unikt
+navn, denne funksjon  gjer det mulig &aring; skape
+ankerpunkter/bokmerker.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innhaldsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_image_button.htm
new file mode 100644 (file)
index 0000000..5e262bb
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere bilde</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere bilde</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Funksjonen "Lage/Redigere bilde" &aring;pner eit nytt vindauge som ser ut som 
+bildet nedanfor.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+I dette vindauget skriver du inn URL:en til bildet du vil lenke til
+samt ein bildebeskrivelse, denne beskrivelsen kommer til &aring; vises som ein alternativ 
+tekst til bildet.<br>
+<br>
+<strong>Feltforklaring:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Bildets URL </strong></td>
+    <td>URL/s&oslash;kevei til bildet.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Bildets beskrivelse</strong></td>
+    <td>Bildets beskrivelse, denne beskrivelsen kommer til &aring; vises som ein
+      alternativ tekst til bildet.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimensjoner</strong></td>
+    <td>Bildets bredde og h&oslash;gde. </td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Bildets justering, kan vere anvendelig n&aring;r man vil at
+      tekst skal flyte rundt bildet. </td>
+  </tr>
+  <tr>
+    <td><strong>Ramme</strong></td>
+    <td>Bilderammens bredde. </td>
+  </tr>
+  <tr>
+    <td><strong>Vertikalt tomrom </strong></td>
+    <td>Vertikalt tomrom , kan vere anvendelig n&aring;r man vil
+      at tekst skal flyte rundt bildet. </td>
+  </tr>
+  <tr>
+    <td><strong>Horisontalt tomrom</strong></td>
+    <td>Horisontalt tomrom, kan vere anvendelig n&aring;r man vil
+      at tekst skal flyte rundt bildet. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innhaldsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_link_button.htm
new file mode 100644 (file)
index 0000000..fcda64e
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere lenke</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere lenke</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denne funksjon &aring;pner eit nytt vindauge lik det nedanfor.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159"><br>
+<br>
+Dette vindauget har to felt, lenkens URL/addresse samt hvordan lenken 
+skal &aring;pnes.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innhaldsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/insert_table_button.htm
new file mode 100644 (file)
index 0000000..4c4dfb3
--- /dev/null
@@ -0,0 +1,72 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Lage/Redigere tabell</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Lage/Redigere tabell </span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Lage tabell-knappen &aring;pner et nytt vindauge, ved hjelp av
+dette vindauget kan du lage tabeller.<br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="229"><br>
+<br>
+<strong>Feltforklaring:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kolonner</strong></td>
+    <td>Antall kolonner i tabellen.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rader</strong></td>
+    <td>Antall rader i tabellen.</td>
+  </tr>
+  <tr>
+    <td><strong>Celleutfylling</strong></td>
+    <td>Antall pixler utfylling i kvar celle. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellemellomrom</strong></td>
+    <td>Antall pixler mellomrom mellom cellene.</td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Tabellens justering. </td>
+  </tr>
+  <tr>
+    <td><strong>Rammebredde</strong></td>
+    <td>Rammens bredde.</td>
+  </tr>
+  <tr>
+    <td><strong>Bredde</strong></td>
+    <td>Bredde i pixler.</td>
+  </tr>
+  <tr>
+    <td><strong>H&oslash;gde</strong></td>
+    <td>H&oslash;gde i pixler. </td>
+  </tr>
+  <tr>
+    <td><strong>Stil</strong></td>
+    <td>Stilmal p&aring; tabellen. </td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; til: <a href="index.htm">Innhaldsoversikt</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/nn/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/about.htm
new file mode 100644 (file)
index 0000000..394bb7d
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>O TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">O TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Spis tre¶ci</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE jest ma³ym edytorem WYSWIWYG dla przegl±darek internetowych takich jak MSIE
+lub Mozilla, pozwalaj±cym na edytowanie zawarto¶ci strony HTML w sposób przyjazny dla
+u¿ytkownika. Posiada szeref funkcji znanych z popularnych edytorów tekstu, wiêc powinien
+byæ ³atwy w u¿yciu.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Go to: <a href="index.htm">Spis tre¶ci</a></td>
+    <td align="right"><a href="#">Do góry</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/common_buttons.htm
new file mode 100644 (file)
index 0000000..c928755
--- /dev/null
@@ -0,0 +1,164 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>Wa¿niejsze przyciski</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Wa¿niejsze przyciski</span></td>
+    <td align="right"><a href="index.htm">Spis tre¶ci</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Poni¿ej znajduje siê krótki opis ka¿dego przycisku<img src="../../images/spacer.gif" width="1" height="1">
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Pogrubienie tekstu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Pochylenie tekstu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Podkre¶lenie tekstu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Przekre¶lenie tekstu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Wyrównanie do lewej</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Wy¶rodkowanie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Wyrównanie do prawej.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Wyjustowanie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Lista nieuporz±dkowana/lista punktów.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Lista uporz±dkowana/lista ponumerowana</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Wysuniêcie/zmniejsz wciêcie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Wciêcie/zwiêksz wciêcie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Cofniêcie ostatnio wykonanej czynno¶ci</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Ponowienie ostatnio wykonanej czynno¶ci</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Wstawienie nowego ³±cza, przeczytaj wiêcej o tej funkcji sekcji <a href="insert_link_button.htm">Wstaw
+      ³±cze</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Usuniêcie ³±cz z zaznaczonej czê¶ci/usuniêcie wszystkich zaznaczonych ³±cz.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
+    <td>Wstawienie nowego zakotwiczenia, przeczytaj wiêcej o tej funkcji w sekcji <a href="insert_anchor_button.htm">Wstaw zakotwiczenie.</a></td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Wstawienie nowego zdjêcia, przeczytaj wiêcej o tej funkcji w sekcji <a href="insert_image_button.htm">Wstaw
+      zdjêcie</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Oczyszczenie kodu/usuniêcie niechcianeg formatowania. Ta funkcja jest pomocna kiedy
+      kopiujesz zawarto¶æ np. z worda.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Pokazanie tego okna pomocy.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Otwarcie edytora kodu HTML.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Wstawienie nowej tabeli 2x2 w bie¿±cej pozycji.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Wstawienie wiersza ponad aktualnie zaznaczonym.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Wstawienie wiersz poni¿ej aktualnie zaznaczonego.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Usuniêcie wiersza.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Wstawienie kolumny przed aktualnie zaznaczon±.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Wstawienie kolumny za aktualnie zaznaczon±.</td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Usuniêcie kolumny.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Wstawienie poziomej linii.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Usuniêcie formatowania z zaznaczonej czê¶ci.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Przekszta³cenie w indeks dolny. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Przekszta³cenie w indeks górny. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Id¼ do: <a href="index.htm">Spis tre¶ci</a></td>
+    <td align="right"><a href="#">Góra</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..c2e0833
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..3dbae3c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..559def6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..b02e34e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/index.htm
new file mode 100644 (file)
index 0000000..5ba989b
--- /dev/null
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>Spis pomocy</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Spis tre¶ci</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Aby zobaczyæ poszczególne sekcje pomocy kliknij jeden z poni¿szych linków
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Lista wa¿niejszych przycisków</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Przycisk "Wstaw zdjêcie"</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Przycisk "Wstaw ³±cze"</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Przycisk "Wstaw zakotwiczenie"</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Przycisk "Wstaw tabelê"</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..3adfc24
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>Przycisk "Wstaw zakotwiczenie"</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Przycisk "Wstaw zakotwiczenie"</span></td>
+    <td align="right"><a href="index.htm">Spis tre¶ci</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Ten przycisk otwiera nowe okno z funkcj± wstawienia/edycja zakotwiczenia.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
+<br>
+Jest tylko jedno pole w tym oknie, nale¿y tam wpisaæ nazwê punktu zakotwiczenia. Nale¿y pamiêtaæ, ¿e nazwa musi byæ
+unikatowa, nie powtarzaj±ca siê.
+<br><br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Id¼ do: <a href="index.htm">Spis tre¶ci</a></td>
+    <td align="right"><a href="#">Do góry</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_image_button.htm
new file mode 100644 (file)
index 0000000..f496579
--- /dev/null
@@ -0,0 +1,65 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>Przycisk "Wstaw zdjêcie"</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Przycisk "Wstaw ³±cze"</span></td>
+    <td align="right"><a href="index.htm">Spis tre¶ci</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Przycisk "Wstaw zdjêcie" otwiera okno pokazane poni¿ej.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+Nale¿y podaæ adres URL lub scie¿kê dostêpu do zdjêcia które ma byæ wstawione i podaæ krótki opis
+zdjêcia, jest on wy¶wietlany jako alternatyny tekstowy opis zdjêcia umieszczonego na stronie.
+<br><br>
+<strong>Opis pól:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Adres URL lub ¶cie¿ka dostêpu do zdjêcia</strong></td>
+    <td>URL/scie¿ka dostêpu do zdjêcia.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Opis zdjêcia</strong></td>
+    <td>Tekst opisuj±cy zdjêcia.</td>
+  </tr>
+  <tr>
+    <td><strong>Wymiary</strong></td>
+    <td>D³ugo¶æ/szeroko¶æ zdjêcia . </td>
+  </tr>
+  <tr>
+    <td><strong>Wyrównanie</strong></td>
+    <td>Wyrównanie zdjêcia, u¿yteczne przy zawijaniu tekstu wokó³ zdjêcia.</td>
+  </tr>
+  <tr>
+    <td><strong>Krawêdzie</strong></td>
+    <td>Grubo¶æ krawêdzi.</td>
+  </tr>
+  <tr>
+    <td><strong>Odstêp poziomy</strong></td>
+    <td>Odstêp poziomy, pomocne przy zawijaniu tesktu wokó³ zdjêcia.</td>
+  </tr>
+  <tr>
+    <td><strong>Odstêp pionowy</strong></td>
+    <td>Odstêp pionowy, pomocne przy zawijaniu tesktu wokó³ zdjêcia.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Id¼ do: <a href="index.htm">Spis tre¶ci</a></td>
+    <td align="right"><a href="#">Do góry</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_link_button.htm
new file mode 100644 (file)
index 0000000..bca81c0
--- /dev/null
@@ -0,0 +1,35 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>Przycisk "Wstaw ³±cze"</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Przycisk "Wstaw ³±cze"</span></td>
+    <td align="right"><a href="index.htm">Spis tre¶ci</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Ten przycisk otwiera nowe okno, pozwalaj±ce na wstawienie lub edytowanie ³±cza.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159"><br>
+<br>
+S± dwa pola w tym oknie, pierwsze &quot;Adres URL&quot; jest adresem URL ³±cza
+. "Cel" umo¿liwia ustalenie jak ³±cze ma byæ otwarte.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Id¼ do: <a href="index.htm">Spis tre¶ci</a></td>
+    <td align="right"><a href="#">Do góry</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/insert_table_button.htm
new file mode 100644 (file)
index 0000000..70c8720
--- /dev/null
@@ -0,0 +1,73 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<meta name="generator" content="WebSite PRO 4.3" />
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
+<TITLE>Przycisk "Wstaw tabelê"</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Przycisk "Wstaw tabelê"</span></td>
+    <td align="right"><a href="index.htm">Spis tre¶ci</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Przycisk "Wstaw tabelê" otwiera okno pokazane poni¿ej. Mo¿na w ten sposób stworzyæ now± tabelê. <br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="229"><br>
+<br>
+<strong>Opis pól:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kolumny</strong></td>
+    <td>Liczba kolumn w tabeli. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Wiersze</strong></td>
+    <td>Liczba wierszy w tabeli.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellpadding</strong></td>
+    <td>Odleg³o¶æ akapitu od krawêdzi komórki tabeli.</td>
+  </tr>
+  <tr>
+    <td><strong>Cellspacing</strong></td>
+    <td>Szeroko¶æ krawêdzi komórek tabeli.</td>
+  </tr>
+  <tr>
+    <td><strong>Wyrównanie</strong></td>
+    <td>Wyrównanie tabeli.</td>
+  </tr>
+  <tr>
+    <td><strong>Krawêdzie</strong></td>
+    <td>Grubo¶æ krawêdzi tabeli.</td>
+  </tr>
+  <tr>
+    <td><strong>Szeroko¶æ</strong></td>
+    <td>Szeroko¶æ tabeli w pikselach.</td>
+  </tr>
+  <tr>
+    <td><strong>Wysoko¶æ</strong></td>
+    <td>Wysoko¶æ tabeli w pikselach.</td>
+  </tr>
+  <tr>
+    <td><strong>Klasa</strong></td>
+    <td>Styl lub klasa CSS tabeli.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Id¼ do: <a href="index.htm">Spis tre¶ci</a></td>
+    <td align="right"><a href="#">Do góry</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/pl/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/about.htm
new file mode 100644 (file)
index 0000000..bffe540
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>O TinyMCE</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">O TinyMCE</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE je malý WYSIWYG editor pre webovské prehliadače� ako sú MSIE nebo Mozilla,
+ktorým je možné upravovať obsah HTML omnoho jednoduchšie. Obsahuje bežné funkcie,
+ktoré je možné nájsť vo väčšine textových editorov, preto by jeho používanie nemalo
+byť zložité<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Choď na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahor</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/common_buttons.htm
new file mode 100644 (file)
index 0000000..d432452
--- /dev/null
@@ -0,0 +1,170 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>B��tla�tka</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Bežné tlačítka</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Nižšie je popísané každé tlačitko.
+<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/cut.gif" width="20" height="20"></td>
+    <td>Kopíruje aktuálne vybraný obsah do schránky. (Ctrl+C)</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/copy.gif" width="20" height="20"></td>
+    <td>Odstráni aktuálne vybraný obsah do schránky. (Ctrl+X)</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/paste.gif" width="20" height="20"></td>
+    <td>Vloží obsah schránky do okna editoru. (Ctrl+P)</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>Zhrubne text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>Naformatuje text kurzívou.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Podčiarkne text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Preškrtne text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Zarovná vľavo.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Zarovná na sted.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Zarovná vpravo.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Zarovná do bloku.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Zoznam s odrážkami.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Číslovaný zoznam.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Predsadí/zníži odsadenie</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Odsadenie/zvýši odsadenie</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>Vráti späť naposledy vykonanú akciu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>Obnový poslednú akciu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Vloží nový odkaz, viac o tejto funkcií v časti<a href="insert_link_button.htm">Vložiť odkaz</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Zruši odkaz v aktuálnom výbere/odstráni všetky vybrané odkazy.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Vloží nový obrázok, viac o tejto funkcii v časti<a href="insert_image_button.htm">Vložiť obrázok</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Vyčistí kód/odstráni nechcené formatovanie. Táto funkcia sa hodí keď kopírujete 
+        obsah napríklad z kancelárskeho balíka.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Zobrazí túto nápovedu.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>Otevorý editor s HTML zdrojom. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table.gif" width="20" height="20"></td>
+    <td>Do aktuálnej pozície vloží novú 2x2 tabulku.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Pridá riadok pred akruálny.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Pridá riadok po aktuálny.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Odstráni riadok.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Pridá stĺpec pred aktuálny.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Pridá stĺpec za aktuálny.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Odstráni aktuálny stĺpec.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Pridá nový vodorovný oddeľovač.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Odstráni z výberu formatovanie.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Vytvorý z vybraného textu dolný index. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Vytvorý z vybreného textu horný index. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Choď na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahor</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_image_window.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_image_window.png
new file mode 100644 (file)
index 0000000..5d9ea98
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_image_window.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_link_window.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_link_window.png
new file mode 100644 (file)
index 0000000..94a0c2e
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_link_window.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_table_window.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_table_window.png
new file mode 100644 (file)
index 0000000..17c46d0
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/images/insert_table_window.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/index.htm
new file mode 100644 (file)
index 0000000..da708a6
--- /dev/null
@@ -0,0 +1,26 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>N�ov�a</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Obsah</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Kliknutím na odkaz zvolíte požadovanú voľbu.
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Bežné tlačítka</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Tlačítko vložiť obrázok</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Tlačítko vložiť odkaz</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Tlačítko vložiť tabuľku</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_image_button.htm
new file mode 100644 (file)
index 0000000..2f5a1a5
--- /dev/null
@@ -0,0 +1,66 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tla�tko vloit obr�ek</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tlačitko vložiť obrázok</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Tlačitko vložiť obrázok otvorý následujúce okno.<br>
+<br>
+<img src="images/insert_image_window.png" width="348" height="290"><br>
+<br>
+Iba vložte URL obrázku, ktorý chcete pridať a zadajte jeho popis, ten bude
+zobrazovaný ako alternatívny popisok obrázku.<br>
+<br>
+<strong>Popis položiek:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>URL obrázku</strong></td>
+    <td>URL/cesta k obrázku.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Popis obrázku</strong></td>
+    <td>Alternatívny popis toho, co je na obrázku.</td>
+  </tr>
+  <tr>
+    <td><strong>Rozmery</strong></td>
+    <td>šírka/výška obrázku. </td>
+  </tr>
+  <tr>
+    <td><strong>Zarovnávanie</strong></td>
+    <td>Zarovnávanie obrázku, vhodné pre obtekanie obrázku textom.</td>
+  </tr>
+  <tr>
+    <td><strong>Ramček</strong></td>
+    <td>Hrúbka ramčeku.</td>
+  </tr>
+  <tr>
+    <td><strong>Vertikálny okraj</strong></td>
+    <td>Vertikálny okraj, vhodné pre zalomenie textu okolo obrázku.</td>
+  </tr>
+  <tr>
+    <td><strong>Horizontálny okraj</strong></td>
+    <td>Horizontány okraj, vhodné pre zalomenie textu okolo obrázku.</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Choď na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahor</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_link_button.htm
new file mode 100644 (file)
index 0000000..8a00a7c
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tla�tko vloit odkaz</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tlačitko vložiť odkaz</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Toto tlačitko otvorý nové okno s možnosťou vložiť/upraviť odkaz.<br>
+<br>
+<img src="images/insert_link_window.png" width="328" height="160"><br>
+<br>
+V tomto okne sú dve položky. &quot;URL odkazu&quot; je adresa stráky, na 
+ktorú odkazujeme. &quot;Cieľ&quot; určuje, ako môže byť odkazovaná stránka otvorená.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Choď na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahor</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/insert_table_button.htm
new file mode 100644 (file)
index 0000000..9984739
--- /dev/null
@@ -0,0 +1,68 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Tla�tko vloit tabulku</TITLE>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Tlačítko vložiť tabuľku</span></td>
+    <td align="right"><a href="index.htm">Obsah</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Tlačítko vložiť tabuľku otvorý následujúce okno, vňom môžete definovať novú tabuľku.<br>
+<br>
+<img src="images/insert_table_window.png" width="338" height="210"><br>
+<br>
+<strong>Popis položiek:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Stĺpce</strong></td>
+    <td>Počet stĺpcov v tabuľke.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Riadky</strong></td>
+    <td>Počet riadkov v tabuľke.</td>
+  </tr>
+  <tr>
+    <td><strong>Vnútorný okraj bunky</strong></td>
+    <td>Vnútorný okraj bunky.</td>
+  </tr>
+  <tr>
+    <td><strong>Vnútorný okraj tabuľky�</strong></td>
+    <td>Vnútorný okraj tabuľky.</td>
+  </tr>
+  <tr>
+    <td><strong>Zarovnanie</strong></td>
+    <td>Zarovnať tabuľky.</td>
+  </tr>
+  <tr>
+    <td><strong>Riadok</strong></td>
+    <td>Hrúbka riadku tabuľky.</td>
+  </tr>
+  <tr>
+    <td><strong>Šírka</strong></td>
+    <td>Šírka tabuľky v pixelech.</td>
+  </tr>
+  <tr>
+    <td><strong>Výškaka</strong></td>
+    <td>Výška tabuľky v pixelech.</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Choď na: <a href="index.htm">Obsah</a></td>
+    <td align="right"><a href="#">Nahor</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sk/style.css
new file mode 100644 (file)
index 0000000..59c464d
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: 0; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/about.htm
new file mode 100644 (file)
index 0000000..2468489
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Om TinyMCE</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCE &auml;r en liten WYSIWYG-editor f&ouml;r webl&auml;sare som
+MSIE och Mozilla vilken m&ouml;jligg&ouml;r f&ouml;r anv&auml;ndare att redigera 
+HTML-inneh&aring;ll p&aring; ett mer anv&auml;ndarv&auml;nligt s&auml;tt.
+Applikationen har funktioner som liknar dem man finner i vanliga ordbehandlare
+och borde inte vara speciellt sv&aring;rt att anv&auml;nda.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/common_buttons.htm
new file mode 100644 (file)
index 0000000..c785329
--- /dev/null
@@ -0,0 +1,163 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Common buttons</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Grundl&auml;ggande knappar</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Nedan finner du en kort beskrivning av varje knapp/funktion.<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+  <tr>
+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
+    <td>Fet text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
+    <td>Kursiv text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Understruken text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>Genomstruken text.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>Rak v&auml;nstermarginal.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>Centrera.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>Rak h&ouml;germarginal.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Raka marginaler.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>Punktlista.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>Numrerad lista</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>Minska indrag.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>&Ouml;ka utdrag.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>&Aring;ngra senaste &auml;ndringen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>G&ouml;r om senaste &auml;ndringen.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>Skapa/Redigera l&auml;nk, l&auml;s mer om denna funktion i
+      kapitlet <a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>Ta bort l&auml;nkar fr&aring;n markerade l&auml;nkar.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
+    <td>Skapa/Redigera ankare, l&auml;r mer om denna funktion i
+      kapitlet <a href="insert_anchor_button.htm">Skapa/Redigera ankare</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>Skapa/Redigera bild, l&auml;r mer om denna funktion i 
+      kapitlet <a href="insert_image_button.htm">Skapa/Redigera bild</a>.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>Rensa/St&auml;da k&aring;den. Denna funktion tar bort on&ouml;dig
+      formatering. B&ouml;r anv&auml;ndas n&auml;r man t.ex. kopierar text
+      fr&aring;n Office-program. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>Visad denna hj&auml;lp.</td>
+  </tr>
+  <tr>
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>&Ouml;ppnar en HTML-k&auml;kodseditor . </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>Skapar en ny tabell (2x2) . </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>Skapar en rad ovanf&ouml;r den nuvarande raden . </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>Skapar en rad under den nuvarande raden . </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>Tar bort en rad. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>Skapar en kolumn f&ouml;re den nuvarande kolumnen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>Skapar en kolumn efter den nuvarande kolumnen. </td>
+  </tr>
+  <tr>
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>Tar bort en kolumn. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>Skapar en horisontell linje. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>Tar bort formatering fr&aring;n markerat omr&aring;de. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>Skapar neds&auml;nkt text. </td>
+  </tr>
+  <tr>
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>Skapar upph&ouml;jd text. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..1c38437
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..c3d7379
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..2a56e79
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..e8b69ef
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/index.htm
new file mode 100644 (file)
index 0000000..35b4e50
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Help Index</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Inneh&aring;llsf&ouml;rteckning</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Klicka p&aring; l&auml;nkarna nedan f&ouml;r att g&aring; till olika
+hj&auml;lp-kapitel. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">Grundl&auml;ggande funktioner</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">Skapa/Redigera bild</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">Skapa/Redigera ankare </a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">Skapa/Redigera tabell</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..a43eedd
--- /dev/null
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Skapa/Redigera l&auml;nk</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Skapa/Redigera ankare </span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
+<br>
+Detta f&ouml;nster har ett f&auml;lt som man skall fylla i med ett unik
+namn, denna funktion  g&ouml;r det m&ouml;jligt att skapa
+ankarpunkter/bokm&auml;rken.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_image_button.htm
new file mode 100644 (file)
index 0000000..bdf4c9b
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Skapa/Redigera bild</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Skapa/Redigera bild</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Funktionen "Skapa/Redigera bild" &ouml;ppnar ett nytt f&ouml;nster som ser ut som 
+bilden nedan.<br>
+<br>
+<img src="images/insert_image_window.gif"><br>
+<br>
+I detta f&ouml;nster skriver du in URL:en till bilden du vill l&auml;nka till 
+samt en bildbeskrivning, denna beskrivning kommer att visas som en alternativ 
+text till bilden.<br>
+<br>
+<strong>Fältförklaring:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Bilderns URL </strong></td>
+    <td>URL/s&ouml;kv&auml;g till bilden.</td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Bildens beskrivning</strong></td>
+    <td>Bildens beskrivning, denna beskrivning kommer att visas som en
+      alternativ text till bilden.</td>
+  </tr>
+  <tr>
+    <td><strong>Dimensioner</strong></td>
+    <td>Bildens bredd och h&ouml;jd. </td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Bildens justering, kan vara anv&auml;ndbart n&auml;r man vill att
+      text skall flyta runt bilden. </td>
+  </tr>
+  <tr>
+    <td><strong>Ram</strong></td>
+    <td>Bildramens bredd. </td>
+  </tr>
+  <tr>
+    <td><strong>Vertikalt tomrum </strong></td>
+    <td>Vertikalt tomrum , kan vara anv&auml;ndbart n&auml;r man vill
+      att text skall flyta runt bilden. </td>
+  </tr>
+  <tr>
+    <td><strong>Horizontellt tomrom</strong></td>
+    <td>Horisontellt tomrum, kan vara anv&auml;ndbart n&auml;r man vill
+      att text skall flyta runt bilden. </td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_link_button.htm
new file mode 100644 (file)
index 0000000..d5790b6
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Skapa/Redigera l&auml;nk</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Skapa/Redigera l&auml;nk</span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330" height="159"><br>
+<br>
+Detta f&ouml;nster har tv&aring; f&auml;lt l&auml;nkens URL/adress samt hur l&auml;nken 
+skall &ouml;ppnas.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/insert_table_button.htm
new file mode 100644 (file)
index 0000000..d2746c9
--- /dev/null
@@ -0,0 +1,72 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Skapa/Redigera tabell</TITLE>
+<link href="style.css" rel="stylesheet" type="text/css" />
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">Skapa/Redigera tabell </span></td>
+    <td align="right"><a href="index.htm">IF</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Skapa tabell-knappen &ouml;ppnar ett nytt f&ouml;nster, med hj&auml;lp av
+detta f&ouml;nster kan du skapa tabeller. <br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="229"><br>
+<br>
+<strong>Fältförklaring:</strong><br>
+<table border="1" cellspacing="0">
+  <tr>
+    <td width="150"><strong>Kolumner</strong></td>
+    <td>Antal kolumner i tabellen. </td>
+  </tr>
+  <tr>
+    <td width="150"><strong>Rader</strong></td>
+    <td>Antal rader i tabellen .</td>
+  </tr>
+  <tr>
+    <td><strong>Cellutfyllnad</strong></td>
+    <td>Antal pixlars utfyllnad i varje cell. </td>
+  </tr>
+  <tr>
+    <td><strong>Cellmellanrum</strong></td>
+    <td>Antal pixlars mellanrum mellan cellerna.</td>
+  </tr>
+  <tr>
+    <td><strong>Justering</strong></td>
+    <td>Tabellens justering. </td>
+  </tr>
+  <tr>
+    <td><strong>Rambredd</strong></td>
+    <td>Ramens bredd .</td>
+  </tr>
+  <tr>
+    <td><strong>Bredd</strong></td>
+    <td>Bredd i pixlar.</td>
+  </tr>
+  <tr>
+    <td><strong>H&ouml;jd</strong></td>
+    <td>H&ouml;jd i pixlar. </td>
+  </tr>
+  <tr>
+    <td><strong>Stil</strong></td>
+    <td>Stilmall p&aring; tabellen. </td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>Gå till: <a href="index.htm">Innehållsförteckning</a></td>
+    <td align="right"><a href="#">Toppen</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/sv/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/about.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/about.htm
new file mode 100644 (file)
index 0000000..c5a662f
--- /dev/null
@@ -0,0 +1,29 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>¹ØÓÚTinyMCE</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">¹ØÓÚ TinyMCE</span></td>
+    <td align="right"><a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+TinyMCEÊÇÒ»ÖÖÊÊÓÃÓÚMSIEºÍMozillaµÈä¯ÀÀÆ÷µÄÇáÁ¿¼¶Ëù¼û¼´ËùµÃ±à¼­Æ÷£¬ÒÔ¸ü¼ÓÓѺõķ½Ê½¹©Óû§±à¼­HTMLÄÚÈÝ¡£Ëü¾ßÓд󲿷ÖÎÄ×Ö´¦ÀíÆ÷Ëù³£¼ûµÄ¹¦ÄÜ£¬²¢ÇÒÒ×ÓÚʹÓá£<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>·µ»Ø <a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+    <td align="right"><a href="#">¶¥²¿</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/common_buttons.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/common_buttons.htm
new file mode 100644 (file)
index 0000000..93ec412
--- /dev/null
@@ -0,0 +1,160 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>³£Óð´Å¥</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">³£Óð´Å¥</span></td>
+    <td align="right"><a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+ÒÔÏÂÊÇÿ¸ö°´Å¥µÄ¼ò¶Ì˵Ã÷<img src="../../images/spacer.gif" width="1" height="1"> 
+<br>
+<br>
+<table cellpadding="3" cellspacing="1" bgcolor="#000000">
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/bold.gif" width="20" height="20"></td>
+    <td>´ÖÌåÎÄ×ÖÑùʽ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/italic.gif" width="20" height="20"></td>
+    <td>бÌåÎÄ×ÖÑùʽ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/underline.gif" width="20" height="20"></td>
+    <td>Ï»®ÏßÎÄ×ÖÑùʽ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
+    <td>ɾ³ýÏßÎÄ×ÖÑùʽ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/justifyleft.gif" width="20" height="20"></td>
+    <td>×ó¶ÔÆë</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/justifycenter.gif" width="20" height="20"></td>
+    <td>¾ÓÖжÔÆë</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/justifyright.gif" width="20" height="20"></td>
+    <td>ÓÒ¶ÔÆë</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/justifyfull.gif" width="20" height="20"></td>
+    <td>Á½¶Ë¶ÔÆë</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
+    <td>ÎÞÐòÁбí</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
+    <td>ÓÐÐòÁбí</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
+    <td>¼õÉÙËõ½øÁ¿</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/indent.gif" width="20" height="20"></td>
+    <td>Ôö¼ÓËõ½øÁ¿</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/undo.gif" width="20" height="20"></td>
+    <td>³·ÏûÉÏÒ»²Ù×÷</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/redo.gif" width="20" height="20"></td>
+    <td>ÖØ×öÉÏÒ»²Ù×÷</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/link.gif" width="20" height="20"></td>
+    <td>²åÈëÐÂÁ´½Ó£¬µã»÷ <a href="insert_link_button.htm">²åÈëÁ´½Ó°´Å¥</a> Õ½ÚÒԲ鿴¸ü¶àÄÚÈÝ¡£</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
+    <td>ɾ³ýµ±Ç°Ñ¡¶¨µÄÁ´½Ó/ÒƳýÈ«²¿Ñ¡¶¨µÄÁ´½Ó</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
+    <td>²åÈëÐÂêµã£¬µã»÷ <a href="insert_anchor_button.htm">²åÈëêµã°´Å¥</a> Õ½ÚÒԲ鿴¸ü¶àÄÚÈÝ¡£</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/image.gif" width="20" height="20"></td>
+    <td>²åÈëÐÂͼÏñ£¬µã»÷ <a href="insert_image_button.htm">²åÈëͼÏñ°´Å¥</a> Õ½ÚÒԲ鿴¸ü¶àÄÚÈÝ¡£</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
+    <td>ÇåÀí´úÂë/Çå³ýËùÓв»ÐèÒªµÄ¸ñʽ¡£´Ë¹¦ÄÜÔÚÄã´ÓofficeµÈ²úÆ·Öи´ÖÆÄÚÈݽøÀ´µÄʱºòÌرðÓÐÓá£</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/help.gif" width="20" height="20"></td>
+    <td>ÏÔʾ´Ë°ïÖú´°¿Ú</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/code.gif" width="20" height="20"></td>
+    <td>´ò¿ªHTML´úÂë±à¼­Æ÷</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table.gif" width="20" height="20"></td>
+    <td>ÔÚµ±Ç°Î»ÖòåÈëÒ»ÕÅ2¡Á2µÄ±í¸ñ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
+    <td>ÔÚµ±Ç°ÐеÄÇ°Ãæ²åÈëÐÂÐÐ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
+    <td>ÔÚµ±Ç°ÐеĺóÃæ²åÈëÐÂÐÐ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
+    <td>ɾ³ýµ±Ç°ÐÐ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
+    <td>ÔÚµ±Ç°ÁеÄÇ°Ãæ²åÈëÐÂÁÐ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
+    <td>ÔÚµ±Ç°ÁеĺóÃæ²åÈëÐÂÁÐ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
+    <td>ɾ³ýµ±Ç°ÁÐ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/hr.gif" width="20" height="20"></td>
+    <td>²åÈëˮƽÏß</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
+    <td>ÒƳýËùÑ¡ÎÄ×ֵĸñʽ</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/sub.gif" width="20" height="20"></td>
+    <td>½«ËùÑ¡ÎÄ×Ö×öΪϱê</td>
+  </tr>
+  <tr bgcolor="#FFFFFF">
+    <td><img src="../../images/sup.gif" width="20" height="20"></td>
+    <td>½«ËùÑ¡ÎÄ×Ö×öΪÉϱê</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>·µ»Ø <a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+    <td align="right"><a href="#">¶¥²¿</a></td>
+  </tr>
+</table>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif
new file mode 100644 (file)
index 0000000..21513ad
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_anchor_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_image_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_image_window.gif
new file mode 100644 (file)
index 0000000..1a92b07
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_image_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_link_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_link_window.gif
new file mode 100644 (file)
index 0000000..bcb3976
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_link_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_table_window.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_table_window.gif
new file mode 100644 (file)
index 0000000..e9d114b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/images/insert_table_window.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/index.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/index.htm
new file mode 100644 (file)
index 0000000..8a349fe
--- /dev/null
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>°ïÖúË÷Òý</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">ÄÚÈÝÌáÒª</span></td>
+    <td align="right">&nbsp;</td>
+  </tr>
+</table>
+<hr noshade>
+<br>
+Çëµã»÷ÒÔÏÂÁ´½ÓÀ´²é¿´°ïÖúÄÚÈÝÖеIJ»Í¬Õ½Ú. 
+<ul class="toc_ul">
+  <li class="toc_li"><a href="about.htm">¹ØÓÚTinyMCE</a></li>
+  <li class="toc_li"><a href="common_buttons.htm">³£Óð´Å¥</a></li>
+  <li class="toc_li"><a href="insert_image_button.htm">²åÈëͼÏñ°´Å¥</a></li>
+  <li class="toc_li"><a href="insert_link_button.htm">²åÈëÁ´½Ó°´Å¥</a></li>
+  <li class="toc_li"><a href="insert_anchor_button.htm">²åÈëêµã°´Å¥</a></li>
+  <li class="toc_li"><a href="insert_table_button.htm">²åÈë±í¸ñ°´Å¥</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_anchor_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_anchor_button.htm
new file mode 100644 (file)
index 0000000..1b59cb5
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>²åÈëêµã°´Å¥</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">²åÈëêµã°´Å¥</span></td>
+    <td align="right"><a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>´Ë°´Å¥»á´ò¿ª²åÈë/±à¼­ÃªµãµÄ¶Ô»°´°¿Ú£º<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="320" height="127"><br>
+<br>´°¿ÚÖÐÖ»ÓÐÒ»¸öÎı¾Óò£¬Äã¿ÉÒÔÔÚ´ËÊäÈëêµãÃû³Æ£¬ÐèҪעÒâµÄÊÇêµãÃû³Æ±ØÐëÊÇΨһµÄ¡£<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>·µ»Ø <a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+    <td align="right"><a href="#">¶¥²¿</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_image_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_image_button.htm
new file mode 100644 (file)
index 0000000..8c63d85
--- /dev/null
@@ -0,0 +1,63 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>²åÈëͼÏñ°´Å¥</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">²åÈëͼÏñ°´Å¥</span></td>
+    <td align="right"><a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>µã»÷<U>²åÈëͼƬ</U>°´Å¥ºó»á´ò¿ªÒÔÏ´°¿Ú£º<br>
+<br>
+<img src="images/insert_image_window.gif" width="340" height="295"><br>
+<br>ÄãÖ»Ðè¼òµ¥µÄÊäÈëÐèÒªÁ¬½ÓµÄͼÏñµØÖ·¼°Í¼ÏñÃèÊö£¨Í¼ÏñµÄÌæ´úÎÄ×Ö£©<br>
+<br>
+<strong>²ÎÊý˵Ã÷£º</strong><br>
+<table cellpadding="3" cellspacing="1" bgcolor="#000000">
+  <tr>
+    <td width="150" bgcolor="#EEEEEE"><strong>ͼÏñµØÖ·</strong></td>
+    <td bgcolor="#FFFFFF">Òª²åÈëµÄͼƬµÄURL</td>
+  </tr>
+  <tr>
+    <td width="150" bgcolor="#EEEEEE"><strong>ͼÏñÃèÊö</strong></td>
+    <td bgcolor="#FFFFFF">ͼƬÄÚÈݵÄÌæ´úÎÄ×ÖÃèÊö</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>άÊý</strong></td>
+    <td bgcolor="#FFFFFF">ͼÏñ¿í¶ÈÓë¸ß¶È</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>¶ÔÆ뷽ʽ</strong></td>
+    <td bgcolor="#FFFFFF">ͼÏñµÄ¶ÔÆ뷽ʽ£¬ÔÚÎÄ×Ö»·ÈÆͼÏñʱÌرðÓÐÓá£</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>±ß¿ò</strong></td>
+    <td bgcolor="#FFFFFF">ͼÏñ±ß¿òµÄºñ¶È</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>ˮƽ¼ä¾à</strong></td>
+    <td bgcolor="#FFFFFF">ͼÏñˮƽ¼ä¾à£¬ÔÚÎÄ×Ö»·ÈÆͼÏñʱÌرðÓÐÓá£</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>´¹Ö±¼ä¾à</strong></td>
+    <td bgcolor="#FFFFFF">ͼÏñ´¹Ö±¼ä¾à£¬ÔÚÎÄ×Ö»·ÈÆͼÏñʱÌرðÓÐÓá£</td>
+  </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>·µ»Ø <a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+    <td align="right"><a href="#">¶¥²¿</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_link_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_link_button.htm
new file mode 100644 (file)
index 0000000..61adc2c
--- /dev/null
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>²åÈëÁ´½Ó°´Å¥</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">²åÈëÁ´½Ó°´Å¥</span></td>
+    <td align="right"><a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>´Ë°´Å¥»á´ò¿ª²åÈë/±à¼­Á´½ÓµÄ¶Ô»°´°¿Ú£º<br>
+<br>
+<img src="images/insert_link_window.gif" width="320" height="155" border="0"><br>
+<br>´°¿ÚÖÐÓÐÁ½¸ö±íµ¥Óò£¬µÚÒ»¸öÊÇÁ´½ÓµÄµØÖ·£¬µÚ¶þ¸öÊÇÁ´½ÓµÄ´ò¿ª·½Ê½¡£
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>·µ»Ø <a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+    <td align="right"><a href="#">¶¥²¿</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_table_button.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/insert_table_button.htm
new file mode 100644 (file)
index 0000000..40b6468
--- /dev/null
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>²åÈë±í¸ñ°´Å¥</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
+<link href="style.css" rel="stylesheet" type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
+  <tr> 
+    <td><span class="title">²åÈë±í¸ñ°´Å¥</span></td>
+    <td align="right"><a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+  </tr>
+</table>
+<hr noshade>
+<br>µã»÷<U>²åÈë±í¸ñ</U>°´Å¥»á´ò¿ªÒÔÏ´°¿Ú£¬´Ë²Ù×÷ÔÊÐíÄã´´½¨±í¸ñ¡£<br>
+<br>
+<img src="images/insert_table_window.gif" width="340" height="239" border="0"><br>
+<br>
+<strong>²ÎÊý˵Ã÷£º</strong><br>
+<table cellpadding="3" cellspacing="1" bgcolor="#000000">
+  <tr>
+    <td width="150" bgcolor="#EEEEEE"><strong>ÁÐÊý</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñÁÐÊý</td>
+  </tr>
+  <tr>
+    <td width="150" bgcolor="#EEEEEE"><strong>ÐÐÊý</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñÐÐÊý</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>Ìî³ä</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñµ¥Ôª¸ñµÄÌî³äÖµ</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>¼ä¾à</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñµ¥Ôª¸ñ¼ä¾à</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>¶ÔÆ뷽ʽ</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñ¶ÔÆ뷽ʽ</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>±ß¿ò</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñ±ß¿ò¿í¶È</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>¿í¶È</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñ¿í¶È£¬ÒÔÏóËØΪµ¥Î»¡£</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>¸ß¶È</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñ¸ß¶È£¬ÒÔÏóËØΪµ¥Î»¡£</td>
+  </tr>
+  <tr>
+    <td bgcolor="#EEEEEE"><strong>ÀàÃû</strong></td>
+    <td bgcolor="#FFFFFF">±í¸ñcssÑùʽÃû</td>
+  </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
+  <tr> 
+    <td>·µ»Ø <a href="index.htm">ÄÚÈÝÌáÒª</a></td>
+    <td align="right"><a href="#">¶¥²¿</a></td>
+  </tr>
+</table>
+<br>
+</BODY>
+</HTML>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/style.css b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/docs/zh_cn/style.css
new file mode 100644 (file)
index 0000000..975bc5a
--- /dev/null
@@ -0,0 +1,28 @@
+body { background-color: #FFFFFF; }
+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
+.subtitle { font-size: 12px; font-weight: bold; }
+
+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
+img { border: #000000 solid 1px; }
+
+a:visited { color: #666666; text-decoration: underline; }
+a:active { color: #666666; text-decoration: underline; }
+a:hover { color: #666666; text-decoration: underline; }
+a { color: #666666; text-decoration: underline; }
+
+.pageheader { border: #E0E0E0 solid 1px; }
+.pagefooter { border: #E0E0E0 solid 1px; }
+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
+.samplecontent { font-size: 10px; }
+
+.code { background-color: #FFFFFF; border: #000000 solid 1px; }
+.codecontent { font-size: 10px; }
+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
+
+hr { height: 1px; }
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/editor_template.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/editor_template.js
new file mode 100644 (file)
index 0000000..22ff502
--- /dev/null
@@ -0,0 +1,12 @@
+tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_advanced_autoImportCSSClasses=true;var TinyMCE_advanced_resizer=new Object();var TinyMCE_advanced_buttons=[['bold','{$lang_bold_img}','{$lang_bold_desc}','Bold'],['italic','{$lang_italic_img}','{$lang_italic_desc}','Italic'],['underline','{$lang_underline_img}','{$lang_underline_desc}','Underline'],['strikethrough','strikethrough.gif','{$lang_striketrough_desc}','Strikethrough'],['justifyleft','justifyleft.gif','{$lang_justifyleft_desc}','JustifyLeft'],['justifycenter','justifycenter.gif','{$lang_justifycenter_desc}','JustifyCenter'],['justifyright','justifyright.gif','{$lang_justifyright_desc}','JustifyRight'],['justifyfull','justifyfull.gif','{$lang_justifyfull_desc}','JustifyFull'],['bullist','bullist.gif','{$lang_bullist_desc}','InsertUnorderedList'],['numlist','numlist.gif','{$lang_numlist_desc}','InsertOrderedList'],['outdent','outdent.gif','{$lang_outdent_desc}','Outdent'],['indent','indent.gif','{$lang_indent_desc}','Indent'],['cut','cut.gif','{$lang_cut_desc}','Cut'],['copy','copy.gif','{$lang_copy_desc}','Copy'],['paste','paste.gif','{$lang_paste_desc}','Paste'],['undo','undo.gif','{$lang_undo_desc}','Undo'],['redo','redo.gif','{$lang_redo_desc}','Redo'],['link','link.gif','{$lang_link_desc}','mceLink',true],['unlink','unlink.gif','{$lang_unlink_desc}','unlink'],['image','image.gif','{$lang_image_desc}','mceImage',true],['cleanup','cleanup.gif','{$lang_cleanup_desc}','mceCleanup'],['help','help.gif','{$lang_help_desc}','mceHelp'],['code','code.gif','{$lang_theme_code_desc}','mceCodeEditor'],['hr','hr.gif','{$lang_theme_hr_desc}','inserthorizontalrule'],['removeformat','removeformat.gif','{$lang_theme_removeformat_desc}','removeformat'],['sub','sub.gif','{$lang_theme_sub_desc}','subscript'],['sup','sup.gif','{$lang_theme_sup_desc}','superscript'],['forecolor','forecolor.gif','{$lang_theme_forecolor_desc}','mceForeColor',true],['backcolor','backcolor.gif','{$lang_theme_backcolor_desc}','mceBackColor',true],['charmap','charmap.gif','{$lang_theme_charmap_desc}','mceCharMap'],['visualaid','visualaid.gif','{$lang_theme_visualaid_desc}','mceToggleVisualAid'],['anchor','anchor.gif','{$lang_theme_anchor_desc}','mceInsertAnchor'],['newdocument','newdocument.gif','{$lang_newdocument_desc}','mceNewDocument']];function TinyMCE_advanced_getControlHTML(button_name){var buttonTileMap=new Array('anchor.gif','backcolor.gif','bullist.gif','justifycenter.gif','charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif','cut.gif','forecolor.gif','justifyfull.gif','help.gif','hr.gif','image.gif','indent.gif','justifyleft.gif','link.gif','numlist.gif','outdent.gif','paste.gif','redo.gif','removeformat.gif','justifyright.gif','strikethrough.gif','sub.gif','sup.gif','undo.gif','unlink.gif','visualaid.gif');for(var i=0;i<TinyMCE_advanced_buttons.length;i++){var but=TinyMCE_advanced_buttons[i];if(but[0]==button_name){if(tinyMCE.settings['button_tile_map']){for(var x=0;!tinyMCE.isMSIE&&x<buttonTileMap.length;x++){if(buttonTileMap[x]==but[1]){var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\','+(but.length>4?but[4]:false)+(but.length>5?',\''+but[5]+'\'':'')+')';return '<a href="javascript:'+cmd+'" onclick="'+cmd+';return false;" onmousedown="return false;" target="_self"><img id="{$editor_id}_'+but[0]+'" src="{$themeurl}/images/spacer.gif" style="background-image:url({$themeurl}/images/buttons.gif); background-position: '+(0-(x*20))+'px 0px" title="'+but[2]+'" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';}}}var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\','+(but.length>4?but[4]:false)+(but.length>5?',\''+but[5]+'\'':'')+')';return '<a href="javascript:'+cmd+'" onclick="'+cmd+';return false;" onmousedown="return false;" target="_self"><img id="{$editor_id}_'+but[0]+'" src="{$themeurl}/images/'+but[1]+'" title="'+but[2]+'" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';}}switch(button_name){case "formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';var formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0]){html+='<option value="<'+lookup[x][0]+'>">'+lookup[x][1]+'</option>';}}}html+='</select>';return html;case "styleselect":return '<select id="{$editor_id}_styleSelect" onmousedown="TinyMCE_advanced_setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case "fontselect":var fontHTML='<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';var iFonts='Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';var nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sand;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';var fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(var i=0;i<fonts.length;i++){if(fonts[i]!=''){var parts=fonts[i].split('=');fontHTML+='<option value="'+parts[1]+'">'+parts[0]+'</option>';}}fontHTML+='</select>';return fontHTML;case "fontsizeselect":return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
+               <option value="0">{$lang_theme_font_size}</option>\
+               <option value="1">1 (8 pt)</option>\
+               <option value="2">2 (10 pt)</option>\
+               <option value="3">3 (12 pt)</option>\
+               <option value="4">4 (14 pt)</option>\
+               <option value="5">5 (18 pt)</option>\
+               <option value="6">6 (24 pt)</option>\
+               <option value="7">7 (36 pt)</option>\
+               </select>';case "|":case "separator":return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">';case "spacer":return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';case "rowseparator":return '<br />';}return "";}function TinyMCE_advanced_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceForeColor":var template=new Array();var elm=tinyMCE.selectedInstance.getFocusElement();var inputColor=tinyMCE.getAttrib(elm,"color");if(inputColor=='')inputColor=elm.style.color;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=220;template['height']=190;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",command:"forecolor",input_color:inputColor});return true;case "mceBackColor":var template=new Array();var elm=tinyMCE.selectedInstance.getFocusElement();var inputColor=elm.style.backgroundColor;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=220;template['height']=190;template['width']+=tinyMCE.getLang('lang_theme_advanced_backcolor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_backcolor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",command:"HiliteColor",input_color:inputColor});return true;case "mceColorPicker":if(user_interface){var template=new Array();var inputColor=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=220;template['height']=190;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:inputColor});}else{var savedVal=tinyMCE.lastColorPickerValue;var elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;eval('elm.onchange();');}return true;case "mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",500));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",400));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case "mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case "mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case "mceNewDocument":if(confirm(tinyMCE.getLang('lang_newdocument')))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,'');return true;}return false;}function TinyMCE_advanced_getEditorTemplate(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array();for(var i=0;i<in_array.length;i++){skip=false;for(var j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true;}}if(!skip){outArray[outArray.length]=in_array[i];}}return outArray;}function addToArray(in_array,add_array){for(var i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i];}return in_array;}var template=new Array();var deltaHeight=0;var resizing=tinyMCE.getParam("theme_advanced_resizing",false);var path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: '+(path?"block":"none")+'">&nbsp;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="TinyMCE_advanced_setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</option>';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option value="'+value+'">'+key+'</option>';}TinyMCE_advanced_autoImportCSSClasses=false;}switch(layoutManager){case "SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a href="#" accesskey="q" title="'+tinyMCE.getLang("lang_toolbar_focus")+'"></a>';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br />";deltaHeight-=23;}}toolbarHTML+='<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"></a>';template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';if(toolbarLocation=="top"){template['html']+='<tr><td class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap">'+toolbarHTML+'</td></tr>';}if(statusbarLocation=="top"){template['html']+='<tr><td class="mceStatusbarTop" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23;}template['html']+='<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom"){template['html']+='<tr><td class="mceToolbarBottom" align="'+toolbarAlign+'" height="1">'+toolbarHTML+'</td></tr>';}if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVars(toolbarHTML,tinyMCE.settings);toolbarHTML=tinyMCE.replaceVars(toolbarHTML,tinyMCELang);toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.replaceVar(toolbarHTML,"editor_id",editorId);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML);elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null;}if(statusbarLocation=="bottom"){template['html']+='<tr><td class="mceStatusbarBottom" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23;}template['html']+='</tbody></table>';break;case "RowLayout":template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i<containers.length;i++){if(containers[i]=="mceEditor"){template['html']+='<tr><td align="center" class="mceEditor_border">\
+                                                                                               <span id="{$editor_id}"></span>\
+                                                                                               </td></tr>';}else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom";}else if(i==0){pathClass="mceStatusbar";}else{deltaHeight-=2;}template['html']+='<tr><td class="'+pathClass+'" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=22;}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);for(var j=0;j<curContainer.length;j++){curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);}if(curContainer.length>0){curContainerHTML+="<br />";deltaHeight-=23;}template['html']+='<tr><td class="'+curCSS+'" align="'+curAlign+'" height="1">'+curContainerHTML+'</td></tr>';}}template['html']+='</tbody></table>';break;case "BorderLayout":break;case "CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);");}break;default:alert('UNDEFINED LAYOUT MANAGER! PLEASE CHECK YOUR TINYMCE CONFIG!');break;}if(resizing)template['html']+='<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;template['delta_height']=deltaHeight;return template;}function TinyMCE_advanced_setResizing(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_advanced_resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_advanced_resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_advanced_resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_advanced_resizeEventHandler);resizer.eventHandlers=true;}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true);}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE?"block":"table";tinyMCE.execCommand('mceResetDesignMode');}}function TinyMCE_advanced_initInstance(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_advanced_getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_advanced_getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_advanced_resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true));}}}function TinyMCE_advanced_setCookie(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie;}function TinyMCE_advanced_getCookie(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null;}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end));}function TinyMCE_advanced_resizeTo(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0;}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2;}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2;}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px";}}}function TinyMCE_advanced_resizeEventHandler(e){var resizer=TinyMCE_advanced_resizer;if(!resizer.resizing)return;e=typeof(e)=="undefined"?window.event:e;var dx=e.screenX-resizer.downX;var dy=e.screenY-resizer.downY;var resizeBox=resizer.resizeBox;var editorId=resizer.editorId;switch(e.type){case "mousemove":var w,h;w=resizer.width+dx;h=resizer.height+dy;w=w<1?1:w;h=h<1?1:h;if(resizer.horizontal)resizeBox.style.width=w+"px";resizeBox.style.height=h+"px";break;case "mouseup":TinyMCE_advanced_setResizing(e,editorId,false);TinyMCE_advanced_resizeTo(tinyMCE.getInstanceById(editorId),resizer.width+dx,resizer.height+dy,resizer.horizontal);if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var expires=new Date();expires.setTime(expires.getTime()+3600000*24*30);TinyMCE_advanced_setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_advanced_setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires);}break;}}function TinyMCE_advanced_getInsertLinkTemplate(){var template=new Array();template['file']='link.htm';template['width']=330;template['height']=170+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);return template;};function TinyMCE_advanced_getInsertImageTemplate(){var template=new Array();template['file']='image.htm?src={$src}';template['width']=340;template['height']=250+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return template;};function TinyMCE_advanced_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i<select_elm.options.length;i++){var ov=""+select_elm.options[i].value;if(first_index&&ov.toLowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return true;}if(ov==value){select_elm.selectedIndex=i;return true;}}}return false;};function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):"";};if(node==null){return;}var pathElm=document.getElementById(editor_id+"_path");var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();if(pathElm){var parentNode=node;var path=new Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break;}if(parentNode.nodeType==1){path[path.length]=parentNode;}parentNode=parentNode.parentNode;}var html="";for(var i=path.length-1;i>=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName=="b"){nodeName="strong";}if(nodeName=="i"){nodeName="em";}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+st+" ";}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+face+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+size+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+color+" ";}if(getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" ";}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+src+" ";}if(getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+href+" ";}if(nodeName=="img"&&tinyMCE.getAttrib(path[i],"class").indexOf('mceItemFlash')!=-1){nodeName="flash";nodeData="src: "+path[i].getAttribute('title');}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+anchor;nodeData="";}if(getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className;}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+='<a title="'+nodeData+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" target="_self" class="mcePathItem">'+nodeName+'</a>';if(i>0){html+=" &raquo; ";}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang_theme_path')+": "+html+'&nbsp;';}tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_link','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_unlink','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_image','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClassSticky(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClassSticky(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal',false);}tinyMCE.switchClassSticky(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal',false);if(undo_levels!=-1){tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonDisabled',true);}if(tinyMCE.getParentElement(node,"li,blockquote")){tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonNormal',false);}if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0)){tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonNormal',false);}if(undo_index!=-1&&(undo_index>0&&undo_levels>0)){tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonNormal',false);}var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_advanced_setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break;}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index;}var selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");else selectByValue(selectElm,"");}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="");}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"");}else selectByValue(selectElm,"");}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size);}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break;}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"");}else selectByValue(selectElm,"0");}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align')){continue;}switch(alignNode.getAttribute('align').toLowerCase()){case "left":tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case "right":tinyMCE.switchClassSticky(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case "middle":case "center":tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case "justify":tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break;}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var ar=new Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClassSticky(editor_id+ar[i+1],'mceButtonSelected');}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A")){tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonSelected');}}do{switch(node.nodeName){case "UL":tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonSelected');break;case "OL":tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonSelected');break;case "HR":tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonSelected');break;case "IMG":if(getAttrib(node,'name').indexOf('mce_')!=0){tinyMCE.switchClassSticky(editor_id+'_image','mceButtonSelected');}break;}}while((node=node.parentNode)!=null);};function TinyMCE_advanced_setupCSSClasses(editor_id){if(!TinyMCE_advanced_autoImportCSSClasses){return;}var selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(var i=0;i<csses.length;i++){selectElm.options[selectElm.length]=new Option(csses[i],csses[i]);}}if(csses!=null&&csses.length>0){selectElm.setAttribute('cssImported','true');}}};
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/editor_template_src.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/editor_template_src.js
new file mode 100644 (file)
index 0000000..b04d44f
--- /dev/null
@@ -0,0 +1,1208 @@
+/* Import theme specific language pack */
+tinyMCE.importThemeLanguagePack('advanced');
+
+// Variable declarations
+var TinyMCE_advanced_autoImportCSSClasses = true;
+var TinyMCE_advanced_resizer = new Object();
+var TinyMCE_advanced_buttons = [
+       // Control id, button img, button title, command, user_interface, value
+       ['bold', '{$lang_bold_img}', '{$lang_bold_desc}', 'Bold'],
+       ['italic', '{$lang_italic_img}', '{$lang_italic_desc}', 'Italic'],
+       ['underline', '{$lang_underline_img}', '{$lang_underline_desc}', 'Underline'],
+       ['strikethrough', 'strikethrough.gif', '{$lang_striketrough_desc}', 'Strikethrough'],
+       ['justifyleft', 'justifyleft.gif', '{$lang_justifyleft_desc}', 'JustifyLeft'],
+       ['justifycenter', 'justifycenter.gif', '{$lang_justifycenter_desc}', 'JustifyCenter'],
+       ['justifyright', 'justifyright.gif', '{$lang_justifyright_desc}', 'JustifyRight'],
+       ['justifyfull', 'justifyfull.gif', '{$lang_justifyfull_desc}', 'JustifyFull'],
+       ['bullist', 'bullist.gif', '{$lang_bullist_desc}', 'InsertUnorderedList'],
+       ['numlist', 'numlist.gif', '{$lang_numlist_desc}', 'InsertOrderedList'],
+       ['outdent', 'outdent.gif', '{$lang_outdent_desc}', 'Outdent'],
+       ['indent', 'indent.gif', '{$lang_indent_desc}', 'Indent'],
+       ['cut', 'cut.gif', '{$lang_cut_desc}', 'Cut'],
+       ['copy', 'copy.gif', '{$lang_copy_desc}', 'Copy'],
+       ['paste', 'paste.gif', '{$lang_paste_desc}', 'Paste'],
+       ['undo', 'undo.gif', '{$lang_undo_desc}', 'Undo'],
+       ['redo', 'redo.gif', '{$lang_redo_desc}', 'Redo'],
+       ['link', 'link.gif', '{$lang_link_desc}', 'mceLink', true],
+       ['unlink', 'unlink.gif', '{$lang_unlink_desc}', 'unlink'],
+       ['image', 'image.gif', '{$lang_image_desc}', 'mceImage', true],
+       ['cleanup', 'cleanup.gif', '{$lang_cleanup_desc}', 'mceCleanup'],
+       ['help', 'help.gif', '{$lang_help_desc}', 'mceHelp'],
+       ['code', 'code.gif', '{$lang_theme_code_desc}', 'mceCodeEditor'],
+       ['hr', 'hr.gif', '{$lang_theme_hr_desc}', 'inserthorizontalrule'],
+       ['removeformat', 'removeformat.gif', '{$lang_theme_removeformat_desc}', 'removeformat'],
+       ['sub', 'sub.gif', '{$lang_theme_sub_desc}', 'subscript'],
+       ['sup', 'sup.gif', '{$lang_theme_sup_desc}', 'superscript'],
+       ['forecolor', 'forecolor.gif', '{$lang_theme_forecolor_desc}', 'mceForeColor', true],
+       ['backcolor', 'backcolor.gif', '{$lang_theme_backcolor_desc}', 'mceBackColor', true],
+       ['charmap', 'charmap.gif', '{$lang_theme_charmap_desc}', 'mceCharMap'],
+       ['visualaid', 'visualaid.gif', '{$lang_theme_visualaid_desc}', 'mceToggleVisualAid'],
+       ['anchor', 'anchor.gif', '{$lang_theme_anchor_desc}', 'mceInsertAnchor'],
+       ['newdocument', 'newdocument.gif', '{$lang_newdocument_desc}', 'mceNewDocument']
+];
+
+/**
+ * Returns HTML code for the specificed control.
+ */
+function TinyMCE_advanced_getControlHTML(button_name)
+{
+       var buttonTileMap = new Array('anchor.gif','backcolor.gif','bullist.gif','justifycenter.gif',
+                                                                                       'charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif',
+                                                                                       'cut.gif','forecolor.gif','justifyfull.gif','help.gif','hr.gif',
+                                                                                       'image.gif','indent.gif','justifyleft.gif','link.gif','numlist.gif',
+                                                                                       'outdent.gif','paste.gif','redo.gif','removeformat.gif',
+                                                                                       'justifyright.gif','strikethrough.gif','sub.gif','sup.gif','undo.gif',
+                                                                                       'unlink.gif','visualaid.gif');
+
+       // Lookup button in button list
+       for (var i=0; i<TinyMCE_advanced_buttons.length; i++)
+       {
+               var but = TinyMCE_advanced_buttons[i];
+
+               if (but[0] == button_name)
+               {
+                       // Check for it in tilemap
+                       if (tinyMCE.settings['button_tile_map'])
+                       {
+                               for (var x=0; !tinyMCE.isMSIE && x<buttonTileMap.length; x++)
+                               {
+                                       if (buttonTileMap[x] == but[1])
+                                       {
+                                               var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\',' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ',\'' + but[5] + '\'' : '') + ')';
+                                               return '<a href="javascript:' + cmd + '" onclick="' + cmd + ';return false;" onmousedown="return false;" target="_self"><img id="{$editor_id}_' + but[0] +'" src="{$themeurl}/images/spacer.gif" style="background-image:url({$themeurl}/images/buttons.gif); background-position: ' + (0-(x*20)) + 'px 0px" title="' + but[2] + '" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';
+                                       }
+                               }
+                       }
+
+                       // Old style
+                       var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\',' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ',\'' + but[5] + '\'' : '') + ')';
+                       return '<a href="javascript:' + cmd + '" onclick="' + cmd + ';return false;" onmousedown="return false;" target="_self"><img id="{$editor_id}_' + but[0] + '" src="{$themeurl}/images/' + but[1] + '" title="' + but[2] + '" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" /></a>';
+               }
+       }
+
+       // Custom controlls other than buttons
+       switch (button_name)
+       {
+               case "formatselect":
+                       var html = '<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';
+                       var formats = tinyMCE.getParam("theme_advanced_blockformats", "p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');
+                       var lookup = [
+                               ['p', '{$lang_theme_paragraph}'],
+                               ['address', '{$lang_theme_address}'],
+                               ['pre', '{$lang_theme_pre}'],
+                               ['h1', '{$lang_theme_h1}'],
+                               ['h2', '{$lang_theme_h2}'],
+                               ['h3', '{$lang_theme_h3}'],
+                               ['h4', '{$lang_theme_h4}'],
+                               ['h5', '{$lang_theme_h5}'],
+                               ['h6', '{$lang_theme_h6}']
+                       ];
+
+                       html += '<option value="">{$lang_theme_block}</option>';
+
+                       // Build format select
+                       for (var i=0; i<formats.length; i++)
+                       {
+                               for (var x=0; x<lookup.length; x++)
+                               {
+                                       if (formats[i] == lookup[x][0])
+                                       {
+                                               html += '<option value="<' + lookup[x][0] + '>">' + lookup[x][1] + '</option>';
+                                       }
+                               }
+                       }
+
+                       html += '</select>';
+                       //formatselect
+               return html;
+
+               case "styleselect":
+                       //styleselect
+               return '<select id="{$editor_id}_styleSelect" onmousedown="TinyMCE_advanced_setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';
+
+               case "fontselect":
+                       var fontHTML = '<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';
+                       var iFonts = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
+                       var nFonts = 'Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sand;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';
+                       var fonts = tinyMCE.getParam("theme_advanced_fonts", nFonts).split(';');
+                       for (var i=0; i<fonts.length; i++) {
+                               if (fonts[i] != '') {
+                                       var parts = fonts[i].split('=');
+                                       fontHTML += '<option value="' + parts[1] + '">' + parts[0] + '</option>';
+                               }
+                       }
+
+                       fontHTML += '</select>';
+                       return fontHTML;
+
+               case "fontsizeselect":
+                       //fontsizeselect
+               return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
+               <option value="0">{$lang_theme_font_size}</option>\
+               <option value="1">1 (8 pt)</option>\
+               <option value="2">2 (10 pt)</option>\
+               <option value="3">3 (12 pt)</option>\
+               <option value="4">4 (14 pt)</option>\
+               <option value="5">5 (18 pt)</option>\
+               <option value="6">6 (24 pt)</option>\
+               <option value="7">7 (36 pt)</option>\
+               </select>';
+
+               case "|":
+               case "separator":
+               return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">';
+
+               case "spacer":
+               return '<img src="{$themeurl}/images/spacer.gif" width="1" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';
+
+               case "rowseparator":
+               return '<br />';
+       }
+
+       return "";
+}
+
+/**
+ * Theme specific exec command handeling.
+ */
+function TinyMCE_advanced_execCommand(editor_id, element, command, user_interface, value)
+{
+       switch (command)
+       {
+               case "mceForeColor":
+                       var template = new Array();
+                       var elm = tinyMCE.selectedInstance.getFocusElement();
+                       var inputColor = tinyMCE.getAttrib(elm, "color");
+
+                       if (inputColor == '')
+                               inputColor = elm.style.color;
+
+                       if (!inputColor)
+                               inputColor = "#000000";
+
+                       template['file'] = 'color_picker.htm';
+                       template['width'] = 220;
+                       template['height'] = 190;
+
+                       tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", command : "forecolor", input_color : inputColor});
+               return true;
+
+               case "mceBackColor":
+                       var template = new Array();
+                       var elm = tinyMCE.selectedInstance.getFocusElement();
+                       var inputColor = elm.style.backgroundColor;
+
+                       if (!inputColor)
+                               inputColor = "#000000";
+
+                       template['file'] = 'color_picker.htm';
+                       template['width'] = 220;
+                       template['height'] = 190;
+
+                       template['width'] += tinyMCE.getLang('lang_theme_advanced_backcolor_delta_width', 0);
+                       template['height'] += tinyMCE.getLang('lang_theme_advanced_backcolor_delta_height', 0);
+
+                       tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", command : "HiliteColor", input_color : inputColor});
+                       //mceBackColor
+               return true;
+
+               case "mceColorPicker":
+                       if (user_interface) {
+                               var template = new Array();
+                               var inputColor = value['document'].getElementById(value['element_id']).value;
+
+                               template['file'] = 'color_picker.htm';
+                               template['width'] = 220;
+                               template['height'] = 190;
+                               template['close_previous'] = "no";
+
+                               template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0);
+                               template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0);
+
+                               if (typeof(value['store_selection']) == "undefined")
+                                       value['store_selection'] = true;
+
+                               tinyMCE.lastColorPickerValue = value;
+                               tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : inputColor});
+                       } else {
+                               var savedVal = tinyMCE.lastColorPickerValue;
+                               var elm = savedVal['document'].getElementById(savedVal['element_id']);
+                               elm.value = value;
+                               eval('elm.onchange();');
+                       }
+               return true;
+
+               case "mceCodeEditor":
+                       var template = new Array();
+
+                       template['file'] = 'source_editor.htm';
+                       template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 500));
+                       template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 400));
+
+                       tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"});
+                       //mceCodeEditor
+               return true;
+
+               case "mceCharMap":
+                       var template = new Array();
+
+                       template['file'] = 'charmap.htm';
+                       template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0);
+                       template['height'] = 250;
+
+                       template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0);
+                       template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0);
+
+                       tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+                       //mceCharMap
+               return true;
+
+               case "mceInsertAnchor":
+                       var template = new Array();
+
+                       template['file'] = 'anchor.htm';
+                       template['width'] = 320;
+                       template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0);
+
+                       template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0);
+                       template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0);
+
+                       tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+               return true;
+
+               case "mceNewDocument":
+                       if (confirm(tinyMCE.getLang('lang_newdocument')))
+                               tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, '');
+
+                       return true;
+       }
+
+       // Default behavior
+       return false;
+}
+
+/**
+ * Editor instance template function.
+ */
+function TinyMCE_advanced_getEditorTemplate(settings, editorId)
+{
+       function removeFromArray(in_array, remove_array)
+       {
+               var outArray = new Array();
+               
+               for (var i=0; i<in_array.length; i++)
+               {
+                       skip = false;
+
+                       for (var j=0; j<remove_array.length; j++)
+                       {
+                               if (in_array[i] == remove_array[j])
+                               {
+                                       skip = true;
+                               }
+                       }
+
+                       if (!skip)
+                       {
+                               outArray[outArray.length] = in_array[i];
+                       }
+               }
+
+               return outArray;
+       }
+
+       function addToArray(in_array, add_array)
+       {
+               for (var i=0; i<add_array.length; i++)
+               {
+                       in_array[in_array.length] = add_array[i];
+               }
+
+               return in_array;
+       }
+
+       var template = new Array();
+       var deltaHeight = 0;
+
+       var resizing = tinyMCE.getParam("theme_advanced_resizing", false);
+       var path = tinyMCE.getParam("theme_advanced_path", true);
+       var statusbarHTML = '<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: ' + (path ? "block" : "none") + '">&nbsp;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: ' + (resizing ? "block" : "none") + '" onmousedown="TinyMCE_advanced_setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';
+       var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout");
+
+       // Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY!
+       var styleSelectHTML = '<option value="">{$lang_theme_style_select}</option>';
+       if (settings['theme_advanced_styles']) {
+               var stylesAr = settings['theme_advanced_styles'].split(';');
+               
+               for (var i=0; i<stylesAr.length; i++) {
+                       var key, value;
+
+                       key = stylesAr[i].split('=')[0];
+                       value = stylesAr[i].split('=')[1];
+
+                       styleSelectHTML += '<option value="' + value + '">' + key + '</option>';
+               }
+
+               TinyMCE_advanced_autoImportCSSClasses = false;
+       }
+
+       switch(layoutManager) {
+               case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)...
+                       var toolbarHTML = "";
+                       var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
+                       var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");
+                       var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity
+                       var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation);
+                       var defVals = {
+                               theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",
+                               theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",
+                               theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap"
+                       };
+
+                       // Add accessibility control
+                       toolbarHTML += '<a href="#" accesskey="q" title="' + tinyMCE.getLang("lang_toolbar_focus") + '"></a>';
+
+                       // Render rows
+                       for (var i=1; i<100; i++) {
+                               var def = defVals["theme_advanced_buttons" + i];
+
+                               var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ? '' : def, true, ',');
+                               if (buttons.length == 0)
+                                       break;
+
+                               buttons = removeFromArray(buttons, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
+                               buttons = addToArray(buttons, tinyMCE.getParam("theme_advanced_buttons" + i + "_add", "", true, ','));
+                               buttons = addToArray(tinyMCE.getParam("theme_advanced_buttons" + i + "_add_before", "", true, ','), buttons);
+
+                               for (var b=0; b<buttons.length; b++)
+                                       toolbarHTML += tinyMCE.getControlHTML(buttons[b]);
+
+                               if (buttons.length > 0) {
+                                       toolbarHTML += "<br />";
+                                       deltaHeight -= 23;
+                               }
+                       }
+
+                       // Add accessibility control
+                       toolbarHTML += '<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"></a>';
+
+                       // Setup template html
+                       template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';
+
+                       if (toolbarLocation == "top")
+                       {
+                               template['html'] += '<tr><td class="mceToolbarTop" align="' + toolbarAlign + '" height="1" nowrap="nowrap">' + toolbarHTML + '</td></tr>';
+                       }
+
+                       if (statusbarLocation == "top")
+                       {
+                               template['html'] += '<tr><td class="mceStatusbarTop" height="1">' + statusbarHTML + '</td></tr>';
+                               deltaHeight -= 23;
+                       }
+
+                       template['html'] += '<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';
+
+                       if (toolbarLocation == "bottom")
+                       {
+                               template['html'] += '<tr><td class="mceToolbarBottom" align="' + toolbarAlign + '" height="1">' + toolbarHTML + '</td></tr>';
+                       }
+
+                       // External toolbar changes
+                       if (toolbarLocation == "external")
+                       {
+                               var bod = document.body;
+                               var elm = document.createElement ("div");
+                               
+                               toolbarHTML = tinyMCE.replaceVars(toolbarHTML, tinyMCE.settings);
+                               toolbarHTML = tinyMCE.replaceVars(toolbarHTML, tinyMCELang);
+                               toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML);
+                               toolbarHTML = tinyMCE.replaceVar(toolbarHTML, "editor_id", editorId);
+                               toolbarHTML = tinyMCE.applyTemplate(toolbarHTML);
+
+                               elm.className = "mceToolbarExternal";
+                               elm.id = editorId+"_toolbar";
+                               elm.innerHTML = '<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';
+                               bod.appendChild (elm);
+                               // bod.style.marginTop = elm.offsetHeight + "px";
+
+                               deltaHeight = 0;
+                               tinyMCE.getInstanceById(editorId).toolbarElement = elm;
+
+                               //template['html'] = '<div id="mceExternalToolbar" align="center" class="mceToolbarExternal"><table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table></div>' + template["html"];
+                       }
+                       else
+                       {
+                               tinyMCE.getInstanceById(editorId).toolbarElement = null;
+                       }
+
+                       if (statusbarLocation == "bottom")
+                       {
+                               template['html'] += '<tr><td class="mceStatusbarBottom" height="1">' + statusbarHTML + '</td></tr>';
+                               deltaHeight -= 23;
+                       }
+
+                       template['html'] += '</tbody></table>';
+                       //"SimpleLayout"
+               break;
+
+               case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom.
+                       template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';
+
+                       var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");
+                       var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container");
+                       var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center");
+
+                       //Render Containers:
+                       for (var i = 0; i < containers.length; i++)
+                       {
+                               if (containers[i] == "mceEditor") //Exceptions for mceEditor and ...
+                               {
+                                       template['html'] += '<tr><td align="center" class="mceEditor_border">\
+                                                                                               <span id="{$editor_id}"></span>\
+                                                                                               </td></tr>';
+                               }
+                               else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath:
+                               {
+                                       var pathClass = "mceStatusbar";
+
+                                       if (i == containers.length-1)
+                                       {
+                                               pathClass = "mceStatusbarBottom";
+                                       }
+                                       else if (i == 0)
+                                       {
+                                               pathClass = "mceStatusbar";
+                                       }
+                                       else
+                                       {
+                                               deltaHeight-=2;
+                                       }
+
+                                       template['html'] += '<tr><td class="' + pathClass + '" height="1">' + statusbarHTML + '</td></tr>';
+                                       deltaHeight -= 22;
+                               }
+                               else //Render normal Container:
+                               {
+                                       var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ',');
+                                       var curContainerHTML = "";
+                                       var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);
+                                       var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);
+
+                                       for (var j=0; j<curContainer.length; j++)
+                                       {
+                                               curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
+                                       }
+
+                                       if (curContainer.length > 0)
+                                       {
+                                               curContainerHTML += "<br />";
+                                               deltaHeight -= 23;
+                                       }
+
+                                       template['html'] += '<tr><td class="' + curCSS + '" align="' + curAlign + '" height="1">' + curContainerHTML + '</td></tr>';
+                               }
+                       }
+
+                       template['html'] += '</tbody></table>';
+                       //RowLayout
+               break;
+
+               case "BorderLayout" : //will be like java.awt.BorderLayout of SUN Java...
+                       // Not implemented yet... 
+               break;
+
+               case "CustomLayout" : //User defined layout callback...
+                       var customLayout = tinyMCE.getParam("theme_advanced_custom_layout","");
+                       
+                       if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined")
+                       {
+                               template = eval(customLayout + "(template);");
+                       }
+               break;
+                       
+               default:
+                       alert('UNDEFINED LAYOUT MANAGER! PLEASE CHECK YOUR TINYMCE CONFIG!');
+                       //CustomLayout
+               break;
+       }
+
+       if (resizing)
+               template['html'] += '<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';
+
+       template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML);
+       template['delta_width'] = 0;
+       template['delta_height'] = deltaHeight;
+
+       return template;
+}
+
+/**
+ * Starts/stops the editor resizing.
+ */
+function TinyMCE_advanced_setResizing(e, editor_id, state) {
+       e = typeof(e) == "undefined" ? window.event : e;
+
+       var resizer = TinyMCE_advanced_resizer;
+       var editorContainer = document.getElementById(editor_id + '_parent');
+       var editorArea = document.getElementById(editor_id + '_parent').firstChild;
+       var resizeBox = document.getElementById(editor_id + '_resize_box');
+       var inst = tinyMCE.getInstanceById(editor_id);
+
+       if (state) {
+               // Place box over editor area
+               var width = editorArea.clientWidth;
+               var height = editorArea.clientHeight;
+
+               resizeBox.style.width = width + "px";
+               resizeBox.style.height = height + "px";
+
+               resizer.iframeWidth = inst.iframeElement.clientWidth;
+               resizer.iframeHeight = inst.iframeElement.clientHeight;
+
+               // Hide editor and show resize box
+               editorArea.style.display = "none";
+               resizeBox.style.display = "block";
+
+               // Add event handlers, only once
+               if (!resizer.eventHandlers) {
+                       if (tinyMCE.isMSIE)
+                               tinyMCE.addEvent(document, "mousemove", TinyMCE_advanced_resizeEventHandler);
+                       else
+                               tinyMCE.addEvent(window, "mousemove", TinyMCE_advanced_resizeEventHandler);
+
+                       tinyMCE.addEvent(document, "mouseup", TinyMCE_advanced_resizeEventHandler);
+
+                       resizer.eventHandlers = true;
+               }
+
+               resizer.resizing = true;
+               resizer.downX = e.screenX;
+               resizer.downY = e.screenY;
+               resizer.width = parseInt(resizeBox.style.width);
+               resizer.height = parseInt(resizeBox.style.height);
+               resizer.editorId = editor_id;
+               resizer.resizeBox = resizeBox;
+               resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true);
+       } else {
+               resizer.resizing = false;
+               resizeBox.style.display = "none";
+               editorArea.style.display = tinyMCE.isMSIE ? "block" : "table";
+               tinyMCE.execCommand('mceResetDesignMode');
+       }
+}
+
+function TinyMCE_advanced_initInstance(inst) {
+       if (tinyMCE.getParam("theme_advanced_resizing", false)) {
+               if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
+                       var w = TinyMCE_advanced_getCookie("TinyMCE_" + inst.editorId + "_width");
+                       var h = TinyMCE_advanced_getCookie("TinyMCE_" + inst.editorId + "_height");
+
+                       TinyMCE_advanced_resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true));
+               }
+       }
+}
+
+function TinyMCE_advanced_setCookie(name, value, expires, path, domain, secure) {
+       var curCookie = name + "=" + escape(value) +
+               ((expires) ? "; expires=" + expires.toGMTString() : "") +
+               ((path) ? "; path=" + escape(path) : "") +
+               ((domain) ? "; domain=" + domain : "") +
+               ((secure) ? "; secure" : "");
+
+       document.cookie = curCookie;
+}
+
+function TinyMCE_advanced_getCookie(name) {
+       var dc = document.cookie;
+       var prefix = name + "=";
+       var begin = dc.indexOf("; " + prefix);
+
+       if (begin == -1) {
+               begin = dc.indexOf(prefix);
+
+               if (begin != 0)
+                       return null;
+       } else
+               begin += 2;
+
+       var end = document.cookie.indexOf(";", begin);
+
+       if (end == -1)
+               end = dc.length;
+
+       return unescape(dc.substring(begin + prefix.length, end));
+}
+
+function TinyMCE_advanced_resizeTo(inst, w, h, set_w) {
+       var editorContainer = document.getElementById(inst.editorId + '_parent');
+       var tableElm = editorContainer.firstChild;
+       var iframe = inst.iframeElement;
+
+       if (w == null || w == "null") {
+               set_w = false;
+               w = 0;
+       }
+
+       if (h == null || h == "null")
+               return;
+
+       w = parseInt(w);
+       h = parseInt(h);
+
+       if (tinyMCE.isGecko) {
+               w += 2;
+               h += 2;
+       }
+
+       var dx = w - tableElm.clientWidth;
+       var dy = h - tableElm.clientHeight;
+
+       w = w < 1 ? 30 : w;
+       h = h < 1 ? 30 : h;
+
+       if (set_w)
+               tableElm.style.width = w + "px";
+
+       tableElm.style.height = h + "px";
+
+       iw = iframe.clientWidth + dx;
+       ih = iframe.clientHeight + dy;
+
+       iw = iw < 1 ? 30 : iw;
+       ih = ih < 1 ? 30 : ih;
+
+       if (tinyMCE.isGecko) {
+               iw -= 2;
+               ih -= 2;
+       }
+
+       if (set_w)
+               iframe.style.width = iw + "px";
+
+       iframe.style.height = ih + "px";
+
+       // Is it to small, make it bigger again
+       if (set_w) {
+               var tableBodyElm = tableElm.firstChild;
+               var minIframeWidth = tableBodyElm.scrollWidth;
+               if (inst.iframeElement.clientWidth < minIframeWidth) {
+                       dx = minIframeWidth - inst.iframeElement.clientWidth;
+
+                       inst.iframeElement.style.width = (iw + dx) + "px";
+               }
+       }
+}
+
+/**
+ * Handles resizing events.
+ */
+function TinyMCE_advanced_resizeEventHandler(e) {
+       var resizer = TinyMCE_advanced_resizer;
+
+       // Do nothing
+       if (!resizer.resizing)
+               return;
+
+       e = typeof(e) == "undefined" ? window.event : e;
+
+       var dx = e.screenX - resizer.downX;
+       var dy = e.screenY - resizer.downY;
+       var resizeBox = resizer.resizeBox;
+       var editorId = resizer.editorId;
+
+       switch (e.type) {
+               case "mousemove":
+                       var w, h;
+
+                       w = resizer.width + dx;
+                       h = resizer.height + dy;
+
+                       w = w < 1 ? 1 : w;
+                       h = h < 1 ? 1 : h;
+
+                       if (resizer.horizontal)
+                               resizeBox.style.width = w + "px";
+
+                       resizeBox.style.height = h + "px";
+                       break;
+
+               case "mouseup":
+                       TinyMCE_advanced_setResizing(e, editorId, false);
+                       TinyMCE_advanced_resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal);
+
+                       // Expire in a month
+                       if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {
+                               var expires = new Date();
+                               expires.setTime(expires.getTime() + 3600000 * 24 * 30);
+
+                               // Set the cookies
+                               TinyMCE_advanced_setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires);
+                               TinyMCE_advanced_setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires);
+                       }
+                       break;
+       }
+}
+
+/**
+ * Insert link template function.
+ */
+function TinyMCE_advanced_getInsertLinkTemplate()
+{
+       var template = new Array();
+
+       template['file'] = 'link.htm';
+       template['width'] = 330;
+       template['height'] = 170 + (tinyMCE.isMSIE ? 25 : 0);
+
+       // Language specific width and height addons
+       template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
+       template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
+
+       return template;
+};
+
+/**
+ * Insert image template function.
+ */
+function TinyMCE_advanced_getInsertImageTemplate() {
+       var template = new Array();
+
+       template['file'] = 'image.htm?src={$src}';
+       template['width'] = 340;
+       template['height'] = 250 + (tinyMCE.isMSIE ? 25 : 0);
+
+       // Language specific width and height addons
+       template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
+       template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
+
+       return template;
+};
+
+/**
+ * Node change handler.
+ */
+function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) {
+       function selectByValue(select_elm, value, first_index) {
+               first_index = typeof(first_index) == "undefined" ? false : true;
+
+               if (select_elm) {
+                       for (var i=0; i<select_elm.options.length; i++) {
+                               var ov = "" + select_elm.options[i].value;
+
+                               if (first_index && ov.toLowerCase().indexOf(value.toLowerCase()) == 0) {
+                                       select_elm.selectedIndex = i;
+                                       return true;
+                               }
+
+                               if (ov == value) {
+                                       select_elm.selectedIndex = i;
+                                       return true;
+                               }
+                       }
+               }
+
+               return false;
+       };
+
+       function getAttrib(elm, name) {
+               return elm.getAttribute(name) ? elm.getAttribute(name) : "";
+       };
+
+       // No node provided
+       if (node == null)
+       {
+               return;
+       }
+
+       // Update path
+       var pathElm = document.getElementById(editor_id + "_path");
+       var inst = tinyMCE.getInstanceById(editor_id);
+       var doc = inst.getDoc();
+
+       if (pathElm) {
+               // Get node path
+               var parentNode = node;
+               var path = new Array();
+               
+               while (parentNode != null) {
+                       if (parentNode.nodeName.toUpperCase() == "BODY") {
+                               break;
+                       }
+
+                       // Only append element nodes to path
+                       if (parentNode.nodeType == 1) {
+                               path[path.length] = parentNode;
+                       }
+
+                       parentNode = parentNode.parentNode;
+               }
+
+               // Setup HTML
+               var html = "";
+               for (var i=path.length-1; i>=0; i--) {
+                       var nodeName = path[i].nodeName.toLowerCase();
+                       var nodeData = "";
+
+                       if (nodeName == "b") {
+                               nodeName = "strong";
+                       }
+
+                       if (nodeName == "i") {
+                               nodeName = "em";
+                       }
+
+                       if (nodeName == "span") {
+                               var cn = tinyMCE.getAttrib(path[i], "class");
+                               if (cn != "" && cn.indexOf('mceItem') == -1)
+                                       nodeData += "class: " + cn + " ";
+
+                               var st = tinyMCE.getAttrib(path[i], "style");
+                               if (st != "") {
+                                       st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st));
+                                       nodeData += "style: " + st + " ";
+                               }
+                       }
+
+                       if (nodeName == "font") {
+                               if (tinyMCE.getParam("convert_fonts_to_spans"))
+                                       nodeName = "span";
+
+                               var face = tinyMCE.getAttrib(path[i], "face");
+                               if (face != "")
+                                       nodeData += "font: " + face + " ";
+
+                               var size = tinyMCE.getAttrib(path[i], "size");
+                               if (size != "")
+                                       nodeData += "size: " + size + " ";
+
+                               var color = tinyMCE.getAttrib(path[i], "color");
+                               if (color != "")
+                                       nodeData += "color: " + color + " ";
+                       }
+
+                       if (getAttrib(path[i], 'id') != "") {
+                               nodeData += "id: " + path[i].getAttribute('id') + " ";
+                       }
+
+                       var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
+                       if (className != "" && className.indexOf('mceItem') == -1)
+                               nodeData += "class: " + className + " ";
+
+                       if (getAttrib(path[i], 'src') != "") {
+                               var src = tinyMCE.getAttrib(path[i], "mce_src");
+
+                               if (src == "")
+                                        src = tinyMCE.getAttrib(path[i], "src");
+
+                               nodeData += "src: " + src + " ";
+                       }
+
+                       if (getAttrib(path[i], 'href') != "") {
+                               var href = tinyMCE.getAttrib(path[i], "mce_href");
+
+                               if (href == "")
+                                        href = tinyMCE.getAttrib(path[i], "href");
+
+                               nodeData += "href: " + href + " ";
+                       }
+
+                       if (nodeName == "img" && tinyMCE.getAttrib(path[i], "class").indexOf('mceItemFlash') != -1) {
+                               nodeName = "flash";
+                               nodeData = "src: " + path[i].getAttribute('title');
+                       }
+
+                       if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") {
+                               nodeName = "a";
+                               nodeName += "#" + anchor;
+                               nodeData = "";
+                       }
+
+                       if (getAttrib(path[i], 'name').indexOf("mce_") != 0) {
+                               var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);
+                               if (className != "" && className.indexOf('mceItem') == -1) {
+                                       nodeName += "." + className;
+                               }
+                       }
+
+                       var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');';
+                       html += '<a title="' + nodeData + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" target="_self" class="mcePathItem">' + nodeName + '</a>';
+
+                       if (i > 0) {
+                               html += " &raquo; ";
+                       }
+               }
+
+               pathElm.innerHTML = '<a href="#" accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') + ": " + html + '&nbsp;';
+       }
+
+       // Reset old states
+       tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_link', 'mceButtonDisabled', true);
+       tinyMCE.switchClassSticky(editor_id + '_unlink', 'mceButtonDisabled', true);
+       tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonDisabled', true);
+       tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonNormal');
+       tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonNormal');
+
+       if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1)
+               tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonSelected');
+
+       // Get link
+       var anchorLink = tinyMCE.getParentElement(node, "a", "href");
+
+       if (anchorLink || any_selection)
+       {
+               tinyMCE.switchClassSticky(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false);
+               tinyMCE.switchClassSticky(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal', false);
+       }
+
+       // Handle visual aid
+       tinyMCE.switchClassSticky(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal', false);
+
+       if (undo_levels != -1)
+       {
+               tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonDisabled', true);
+               tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonDisabled', true);
+       }
+
+       // Within li, blockquote
+       if (tinyMCE.getParentElement(node, "li,blockquote"))
+       {
+               tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonNormal', false);
+       }
+
+       // Has redo levels
+       if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))
+       {
+               tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonNormal', false);
+       }
+
+       // Has undo levels
+       if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
+       {
+               tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonNormal', false);
+       }
+
+       // Select class in select box
+       var selectElm = document.getElementById(editor_id + "_styleSelect");
+       
+       if (selectElm)
+       {
+               TinyMCE_advanced_setupCSSClasses(editor_id);
+
+               classNode = node;
+               breakOut = false;
+               var index = 0;
+
+               do
+               {
+                       if (classNode && classNode.className)
+                       {
+                               for (var i=0; i<selectElm.options.length; i++)
+                               {
+                                       if (selectElm.options[i].value == classNode.className)
+                                       {
+                                               index = i;
+                                               breakOut = true;
+                                               break;
+                                       }
+                               }
+                       }
+               } while (!breakOut && classNode != null && (classNode = classNode.parentNode) != null);
+
+               selectElm.selectedIndex = index;
+       }
+
+       // Select formatblock
+       var selectElm = document.getElementById(editor_id + "_formatSelect");
+       if (selectElm) {
+               var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");
+
+               if (elm)
+                       selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");
+               else
+                       selectByValue(selectElm, "");
+       }
+
+       // Select fontselect
+       var selectElm = document.getElementById(editor_id + "_fontNameSelect");
+       if (selectElm) {
+               if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) {
+                       var face = inst.queryCommandValue('FontName');
+
+                       face = face == null || face == "" ? "" : face;
+
+                       selectByValue(selectElm, face, face != "");
+               } else {
+                       var elm = tinyMCE.getParentElement(node, "font", "face");
+
+                       if (elm) {
+                               var family = tinyMCE.getAttrib(elm, "face");
+
+                               if (family == '')
+                                       family = '' + elm.style.fontFamily;
+
+                               if (!selectByValue(selectElm, family, family != ""))
+                                       selectByValue(selectElm, "");
+                       } else
+                               selectByValue(selectElm, "");
+               }
+       }
+
+       // Select fontsize
+       var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
+       if (selectElm) {
+               if (!tinyMCE.isSafari && !tinyMCE.isOpera) {
+                       var size = inst.queryCommandValue('FontSize');
+                       selectByValue(selectElm, size == null || size == "" ? "0" : size);
+               } else {
+                       var elm = tinyMCE.getParentElement(node, "font", "size");
+                       if (elm) {
+                               var size = tinyMCE.getAttrib(elm, "size");
+
+                               if (size == '') {
+                                       var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px');
+
+                                       size = '' + elm.style.fontSize;
+
+                                       for (var i=0; i<sizes.length; i++) {
+                                               if (('' + sizes[i]) == size) {
+                                                       size = i;
+                                                       break;
+                                               }
+                                       }
+                               }
+
+                               if (!selectByValue(selectElm, size))
+                                       selectByValue(selectElm, "");
+                       } else
+                               selectByValue(selectElm, "0");
+               }
+       }
+
+       // Handle align attributes
+       alignNode = node;
+       breakOut = false;
+       do {
+               if (!alignNode.getAttribute || !alignNode.getAttribute('align')) {
+                       continue;
+               }
+
+               switch (alignNode.getAttribute('align').toLowerCase()) {
+                       case "left":
+                               tinyMCE.switchClassSticky(editor_id + '_justifyleft', 'mceButtonSelected');
+                               breakOut = true;
+                       break;
+
+                       case "right":
+                               tinyMCE.switchClassSticky(editor_id + '_justifyright', 'mceButtonSelected');
+                               breakOut = true;
+                       break;
+
+                       case "middle":
+                       case "center":
+                               tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonSelected');
+                               breakOut = true;
+                       break;
+
+                       case "justify":
+                               tinyMCE.switchClassSticky(editor_id + '_justifyfull', 'mceButtonSelected');
+                               breakOut = true;
+                       break;
+               }
+       } while (!breakOut && (alignNode = alignNode.parentNode) != null);
+
+       // Div justification
+       var div = tinyMCE.getParentElement(node, "div");
+       if (div && div.style.textAlign == "center")
+               tinyMCE.switchClassSticky(editor_id + '_justifycenter', 'mceButtonSelected');
+
+       // Do special text
+       if (!setup_content) {
+               // , "JustifyLeft", "_justifyleft", "JustifyCenter", "justifycenter", "JustifyRight", "justifyright", "JustifyFull", "justifyfull", "InsertUnorderedList", "bullist", "InsertOrderedList", "numlist", "InsertUnorderedList", "bullist", "Outdent", "outdent", "Indent", "indent", "subscript", "sub"
+               var ar = new Array("Bold", "_bold", "Italic", "_italic", "Strikethrough", "_strikethrough", "superscript", "_sup", "subscript", "_sub");
+               for (var i=0; i<ar.length; i+=2) {
+                       if (inst.queryCommandState(ar[i]))
+                               tinyMCE.switchClassSticky(editor_id + ar[i+1], 'mceButtonSelected');
+               }
+
+               if (inst.queryCommandState("Underline") && (node.parentNode == null || node.parentNode.nodeName != "A")) {
+                       tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
+               }
+       }
+
+       // Handle elements
+       do {
+               switch (node.nodeName) {
+/*                     case "B":
+                       case "STRONG":
+                               tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
+                       break;
+
+                       case "I":
+                       case "EM":
+                               tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected');
+                       break;
+
+                       case "U":
+                               tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
+                       break;
+
+                       case "STRIKE":
+                               tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');
+                       break;*/
+
+                       case "UL":
+                               tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');
+                       break;
+
+                       case "OL":
+                               tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected');
+                       break;
+
+                       case "HR":
+                                tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonSelected');
+                       break;
+
+                       case "IMG":
+                       if (getAttrib(node, 'name').indexOf('mce_') != 0) {
+                               tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonSelected');
+                       }
+                       break;
+               }
+       } while ((node = node.parentNode) != null);
+};
+
+// This function auto imports CSS classes into the class selection droplist
+function TinyMCE_advanced_setupCSSClasses(editor_id) {
+       if (!TinyMCE_advanced_autoImportCSSClasses)     {
+               return;
+       }
+
+       var selectElm = document.getElementById(editor_id + '_styleSelect');
+
+       if (selectElm && selectElm.getAttribute('cssImported') != 'true') {
+               var csses = tinyMCE.getCSSClasses(editor_id);
+               if (csses && selectElm) {
+                       for (var i=0; i<csses.length; i++) {
+                               selectElm.options[selectElm.length] = new Option(csses[i], csses[i]);
+                       }
+               }
+
+               // Only do this once
+               if (csses != null && csses.length > 0) {
+                       selectElm.setAttribute('cssImported', 'true');
+               }
+       }
+};
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/image.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/image.htm
new file mode 100644 (file)
index 0000000..62a1487
--- /dev/null
@@ -0,0 +1,91 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_insert_image_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/image.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertImage();return false;">
+  <table border="0" cellpadding="0" cellspacing="0" width="200">
+    <tr>
+      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
+          <tr>
+            <td colspan="2" class="title" nowrap="nowrap">{$lang_insert_image_title}</td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_src}:</td>
+            <td><table border="0" cellspacing="0" cellpadding="0">
+                <tr>
+                  <td><input name="src" type="text" id="src" value="" style="width: 200px" onchange="getImageData();"></td>
+                  <td id="srcbrowsercontainer">&nbsp;</td>
+                </tr>
+              </table></td>
+          </tr>
+                 <!-- Image list -->
+                 <script language="javascript">
+                       if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+                               var html = "";
+
+                               html += '<tr><td>{$lang_image_list}:</td>';
+                               html += '<td><select name="image_list" style="width: 200px" onchange="this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';
+                               html += '<option value="">---</option>';
+
+                               for (var i=0; i<tinyMCEImageList.length; i++)
+                                       html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
+
+                               html += '</select></td></tr>';
+
+                               document.write(html);
+                       }
+                 </script>
+                 <!-- /Image list -->
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_alt}:</td>
+            <td><input name="alt" type="text" id="alt" value="" style="width: 200px"></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_align}:</td>
+            <td><select name="align">
+                <option value="">{$lang_insert_image_align_default}</option>
+                <option value="baseline">{$lang_insert_image_align_baseline}</option>
+                <option value="top">{$lang_insert_image_align_top}</option>
+                <option value="middle">{$lang_insert_image_align_middle}</option>
+                <option value="bottom">{$lang_insert_image_align_bottom}</option>
+                <option value="texttop">{$lang_insert_image_align_texttop}</option>
+                <option value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
+                <option value="absbottom">{$lang_insert_image_align_absbottom}</option>
+                <option value="left">{$lang_insert_image_align_left}</option>
+                <option value="right">{$lang_insert_image_align_right}</option>
+              </select></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_dimensions}:</td>
+            <td><input name="width" type="text" id="width" value="" size="3" maxlength="3">
+              x
+              <input name="height" type="text" id="height" value="" size="3" maxlength="3"></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_border}:</td>
+            <td><input name="border" type="text" id="border" value="" size="3" maxlength="3"></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_vspace}:</td>
+            <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3"></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_image_hspace}:</td>
+            <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3"></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap"><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();">
+            </td>
+            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();"></td>
+          </tr>
+        </table></td>
+    </tr>
+  </table>
+</form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor.gif
new file mode 100644 (file)
index 0000000..34ab715
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor_symbol.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor_symbol.gif
new file mode 100644 (file)
index 0000000..2eafd79
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/anchor_symbol.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/backcolor.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/backcolor.gif
new file mode 100644 (file)
index 0000000..8a532e5
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/backcolor.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold.gif
new file mode 100644 (file)
index 0000000..d6a9cc2
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_de_se.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_de_se.gif
new file mode 100644 (file)
index 0000000..9b129de
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_de_se.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_es.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_es.gif
new file mode 100644 (file)
index 0000000..ea341e6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_es.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_fr.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_fr.gif
new file mode 100644 (file)
index 0000000..2816454
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_fr.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_ru.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_ru.gif
new file mode 100644 (file)
index 0000000..e000d46
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_ru.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_tw.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_tw.gif
new file mode 100644 (file)
index 0000000..8208543
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bold_tw.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/browse.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/browse.gif
new file mode 100644 (file)
index 0000000..c786d0b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/browse.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bullist.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bullist.gif
new file mode 100644 (file)
index 0000000..6e19467
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/bullist.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/buttons.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/buttons.gif
new file mode 100644 (file)
index 0000000..5d5e08b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/buttons.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cancel_button_bg.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cancel_button_bg.gif
new file mode 100644 (file)
index 0000000..4b4aeef
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cancel_button_bg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/charmap.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/charmap.gif
new file mode 100644 (file)
index 0000000..3cdc4ac
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/charmap.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cleanup.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cleanup.gif
new file mode 100644 (file)
index 0000000..16491f6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cleanup.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/close.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/close.gif
new file mode 100644 (file)
index 0000000..679ca2a
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/close.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/code.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/code.gif
new file mode 100644 (file)
index 0000000..c5d5a67
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/code.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/color.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/color.gif
new file mode 100644 (file)
index 0000000..1ecd574
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/color.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/copy.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/copy.gif
new file mode 100644 (file)
index 0000000..dc14686
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/copy.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/custom_1.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/custom_1.gif
new file mode 100644 (file)
index 0000000..4cbccda
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/custom_1.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cut.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cut.gif
new file mode 100644 (file)
index 0000000..4e9a70b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/cut.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/forecolor.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/forecolor.gif
new file mode 100644 (file)
index 0000000..d5e3814
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/forecolor.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/help.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/help.gif
new file mode 100644 (file)
index 0000000..51a1ee4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/help.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/hr.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/hr.gif
new file mode 100644 (file)
index 0000000..1a1ba2a
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/hr.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/image.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/image.gif
new file mode 100644 (file)
index 0000000..4b88edd
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/image.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/indent.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/indent.gif
new file mode 100644 (file)
index 0000000..acd315b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/indent.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/insert_button_bg.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/insert_button_bg.gif
new file mode 100644 (file)
index 0000000..69c131c
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/insert_button_bg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic.gif
new file mode 100644 (file)
index 0000000..8bb330b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_de_se.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_de_se.gif
new file mode 100644 (file)
index 0000000..feb0309
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_de_se.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_es.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_es.gif
new file mode 100644 (file)
index 0000000..4572cdb
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_es.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_ru.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_ru.gif
new file mode 100644 (file)
index 0000000..a2bb69a
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_ru.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_tw.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_tw.gif
new file mode 100644 (file)
index 0000000..4f6eeaa
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/italic_tw.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifycenter.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifycenter.gif
new file mode 100644 (file)
index 0000000..42d609a
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifycenter.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyfull.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyfull.gif
new file mode 100644 (file)
index 0000000..c8504f6
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyfull.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyleft.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyleft.gif
new file mode 100644 (file)
index 0000000..e8f7e42
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyleft.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyright.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyright.gif
new file mode 100644 (file)
index 0000000..e4cea97
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/justifyright.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/link.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/link.gif
new file mode 100644 (file)
index 0000000..1accf42
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/link.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/newdocument.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/newdocument.gif
new file mode 100644 (file)
index 0000000..a9d2938
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/newdocument.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/numlist.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/numlist.gif
new file mode 100644 (file)
index 0000000..a268352
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/numlist.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/opacity.png b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/opacity.png
new file mode 100644 (file)
index 0000000..b4217cb
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/opacity.png differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/outdent.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/outdent.gif
new file mode 100644 (file)
index 0000000..23f6aa4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/outdent.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/paste.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/paste.gif
new file mode 100644 (file)
index 0000000..1b45000
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/paste.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/redo.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/redo.gif
new file mode 100644 (file)
index 0000000..3af9069
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/redo.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/removeformat.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/removeformat.gif
new file mode 100644 (file)
index 0000000..0fa3cb7
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/removeformat.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/spacer.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/spacer.gif
new file mode 100644 (file)
index 0000000..3884865
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/spacer.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/statusbar_resize.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/statusbar_resize.gif
new file mode 100644 (file)
index 0000000..af89d80
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/statusbar_resize.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/strikethrough.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/strikethrough.gif
new file mode 100644 (file)
index 0000000..3264635
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/strikethrough.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sub.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sub.gif
new file mode 100644 (file)
index 0000000..4d7ce30
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sub.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sup.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sup.gif
new file mode 100644 (file)
index 0000000..a7145e0
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/sup.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table.gif
new file mode 100644 (file)
index 0000000..2911830
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_col.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_col.gif
new file mode 100644 (file)
index 0000000..91f53af
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_col.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_row.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_row.gif
new file mode 100644 (file)
index 0000000..7025733
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_delete_row.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_after.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_after.gif
new file mode 100644 (file)
index 0000000..8505808
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_after.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_before.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_before.gif
new file mode 100644 (file)
index 0000000..b669d4f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_col_before.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_after.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_after.gif
new file mode 100644 (file)
index 0000000..b9c1446
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_after.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_before.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_before.gif
new file mode 100644 (file)
index 0000000..157d373
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/table_insert_row_before.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline.gif
new file mode 100644 (file)
index 0000000..1dfeb5f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_es.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_es.gif
new file mode 100644 (file)
index 0000000..551d914
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_es.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_fr.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_fr.gif
new file mode 100644 (file)
index 0000000..551d914
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_fr.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_ru.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_ru.gif
new file mode 100644 (file)
index 0000000..b78e2a4
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_ru.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_tw.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_tw.gif
new file mode 100644 (file)
index 0000000..b715390
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/underline_tw.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/undo.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/undo.gif
new file mode 100644 (file)
index 0000000..520796d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/undo.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/unlink.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/unlink.gif
new file mode 100644 (file)
index 0000000..5c8a33d
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/unlink.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/visualaid.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/visualaid.gif
new file mode 100644 (file)
index 0000000..63caf18
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/visualaid.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_bg.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_bg.gif
new file mode 100644 (file)
index 0000000..897a01f
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_bg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_end.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_end.gif
new file mode 100644 (file)
index 0000000..aee442b
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_end.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_bg.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_bg.gif
new file mode 100644 (file)
index 0000000..9dc8abe
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_bg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_end.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_end.gif
new file mode 100644 (file)
index 0000000..616a889
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tab_sel_end.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tabs_bg.gif b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tabs_bg.gif
new file mode 100644 (file)
index 0000000..c303f66
Binary files /dev/null and b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/images/xp/tabs_bg.gif differ
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/about.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/about.js
new file mode 100644 (file)
index 0000000..9cb015d
--- /dev/null
@@ -0,0 +1,74 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       // Give FF some time
+       window.setTimeout('insertHelpIFrame();', 10);
+
+       var tcont = document.getElementById('plugintablecontainer');
+       var plugins = tinyMCE.getParam('plugins', '', true, ',');
+       if (plugins.length == 0)
+               document.getElementById('plugins_tab').style.display = 'none';
+
+       var html = "";
+       html += '<table id="plugintable">';
+       html += '<thead>';
+       html += '<tr>';
+       html += '<td>' + tinyMCE.getLang('lang_plugin') + '</td>';
+       html += '<td>' + tinyMCE.getLang('lang_author') + '</td>';
+       html += '<td>' + tinyMCE.getLang('lang_version') + '</td>';
+       html += '</tr>';
+       html += '</thead>';
+       html += '<tbody>';
+
+       for (var i=0; i<plugins.length; i++) {
+               var info = getPluginInfo(plugins[i]);
+
+               html += '<tr>';
+
+               if (info.infourl != null && info.infourl != '')
+                       html += '<td width="50%" title="' + plugins[i] + '"><a href="' + info.infourl + '" target="mceplugin">' + info.longname + '</a></td>';
+               else
+                       html += '<td width="50%" title="' + plugins[i] + '">' + info.longname + '</td>';
+
+               if (info.authorurl != null && info.authorurl != '')
+                       html += '<td width="35%"><a href="' + info.authorurl + '" target="mceplugin">' + info.author + '</a></td>';
+               else
+                       html += '<td width="35%">' + info.author + '</td>';
+
+               html += '<td width="15%">' + info.version + '</td>';
+               html += '</tr>';
+       }
+
+       html += '</tbody>';
+       html += '</table>';
+
+       tcont.innerHTML = html;
+}
+
+function getPluginInfo(name) {
+       var fn = eval('tinyMCEPopup.windowOpener.TinyMCE_' + name + '_getInfo');
+
+       if (typeof(fn) != 'undefined')
+               return fn();
+
+       return {
+               longname : name,
+               authorurl : '',
+               infourl : '',
+               author : '--',
+               version : '--'
+       };
+}
+
+function insertHelpIFrame() {
+       var html = '<iframe width="100%" height="300" src="' + tinyMCE.themeURL + "/docs/" + tinyMCE.settings['docs_language'] + "/index.htm" + '"></iframe>';
+
+       document.getElementById('iframecontainer').innerHTML = html;
+
+       html = '';
+       html += '<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a> ';
+       html += '<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a> ';
+       html += '<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a> ';
+
+       document.getElementById('buttoncontainer').innerHTML = html;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/anchor.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/anchor.js
new file mode 100644 (file)
index 0000000..a89f972
--- /dev/null
@@ -0,0 +1,59 @@
+var action, element;
+
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+       var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name");
+       var img = inst.getFocusElement();
+       action = 'insert';
+
+       if (anchor != null) {
+               element = anchor;
+               action = "update";
+       }
+
+       if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") {
+               element = img;
+               action = "update";
+       }
+
+       if (action == "update")
+               document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name");
+
+       document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
+}
+
+function insertAnchor() {
+       var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+       var name = document.forms[0].anchorName.value;
+
+       tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+       if (action == "update") {
+               if (element.nodeName == "IMG")
+                       element.setAttribute("title", name);
+               else
+                       element.setAttribute("name", name);
+       } else {
+               var rng = inst.getRng();
+
+               if (rng.collapse)
+                       rng.collapse(false);
+
+               name = name.replace(/&/g, '&amp;');
+               name = name.replace(/\"/g, '&quot;');
+               name = name.replace(/</g, '&lt;');
+               name = name.replace(/>/g, '&gr;');
+
+               html = '<a name="' + name + '"></a>';
+
+               tinyMCEPopup.execCommand("mceInsertContent", false, html);
+               tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+       }
+
+       tinyMCEPopup.execCommand("mceEndUndoLevel");
+
+       tinyMCE.triggerNodeChange();
+       tinyMCEPopup.close();
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/charmap.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/charmap.js
new file mode 100644 (file)
index 0000000..2f758cf
--- /dev/null
@@ -0,0 +1,324 @@
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+}
+
+var charmap = new Array();
+
+// for mor details please see w3c.org
+// now here is the complete list ;)
+
+charmap = [
+       ['&nbsp;',    '&#160;',  true, 'no-break space'],
+       ['&amp;',     '&#38;',   true, 'ampersand'],
+       ['&quot;',    '&#34;',   true, 'quotation mark'],
+// finance
+       ['&cent;',    '&#162;',  true, 'cent sign'],
+       ['&euro;',    '&#8364;', true, 'euro sign'],
+       ['&pound;',   '&#163;',  true, 'pound sign'],
+       ['&yen;',     '&#165;',  true, 'yen sign'],
+// signs
+       ['&copy;',    '&#169;',  true, 'copyright sign'],
+       ['&reg;',     '&#174;',  true, 'registered sign'],
+       ['&trade;',   '&#8482;', true, 'trade mark sign'],
+       ['&permil;',  '&#8240;', true, 'per mille sign'],
+       ['&micro;',   '&#181;',  true, 'micro sign'],
+       ['&middot;',  '&#183;',  true, 'middle dot'],
+       ['&bull;',    '&#8226;', true, 'bullet'],
+       ['&hellip;',  '&#8230;', true, 'three dot leader'],
+       ['&prime;',   '&#8242;', true, 'minutes / feet'],
+       ['&Prime;',   '&#8243;', true, 'seconds / inches'],
+       ['&sect;',    '&#167;',  true, 'section sign'],
+       ['&para;',    '&#182;',  true, 'paragraph sign'],
+       ['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
+// quotations
+       ['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
+       ['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
+       ['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
+       ['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
+       ['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
+       ['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
+       ['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
+       ['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
+       ['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
+       ['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
+       ['&lt;',      '&#60;',   true, 'less-than sign'],
+       ['&gt;',      '&#62;',   true, 'greater-than sign'],
+       ['&le;',      '&#8804;', true, 'less-than or equal to'],
+       ['&ge;',      '&#8805;', true, 'greater-than or equal to'],
+       ['&ndash;',   '&#8211;', true, 'en dash'],
+       ['&mdash;',   '&#8212;', true, 'em dash'],
+       ['&macr;',    '&#175;',  true, 'macron'],
+       ['&oline;',   '&#8254;', true, 'overline'],
+       ['&curren;',  '&#164;',  true, 'currency sign'],
+       ['&brvbar;',  '&#166;',  true, 'broken bar'],
+       ['&uml;',     '&#168;',  true, 'diaeresis'],
+       ['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
+       ['&iquest;',  '&#191;',  true, 'turned question mark'],
+       ['&circ;',    '&#710;',  true, 'circumflex accent'],
+       ['&tilde;',   '&#732;',  true, 'small tilde'],
+       ['&deg;',     '&#176;',  true, 'degree sign'],
+       ['&minus;',   '&#8722;', true, 'minus sign'],
+       ['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
+       ['&divide;',  '&#247;',  true, 'division sign'],
+       ['&frasl;',   '&#8260;', true, 'fraction slash'],
+       ['&times;',   '&#215;',  true, 'multiplication sign'],
+       ['&sup1;',    '&#185;',  true, 'superscript one'],
+       ['&sup2;',    '&#178;',  true, 'superscript two'],
+       ['&sup3;',    '&#179;',  true, 'superscript three'],
+       ['&frac14;',  '&#188;',  true, 'fraction one quarter'],
+       ['&frac12;',  '&#189;',  true, 'fraction one half'],
+       ['&frac34;',  '&#190;',  true, 'fraction three quarters'],
+// math / logical
+       ['&fnof;',    '&#402;',  true, 'function / florin'],
+       ['&int;',     '&#8747;', true, 'integral'],
+       ['&sum;',     '&#8721;', true, 'n-ary sumation'],
+       ['&infin;',   '&#8734;', true, 'infinity'],
+       ['&radic;',   '&#8730;', true, 'square root'],
+       ['&sim;',     '&#8764;', false,'similar to'],
+       ['&cong;',    '&#8773;', false,'approximately equal to'],
+       ['&asymp;',   '&#8776;', true, 'almost equal to'],
+       ['&ne;',      '&#8800;', true, 'not equal to'],
+       ['&equiv;',   '&#8801;', true, 'identical to'],
+       ['&isin;',    '&#8712;', false,'element of'],
+       ['&notin;',   '&#8713;', false,'not an element of'],
+       ['&ni;',      '&#8715;', false,'contains as member'],
+       ['&prod;',    '&#8719;', true, 'n-ary product'],
+       ['&and;',     '&#8743;', false,'logical and'],
+       ['&or;',      '&#8744;', false,'logical or'],
+       ['&not;',     '&#172;',  true, 'not sign'],
+       ['&cap;',     '&#8745;', true, 'intersection'],
+       ['&cup;',     '&#8746;', false,'union'],
+       ['&part;',    '&#8706;', true, 'partial differential'],
+       ['&forall;',  '&#8704;', false,'for all'],
+       ['&exist;',   '&#8707;', false,'there exists'],
+       ['&empty;',   '&#8709;', false,'diameter'],
+       ['&nabla;',   '&#8711;', false,'backward difference'],
+       ['&lowast;',  '&#8727;', false,'asterisk operator'],
+       ['&prop;',    '&#8733;', false,'proportional to'],
+       ['&ang;',     '&#8736;', false,'angle'],
+// undefined
+       ['&acute;',   '&#180;',  true, 'acute accent'],
+       ['&cedil;',   '&#184;',  true, 'cedilla'],
+       ['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
+       ['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
+       ['&dagger;',  '&#8224;', true, 'dagger'],
+       ['&Dagger;',  '&#8225;', true, 'double dagger'],
+// alphabetical special chars
+       ['&Agrave;',  '&#192;',  true, 'A - grave'],
+       ['&Aacute;',  '&#193;',  true, 'A - acute'],
+       ['&Acirc;',   '&#194;',  true, 'A - circumflex'],
+       ['&Atilde;',  '&#195;',  true, 'A - tilde'],
+       ['&Auml;',    '&#196;',  true, 'A - diaeresis'],
+       ['&Aring;',   '&#197;',  true, 'A - ring above'],
+       ['&AElig;',   '&#198;',  true, 'ligature AE'],
+       ['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
+       ['&Egrave;',  '&#200;',  true, 'E - grave'],
+       ['&Eacute;',  '&#201;',  true, 'E - acute'],
+       ['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
+       ['&Euml;',    '&#203;',  true, 'E - diaeresis'],
+       ['&Igrave;',  '&#204;',  true, 'I - grave'],
+       ['&Iacute;',  '&#205;',  true, 'I - acute'],
+       ['&Icirc;',   '&#206;',  true, 'I - circumflex'],
+       ['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
+       ['&ETH;',     '&#208;',  true, 'ETH'],
+       ['&Ntilde;',  '&#209;',  true, 'N - tilde'],
+       ['&Ograve;',  '&#210;',  true, 'O - grave'],
+       ['&Oacute;',  '&#211;',  true, 'O - acute'],
+       ['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
+       ['&Otilde;',  '&#213;',  true, 'O - tilde'],
+       ['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
+       ['&Oslash;',  '&#216;',  true, 'O - slash'],
+       ['&OElig;',   '&#338;',  true, 'ligature OE'],
+       ['&Scaron;',  '&#352;',  true, 'S - caron'],
+       ['&Ugrave;',  '&#217;',  true, 'U - grave'],
+       ['&Uacute;',  '&#218;',  true, 'U - acute'],
+       ['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
+       ['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
+       ['&Yacute;',  '&#221;',  true, 'Y - acute'],
+       ['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
+       ['&THORN;',   '&#222;',  true, 'THORN'],
+       ['&agrave;',  '&#224;',  true, 'a - grave'],
+       ['&aacute;',  '&#225;',  true, 'a - acute'],
+       ['&acirc;',   '&#226;',  true, 'a - circumflex'],
+       ['&atilde;',  '&#227;',  true, 'a - tilde'],
+       ['&auml;',    '&#228;',  true, 'a - diaeresis'],
+       ['&aring;',   '&#229;',  true, 'a - ring above'],
+       ['&aelig;',   '&#230;',  true, 'ligature ae'],
+       ['&ccedil;',  '&#231;',  true, 'c - cedilla'],
+       ['&egrave;',  '&#232;',  true, 'e - grave'],
+       ['&eacute;',  '&#233;',  true, 'e - acute'],
+       ['&ecirc;',   '&#234;',  true, 'e - circumflex'],
+       ['&euml;',    '&#235;',  true, 'e - diaeresis'],
+       ['&igrave;',  '&#236;',  true, 'i - grave'],
+       ['&iacute;',  '&#237;',  true, 'i - acute'],
+       ['&icirc;',   '&#238;',  true, 'i - circumflex'],
+       ['&iuml;',    '&#239;',  true, 'i - diaeresis'],
+       ['&eth;',     '&#240;',  true, 'eth'],
+       ['&ntilde;',  '&#241;',  true, 'n - tilde'],
+       ['&ograve;',  '&#242;',  true, 'o - grave'],
+       ['&oacute;',  '&#243;',  true, 'o - acute'],
+       ['&ocirc;',   '&#244;',  true, 'o - circumflex'],
+       ['&otilde;',  '&#245;',  true, 'o - tilde'],
+       ['&ouml;',    '&#246;',  true, 'o - diaeresis'],
+       ['&oslash;',  '&#248;',  true, 'o slash'],
+       ['&oelig;',   '&#339;',  true, 'ligature oe'],
+       ['&scaron;',  '&#353;',  true, 's - caron'],
+       ['&ugrave;',  '&#249;',  true, 'u - grave'],
+       ['&uacute;',  '&#250;',  true, 'u - acute'],
+       ['&ucirc;',   '&#251;',  true, 'u - circumflex'],
+       ['&uuml;',    '&#252;',  true, 'u - diaeresis'],
+       ['&yacute;',  '&#253;',  true, 'y - acute'],
+       ['&thorn;',   '&#254;',  true, 'thorn'],
+       ['&yuml;',    '&#255;',  true, 'y - diaeresis'],
+// ['&Alpha;',   '&#913;',  true, 'Alpha'],
+       ['&Beta;',    '&#914;',  true, 'Beta'],
+       ['&Gamma;',   '&#915;',  true, 'Gamma'],
+       ['&Delta;',   '&#916;',  true, 'Delta'],
+       ['&Epsilon;', '&#917;',  true, 'Epsilon'],
+       ['&Zeta;',    '&#918;',  true, 'Zeta'],
+       ['&Eta;',     '&#919;',  true, 'Eta'],
+       ['&Theta;',   '&#920;',  true, 'Theta'],
+       ['&Iota;',    '&#921;',  true, 'Iota'],
+       ['&Kappa;',   '&#922;',  true, 'Kappa'],
+       ['&Lambda;',  '&#923;',  true, 'Lambda'],
+       ['&Mu;',      '&#924;',  true, 'Mu'],
+       ['&Nu;',      '&#925;',  true, 'Nu'],
+       ['&Xi;',      '&#926;',  true, 'Xi'],
+       ['&Omicron;', '&#927;',  true, 'Omicron'],
+       ['&Pi;',      '&#928;',  true, 'Pi'],
+       ['&Rho;',     '&#929;',  true, 'Rho'],
+       ['&Sigma;',   '&#931;',  true, 'Sigma'],
+       ['&Tau;',     '&#932;',  true, 'Tau'],
+       ['&Upsilon;', '&#933;',  true, 'Upsilon'],
+       ['&Phi;',     '&#934;',  true, 'Phi'],
+       ['&Chi;',     '&#935;',  true, 'Chi'],
+       ['&Psi;',     '&#936;',  true, 'Psi'],
+       ['&Omega;',   '&#937;',  true, 'Omega'],
+       ['&alpha;',   '&#945;',  true, 'alpha'],
+       ['&beta;',    '&#946;',  true, 'beta'],
+       ['&gamma;',   '&#947;',  true, 'gamma'],
+       ['&delta;',   '&#948;',  true, 'delta'],
+       ['&epsilon;', '&#949;',  true, 'epsilon'],
+       ['&zeta;',    '&#950;',  true, 'zeta'],
+       ['&eta;',     '&#951;',  true, 'eta'],
+       ['&theta;',   '&#952;',  true, 'theta'],
+       ['&iota;',    '&#953;',  true, 'iota'],
+       ['&kappa;',   '&#954;',  true, 'kappa'],
+       ['&lambda;',  '&#955;',  true, 'lambda'],
+       ['&mu;',      '&#956;',  true, 'mu'],
+       ['&nu;',      '&#957;',  true, 'nu'],
+       ['&xi;',      '&#958;',  true, 'xi'],
+       ['&omicron;', '&#959;',  true, 'omicron'],
+       ['&pi;',      '&#960;',  true, 'pi'],
+       ['&rho;',     '&#961;',  true, 'rho'],
+       ['&sigmaf;',  '&#962;',  true, 'final sigma'],
+       ['&sigma;',   '&#963;',  true, 'sigma'],
+       ['&tau;',     '&#964;',  true, 'tau'],
+       ['&upsilon;', '&#965;',  true, 'upsilon'],
+       ['&phi;',     '&#966;',  true, 'phi'],
+       ['&chi;',     '&#967;',  true, 'chi'],
+       ['&psi;',     '&#968;',  true, 'psi'],
+       ['&omega;',   '&#969;',  true, 'omega'],
+// symbols
+       ['&alefsym;', '&#8501;', false,'alef symbol'],
+       ['&piv;',     '&#982;',  false,'pi symbol'],
+       ['&real;',    '&#8476;', false,'real part symbol'],
+       ['&thetasym;','&#977;',  false,'theta symbol'],
+       ['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
+       ['&weierp;',  '&#8472;', false,'Weierstrass p'],
+       ['&image;',   '&#8465;', false,'imaginary part'],
+// arrows
+       ['&larr;',    '&#8592;', true, 'leftwards arrow'],
+       ['&uarr;',    '&#8593;', true, 'upwards arrow'],
+       ['&rarr;',    '&#8594;', true, 'rightwards arrow'],
+       ['&darr;',    '&#8595;', true, 'downwards arrow'],
+       ['&harr;',    '&#8596;', true, 'left right arrow'],
+       ['&crarr;',   '&#8629;', false,'carriage return'],
+       ['&lArr;',    '&#8656;', false,'leftwards double arrow'],
+       ['&uArr;',    '&#8657;', false,'upwards double arrow'],
+       ['&rArr;',    '&#8658;', false,'rightwards double arrow'],
+       ['&dArr;',    '&#8659;', false,'downwards double arrow'],
+       ['&hArr;',    '&#8660;', false,'left right double arrow'],
+       ['&there4;',  '&#8756;', false,'therefore'],
+       ['&sub;',     '&#8834;', false,'subset of'],
+       ['&sup;',     '&#8835;', false,'superset of'],
+       ['&nsub;',    '&#8836;', false,'not a subset of'],
+       ['&sube;',    '&#8838;', false,'subset of or equal to'],
+       ['&supe;',    '&#8839;', false,'superset of or equal to'],
+       ['&oplus;',   '&#8853;', false,'circled plus'],
+       ['&otimes;',  '&#8855;', false,'circled times'],
+       ['&perp;',    '&#8869;', false,'perpendicular'],
+       ['&sdot;',    '&#8901;', false,'dot operator'],
+       ['&lceil;',   '&#8968;', false,'left ceiling'],
+       ['&rceil;',   '&#8969;', false,'right ceiling'],
+       ['&lfloor;',  '&#8970;', false,'left floor'],
+       ['&rfloor;',  '&#8971;', false,'right floor'],
+       ['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
+       ['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
+       ['&loz;',     '&#9674;', true,'lozenge'],
+       ['&spades;',  '&#9824;', false,'black spade suit'],
+       ['&clubs;',   '&#9827;', true, 'black club suit'],
+       ['&hearts;',  '&#9829;', true, 'black heart suit'],
+       ['&diams;',   '&#9830;', true, 'black diamond suit'],
+       ['&ensp;',    '&#8194;', false,'en space'],
+       ['&emsp;',    '&#8195;', false,'em space'],
+       ['&thinsp;',  '&#8201;', false,'thin space'],
+       ['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
+       ['&zwj;',     '&#8205;', false,'zero width joiner'],
+       ['&lrm;',     '&#8206;', false,'left-to-right mark'],
+       ['&rlm;',     '&#8207;', false,'right-to-left mark'],
+       ['&shy;',     '&#173;',  false,'soft hyphen']
+];
+
+function renderCharMapHTML() {
+       var charsPerRow = 20, tdWidth=20, tdHeight=20;
+       var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
+       var cols=-1;
+       for (var i=0; i<charmap.length; i++) {
+               if (charmap[i][2]==true) {
+                       cols++;
+                       html += ''
+                               + '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
+                               + ' onmouseover="tinyMCE.switchClass(this,\'charmapOver\');'
+                               + 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
+                               + ' onmouseout="tinyMCE.restoreClass(this,\'charmapOver\');"'
+                               + ' nowrap="nowrap" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"><a style="text-decoration: none;" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+                               + charmap[i][1]
+                               + '</a></td>';
+                       if ((cols+1) % charsPerRow == 0)
+                               html += '</tr><tr height="' + tdHeight + '">';
+               }
+        }
+       if (cols % charsPerRow > 0) {
+               var padd = charsPerRow - (cols % charsPerRow);
+               for (var i=0; i<padd-1; i++)
+                       html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
+       }
+       html += '</tr></table>';
+       document.write(html);
+}
+
+function insertChar(chr) {
+       tinyMCEPopup.execCommand('mceInsertContent', false, '\&#' + chr + ';');
+
+       // Refocus in window
+       if (tinyMCEPopup.isWindow)
+               window.focus();
+}
+
+function previewChar(codeA, codeB, codeN) {
+       var elmA = document.getElementById('codeA');
+       var elmB = document.getElementById('codeB');
+       var elmV = document.getElementById('codeV');
+       var elmN = document.getElementById('codeN');
+
+       if (codeA=='#160;') {
+               elmV.innerHTML = '__';
+       } else {
+               elmV.innerHTML = '&' + codeA;
+       }
+
+       elmB.innerHTML = '&amp;' + codeA;
+       elmA.innerHTML = '&amp;' + codeB;
+       elmN.innerHTML = codeN;
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/color_picker.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/color_picker.js
new file mode 100644 (file)
index 0000000..1d585aa
--- /dev/null
@@ -0,0 +1,107 @@
+function init() {
+       if (tinyMCE.isMSIE)
+               tinyMCEPopup.resizeToInnerSize();
+}
+
+function selectColor() {
+       var color = document.getElementById("selectedColorBox").value;
+
+       tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color);
+       tinyMCEPopup.close();
+}
+
+function showColor(color) {
+       document.getElementById("selectedColor").style.backgroundColor = color;
+       document.getElementById("selectedColorBox").value = color;
+}
+
+var colors = new Array(
+       "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
+       "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
+       "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
+       "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
+       "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
+       "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
+       "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
+       "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
+       "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
+       "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
+       "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
+       "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
+       "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
+       "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
+       "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
+       "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
+       "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
+       "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
+       "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
+       "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
+       "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
+       "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
+       "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
+       "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
+       "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
+       "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
+       "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
+);
+
+function convertRGBToHex(col) {
+       var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+       var rgb = col.replace(re, "$1,$2,$3").split(',');
+       if (rgb.length == 3) {
+               r = parseInt(rgb[0]).toString(16);
+               g = parseInt(rgb[1]).toString(16);
+               b = parseInt(rgb[2]).toString(16);
+
+               r = r.length == 1 ? '0' + r : r;
+               g = g.length == 1 ? '0' + g : g;
+               b = b.length == 1 ? '0' + b : b;
+
+               return "#" + r + g + b;
+       }
+
+       return col;
+}
+
+function convertHexToRGB(col) {
+       if (col.indexOf('#') != -1) {
+               col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+               r = parseInt(col.substring(0, 2), 16);
+               g = parseInt(col.substring(2, 4), 16);
+               b = parseInt(col.substring(4, 6), 16);
+
+               return "rgb(" + r + "," + g + "," + b + ")";
+       }
+
+       return col;
+}
+
+function renderColorMap() {
+       var html = "";
+       var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color'));
+
+       html += '<table border="0" cellspacing="1" cellpadding="0">'
+               + '<tr>';
+       for (var i=0; i<colors.length; i++) {
+               html += '<td bgcolor="' + colors[i] + '">'
+                       + '<a href="javascript:selectColor();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');">'
+                       + '<img border="0" src="images/spacer.gif" width="10" height="10" title="' + colors[i] +  '" alt="' + colors[i] +  '" /></a></td>';
+               if ((i+1) % 18 == 0)
+                       html += '</tr><tr>';
+       }
+       html += '<tr><td colspan="18">'
+               + '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
+               + '<tr><td>'
+               + '<img id="selectedColor" style="background-color:' + tinyMCE.getWindowArg('input_color') + '" border="0" src="images/spacer.gif" width="80" height="16" />'
+               + '</td><td align="right">'
+               + '<input id="selectedColorBox" name="selectedColorBox" type="text" size="7" maxlength="7" style="width:65px" value="' + inputColor + '" />'
+               + '</td></tr>'
+               + '</table>'
+               + '<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" style="margin-top:3px" onclick="selectColor();">'
+               + '</td></tr>'
+               + '</table>';
+
+       document.write(html);
+}
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/image.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/image.js
new file mode 100644 (file)
index 0000000..c98eaba
--- /dev/null
@@ -0,0 +1,81 @@
+var url = tinyMCE.getParam("external_image_list_url");
+if (url != null) {
+       // Fix relative
+       if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+               url = tinyMCE.documentBasePath + "/" + url;
+
+       document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+}
+
+function insertImage() {
+       var src = document.forms[0].src.value;
+       var alt = document.forms[0].alt.value;
+       var border = document.forms[0].border.value;
+       var vspace = document.forms[0].vspace.value;
+       var hspace = document.forms[0].hspace.value;
+       var width = document.forms[0].width.value;
+       var height = document.forms[0].height.value;
+       var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
+
+       tinyMCEPopup.restoreSelection();
+       tinyMCE.insertImage(src, alt, border, hspace, vspace, width, height, align);
+       tinyMCEPopup.close();
+}
+
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+
+       var formObj = document.forms[0];
+
+       for (var i=0; i<document.forms[0].align.options.length; i++) {
+               if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
+                       document.forms[0].align.options.selectedIndex = i;
+       }
+
+       formObj.src.value = tinyMCE.getWindowArg('src');
+       formObj.alt.value = tinyMCE.getWindowArg('alt');
+       formObj.border.value = tinyMCE.getWindowArg('border');
+       formObj.vspace.value = tinyMCE.getWindowArg('vspace');
+       formObj.hspace.value = tinyMCE.getWindowArg('hspace');
+       formObj.width.value = tinyMCE.getWindowArg('width');
+       formObj.height.value = tinyMCE.getWindowArg('height');
+       formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
+
+       // Handle file browser
+       if (isVisible('srcbrowser'))
+               document.getElementById('src').style.width = '180px';
+
+       // Auto select image in list
+       if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+               for (var i=0; i<formObj.image_list.length; i++) {
+                       if (formObj.image_list.options[i].value == tinyMCE.getWindowArg('src'))
+                               formObj.image_list.options[i].selected = true;
+               }
+       }
+}
+
+var preloadImg = new Image();
+
+function resetImageData() {
+       var formObj = document.forms[0];
+       formObj.width.value = formObj.height.value = "";        
+}
+
+function updateImageData() {
+       var formObj = document.forms[0];
+
+       if (formObj.width.value == "")
+               formObj.width.value = preloadImg.width;
+
+       if (formObj.height.value == "")
+               formObj.height.value = preloadImg.height;
+}
+
+function getImageData() {
+       preloadImg = new Image();
+       tinyMCE.addEvent(preloadImg, "load", updateImageData);
+       tinyMCE.addEvent(preloadImg, "error", function () {var formObj = document.forms[0];formObj.width.value = formObj.height.value = "";});
+       preloadImg.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], document.forms[0].src.value);
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/link.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/link.js
new file mode 100644 (file)
index 0000000..12fad10
--- /dev/null
@@ -0,0 +1,69 @@
+var url = tinyMCE.getParam("external_link_list_url");
+if (url != null) {
+       // Fix relative
+       if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+               url = tinyMCE.documentBasePath + "/" + url;
+
+       document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+}
+
+function init() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link');
+
+       var formObj = document.forms[0];
+
+       for (var i=0; i<document.forms[0].target.options.length; i++) {
+               var option = document.forms[0].target.options[i];
+
+               if (option.value == tinyMCE.getWindowArg('target'))
+                       option.selected = true;
+       }
+
+       document.forms[0].href.value = tinyMCE.getWindowArg('href');
+       document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
+       document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
+
+       addClassesToList('styleSelect', 'theme_advanced_link_styles');
+       selectByValue(formObj, 'styleSelect', tinyMCE.getWindowArg('className'), true);
+
+       // Hide css select row if no CSS classes
+       if (formObj.styleSelect && formObj.styleSelect.options.length <= 1) {
+               document.getElementById('styleSelectRow').style.display = 'none';
+               window.resizeBy(0, -20);
+       }
+
+       // Handle file browser
+       if (isVisible('hrefbrowser'))
+               document.getElementById('href').style.width = '180px';
+
+       // Auto select link in list
+       if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
+               var formObj = document.forms[0];
+
+               for (var i=0; i<formObj.link_list.length; i++) {
+                       if (formObj.link_list.options[i].value == tinyMCE.getWindowArg('href'))
+                               formObj.link_list.options[i].selected = true;
+               }
+       }
+}
+
+function insertLink() {
+       var href = document.forms[0].href.value;
+       var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
+       var title = document.forms[0].linktitle.value;
+       var style_class = document.forms[0].styleSelect.value;
+       var dummy;
+
+       // Make anchors absolute
+       if (href.charAt(0) == '#')
+               href = tinyMCE.settings['document_base_url'] + href;
+
+       if (target == '_self')
+               target = '';
+
+       tinyMCEPopup.restoreSelection();
+       tinyMCE.insertLink(href, target, title, dummy, style_class);
+       tinyMCEPopup.close();
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/source_editor.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/jscripts/source_editor.js
new file mode 100644 (file)
index 0000000..9dda809
--- /dev/null
@@ -0,0 +1,53 @@
+function saveContent() {
+       tinyMCE.setContent(document.getElementById('htmlSource').value);
+       tinyMCE.closeWindow(window);
+}
+
+// Fixes some charcode issues
+function fixContent(html) {
+       html = html.replace(new RegExp('<(p|hr|table|tr|td|ol|ul|object|embed|li|blockquote)', 'gi'),'\n<$1');
+       html = html.replace(new RegExp('<\/(p|ol|ul|li|table|tr|td|blockquote|object)>', 'gi'),'</$1>\n');
+       html = tinyMCE.regexpReplace(html, '<br />','<br />\n','gi');
+       html = tinyMCE.regexpReplace(html, '\n\n','\n','gi');
+       return html;
+}
+
+function onLoadInit() {
+       tinyMCEPopup.resizeToInnerSize();
+
+       document.forms[0].htmlSource.value = fixContent(tinyMCE.getContent(tinyMCE.getWindowArg('editor_id')));
+       resizeInputs();
+       setWrap('off');
+}
+
+function setWrap(val) {
+       // hard soft off
+       document.forms[0].htmlSource.wrap = val;
+}
+
+function toggleWordWrap(elm) {
+       if (elm.checked)
+               setWrap('soft');
+       else
+               setWrap('off');
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+       if (!tinyMCE.isMSIE) {
+                wHeight = self.innerHeight-80;
+                wWidth = self.innerWidth-16;
+       } else {
+                wHeight = document.body.clientHeight - 80;
+                wWidth = document.body.clientWidth - 16;
+       }
+
+       document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
+       document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';
+}
+
+function renderWordWrap() {
+       if (tinyMCE.isMSIE)
+               document.write('<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>');
+}
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ar.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ar.js
new file mode 100644 (file)
index 0000000..84a2b08
--- /dev/null
@@ -0,0 +1,63 @@
+// Arabic lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '&#1578;&#1589;&#1575;&#1605;&#1610;&#1605;',
+theme_code_desc : '&#1588;&#1601;&#1585;&#1577; &#1575;&#1604;&#1605;&#1589;&#1583;&#1585;',
+theme_code_title : '&#1588;&#1601;&#1585;&#1577; &#1575;&#1604;&#1605;&#1589;&#1583;&#1585;',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : '&#1605;&#1606;&#1582;&#1601;&#1590;',
+theme_sup_desc : '&#1605;&#1585;&#1578;&#1601;&#1593;',
+theme_hr_desc : '&#1573;&#1583;&#1585;&#1575;&#1580; &#1582;&#1591; &#1601;&#1575;&#1589;&#1604;',
+theme_removeformat_desc : '&#1573;&#1586;&#1575;&#1604;&#1577; &#1575;&#1604;&#1578;&#1606;&#1587;&#1610;&#1602;&#1575;&#1578;',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : '&#1587;&#1605;&#1603; &#1575;&#1604;&#1581;&#1583;&#1608;&#1583;',
+insert_image_dimensions : '&#1575;&#1604;&#1605;&#1608;&#1575;&#1589;&#1601;&#1575;&#1578;',
+insert_image_vspace : '&#1578;&#1576;&#1575;&#1593;&#1583; &#1593;&#1605;&#1608;&#1583;&#1610;',
+insert_image_hspace : '&#1578;&#1576;&#1575;&#1593;&#1583; &#1571;&#1601;&#1602;&#1610;',
+insert_image_align : '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577;',
+insert_image_align_default : 'Default',
+insert_image_align_baseline : '&#1593;&#1604;&#1609; &#1575;&#1604;&#1587;&#1591;&#1585;',
+insert_image_align_top : '&#1571;&#1593;&#1604;&#1609;',
+insert_image_align_middle : '&#1608;&#1587;&#1591;',
+insert_image_align_bottom : '&#1571;&#1587;&#1601;&#1604;',
+insert_image_align_texttop : '&#1571;&#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1589;',
+insert_image_align_absmiddle : '&#1608;&#1587;&#1591; &#1575;&#1604;&#1587;&#1591;&#1585;',
+insert_image_align_absbottom : '&#1571;&#1587;&#1601;&#1604; &#1575;&#1604;&#1606;&#1589;',
+insert_image_align_left : '&#1610;&#1587;&#1575;&#1585;',
+insert_image_align_right : '&#1610;&#1605;&#1610;&#1606;',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraph',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Preformatted',
+theme_h1 : 'Heading 1',
+theme_h2 : 'Heading 2',
+theme_h3 : 'Heading 3',
+theme_h4 : 'Heading 4',
+theme_h5 : 'Heading 5',
+theme_h6 : 'Heading 6',
+theme_colorpicker_title : '&#1604;&#1608;&#1606; &#1575;&#1604;&#1606;&#1589;',
+theme_colorpicker_apply : 'Apply',
+theme_forecolor_desc : '&#1604;&#1608;&#1606; &#1575;&#1604;&#1606;&#1589;',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : '&#1573;&#1583;&#1585;&#1575;&#1580;  &#1585;&#1605;&#1586;..&#1616;',
+theme_charmap_desc : '&#1573;&#1583;&#1585;&#1575;&#1580;  &#1585;&#1605;&#1586;..&#1616;',
+theme_visualaid_desc : 'Toggle guidelines/invisible elements',
+insert_anchor_title : 'Insert/edit anchor',
+insert_anchor_name : 'Anchor name',
+theme_anchor_desc : 'Insert/edit anchor',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ca.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ca.js
new file mode 100644 (file)
index 0000000..5a1ce82
--- /dev/null
@@ -0,0 +1,64 @@
+// CA lang variables by Marc Bria
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Estils',
+theme_code_desc : 'Editar codi HTML',
+theme_code_title : 'Editor codi HTML',
+theme_code_wordwrap : 'Ajustar salt de línea',
+theme_sub_desc : 'Subíndex',
+theme_sup_desc : 'Superíndex',
+theme_hr_desc : 'Insertar un separador horitzontal',
+theme_removeformat_desc : 'Eliminar format',
+theme_custom1_desc : 'La teva descripció',
+insert_image_border : 'Marc',
+insert_image_dimensions : 'Dimensions',
+insert_image_vspace : 'Espai vertical',
+insert_image_hspace : 'Espai horizontal',
+insert_image_align : 'Alineament',
+insert_image_align_default : 'Per defecte',
+insert_image_align_baseline : 'Línea base',
+insert_image_align_top : 'Superior',
+insert_image_align_middle : 'Centre',
+insert_image_align_bottom : 'Inferior',
+insert_image_align_texttop : 'Alinear text amunt',
+insert_image_align_absmiddle : 'Centrat horitzontal',
+insert_image_align_absbottom : 'Centrat a baix',
+insert_image_align_left : 'Esquerra',
+insert_image_align_right : 'Dreta',
+insert_image_delta_height : 10,
+theme_font_size : '-- Mida font --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraph',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Preformatejat',
+theme_h1 : 'Capçalera 1',
+theme_h2 : 'Capçalera 2',
+theme_h3 : 'Capçalera 3',
+theme_h4 : 'Capçalera 4',
+theme_h5 : 'Capçalera 5',
+theme_h6 : 'Capçalera 6',
+theme_colorpicker_title : 'Selecciona el color',
+theme_colorpicker_apply : 'Apply',
+theme_forecolor_desc : 'Selecciona color frontal',
+theme_backcolor_desc : 'Selecciona color de fons',
+theme_charmap_title : 'Selecciona un caràcter especial',
+theme_charmap_desc : 'Inserta un caràcter especial',
+theme_visualaid_desc : 'Alterna líniesguia/elements invisibles',
+insert_anchor_title : 'Inserta/edita àncora',
+insert_anchor_name : 'Nom de l´àncora',
+theme_anchor_desc : 'Inserta/edita un àncora',
+theme_insert_link_titlefield : 'Títlo',
+theme_clipboard_msg : 'Copiar/Tallar/Enganxar no és possible amb Mozilla i Firefox.\nVols més informació sobre aquest problema de seguretat?',
+theme_path : 'Camí',
+cut_desc : 'Retallar',
+copy_desc : 'Copiar',
+paste_desc : 'Enganxar',
+link_list : 'Llistat d´enllaços',
+image_list : 'Llistat d´imatges',
+browse : 'Explorar',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/cs.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/cs.js
new file mode 100644 (file)
index 0000000..0954ca0
--- /dev/null
@@ -0,0 +1,70 @@
+/**
+ * Czech lang variables 
+ * encoding: utf-8
+ *  
+ * $Id: cs.js,v 1.1 2006-10-02 05:37:04 shizuki Exp $ 
+ */  
+
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Styly',
+theme_code_desc : 'Zobrazit HTML',
+theme_code_title : 'Editace HTML',
+theme_code_wordwrap : 'Bez dělení slov',
+theme_sub_desc : 'Dolní index',
+theme_sup_desc : 'Horní index',
+theme_hr_desc : 'Vložit vodorovný oddělovač',
+theme_removeformat_desc : 'Zrušit formátování',
+theme_custom1_desc : 'Libovolný popisek',
+insert_image_border : 'Rámeček',
+insert_image_dimensions : 'Rozměry',
+insert_image_vspace : 'Vertikální okraj',
+insert_image_hspace : 'Horizontální okraj',
+insert_image_align : 'Zarovnání',
+insert_image_align_default : 'Výchozí',
+insert_image_align_baseline : 'Na účaří',
+insert_image_align_top : 'Nahoru',
+insert_image_align_middle : 'Na střed',
+insert_image_align_bottom : 'Dolů',
+insert_image_align_texttop : 'Nejvyšší bod textu',
+insert_image_align_absmiddle : 'Střed řádku',
+insert_image_align_absbottom : 'Spodek řádku',
+insert_image_align_left : 'Vlevo',
+insert_image_align_right : 'Vpravo',
+theme_font_size : '-- Velikost textu --',
+theme_fontdefault : '-- Písmo --',
+theme_block : '-- Formát --',
+theme_paragraph : 'Odstavec',
+theme_div : 'Div',
+theme_address : 'Adresa',
+theme_pre : 'Předformát',
+theme_h1 : 'Nadpis 1',
+theme_h2 : 'Nadpis 2',
+theme_h3 : 'Nadpis 3',
+theme_h4 : 'Nadpis 4',
+theme_h5 : 'Nadpis 5',
+theme_h6 : 'Nadpis 6',
+theme_colorpicker_title : 'Výběr barvy',
+theme_colorpicker_apply : 'Vybrat',
+theme_forecolor_desc : 'Barva popředí',
+theme_backcolor_desc : 'Barva pozadí',
+theme_charmap_title : 'Výběr znaku',
+theme_charmap_desc : 'Vložit znak',
+theme_visualaid_desc : 'Zapnout značky/neviditelné prvky',
+insert_anchor_title : 'Vložení/editace záložky',
+insert_anchor_name : 'Název',
+theme_anchor_desc : 'Vložit/editovat záložku',
+theme_insert_link_titlefield : 'Název',
+theme_clipboard_msg : 'Funkce Kopírovat/vyjmout/vložit nejsou použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?',
+theme_path : 'Cesta',
+cut_desc : 'Vyjmout',
+copy_desc : 'Kopírovat',
+paste_desc : 'Vložit',
+link_list : 'Seznam',
+image_list : 'Seznam',
+browse : 'Procházet',
+image_props_desc : 'Vlastnosti obrázku',
+newdocument_desc : 'Nový dokument',
+newdocument : 'Jste si opravdu jistý(á), že chcete vymazat veškerý obsah?'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/cy.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/cy.js
new file mode 100644 (file)
index 0000000..a8b4993
--- /dev/null
@@ -0,0 +1,76 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Arddulliau --',
+theme_code_desc : 'Golygu c&ocirc;d HTML',
+theme_code_title : 'Golygydd C&ocirc;d HTML',
+theme_code_wordwrap : 'Amlapio geiriau',
+theme_sub_desc : 'Is-sgript',
+theme_sup_desc : 'Uwch-sgript',
+theme_hr_desc : 'Mewnosod llinell llorweddol',
+theme_removeformat_desc : 'Diddymu fformatio',
+theme_custom1_desc : 'Dy ddisgrifiad fan hyn',
+insert_image_border : 'Ymyl',
+insert_image_dimensions : 'Meintiau',
+insert_image_vspace : 'Gofod fertigol',
+insert_image_hspace : 'Gofod llorweddol',
+insert_image_align : 'Unioniad',
+insert_image_align_default : '-- Heb ddewis --',
+insert_image_align_baseline : 'Gwaelodlin',
+insert_image_align_top : 'Brig',
+insert_image_align_middle : 'Canol',
+insert_image_align_bottom : 'Gwaelod',
+insert_image_align_texttop : 'Brig Testun',
+insert_image_align_absmiddle : 'Canol Union',
+insert_image_align_absbottom : 'Gwaelod Union',
+insert_image_align_left : 'Chwith',
+insert_image_align_right : 'Dde',
+theme_font_size : '-- Maint ffont --',
+theme_fontdefault : '-- Teulu ffont --',
+theme_block : '-- Fformat --',
+theme_paragraph : 'Paragraff',
+theme_div : 'Div',
+theme_address : 'Cyfeiriad',
+theme_pre : 'Rhag-fformatiwyd',
+theme_h1 : 'Pennawd 1',
+theme_h2 : 'Pennawd 2',
+theme_h3 : 'Pennawd 3',
+theme_h4 : 'Pennawd 4',
+theme_h5 : 'Pennawd 5',
+theme_h6 : 'Pennawd 6',
+theme_colorpicker_title : 'Dewis lliw',
+theme_colorpicker_apply : 'Gosod',
+theme_forecolor_desc : 'Dewis lliw testun',
+theme_backcolor_desc : 'Dewis lliw cefndir',
+theme_charmap_title : 'Dewis llythyren arbennig',
+theme_charmap_desc : 'Gosod llythyren arbennig',
+theme_visualaid_desc : 'Gwrthdroi canllawiau/elfennau anweledig',
+insert_anchor_title : 'Mewnosod/golygu angor',
+insert_anchor_name : 'Enw angor',
+theme_anchor_desc : 'Mewnosod/golygu angor',
+theme_insert_link_titlefield : 'Teitl',
+theme_clipboard_msg : 'Dyw Cop&iuml;o/Torri/Gludo ddim ar gael ym Mozilla na Firefox.\nHoffet ti ragor o wybodaeth ynghylch hyn?',
+theme_path : 'Llwybr',
+cut_desc : 'Torri',
+copy_desc : 'Cop&iuml;o',
+paste_desc : 'Gludo',
+link_list : 'Rhestr dolenni',
+image_list : 'Rhestr delweddau',
+browse : 'Pori',
+image_props_desc : 'Priodoleddau delwedd',
+newdocument_desc : 'Dogfen newydd',
+class_name : 'Dosbarth',
+newdocument : 'Wyt ti\'n sicr eisiau clirio\'r holl gynnwys?',
+about_title : 'Yngl&#375;n &acirc; TinyMCE',
+about : 'Yngl&#375;n &acirc;',
+license : 'Trwydded',
+plugins : 'Ategynnau',
+plugin : 'Ategyn',
+author : 'Awdur',
+version : 'Fersiwn',
+loaded_plugins : 'Ategynnau gweithredol',
+help : 'Cymorth',
+not_set : '-- Heb ddewis --',
+close : 'Cau',
+toolbar_focus : 'Neidio i fotymau offer - Alt+Q, Neidio i\'r golygydd - Alt+Z, Neidio i lwybr y elfen - Alt+X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/da.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/da.js
new file mode 100644 (file)
index 0000000..fb28a37
--- /dev/null
@@ -0,0 +1,75 @@
+// DK lang variables contributed by Jan Moelgaard
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Styles --',
+theme_code_desc : 'Rediger HTML kode',
+theme_code_title : 'HTML Kodeeditor',
+theme_code_wordwrap : 'Ombrydning',
+theme_sub_desc : 'S&#230;nket skrift',
+theme_sup_desc : 'H&#230;vet skrift',
+theme_hr_desc : 'Inds&#230;t horisontal linje',
+theme_removeformat_desc : 'Fjern formatering',
+theme_custom1_desc : 'Inds&#230;t din egen beskrivelse her',
+insert_image_border : 'Kant',
+insert_image_dimensions : 'Dimensioner',
+insert_image_vspace : 'Flyt til venstre',
+insert_image_hspace : 'Flyt til h&#248;jre',
+insert_image_align : 'Justering',
+insert_image_align_default : 'Standard',
+insert_image_align_baseline : 'Bundlinje',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Midt i',
+insert_image_align_bottom : 'I bunden',
+insert_image_align_texttop : 'I toppen af teksten',
+insert_image_align_absmiddle : 'Absolut midte',
+insert_image_align_absbottom : 'Absolut bund',
+insert_image_align_left : 'Venstre',
+insert_image_align_right : 'H&#248;jre',
+theme_font_size : '-- Font st&#248;rrelse --',
+theme_fontdefault : '-- Font gruppe --',
+theme_block : '-- Typografi --',
+theme_paragraph : 'Afsnit',
+theme_div : 'Div',
+theme_address : 'Addresse',
+theme_pre : 'Pr&#230;formateret',
+theme_h1 : 'Overskrift 1',
+theme_h2 : 'Overskrift 2',
+theme_h3 : 'Overskrift 3',
+theme_h4 : 'Overskrift 4',
+theme_h5 : 'Overskrift 5',
+theme_h6 : 'Overskrift 6',
+theme_colorpicker_title : 'V&#230;lg en farve',
+theme_colorpicker_apply : 'Anvend',
+theme_forecolor_desc : 'V&#230;lg forgrundsfarve',
+theme_backcolor_desc : 'V&#230;lg baggrundsfarve',
+theme_charmap_title : 'V&#230;lg specialkarakter',
+theme_charmap_desc : 'Inds&#230;t specialkarakter',
+theme_visualaid_desc : 'Sl&#229; linjer/usynlige elementer til og fra',
+insert_anchor_title : 'Inds&#230;t/rediger bogm&#230;rke',
+insert_anchor_name : 'Bogm&#230;rkets navn',
+theme_anchor_desc : 'Inds&#230;t/rediger bogm&#230;rke',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Kopier/Klip/Inds&#230;t virker ikke i Mozilla og Firefox.\nVil du vide mere om dette?',
+theme_path : 'Sti',
+cut_desc : 'Klip',
+copy_desc : 'Kopier',
+paste_desc : 'Inds&#230;t',
+link_list : 'Linkliste',
+image_list : 'Billedliste',
+browse : 'Gennemse',
+image_props_desc : 'Billedegenskaber',
+newdocument_desc : 'Nyt dokument',
+class_name : 'Klasse',
+newdocument : 'Er du sikker p&#229;, at du vil slette alt?',
+about_title : 'Om TinyMCE',
+about : 'Om',
+license : 'Licens',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Forfatter',
+version : 'Version',
+loaded_plugins : 'Indl&#230;ste plugins',
+help : 'Hj&#230;lp',
+not_set : '-- Ikke defineret --',
+close : 'Luk'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/de.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/de.js
new file mode 100644 (file)
index 0000000..1e1cabf
--- /dev/null
@@ -0,0 +1,76 @@
+// DE lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- CSS-Stile --',
+theme_code_desc : 'HTML-Quelltext editieren',
+theme_code_title : 'HTML-Quelltexteditor',
+theme_code_wordwrap : 'Zeilenumbruch',
+theme_sub_desc : 'Tiefergestellt',
+theme_sup_desc : 'Hochgestellt',
+theme_hr_desc : 'Horizontalen Balken einf&uuml;gen',
+theme_removeformat_desc : 'Formatierung l&ouml;schen',
+theme_custom1_desc : 'Eigene Beschreibung',
+insert_image_border : 'Rahmen',
+insert_image_dimensions : 'Gr&ouml;&szlig;e',
+insert_image_vspace : 'Vertikaler Raum',
+insert_image_hspace : 'Horizontaler Raum',
+insert_image_align : 'Ausrichtung',
+insert_image_align_default : '-- Nicht festgelegt --',
+insert_image_align_baseline : 'Grundlinie',
+insert_image_align_top : 'Oben',
+insert_image_align_middle : 'Mitte',
+insert_image_align_bottom : 'Unten',
+insert_image_align_texttop : 'Mit dem Text',
+insert_image_align_absmiddle : 'Absolute mittig',
+insert_image_align_absbottom : 'Absolut unten',
+insert_image_align_left : 'Links',
+insert_image_align_right : 'Rechts',
+theme_font_size : '-- Schriftgr&ouml;&szlig;e --',
+theme_fontdefault : '-- Schriftfamilie --',
+theme_block : '-- Format --',
+theme_paragraph : 'Absatz',
+theme_div : 'Block',
+theme_address : 'Adresse',
+theme_pre : 'Vorformatiert',
+theme_h1 : '&Uuml;berschrift 1',
+theme_h2 : '&Uuml;berschrift 2',
+theme_h3 : '&Uuml;berschrift 3',
+theme_h4 : '&Uuml;berschrift 4',
+theme_h5 : '&Uuml;berschrift 5',
+theme_h6 : '&Uuml;berschrift 6',
+theme_colorpicker_title : 'Farbe ausw&auml;hlen',
+theme_colorpicker_apply : 'Farbe festlegen',
+theme_forecolor_desc : 'Schriftfarbe ausw&auml;hlen',
+theme_backcolor_desc : 'Hintergrundfarbe ausw&auml;hlen',
+theme_charmap_title : 'Sonderzeichen einf&uuml;gen',
+theme_charmap_desc : 'Sonderzeichen einf&uuml;gen',
+theme_visualaid_desc : 'Hilfslinen/Unsichtbare Elemente anzeigen',
+insert_anchor_title : 'Anker einf&uuml;gen/bearbeiten',
+insert_anchor_name : 'Ankername',
+theme_anchor_desc : 'Anker einf&uuml;gen/bearbeiten',
+theme_insert_link_titlefield : 'Titel',
+theme_clipboard_msg : 'Zwischenablagefunktionen sind in Mozilla und Firefox nicht verf&uuml;gbar.\nW&uuml;nschen Sie hierzu weitere Informationen?',
+theme_path : 'Pfad',
+cut_desc : 'Ausschneiden',
+copy_desc : 'Kopieren',
+paste_desc : 'Einf&uuml;gen',
+link_list : 'Hyperlink-Liste',
+image_list : 'Bild-Liste',
+browse : 'Durchsuchen',
+image_props_desc : 'Bildeigenschaften',
+newdocument_desc : 'Neues Dokument',
+class_name : 'CSS-Klasse',
+newdocument : 'Sind Sie sicher, dass Sie alle Inhalte l&ouml;schen wollen?',
+about_title : '&Uuml;ber TinyMCE',
+about : '&Uuml;ber',
+license : 'Lizenz',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Autor',
+version : 'Version',
+loaded_plugins : 'Geladene Plugins',
+help : 'Hilfe',
+not_set : '-- Nicht festgelegt --',
+close : 'Schlie&szlig;en',
+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/el.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/el.js
new file mode 100644 (file)
index 0000000..d5c5b89
--- /dev/null
@@ -0,0 +1,64 @@
+// Greek lang variables by Jacaranda Bill
+
+tinyMCE.addToLang('',{
+theme_style_select : 'ÈÝìáôá',
+theme_code_desc : '&Aring;ð&aring;î&aring;ñãáóßá HTML êþ&auml;éêá',
+theme_code_title : '&Aring;ð&aring;î&aring;ñãáóôÞò HTML',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : '&Auml;&aring;ßêôçò',
+theme_sup_desc : '&Aring;êèÝôçò',
+theme_hr_desc : '&Aring;éóáãùãÞ ïñéæüíôéáò ãñáììÞò',
+theme_removeformat_desc : 'Áðáëïé&ouml;Þ ìïñ&ouml;ïðïßçóçò',
+theme_custom1_desc : 'Ð&aring;ñéãñá&ouml;Þ',
+insert_image_border : 'Ð&aring;ñßãñáììá',
+insert_image_dimensions : '&Auml;éáóôÜó&aring;éò',
+insert_image_vspace : 'ÊÜè. ð&aring;ñéèþñéï',
+insert_image_hspace : 'Ïñéæ. ð&aring;ñéèþñéï',
+insert_image_align : 'Óôïß÷éóç',
+insert_image_align_default : 'ÐñïêáèïñéóìÝíç',
+insert_image_align_baseline : 'Ó&aring; &aring;õèõãñÜììéóç ì&aring; ôï ê&aring;ßì&aring;íï',
+insert_image_align_top : 'ÐÜíù',
+insert_image_align_middle : 'Óôï êÝíôñï',
+insert_image_align_bottom : 'ÊÜôù',
+insert_image_align_texttop : 'Ôï ê&aring;ßì&aring;íï ðÜíù',
+insert_image_align_absmiddle : 'Áðüëõôá óôï êÝíôñï',
+insert_image_align_absbottom : 'Áðüëõôá êÜôù',
+insert_image_align_left : 'Áñéóô&aring;ñÜ',
+insert_image_align_right : '&Auml;&aring;îéÜ',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'ÐáñÜãñá&ouml;ïò',
+theme_div : 'Div',
+theme_address : '&Auml;é&aring;ýèõíóç',
+theme_pre : 'Preformatted',
+theme_h1 : '&Aring;ðéê&aring;&ouml;áëß&auml;á 1',
+theme_h2 : '&Aring;ðéê&aring;&ouml;áëß&auml;á 2',
+theme_h3 : '&Aring;ðéê&aring;&ouml;áëß&auml;á 3',
+theme_h4 : '&Aring;ðéê&aring;&ouml;áëß&auml;á 4',
+theme_h5 : '&Aring;ðéê&aring;&ouml;áëß&auml;á 5',
+theme_h6 : '&Aring;ðéê&aring;&ouml;áëß&auml;á 6',
+theme_colorpicker_title : '×ñþìáôá',
+theme_colorpicker_apply : '&Aring;&ouml;áñìïãÞ',
+theme_forecolor_desc : '&Aring;ðéëïãÞ ÷ñþìáôïò ãñáììáôïó&aring;éñÜò',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : '&Aring;ðéëïãÞ &aring;é&auml;éêïý ÷áñáêôÞñá',
+theme_charmap_desc : '&Aring;éóáãùãÞ &aring;é&auml;éêïý ÷áñáêôÞñá',
+theme_visualaid_desc : '&Aring;ì&ouml;Üíéóç/Áðüêñõøç ãñáììþí',
+insert_anchor_title : '&Aring;éóáãùãÞ/&Auml;éüñèùóç Üãêõñáò',
+insert_anchor_name : 'Ïíïìáóßá Üãêõñáò',
+theme_anchor_desc : '&Aring;éóáãùãÞ/&Auml;éüñèùóç Üãêõñáò',
+theme_insert_link_titlefield : 'Ôßôëïò',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : 'ÊëÜóç', 
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/en.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/en.js
new file mode 100644 (file)
index 0000000..71184f7
--- /dev/null
@@ -0,0 +1,76 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Styles --',
+theme_code_desc : 'Edit HTML Source',
+theme_code_title : 'HTML Source Editor',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'Subscript',
+theme_sup_desc : 'Superscript',
+theme_hr_desc : 'Insert horizontal ruler',
+theme_removeformat_desc : 'Remove formatting',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : 'Border',
+insert_image_dimensions : 'Dimensions',
+insert_image_vspace : 'Vertical space',
+insert_image_hspace : 'Horizontal space',
+insert_image_align : 'Alignment',
+insert_image_align_default : '-- Not set --',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Middle',
+insert_image_align_bottom : 'Bottom',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Absolute Middle',
+insert_image_align_absbottom : 'Absolute Bottom',
+insert_image_align_left : 'Left',
+insert_image_align_right : 'Right',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraph',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Preformatted',
+theme_h1 : 'Heading 1',
+theme_h2 : 'Heading 2',
+theme_h3 : 'Heading 3',
+theme_h4 : 'Heading 4',
+theme_h5 : 'Heading 5',
+theme_h6 : 'Heading 6',
+theme_colorpicker_title : 'Select a color',
+theme_colorpicker_apply : 'Apply',
+theme_forecolor_desc : 'Select text color',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : 'Select custom character',
+theme_charmap_desc : 'Insert custom character',
+theme_visualaid_desc : 'Toggle guidelines/invisible elements',
+insert_anchor_title : 'Insert/edit anchor',
+insert_anchor_name : 'Anchor name',
+theme_anchor_desc : 'Insert/edit anchor',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : 'Class',
+newdocument : 'Are you sure you want clear all contents?',
+about_title : 'About TinyMCE',
+about : 'About',
+license : 'License',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Author',
+version : 'Version',
+loaded_plugins : 'Loaded plugins',
+help : 'Help',
+not_set : '-- Not set --',
+close : 'Close',
+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/es.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/es.js
new file mode 100644 (file)
index 0000000..01dd981
--- /dev/null
@@ -0,0 +1,101 @@
+/**
+ * ES lang variables
+ * 
+ * Authors : Alvaro Velasco,
+ *           Adolfo Sanz De Diego (asanzdiego) <asanzdiego@yahoo.es>,
+ *           Carlos C Soto (eclipxe) <csoto@sia-solutions.com>
+ * Last Updated : October 17, 2005
+ * TinyMCE Version : 2.0RC3
+ */
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Estilos --',
+theme_code_desc : 'Editar código HTML',
+theme_code_title : 'Editor código HTML',
+theme_code_wordwrap : 'Ajuste de línea',
+theme_sub_desc : 'Subíndice',
+theme_sup_desc : 'Superíndice',
+theme_hr_desc : 'Insertar una barra horizontal',
+theme_removeformat_desc : 'Quitar formato',
+theme_custom1_desc : 'Tu descripción aquí',
+insert_image_border : 'Borde',
+insert_image_dimensions : 'Dimensiones',
+insert_image_vspace : 'Espacio vertical',
+insert_image_hspace : 'Espacio horizontal',
+insert_image_align : 'Alineación',
+insert_image_align_default : '-- Por defecto --',
+insert_image_align_baseline : 'Linea base',
+insert_image_align_top : 'Arriba',
+insert_image_align_middle : 'Centrado',
+insert_image_align_bottom : 'Abajo',
+insert_image_align_texttop : 'Texto arriba',
+insert_image_align_absmiddle : 'Centrado total',
+insert_image_align_absbottom : 'Abajo total',
+insert_image_align_left : 'Izquierda',
+insert_image_align_right : 'Derecha',
+theme_font_size : '-- Tamaño del texto --',
+theme_fontdefault : '-- Tipo de fuente --',
+theme_block : '-- Formato del texto --',
+theme_paragraph : 'Párrafo',
+theme_div : 'Capa',
+theme_address : 'Dirección',
+theme_pre : 'Preformateado',
+theme_h1 : 'Título 1',
+theme_h2 : 'Título 2',
+theme_h3 : 'Título 3',
+theme_h4 : 'Título 4',
+theme_h5 : 'Título 5',
+theme_h6 : 'Título 6',
+theme_colorpicker_title : 'Selecciona un color',
+theme_colorpicker_apply : 'Aplicar',
+theme_forecolor_desc : 'Selecciona un color para el texto',
+theme_backcolor_desc : 'Selecciona un color de fondo',
+theme_charmap_title : 'Selecciona un carácter especial',
+theme_charmap_desc : 'Inserta un carácter especial',
+theme_charmap_all_title : 'Todos',
+theme_charmap_all_desc : 'Todos los caracteres',
+theme_charmap_alpha_title : 'Alfabéticos',
+theme_charmap_alpha_desc : 'Caracteres alfabéticos',
+theme_charmap_arrows_title : 'Flechas',
+theme_charmap_arrows_desc : 'Caracteres de flechas',
+theme_charmap_greek_title : 'Griegos',
+theme_charmap_greek_desc : 'Caracteres Griegos',
+theme_charmap_math_title : 'Mathemáticos',
+theme_charmap_math_desc : 'Caracteres mathemáticos',
+theme_charmap_misc_title : 'Misceláneos',
+theme_charmap_misc_desc : 'Caracteres misceláneos',
+theme_charmap_money_title : 'Monedas',
+theme_charmap_money_desc : 'Caracteres de monedas',
+theme_charmap_quotaion_title : 'Comillas',
+theme_charmap_quotaion_desc : 'Caracteres de comillas',
+theme_visualaid_desc : 'Cambiar las líneas de ayuda por elementos invisibles',
+insert_anchor_title : 'Insertar/editar ancla',
+insert_anchor_name : 'Nombre del ancla',
+theme_anchor_desc : 'Insertar/editar ancla',
+theme_insert_link_titlefield : 'Título',
+theme_clipboard_msg : 'No se pueden utilizar los comandos Copiar / Cortar / Pegar en Mozilla y en Firefox.\r\nUse el teclado Copiar (Ctrl+C) / Cortar (Ctrl+X) / Pegar (Ctrl+V)\r\n¿Quieres obtener más información?',
+theme_path : 'Ruta',
+cut_desc : 'Cortar (Ctrl+X)',
+copy_desc : 'Copiar (Ctrl+C)',
+paste_desc : 'Pegar (Ctrl+V)',
+link_list : 'Lista de enlaces',
+image_list : 'Lista de imágenes',
+browse : 'Navegar',
+image_props_desc : 'Propiedades de la imagen',
+newdocument_desc : 'Nuevo documento',
+class_name : 'Clase',
+newdocument : '¿Estás seguro de que quieres borrar todo el contenido?',
+about_title : 'Acerca de TinyMCE',
+about : 'Acerca',
+license : 'Licencia',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Autor',
+version : 'Versión',
+loaded_plugins : 'Plugins cargados',
+help : 'Ayuda',
+not_set : '-- Por defecto --',
+close : 'Cerrar',
+toolbar_focus : 'Saltar a la barra de herramientas - Alt+Q, Saltar al editor - Alt+Z, Saltar al elemento de la ruta - Alt+X',
+theme_advanced_anchor_delta_width : 20
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fa.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fa.js
new file mode 100644 (file)
index 0000000..9982791
--- /dev/null
@@ -0,0 +1,65 @@
+// IR lang variables
+// Persian (Farsi) language pack (for IRAN)
+// By: Morteza Zafari
+// Lost@LostLord.com
+// http://www.LostLord.com
+
+tinyMCE.addToLang('',{
+dir : 'rtl',
+theme_style_select : '????',
+theme_code_desc : '?????? ????',
+theme_code_title : 'HTML ???????? ????',
+theme_code_wordwrap : '?? ???',
+theme_sub_desc : '??? ????',
+theme_sup_desc : '???? ????',
+theme_hr_desc : '??? ?? ????',
+theme_removeformat_desc : '??? ?? ??? ???? ????',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : '?????',
+insert_image_dimensions : '?????',
+insert_image_vspace : '????? ?????',
+insert_image_hspace : '????? ????',
+insert_image_align : '??? ????????',
+insert_image_align_default : '??? ???',
+insert_image_align_baseline : '?? ????',
+insert_image_align_top : '????',
+insert_image_align_middle : '???',
+insert_image_align_bottom : '?????',
+insert_image_align_texttop : '????? ???',
+insert_image_align_absmiddle : '??? ????',
+insert_image_align_absbottom : '????? ????',
+insert_image_align_left : '??',
+insert_image_align_right : '????',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : '????????',
+theme_div : 'Div',
+theme_address : '????',
+theme_pre : '?? ??? ????? ???',
+theme_h1 : '???? 1',
+theme_h2 : '???? 2',
+theme_h3 : '???? 3',
+theme_h4 : '???? 4',
+theme_h5 : '???? 5',
+theme_h6 : '???? 6',
+theme_colorpicker_title : '??? ?? ?????? ????',
+theme_colorpicker_apply : '?????',
+theme_forecolor_desc : '?????? ??? ???',
+theme_backcolor_desc : '?????? ??? ?????',
+theme_charmap_title : '?????? ??????? ????',
+theme_charmap_desc : '??? ??????? ????',
+theme_visualaid_desc : '????? ???? ???? ? ????? ??????',
+insert_anchor_title : '??? ? ?????? Anchor',
+insert_anchor_name : '??? Anchor',
+theme_anchor_desc : '??? ? ?????? Anchor',
+theme_insert_link_titlefield : '?????',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : '????',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fi.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fi.js
new file mode 100644 (file)
index 0000000..e515be9
--- /dev/null
@@ -0,0 +1,77 @@
+// FI lang variables by Urho Konttori from Absolutions
+// Updated by Tuomo Aura from Ateco.fi
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Tyylit --',
+theme_code_desc : 'Muokkaa HTML-l&auml;hdekoodia',
+theme_code_title : 'HTML-L&auml;hdekoodin muokkaus',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'Alaindeksi',
+theme_sup_desc : 'Yl&auml;indeksi',
+theme_hr_desc : 'Lis&auml;&auml; vaakaviiva',
+theme_removeformat_desc : 'Poista muotoilu',
+theme_custom1_desc : 'Kirjoita oma selityksesi t&auml;h&auml;n',
+insert_image_border : 'Reuna',
+insert_image_dimensions : 'Mitat',
+insert_image_vspace : 'Pystyv&auml;li',
+insert_image_hspace : 'Vaakav&auml;li',
+insert_image_align : 'Asettelu',
+insert_image_align_default : 'Oletus',
+insert_image_align_baseline : 'Perustasoon',
+insert_image_align_top : 'Yl&auml;laitaan',
+insert_image_align_middle : 'Keskelle',
+insert_image_align_bottom : 'Alalaitaan',
+insert_image_align_texttop : 'Tekstin yl&auml;laitaan',
+insert_image_align_absmiddle : 'Absoluuttisen keskelle',
+insert_image_align_absbottom : 'Absoluuttisen alas',
+insert_image_align_left : 'Vasemmalle',
+insert_image_align_right : 'Oikealle',
+theme_font_size : '-- Fonttikoko --',
+theme_fontdefault : '-- Fontti --',
+theme_block : '-- Muotoilu --',
+theme_paragraph : 'Kappale',
+theme_div : 'Div',
+theme_address : 'Osoite',
+theme_pre : 'Etuk&auml;teen muotoiltu',
+theme_h1 : 'Otsikko 1',
+theme_h2 : 'Otsikko 2',
+theme_h3 : 'Otsikko 3',
+theme_h4 : 'Otsikko 4',
+theme_h5 : 'Otsikko 5',
+theme_h6 : 'Otsikko 6',
+theme_colorpicker_title : 'Valitse v&auml;ri',
+theme_colorpicker_apply : 'Aseta v&auml;ri',
+theme_forecolor_desc : 'Valitse fontin v&auml;ri',
+theme_backcolor_desc : 'Valitse taustav&auml;ri',
+theme_charmap_title : 'Valitse erikoismerkki',
+theme_charmap_desc : 'Lis&auml;&auml; oma erikoismerkki',
+theme_visualaid_desc : 'N&auml;yt&auml;/piilota apuviivat',
+insert_anchor_title : 'Lis&auml;&auml;/muokkaa ankkuria',
+insert_anchor_name : 'Ankkurin nimi',
+theme_anchor_desc : 'Lis&auml;&auml;/muokkaa ankkuria',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Leikkaus/Kopiointi/Liit&auml;minen ei onnistu Mozilla eik&auml; Firefox -selaimilla tietoturvasyist&auml;. \n Haluatko lis&auml;tietoa aiheesta?',
+theme_path : 'Polku',
+cut_desc : 'Leikkaa',
+copy_desc : 'Kopioi',
+paste_desc : 'Liit&auml;',
+link_list : 'Linkkilista',
+image_list : 'Kuvalista',
+browse : 'Selaa',
+image_props_desc : 'Kuvan ominaisuudet',
+newdocument_desc : 'Uusi dokumentti',
+class_name : 'Luokka',
+newdocument : 'Oletko varma, ett&auml; haluat poistaa kaiken sis&auml;ll&ouml;n?',
+about_title : 'TinyMCE:n tiedot',
+about : 'Tiedot',
+license : 'Lisenssi',
+plugins : 'Pluginit',
+plugin : 'Plugini',
+author : 'Tekij&auml;',
+version : 'Versio',
+loaded_plugins : 'Ladatut pluginit',
+help : 'Apua',
+not_set : '-- Ei asetettu --',
+close : 'Sulje',
+toolbar_focus : 'Hypp&auml;&auml; ty&ouml;kalupainikkeisiin - Alt+Q, Hypp&auml;&auml; editoriin - Alt-Z, Hypp&auml;&auml; polkuun - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fr.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fr.js
new file mode 100644 (file)
index 0000000..bf16316
--- /dev/null
@@ -0,0 +1,78 @@
+// Canadian French lang variables by Virtuelcom
+// Modify by Laurent Dran 13-02-2006
+// Modifié par Normand Lamoureux le 2005-11-12
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Style --',
+theme_code_desc : 'Afficher le code source',
+theme_code_title : 'Édititon du code source',
+theme_code_wordwrap : 'Retour à la ligne automatique',
+theme_sub_desc : 'Indice',
+theme_sup_desc : 'Exposant',
+theme_hr_desc : 'Insérer une règle horizontale ordinaire',
+theme_removeformat_desc : 'Supprimer le formattage',
+theme_custom1_desc : 'Votre description personnalisée ici',
+insert_image_border : 'Bordure',
+insert_image_dimensions : 'Dimensions',
+insert_image_vspace : 'Espacement vertical',
+insert_image_hspace : 'Espacement horizontal',
+insert_image_align : 'Alignement',
+insert_image_align_default : '-- Indéfini --',
+insert_image_align_baseline : 'Ligne de base',
+insert_image_align_top : 'Haut',
+insert_image_align_middle : 'Milieu',
+insert_image_align_bottom : 'Bas',
+insert_image_align_texttop : 'Haut du texte',
+insert_image_align_absmiddle : 'Milieu absolu',
+insert_image_align_absbottom : 'Bas absolu',
+insert_image_align_left : 'En flottement à gauche',
+insert_image_align_right : 'En flottement à droite',
+theme_font_size : '-- Taille --',
+theme_fontdefault : '-- Police --',
+theme_block : '-- Bloc de texte --',
+theme_paragraph : 'Paragraphe',
+theme_div : 'Div',
+theme_address : 'Infos sur l\'auteur',
+theme_pre : 'Texte préformaté',
+theme_h1 : 'Titre de niveau 1',
+theme_h2 : 'Titre de niveau 2',
+theme_h3 : 'Titre de niveau 3',
+theme_h4 : 'Titre de niveau 4',
+theme_h5 : 'Titre de niveau 5',
+theme_h6 : 'Titre de niveau 6',
+theme_colorpicker_title : 'Choisir une couleur',
+theme_colorpicker_apply : 'Appliquer',
+theme_forecolor_desc : 'Couleur du texte',
+theme_backcolor_desc : 'Couleur d\'arrière-plan',
+theme_charmap_title : 'Sélectionner un charactère spécial',
+theme_charmap_desc : 'Insérer un charactère spécial',
+theme_visualaid_desc : 'Activer/Désactiver les lignes guides et les éléments invisibles',
+insert_anchor_title : 'Gestionnaire d\'ancre',
+insert_anchor_name : 'Nom de l\'ancre',
+theme_anchor_desc : 'Insérer/Modifier une ancre',
+theme_insert_link_titlefield : 'Info-bulle',
+theme_clipboard_msg : 'Pour des raisons de sécurité, les fonctions « Copier », « Couper » et « Coller »\nne sont pas disponibles dans Mozilla et Firefox.\n\n\nVoulez-vous plus d\'information à ce sujet?\n',
+theme_path : 'Élément(s) en cours ',
+cut_desc : 'Couper',
+copy_desc : 'Copier',
+paste_desc : 'Coller',
+link_list : 'Lien de la liste',
+image_list : 'Image de la liste',
+browse : 'Naviguer',
+image_props_desc : 'Propriétés de l\'image',
+newdocument_desc : 'Nouveau document',
+class_name : 'Classe CSS',
+newdocument : 'Êtes-vous sûr de vouloir supprimer tout le contenu ?',
+about_title : 'À propos de TinyMCE',
+about : 'À propos',
+license : 'License',
+plugins : 'Extensions',
+plugin : 'Extension',
+author : 'Auteur',
+version : 'Version',
+loaded_plugins : 'Extensions installées',
+help : 'Aide',
+not_set : '-- Indéfini --',
+close : 'Fermer',
+toolbar_focus : 'Atteindre la barre d\'outils (Alt+Q), Atteindre l\'éditeur (Alt-Z), Atteindre l\'élément en cours (Alt-X)'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fr_ca.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/fr_ca.js
new file mode 100644 (file)
index 0000000..52a155c
--- /dev/null
@@ -0,0 +1,64 @@
+// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Styles --',
+theme_code_desc : 'Modifier le code source HTML',
+theme_code_title : 'Éditeur de code source HTML',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'Souscrit',
+theme_sup_desc : 'Indice supérieur',
+theme_hr_desc : 'Insérer un séparateur horizontal',
+theme_removeformat_desc : 'Supprimer le formattage',
+theme_custom1_desc : 'Votre description personnalisée ici',
+insert_image_border : 'Bordure',
+insert_image_dimensions : 'Dimensions',
+insert_image_vspace : 'VSpace',
+insert_image_hspace : 'HSpace',
+insert_image_align : 'Alignement',
+insert_image_align_default : 'Défaut',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Haut',
+insert_image_align_middle : 'Milieu',
+insert_image_align_bottom : 'Bas',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Milieu absolu',
+insert_image_align_absbottom : 'Bas absolu',
+insert_image_align_left : 'Gauche',
+insert_image_align_right : 'Droit',
+theme_font_size : 'Taille',
+theme_fontdefault : '-- Police --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraphe',
+theme_div : 'Div',
+theme_address : 'Addresse',
+theme_pre : 'Préformatté',
+theme_h1 : 'Entête 1',
+theme_h2 : 'Entête 2',
+theme_h3 : 'Entête 3',
+theme_h4 : 'Entête 4',
+theme_h5 : 'Entête 5',
+theme_h6 : 'Entête 6',
+theme_colorpicker_title : 'Choisir une couleur',
+theme_colorpicker_apply : 'Appliquer',
+theme_forecolor_desc : 'Choisir la couleur d\'avant plan',
+theme_backcolor_desc : 'Choisir une couleur d\'arrière plan',
+theme_charmap_title : 'Sélectionner un charactère spécial',
+theme_charmap_desc : 'Insérer un charactère spécial',
+theme_visualaid_desc : 'Active/Désactive les lignes guides et les éléments invisibles',
+insert_anchor_title : 'Insérer/Modifier une ancre',
+insert_anchor_name : 'Nom de l\'ancre',
+theme_anchor_desc : 'Insérer / Modifier une ancre',
+theme_insert_link_titlefield : 'Titre',
+theme_clipboard_msg : 'Copier/Couper/Coller ne sont pas disponibles dans Mozilla et FireFox.\nDésirez-vous consulter de plus amples informations à ce sujet?',
+theme_path : 'Chemin',
+cut_desc : 'Couper',
+copy_desc : 'Copier',
+paste_desc : 'Coller',
+link_list : 'Liste de liens',
+image_list : 'Liste d\'images',
+browse : 'Sélectionner',
+image_props_desc : 'Propriétés de l\'image',
+newdocument_desc : 'Nouveau Document',
+class_name : 'Classe',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/he.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/he.js
new file mode 100644 (file)
index 0000000..0e8ec02
--- /dev/null
@@ -0,0 +1,76 @@
+// HE lang variables by Liron Newman, http://eesh.net
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- ñéâðåðåú --',
+theme_code_desc : 'òøåê àú ÷åã ä-HTML',
+theme_code_title : 'òåøê ÷åã HTML',
+theme_code_wordwrap : 'âìéùú ùåøåú',
+theme_sub_desc : 'ëúá úçúé',
+theme_sup_desc : 'ëúá òéìé',
+theme_hr_desc : 'äëðñ ÷å àåô÷é',
+theme_removeformat_desc : 'äñø òéöåá',
+theme_custom1_desc : 'äúéàåø ùìê ëàï',
+insert_image_border : 'âáåì',
+insert_image_dimensions : 'îéîãéí',
+insert_image_vspace : 'çìì àðëé',
+insert_image_hspace : 'çìì àåô÷é',
+insert_image_align : 'ééùåø',
+insert_image_align_default : 'áøéøú îçãì',
+insert_image_align_baseline : 'ì÷å äáñéñ',
+insert_image_align_top : 'ìîòìä',
+insert_image_align_middle : 'ìàîöò',
+insert_image_align_bottom : 'ìîèä',
+insert_image_align_texttop : 'ìøàù äè÷ñè',
+insert_image_align_absmiddle : 'ìàîöò îåçìè',
+insert_image_align_absbottom : 'ì÷öä úçúåï îåçìè',
+insert_image_align_left : 'ìùîàì',
+insert_image_align_right : 'ìéîéï',
+theme_font_size : 'âåãì âåôï',
+theme_fontdefault : '-- îùôçú âåôðéí --',
+theme_block : '-- òéöåá --',
+theme_paragraph : 'ôñ÷ä',
+theme_div : '÷èò',
+theme_address : 'ëúåáú',
+theme_pre : 'îòåöá îøàù',
+theme_h1 : 'ëåúøú 1',
+theme_h2 : 'ëåúøú 2',
+theme_h3 : 'ëåúøú 3',
+theme_h4 : 'ëåúøú 4',
+theme_h5 : 'ëåúøú 5',
+theme_h6 : 'ëåúøú 6',
+theme_colorpicker_title : 'áçø öáò',
+theme_colorpicker_apply : 'äçì',
+theme_forecolor_desc : 'áçø öáò è÷ñè',
+theme_backcolor_desc : 'áçø öáò ø÷ò',
+theme_charmap_title : 'áçø úå îéåçã',
+theme_charmap_desc : 'äëðñ úå îéåçã',
+theme_visualaid_desc : 'äçìó îöá ÷ååéí îðçéí/øëéáéí áìúé-ðøàéí',
+insert_anchor_title : 'äëðñ/òøåê òåâï',
+insert_anchor_name : 'ùí äòåâï',
+theme_anchor_desc : 'äëðñ/òøåê òåâï',
+theme_insert_link_titlefield : 'ëåúøú',
+theme_clipboard_msg : 'ôòåìåú äòú÷ä/âæéøä/äãá÷ä àéðï ðúîëåú úçú Mozilla å-Firefox.\näàí áøöåðê ì÷áì îéãò ðåñó àåãåú ðåùà æä?',
+theme_path : 'ðúéá',
+cut_desc : 'âæåø',
+copy_desc : 'äòú÷',
+paste_desc : 'äãá÷',
+link_list : 'øùéîú ÷éùåøéí',
+image_list : 'øùéîú úîåðåú',
+browse : 'ñééø',
+image_props_desc : 'îàôééðé úîåðä',
+newdocument_desc : 'îñîê çãù',
+class_name : 'îçì÷ä',
+newdocument : 'äàí àúä áèåç ùáøöåðê ìð÷åú àú ëì äúåëï?',
+about_title : 'àåãåú TinyMCE',
+about : 'àåãåú',
+license : 'øéùéåï',
+plugins : 'úåñôéí',
+plugin : 'úåñó',
+author : 'îçáø',
+version : 'âøñä',
+loaded_plugins : 'úåñôéí ôòéìéí',
+help : 'òæøä',
+not_set : '-- ìà îåâãø --',
+close : 'ñâéøä',
+toolbar_focus : 'òáåø àì ëôúåøé äëìéí - Alt+Q, òáåø àì äòåøê - Alt-Z, òáåø àì ðúéá òéöåá - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/hu.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/hu.js
new file mode 100644 (file)
index 0000000..2dce5e9
--- /dev/null
@@ -0,0 +1,75 @@
+// HU lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Stílusok --',
+theme_code_desc : 'HTML forrás szerkesztése',
+theme_code_title : 'HTML forrás szerkesztõ',
+theme_code_wordwrap : 'Sortördelés',
+theme_sub_desc : 'Alsóindex',
+theme_sup_desc : 'Felsõindex',
+theme_hr_desc : 'Vizszíntes vonal beszúrása',
+theme_removeformat_desc : 'Formázás eltávolítása',
+theme_custom1_desc : 'Az egyéni leírásod jön ide',
+insert_image_border : 'Keret',
+insert_image_dimensions : 'Kiterjedés',
+insert_image_vspace : 'Függõleges terület',
+insert_image_hspace : 'Vizszintes terület',
+insert_image_align : 'Elhelyezkedés',
+insert_image_align_default : '-- Nincs beállítva --',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Felül',
+insert_image_align_middle : 'Középen',
+insert_image_align_bottom : 'Alul',
+insert_image_align_texttop : 'Szövegfelett',
+insert_image_align_absmiddle : 'Abszolút közép',
+insert_image_align_absbottom : 'Abszolút alatt',
+insert_image_align_left : 'Balra',
+insert_image_align_right : 'Jobbra',
+theme_font_size : '-- Betûméret --',
+theme_fontdefault : '-- Betûcsalád --',
+theme_block : '-- Formátum --',
+theme_paragraph : 'Bekezdés',
+theme_div : 'Div',
+theme_address : 'Cím',
+theme_pre : 'Elõreformázott',
+theme_h1 : 'Fejléc 1',
+theme_h2 : 'Fejléc 2',
+theme_h3 : 'Fejléc 3',
+theme_h4 : 'Fejléc 4',
+theme_h5 : 'Fejléc 5',
+theme_h6 : 'Fejléc 6',
+theme_colorpicker_title : 'Színválasztás',
+theme_colorpicker_apply : 'Alkalmaz',
+theme_forecolor_desc : 'Szövegszín választás',
+theme_backcolor_desc : 'Háttérszín választás',
+theme_charmap_title : 'Egyéni karakter választás',
+theme_charmap_desc : 'Egyéni karakter beszúrás',
+theme_visualaid_desc : 'Sorjelölõk/láthatatlan elemek kapcsolása',
+insert_anchor_title : 'Horgony nbeillesztése/szerkesztése',
+insert_anchor_name : 'Horgony név',
+theme_anchor_desc : 'Horgony nbeillesztése/szerkesztése',
+theme_insert_link_titlefield : 'Cím',
+theme_clipboard_msg : 'A Másolás/Kivágás/Beillesztés nem elérhetõ Mozillában and Firefox-ban.\nSzeretnél több információt errõl a problémáról?',
+theme_path : 'Útvonal',
+cut_desc : 'Kivágás',
+copy_desc : 'Másolás',
+paste_desc : 'Beillesztés',
+link_list : 'Link lista',
+image_list : 'Kép lista',
+browse : 'Tallózás',
+image_props_desc : 'Kép tulajdonságai',
+newdocument_desc : 'Új dokumentum',
+class_name : 'Osztály',
+newdocument : 'Biztos hogy törölni akarod az összes tartalmat?',
+about_title : 'TinyMCE névjegye',
+about : 'Névjegy',
+license : 'Licensz',
+plugins : 'Bõvítmények',
+plugin : 'Bõvítmény',
+author : 'Szerzõ',
+version : 'Verzió',
+loaded_plugins : 'Betöltött bõvítmények',
+help : 'Súgó',
+not_set : '-- Nincs beállítva --',
+close : 'Bezárás'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/is.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/is.js
new file mode 100644 (file)
index 0000000..a46059e
--- /dev/null
@@ -0,0 +1,76 @@
+// Iceland lang variables by Johannes Birgir Jensson
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- St&iacute;lar --',
+theme_code_desc : 'Breyta HTML k&oacute;&eth;a',
+theme_code_title : 'HTML k&oacute;&eth;aritill',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'L&aacute;gskrift',
+theme_sup_desc : 'H&aacute;skrift',
+theme_hr_desc : 'Setja inn stiku',
+theme_removeformat_desc : 'Fjarl&aelig;gja textasni&eth;',
+theme_custom1_desc : 'Þ&iacute;n l&yacute;sing h&eacute;r',
+insert_image_border : 'Rammi',
+insert_image_dimensions : 'V&iacute;ddir',
+insert_image_vspace : 'Bil fyrir ofan og ne&eth;an',
+insert_image_hspace : 'Bil til vinstri og h&aelig;gri',
+insert_image_align : 'J&ouml;fnun',
+insert_image_align_default : '-- Ekki valin --',
+insert_image_align_baseline : 'Sama l&iacute;na',
+insert_image_align_top : 'Uppi',
+insert_image_align_middle : 'Mi&eth;ja',
+insert_image_align_bottom : 'Ni&eth;ri',
+insert_image_align_texttop : 'Texti efst',
+insert_image_align_absmiddle : 'Alveg &iacute; mi&eth;ju',
+insert_image_align_absbottom : 'Alveg ne&eth;st',
+insert_image_align_left : 'Vinstri',
+insert_image_align_right : 'H&aelig;gri',
+theme_font_size : '-- Textast&aelig;r&eth; --',
+theme_fontdefault : '-- Leturger&eth; --',
+theme_block : '-- Textasni&eth; --',
+theme_paragraph : 'M&aacute;lsgrein',
+theme_div : 'Div',
+theme_address : 'Heimilisfang',
+theme_pre : 'Ritv&eacute;l',
+theme_h1 : 'Haus 1',
+theme_h2 : 'Haus 2',
+theme_h3 : 'Haus 3',
+theme_h4 : 'Haus 4',
+theme_h5 : 'Haus 5',
+theme_h6 : 'Haus 6',
+theme_colorpicker_title : 'Veldu lit',
+theme_colorpicker_apply : 'Sta&eth;festa',
+theme_forecolor_desc : 'Veldu textalit',
+theme_backcolor_desc : 'Veldu bakgrunnslit',
+theme_charmap_title : 'Veldu s&eacute;rstaf',
+theme_charmap_desc : 'Setja s&eacute;rstaf inn',
+theme_visualaid_desc : 'S&yacute;na/fela t&ouml;flur, akkeri og fleira',
+insert_anchor_title : 'Setja inn/breyta akkeri',
+insert_anchor_name : 'Heiti akkeris',
+theme_anchor_desc : 'Setja inn/breyta akkeri',
+theme_insert_link_titlefield : 'Titill',
+theme_clipboard_msg : 'Afrita/klippa/l&iacute;ma er ekki virkt &iacute; Mozilla og Firefox.\nViltu f&aacute; uppl&yacute;singar um hvernig &thorn;&uacute; getur kveikt &aacute; &thorn;eim?',
+theme_path : 'Sl&oacute;&eth;',
+cut_desc : 'Klippa',
+copy_desc : 'Afrita',
+paste_desc : 'Skeyta',
+link_list : 'Tenglalisti',
+image_list : 'Myndalisti',
+browse : 'Vafra',
+image_props_desc : 'Stillingar myndar',
+newdocument_desc : 'N&yacute;tt skjal',
+class_name : 'Class',
+newdocument : 'Ertu viss um a&eth; &thorn;&uacute; viljir hreinsa allt burtu?',
+about_title : 'Um TinyMCE',
+about : 'Um',
+license : 'Leyfi',
+plugins : 'Vi&eth;b&aelig;tur',
+plugin : 'Vi&eth;b&oacute;t',
+author : 'H&ouml;fundur',
+version : '&Uacute;tg&aacute;fa',
+loaded_plugins : 'Virkar vi&eth;b&aelig;tur',
+help : 'Hj&aacute;lp',
+not_set : '-- Ekki vali&eth; --',
+close : 'Loka',
+toolbar_focus : 'Fl&yacute;tilykill fyrir takka - Alt+Q, Fl&yacute;tilykill fyrir ritil - Alt-Z, Fl&yacute;tilykill fyrir sl&oacute;&eth; - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/it.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/it.js
new file mode 100644 (file)
index 0000000..fcb79c7
--- /dev/null
@@ -0,0 +1,64 @@
+// Variabili di lingua IT - fabrix.xm@lombardiacom.it
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Stili',
+theme_code_desc : 'Edita il sorgente HTML',
+theme_code_title : 'Editor Sorgente HTML',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'Pedice',
+theme_sup_desc : 'Apice',
+theme_hr_desc : 'Inserisci linea orizzontale',
+theme_removeformat_desc : 'Rimuovi formattazione',
+theme_custom1_desc : 'Scrivi qui la tua descrizione personalizzata',
+insert_image_border : 'Bordo',
+insert_image_dimensions : 'Dimensioni',
+insert_image_vspace : 'Spazio verticale',
+insert_image_hspace : 'Spazio orizzontale',
+insert_image_align : 'Allineamento',
+insert_image_align_default : 'Default',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Superiore',
+insert_image_align_middle : 'Centrale',
+insert_image_align_bottom : 'Inferiore',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Centro assoluto',
+insert_image_align_absbottom : 'Inferiore assoluto',
+insert_image_align_left : 'Sinistra',
+insert_image_align_right : 'Destra',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragrafo',
+theme_div : 'Div',
+theme_address : 'Indirizzo',
+theme_pre : 'Preformattato',
+theme_h1 : 'Intestazione 1',
+theme_h2 : 'Intestazione 2',
+theme_h3 : 'Intestazione 3',
+theme_h4 : 'Intestazione 4',
+theme_h5 : 'Intestazione 5',
+theme_h6 : 'Intestazione 6',
+theme_colorpicker_title : 'Seleziona un colore',
+theme_colorpicker_apply : 'Applica',
+theme_forecolor_desc : 'Seleziona il colore',
+theme_backcolor_desc : 'Seleziona il colore di sfondo',
+theme_charmap_title : 'Seleziona un carattere custom',
+theme_charmap_desc : 'Inserisci un carattere custom',
+theme_visualaid_desc : 'Mostra/nascondi linee guida e elementi invisibili',
+insert_anchor_title : 'Inserisci/modifica &agrave;ncora',
+insert_anchor_name : 'Nome &agrave;ncora',
+theme_anchor_desc : 'Inserisci/modifica &agrave;ncora',
+theme_insert_link_titlefield : 'Titolo',
+theme_clipboard_msg : 'Copia, Taglia e Incolla non sono disponibili in Mozilla e Firefox.\nVuoi maggiori dettegli su questo problema?',
+theme_path : 'Percorso',
+cut_desc : 'Taglia',
+copy_desc : 'Copia',
+paste_desc : 'Incolla',
+link_list : 'Lista link',
+image_list : 'Lista immagini',
+browse : 'Sfoglia',
+image_props_desc : 'Proprietà dell\'immagine',
+newdocument_desc : 'Nuovo documento',
+class_name : 'Classe', 
+newdocument : 'Sicuro di voler cancellare l\'intero contenuto?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja.js
new file mode 100644 (file)
index 0000000..2d0d349
--- /dev/null
@@ -0,0 +1,62 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '\e$B%9%?%$%k\e(B',
+theme_paragraph : '\e$BJ8L.\e(B',
+theme_address : '\e$B%"%I%l%9\e(B',
+theme_pre : '\e$B@07A:Q$_\e(B',
+theme_h1 : 'H1',
+theme_h2 : 'H2',
+theme_h3 : 'H3',
+theme_h4 : 'H4',
+theme_h5 : 'H5',
+theme_h6 : 'H6',
+theme_div : 'Div',
+insert_anchor_title : '\e$B%"%s%+!<$NA^F~\e(B/\e$BJT=8\e(B',
+insert_anchor_name : '\e$B%"%s%+!<$NL>A0\e(B',
+theme_anchor_desc : '\e$B%"%s%+!<$NA^F~\e(B/\e$BJT=8\e(B',
+theme_code_desc : 'HTML\e$B$ND>@\JT=8\e(B',
+theme_code_title : 'HTML\e$B$NJT=8\e(B',
+theme_code_wordwrap : 'Word wrap',
+theme_hr_desc : '\e$B?eJ?@~\e(B',
+theme_removeformat_desc : '\e$B@07A>pJs:o=|\e(B',
+theme_visualaid_desc : '\e$BJd=u>pJs$N;k3P2=\e(B(\e$B%H%0%k\e(B)',
+theme_sub_desc : '\e$BE:;z2<\e(B',
+theme_sup_desc : '\e$BE:;z>e\e(B',
+theme_charmap_desc : '\e$BFC<lJ8;z$NF~NO\e(B',
+theme_charmap_title : '\e$BFC<lJ8;z$rA*Br$7$F2<$5$$\e(B',
+insert_image_dimensions : '\e$BBg$-$5;XDj\e(B',
+insert_image_border : '\e$B6-3&I}\e(B',
+insert_image_vspace : '\e$B=DM>Gr\e(B',
+insert_image_hspace : '\e$B2#M>Gr\e(B',
+insert_image_align : '\e$B0LCV9g$o$;\e(B',
+insert_image_align_default : '\e$B0EL[\e(B',
+insert_image_align_baseline : '\e$B4p=`@~\e(B',
+insert_image_align_top : '\e$B>e\e(B',
+insert_image_align_middle : '\e$BCf\e(B',
+insert_image_align_bottom : '\e$B2<\e(B',
+insert_image_align_texttop : '\e$BJ8;z$N>e\e(B',
+insert_image_align_absmiddle : '\e$B@dBP$KCf\e(B',
+insert_image_align_absbottom : '\e$B@dBP$K2<\e(B',
+insert_image_align_left : '\e$B:8\e(B',
+insert_image_align_right : '\e$B1&\e(B',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_colorpicker_title : '\e$B?\'$N;XDj\e(B',
+theme_colorpicker_apply : '\e$BE,MQ\e(B',
+theme_forecolor_desc : '\e$BA07J?\'\e(B',
+theme_backcolor_desc : 'Select background color',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : '\e$B%/%i%9\e(B',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja_euc.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja_euc.js
new file mode 100644 (file)
index 0000000..6c60e2a
--- /dev/null
@@ -0,0 +1,76 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- ¥¹¥¿¥¤¥ë --',
+theme_code_desc : '¥½¡¼¥¹¤ÎľÀÜÊÔ½¸',
+theme_code_title : 'HTML¥½¡¼¥¹',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : '¾åź»ú',
+theme_sup_desc : '²¼Åº»ú',
+theme_hr_desc : '¿åÊ¿ÀþÁÞÆþ',
+theme_removeformat_desc : 'À°·ÁÇË´þ',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : '°Ï¤ßÀþ',
+insert_image_dimensions : '²èÁü³ÑÅÙ',
+insert_image_vspace : '¾å²¼Í¾Çò',
+insert_image_hspace : 'º¸±¦Í¾Çò',
+insert_image_align : 'Align',
+insert_image_align_default : '-- Ì¤ÄêµÁ --',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Middle',
+insert_image_align_bottom : 'Bottom',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Absolute Middle',
+insert_image_align_absbottom : 'Absolute Bottom',
+insert_image_align_left : 'Left',
+insert_image_align_right : 'Right',
+theme_font_size : '-- ¥Õ¥©¥ó¥È¥µ¥¤¥º --',
+theme_fontdefault : '-- ¥Õ¥©¥ó¥È --',
+theme_block : '-- ÃÊÍ¥¿¥¤¥ë --',
+theme_paragraph : 'P',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Pre',
+theme_h1 : 'H1',
+theme_h2 : 'H2',
+theme_h3 : 'H3',
+theme_h4 : 'H4',
+theme_h5 : 'H5',
+theme_h6 : 'H6',
+theme_colorpicker_title : '¿§¤ÎÁªÂò',
+theme_colorpicker_apply : 'ŬÍÑ',
+theme_forecolor_desc : '¥Æ¥­¥¹¥È¿§ÁªÂò',
+theme_backcolor_desc : 'ÇØ·Ê¿§ÁªÂò',
+theme_charmap_title : 'Æüìʸ»ú¤ÎÁÞÆþ',
+theme_charmap_desc : 'Æüìʸ»ú¤ÎÁÞÆþ',
+theme_visualaid_desc : 'ɽ¼¨/Èóɽ¼¨¤ÎÀÚÂØ',
+insert_anchor_title : '¥¢¥ó¥«¡¼¤ÎÁÞÆþ/ÊÔ½¸',
+insert_anchor_name : '¥¢¥ó¥«¡¼Ì¾',
+theme_anchor_desc : '¥¢¥ó¥«¡¼¤ÎÁÞÆþ/ÊÔ½¸',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Mozilla/Firefox¤Ç¤ÏÀÚ¼è¤ê¡¢¥³¥Ô¡¼¡¢Å½ÉÕ¤±¤Ï¤Ç¤­¤Þ¤»¤ó',
+theme_path : '¥Ñ¥¹',
+cut_desc : 'ÀÚ¼è¤ê',
+copy_desc : '¥³¥Ô¡¼',
+paste_desc : 'ŽÉÕ¤±',
+link_list : '¥ê¥ó¥¯°ìÍ÷',
+image_list : '²èÁü°ìÍ÷',
+browse : '¥Ö¥é¥¦¥º',
+image_props_desc : '²èÁü¤Î¥×¥í¥Ñ¥Æ¥£',
+newdocument_desc : '¿·µ¬¥É¥­¥å¥á¥ó¥È',
+class_name : '¥¯¥é¥¹',
+newdocument : '¤¹¤Ù¤Æ¾Ãµî¤·¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«?',
+about_title : 'About TinyMCE',
+about : 'About',
+license : '¥é¥¤¥»¥ó¥¹',
+plugins : '¥×¥é¥°¥¤¥ó',
+plugin : '¥×¥é¥°¥¤¥ó',
+author : 'Author',
+version : '¥Ð¡¼¥¸¥ç¥ó',
+loaded_plugins : 'Loaded plugins',
+help : '¥Ø¥ë¥×',
+not_set : '-- Ì¤ÁªÂò --',
+close : 'ÊĤ¸¤ë',
+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ja_utf8.js
new file mode 100644 (file)
index 0000000..651ccc3
--- /dev/null
@@ -0,0 +1,76 @@
+// JP lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- スタイル --',
+theme_code_desc : 'ソースの直接編集',
+theme_code_title : 'HTMLソース',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : '上添字',
+theme_sup_desc : '下添字',
+theme_hr_desc : '水平線挿入',
+theme_removeformat_desc : '整形破棄',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : '囲み線',
+insert_image_dimensions : '画像角度',
+insert_image_vspace : '上下余白',
+insert_image_hspace : '左右余白',
+insert_image_align : 'Align',
+insert_image_align_default : '-- 未定義 --',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Middle',
+insert_image_align_bottom : 'Bottom',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Absolute Middle',
+insert_image_align_absbottom : 'Absolute Bottom',
+insert_image_align_left : 'Left',
+insert_image_align_right : 'Right',
+theme_font_size : '-- フォントサイズ --',
+theme_fontdefault : '-- フォント --',
+theme_block : '-- 段落スタイル --',
+theme_paragraph : 'P',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Pre',
+theme_h1 : 'H1',
+theme_h2 : 'H2',
+theme_h3 : 'H3',
+theme_h4 : 'H4',
+theme_h5 : 'H5',
+theme_h6 : 'H6',
+theme_colorpicker_title : '色の選択',
+theme_colorpicker_apply : '適用',
+theme_forecolor_desc : 'テキスト色選択',
+theme_backcolor_desc : '背景色選択',
+theme_charmap_title : '特殊文字の挿入',
+theme_charmap_desc : '特殊文字の挿入',
+theme_visualaid_desc : '表示/非表示の切替',
+insert_anchor_title : 'アンカーの挿入/編集',
+insert_anchor_name : 'アンカー名',
+theme_anchor_desc : 'アンカーの挿入/編集',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Mozilla/Firefoxでは切取り、コピー、貼付けはできません',
+theme_path : 'パス',
+cut_desc : '切取り',
+copy_desc : 'コピー',
+paste_desc : '貼付け',
+link_list : 'リンク一覧',
+image_list : '画像一覧',
+browse : 'ブラウズ',
+image_props_desc : '画像のプロパティ',
+newdocument_desc : '新規ドキュメント',
+class_name : 'クラス',
+newdocument : 'すべて消去してよろしいですか?',
+about_title : 'About TinyMCE',
+about : 'About',
+license : 'ライセンス',
+plugins : 'プラグイン',
+plugin : 'プラグイン',
+author : 'Author',
+version : 'バージョン',
+loaded_plugins : 'Loaded plugins',
+help : 'ヘルプ',
+not_set : '-- 未選択 --',
+close : '閉じる',
+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ko.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ko.js
new file mode 100644 (file)
index 0000000..fc48ea1
--- /dev/null
@@ -0,0 +1,65 @@
+// KO lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '½º&Aring;¸ÀÏ',
+theme_code_desc : 'HTML ¼Ò½º °í&Auml;¡±â',
+theme_code_title : 'HTML ¼Ò½º ÆíÁý±â',
+theme_code_wordwrap : 'Word wrap',
+theme_code_save : 'ÀúÀ&aring;',
+theme_sub_desc : '¾Æ·¡Ã·ÀÚ',
+theme_sup_desc : 'À§Ã·ÀÚ',
+theme_hr_desc : '°¡·ÎÁÙ ³&Ouml;±â',
+theme_removeformat_desc : '¼Ó¼º Á&ouml;¿ì±â',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : '&Aring;׵θ®',
+insert_image_dimensions : '&Aring;©±â',
+insert_image_vspace : '¼¼·Î ¿©¹é',
+insert_image_hspace : '°¡·Î ¿©¹é',
+insert_image_align : 'Á¤·&Auml;',
+insert_image_align_default : '±âº»°ª',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Middle',
+insert_image_align_bottom : 'Bottom',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Absolute Middle',
+insert_image_align_absbottom : 'Absolute Bottom',
+insert_image_align_left : 'Left',
+insert_image_align_right : 'Right',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : '´Ü¶ô',
+theme_div : 'Div',
+theme_address : 'Á&Ouml;¼Ò',
+theme_pre : '¼­½&Auml; À&Ouml;À½',
+theme_h1 : 'Á¦¸ñ 1',
+theme_h2 : 'Á¦¸ñ 2',
+theme_h3 : 'Á¦¸ñ 3',
+theme_h4 : 'Á¦¸ñ 4',
+theme_h5 : 'Á¦¸ñ 5',
+theme_h6 : 'Á¦¸ñ 6',
+theme_colorpicker_title : '»&ouml;»ó ¼±&Aring;Ã',
+theme_colorpicker_apply : 'Àû¿ë',
+theme_forecolor_desc : '±ÛÀÚ »&ouml;»ó',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : 'Select custom character',
+theme_charmap_desc : 'Insert custom character',
+theme_visualaid_desc : 'Toggle guidelines/invisible elements',
+insert_anchor_title : '¾Þ&Auml;¿ ³&Ouml;±â/°í&Auml;¡±â',
+insert_anchor_name : '¾Þ&Auml;¿ À̸§',
+theme_anchor_desc : '¾Þ&Auml;¿ ³&Ouml;±â/°í&Auml;¡±â',
+theme_insert_link_titlefield : 'Á¦¸ñ',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : '&Aring;¬·¡½º',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nb.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nb.js
new file mode 100644 (file)
index 0000000..c08b0e5
--- /dev/null
@@ -0,0 +1,77 @@
+// nb = Norwegian (bokm&aring;l) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Stiler',
+theme_code_desc : 'Redigere HTML Koden',
+theme_code_title : 'HTML Kildekode Redigering',
+theme_code_wordwrap : 'Ord deling',
+theme_sub_desc : 'Nedsenket skrift',
+theme_sup_desc : 'Opph&oslash;yd skrift',
+theme_hr_desc : 'Sett inn horisontal linje',
+theme_removeformat_desc : 'Fjern formatering',
+theme_custom1_desc : 'Din spesialfunksjons beskrivelse her',
+insert_image_border : 'Ramme',
+insert_image_dimensions : 'Dimensjoner',
+insert_image_vspace : 'Vertikalt tomrom',
+insert_image_hspace : 'Horisontalt tomrom',
+insert_image_align : 'Justering',
+insert_image_align_default : 'Intet',
+insert_image_align_baseline : 'Bunnlinjen',
+insert_image_align_top : 'Lengst opp',
+insert_image_align_middle : 'Midten',
+insert_image_align_bottom : 'Lengst ned',
+insert_image_align_texttop : 'Tekstens topp',
+insert_image_align_absmiddle : 'Absolutt midten',
+insert_image_align_absbottom : 'Absolutt lengst ned',
+insert_image_align_left : 'Venstre',
+insert_image_align_right : 'H&oslash;yre',
+insert_image_delta_width : 30,
+insert_image_delta_height : 10,
+theme_font_size : '-- Font st&oslash;rrelse --',
+theme_fontdefault : '-- Font familie --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraf',
+theme_div : 'Div',
+theme_address : 'Adresse',
+theme_pre : 'Pre-formattert',
+theme_h1 : 'Overskrift 1',
+theme_h2 : 'Overskrift 2',
+theme_h3 : 'Overskrift 3',
+theme_h4 : 'Overskrift 4',
+theme_h5 : 'Overskrift 5',
+theme_h6 : 'Overskrift 6',
+theme_colorpicker_title : 'Velg en farge',
+theme_colorpicker_apply : 'Bruk',
+theme_forecolor_desc : 'Velg forgrunnsfarge',
+theme_backcolor_desc : 'Velg bakgrunnsfarge',
+theme_charmap_title : 'Velg spesialtegn',
+theme_charmap_desc : 'Sett inn spesialtegn',
+theme_visualaid_desc : 'Sl&aring; av/p&aring; usynlige elementer',
+insert_anchor_title : 'Opprette/endre anker',
+insert_anchor_name : 'Ankernavn',
+theme_anchor_desc : 'Opprette/endre anker',
+theme_insert_link_titlefield : 'Tittel',
+theme_clipboard_msg : 'Kopier/Klipp ut/Lim inn er ikke tilgjengelig i Mozilla/Firefox.\nVil du ha mere informasjon om dette?',
+theme_path : 'S&oslash;kevei',
+cut_desc : 'Klipp ut',
+copy_desc : 'Kopier',
+paste_desc : 'Lim inn',
+link_list : 'Lenke liste',
+image_list : 'Bilde liste',
+browse : 'Bla gjennom',
+image_props_desc : 'Bilde egenskaper',
+newdocument_desc : 'Nytt dokument',
+class_name : 'Stil',
+newdocument : 'Er du sikker p&aring; at du vil t&oslash;mme hele redigeringsomr&aring;det?',
+about_title : 'Om TinyMCE',
+about : 'Om',
+license : 'Lisens',
+plugins : 'Innstikksprogrammer',
+plugin : 'Innstikksprogram',
+author : 'Utviklere',
+version : 'Versjon',
+loaded_plugins : 'Lastet innstikksprogram',
+help : 'Hjelp',
+not_set : '-- Ikke satt --',
+close : 'Stopp'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nl.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nl.js
new file mode 100644 (file)
index 0000000..7d58347
--- /dev/null
@@ -0,0 +1,76 @@
+// NL lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Stijlen --',
+theme_code_desc : 'HTML bron bewerken',
+theme_code_title : 'HTML code-editor',
+theme_code_wordwrap : 'Terugloop',
+theme_sub_desc : 'Subscript',
+theme_sup_desc : 'Superscript',
+theme_hr_desc : 'Horizontale lijn invoegen',
+theme_removeformat_desc : 'Opmaak verwijderen',
+theme_custom1_desc : 'Tik hier een omschrijving',
+insert_image_border : 'Rand',
+insert_image_dimensions : 'Afmetingen',
+insert_image_vspace : 'Verticale marge',
+insert_image_hspace : 'Horizontale marge',
+insert_image_align : 'Uitlijning',
+insert_image_align_default : '-- geen --',
+insert_image_align_baseline : 'Basislijn',
+insert_image_align_top : 'Boven',
+insert_image_align_middle : 'Midden',
+insert_image_align_bottom : 'Onder',
+insert_image_align_texttop : 'Bovenkant tekst',
+insert_image_align_absmiddle : 'Absoluut midden',
+insert_image_align_absbottom : 'Absoluut onder',
+insert_image_align_left : 'Links',
+insert_image_align_right : 'Rechts',
+theme_font_size : '-- Lettergrootte --',
+theme_fontdefault : '-- Lettertype --',
+theme_block : '-- Paragraaf --',
+theme_paragraph : 'Paragraaf',
+theme_div : 'Blok',
+theme_address : 'Adres',
+theme_pre : 'Opgemaakt',
+theme_h1 : 'Kop 1',
+theme_h2 : 'Kop 2',
+theme_h3 : 'Kop 3',
+theme_h4 : 'Kop 4',
+theme_h5 : 'Kop 5',
+theme_h6 : 'Kop 6',
+theme_colorpicker_title : 'Selecteer een kleur',
+theme_colorpicker_apply : 'Toepassen',
+theme_forecolor_desc : 'Een tekstkleur selecteren',
+theme_backcolor_desc : 'Een achtergrondkleur selecteren',
+theme_charmap_title : 'Speciale tekens invoegen',
+theme_charmap_desc : 'Speciale tekens invoegen',
+theme_visualaid_desc : 'Onzichtbare elementen en hulplijnen aan/uit',
+insert_anchor_title : 'Bladwijzer invoegen/bewerken',
+insert_anchor_name : 'Bladwijzer naam',
+theme_anchor_desc : 'Bladwijzer invoegen/bewerken',
+theme_insert_link_titlefield : 'titel',
+theme_clipboard_msg : 'Kopi&euml;ren/Knippen/Plakken is uit veiligheidsoverwegingen niet direct beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze kwestie?',
+theme_path : 'Pad',
+cut_desc : 'Knippen',
+copy_desc : 'Kopiëren',
+paste_desc : 'Plakken',
+link_list : 'Hyperlinklijst',
+image_list : 'Afbeeldinglijst',
+browse : 'Bladeren',
+image_props_desc : 'Eigenschappen van afbeelding',
+newdocument_desc : 'Nieuw document',
+class_name : 'Stijl',
+newdocument : 'Weet u zeker dat u de hele inhoud wilt wissen?',
+about_title : 'Over TinyMCE',
+about : 'Over',
+license : 'Licentie',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Author',
+version : 'Versie',
+loaded_plugins : 'Ingeladen plugins',
+help : 'Help',
+not_set : '-- geen --',
+close : 'Sluiten',
+toolbar_focus : 'Ga naar werkbalk knoppen - Alt+Q, Ga naar editor - Alt-Z, Ga naar pad - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nn.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/nn.js
new file mode 100644 (file)
index 0000000..9090a45
--- /dev/null
@@ -0,0 +1,77 @@
+// nn = Norwegian (nynorsk) lang variables by Knut B. Jacobsen
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Stiler',
+theme_code_desc : 'Redigere HTML Koden',
+theme_code_title : 'HTML Kildekode Redigering',
+theme_code_wordwrap : 'Ord deling',
+theme_sub_desc : 'Nedsenket skrift',
+theme_sup_desc : 'Opph&oslash;gd skrift',
+theme_hr_desc : 'Sett inn horisontal linje',
+theme_removeformat_desc : 'Fjern formatering',
+theme_custom1_desc : 'Din spesialfunksjons beskrivelse her',
+insert_image_border : 'Ramme',
+insert_image_dimensions : 'Dimensjoner',
+insert_image_vspace : 'Vertikalt tomrom',
+insert_image_hspace : 'Horisontalt tomrom',
+insert_image_align : 'Justering',
+insert_image_align_default : 'Intet',
+insert_image_align_baseline : 'Bunnlinjen',
+insert_image_align_top : 'Lengst opp',
+insert_image_align_middle : 'Midten',
+insert_image_align_bottom : 'Lengst ned',
+insert_image_align_texttop : 'Tekstens topp',
+insert_image_align_absmiddle : 'Absolutt midten',
+insert_image_align_absbottom : 'Absolutt lengst ned',
+insert_image_align_left : 'Venstre',
+insert_image_align_right : 'H&oslash;gre',
+insert_image_delta_width : 30,
+insert_image_delta_height : 10,
+theme_font_size : '-- Font st&oslash;rrelse --',
+theme_fontdefault : '-- Font familie --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraf',
+theme_div : 'Div',
+theme_address : 'Adresse',
+theme_pre : 'Pre-formattert',
+theme_h1 : 'Overskrift 1',
+theme_h2 : 'Overskrift 2',
+theme_h3 : 'Overskrift 3',
+theme_h4 : 'Overskrift 4',
+theme_h5 : 'Overskrift 5',
+theme_h6 : 'Overskrift 6',
+theme_colorpicker_title : 'Velg en farge',
+theme_colorpicker_apply : 'Bruk',
+theme_forecolor_desc : 'Velg forgrunnsfarge',
+theme_backcolor_desc : 'Velg bakgrunnsfarge',
+theme_charmap_title : 'Velg spesialtegn',
+theme_charmap_desc : 'Sett inn spesialtegn',
+theme_visualaid_desc : 'Sl&aring; av/p&aring; usynlige elementer',
+insert_anchor_title : 'Opprette/endre anker',
+insert_anchor_name : 'Ankernavn',
+theme_anchor_desc : 'Opprette/endre anker',
+theme_insert_link_titlefield : 'Tittel',
+theme_clipboard_msg : 'Kopier/Klipp ut/Lim inn er ikke tilgjengelig i Mozilla/Firefox.\nVil du ha mere informasjon om dette?',
+theme_path : 'S&oslash;kevei',
+cut_desc : 'Klipp ut',
+copy_desc : 'Kopier',
+paste_desc : 'Lim inn',
+link_list : 'Lenke liste',
+image_list : 'Bilde liste',
+browse : 'Bla gjennom',
+image_props_desc : 'Bilde egenskaper',
+newdocument_desc : 'Nytt dokument',
+class_name : 'Stil',
+newdocument : 'Er du sikker p&aring; at du vil t&oslash;mme hele redigeringsomr&aring;det?',
+about_title : 'Om TinyMCE',
+about : 'Om',
+license : 'Lisens',
+plugins : 'Innstikksprogrammer',
+plugin : 'Innstikksprogram',
+author : 'Utviklere',
+version : 'Versjon',
+loaded_plugins : 'Lastet innstikksprogram',
+help : 'Hjelp',
+not_set : '-- Ikkje satt --',
+close : 'Stopp'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pl.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pl.js
new file mode 100644 (file)
index 0000000..b479e5e
--- /dev/null
@@ -0,0 +1,79 @@
+// PL lang variables
+// fixed by Wooya
+// http://www.mfusion.prv.pl
+// fixed by lemiel 14.11.2005
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Styl',
+theme_code_desc : 'Edytuj zródd³o html',
+theme_code_title : 'Edytor zród³a html',
+theme_code_wordwrap : 'Zawijanie wierszy',
+theme_sub_desc : 'Nadpisywanie',
+theme_sup_desc : 'Podpisywanie',
+theme_hr_desc : 'Wstaw poziom± liniê',
+theme_removeformat_desc : 'Usuñ formatowanie',
+theme_custom1_desc : 'Wstaw w³asny opis',
+insert_image_border : 'Ramka',
+insert_image_dimensions : 'Wymiary',
+insert_image_vspace : 'Pionowy odstêp',
+insert_image_hspace : 'Poziomy odstêp',
+insert_image_align : 'Otaczanie',
+insert_image_align_default : 'Domy¶lne',
+insert_image_align_baseline : 'Do linii bazowej',
+insert_image_align_top : 'Górne',
+insert_image_align_middle : '¦rodkowe',
+insert_image_align_bottom : 'Dolne',
+insert_image_align_texttop : 'Tekst powy¿ej',
+insert_image_align_absmiddle : 'Absolutny ¶rodek',
+insert_image_align_absbottom : 'Absolutny dó³',
+insert_image_align_left : 'Lewe',
+insert_image_align_right : 'Prawe',
+theme_font_size : '-- Rozmiar czcionki --',
+theme_fontdefault : '-- Rodzina czcionki --',
+theme_block : '-- Format --',
+theme_paragraph : '-- Paragraf --',
+theme_div : 'Div',
+theme_address : 'Adres',
+theme_pre : 'Preformatowanie',
+theme_h1 : 'Nag³ówek 1',
+theme_h2 : 'Nag³ówek 2',
+theme_h3 : 'Nag³ówek 3',
+theme_h4 : 'Nag³ówek 4',
+theme_h5 : 'Nag³ówek 5',
+theme_h6 : 'Nag³ówek 6',
+theme_colorpicker_title : 'Wybierz kolor',
+theme_colorpicker_apply : 'Wybierz',
+theme_forecolor_desc : 'Wybierz kolor tekstu',
+theme_backcolor_desc : 'Wybierz kolor t³a',
+theme_charmap_title : 'Wybierz znak',
+theme_charmap_desc : 'Wstaw znak',
+theme_visualaid_desc : 'Prze³±cz linie prowadz±ce/niewidoczne elementy',
+insert_anchor_title : 'Kotwica',
+insert_anchor_name : 'Nazwa kotwicy',
+theme_anchor_desc : 'Wstaw/Edytuj kotwicê',
+theme_insert_link_titlefield : 'Tytu³',
+theme_clipboard_msg : 'Kopiuj/Edytuj/Wklej nie jest dostêpne w przegl±darkach Mozilla i Firefox.\nPotrzebujesz wiêcej informacji na ten temat?',
+theme_path : '\8ccie¿ka',
+cut_desc : 'Wytnij',
+copy_desc : 'Kopiuj',
+paste_desc : 'Wklej',
+link_list : 'Lista linków',
+image_list : 'Lista obrazków',
+browse : 'Przegl±daj',
+image_props_desc : 'W³a¶ciwosci obrazka',
+newdocument_desc : 'Nowy dokument',
+class_name : 'Klasa',
+newdocument : 'Czy jeste¶ pewien, ¿e chcesz wyczy¶ciæ zawarto¶æ tego dokumentu?',
+about_title : 'O TinyMCE ...',
+about : 'O ...',
+license : 'Licencja',
+plugins : 'Pluginy',
+plugin : 'Plugin',
+author : 'Autor',
+version : 'Wersja',
+loaded_plugins : 'Za³adowane pluginy',
+help : 'Pomoc',
+not_set : '-- Nie wybrano --',
+close : 'Zamknij',
+toolbar_focus : 'Skocz do przycisków narzêdzi - Alt+Q, Skocz do edytora - Alt-Z, Skocz do ¶cie¿ki elementu - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pt.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pt.js
new file mode 100644 (file)
index 0000000..60778b8
--- /dev/null
@@ -0,0 +1,65 @@
+// PT lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Estilos CSS',
+theme_code_desc : 'Editar Fonte HTML',
+theme_code_title : 'Editor de fonte HTML',
+theme_code_save : 'Guardar',
+theme_code_wordwrap : 'Translinear palavras',
+theme_sub_desc : 'Subscrito',
+theme_sup_desc : 'Superscrito',
+theme_hr_desc : 'Inserir linha horizontal',
+theme_removeformat_desc : 'Remover formatação',
+theme_custom1_desc : 'Descrição customizada aqui',
+insert_image_border : 'Borda',
+insert_image_dimensions : 'Dimensões',
+insert_image_vspace : 'Espaçamento Vert.',
+insert_image_hspace : 'Espaçamento Horiz.',
+insert_image_align : 'Alinhamento',
+insert_image_align_default : 'Por omissão',
+insert_image_align_baseline : 'Linha de base',
+insert_image_align_top : 'Topo',
+insert_image_align_middle : 'Centrado',
+insert_image_align_bottom : 'Fundo',
+insert_image_align_texttop : 'Topo do Texto',
+insert_image_align_absmiddle : 'Centrado absoluto',
+insert_image_align_absbottom : 'Fundo absoluto',
+insert_image_align_left : 'Esquerda',
+insert_image_align_right : 'Direita',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Parágrafo',
+theme_div : 'Bloco HTML',
+theme_address : 'Morada',
+theme_pre : 'Pré formatado',
+theme_h1 : 'Título 1',
+theme_h2 : 'Título 2',
+theme_h3 : 'Título 3',
+theme_h4 : 'Título 4',
+theme_h5 : 'Título 5',
+theme_h6 : 'Título 6',
+theme_colorpicker_title : 'Seleccione uma côr',
+theme_colorpicker_apply : 'Aplicar',
+theme_forecolor_desc : 'Seleccione côr da frente',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : 'Seleccione símbolo customizado',
+theme_charmap_desc : 'Inserir símbolo customizado',
+theme_visualaid_desc : 'Ligar/Desligar guias/elementos invisíveis',
+insert_anchor_title : 'Inserir/editar âncora',
+insert_anchor_name : 'Nome da âncora',
+theme_anchor_desc : 'Inserir/editar âncora',
+theme_insert_link_titlefield : 'Título',
+theme_clipboard_msg : 'Copiar/Cortar/Colar não está disponível em Mozilla e Firefox.\nPretende obter mais informação acerca deste assunto?',
+theme_path : 'Path',
+cut_desc : 'Cortar',
+copy_desc : 'Copiar',
+paste_desc : 'Colar',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : 'Classe de CSS',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pt_br.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/pt_br.js
new file mode 100644 (file)
index 0000000..105e4a4
--- /dev/null
@@ -0,0 +1,115 @@
+/**
+ * pt_br lang variables
+ * Brazilian Portuguese
+ *
+ * Authors : ????
+ * Revision and modifications:
+ *           Marcio Barbosa (mpg) <mpg@mpg.com.br>
+ * Last Updated : November 26, 2005
+ * TinyMCE Version : 2.0RC4
+ */
+tinyMCE.addToLang('',{
+theme_style_select : 'Estilos',
+theme_code_desc : 'Editar Código HTML',
+theme_code_title : 'Editor de Código HTML',
+theme_code_wordwrap : 'Quebrar Linhas',
+theme_sub_desc : 'Subscrito',
+theme_sup_desc : 'Subrescrito',
+theme_hr_desc : 'Inserir linha horizontal',
+theme_removeformat_desc : 'Remover formatação',
+theme_custom1_desc : 'Sua descrição personalizada aqui',
+insert_image_border : 'Borda',
+insert_image_dimensions : 'Dimensões',
+insert_image_vspace : 'Espaço Vertical',
+insert_image_hspace : 'Espaço Horizontal',
+insert_image_align : 'Alinhamento',
+insert_image_align_default : 'Padrão',
+insert_image_align_baseline : 'Linha base',
+insert_image_align_top : 'Topo',
+insert_image_align_middle : 'Centro',
+insert_image_align_bottom : 'Fundo',
+insert_image_align_texttop : 'Texto ao Topo',
+insert_image_align_absmiddle : 'Centro Absoluto',
+insert_image_align_absbottom : 'Fundo Absoluto',
+insert_image_align_left : 'Esquerda',
+insert_image_align_right : 'Direita',
+theme_font_size : '-- Corpo --',
+theme_fontdefault : '-- Tipo de Fonte --',
+theme_block : '-- Formato --',
+theme_paragraph : 'Parágrafo',
+theme_div : 'Div',
+theme_address : 'Endereço',
+theme_pre : 'Pré-formatado',
+theme_h1 : 'Cabeçalho 1',
+theme_h2 : 'Cabeçalho 2',
+theme_h3 : 'Cabeçalho 3',
+theme_h4 : 'Cabeçalho 4',
+theme_h5 : 'Cabeçalho 5',
+theme_h6 : 'Cabeçalho 6',
+theme_colorpicker_title : 'Selecionar côr',
+theme_colorpicker_apply : 'Aplicar',
+theme_forecolor_desc : 'Selecionar côr do texto',
+theme_backcolor_desc : 'Selecionar côr de fundo',
+theme_charmap_title : 'Selecionar caracter especial',
+theme_charmap_desc : 'Inserir caracter especial',
+theme_charmap_alpha_desc : 'Caracteres alfabéticos',
+theme_charmap_arrows_title : 'Flechas',
+theme_charmap_arrows_desc : 'Caracteres de flechas',
+theme_charmap_greek_title : 'Gregos',
+theme_charmap_greek_desc : 'Caracteres Gregos',
+theme_charmap_math_title : 'Mathematicos',
+theme_charmap_math_desc : 'Caracteres mathematicos',
+theme_charmap_misc_title : 'Diversos',
+theme_charmap_misc_desc : 'Caracteres diversos',
+theme_charmap_money_title : 'Moedas',
+theme_charmap_money_desc : 'Caracteres de moedas',
+theme_charmap_quotaion_title : 'Apóstrofes',
+theme_charmap_quotaion_desc : 'Caracteres de Apóstrofe',
+theme_visualaid_desc : 'Trocar as linhas de ajuda por elementos invisíveis',
+insert_anchor_title : 'Inserir/editar âncora',
+insert_anchor_name : 'Nome da âncora',
+theme_anchor_desc : 'Inserir/editar âncora',
+theme_insert_link_titlefield : 'Título',
+theme_clipboard_msg : 'Não se pode utiliza os comando de Copiar / Cortar / Colar no Mozilla e Firefox.\r\nUse o teclado para Copiar (Ctrl+C) / Cortar (Ctrl+X) / Colar (Ctrl+V)\r\nQuer obter mais informação?',
+theme_path : 'Rota',
+cut_desc : 'Cortar (Ctrl+X)',
+copy_desc : 'Copiar (Ctrl+C)',
+paste_desc : 'Colar (Ctrl+V)',
+link_list : 'Lista de links',
+image_list : 'Lista de imagens',
+browse : 'Navegar',
+image_props_desc : 'Propriedades da imagem',
+newdocument_desc : 'Novo documento',
+class_name : 'Classe',
+newdocument : 'Tem certesa que deseja apagar todo o conteúdo?',
+about_title : 'Sobre o TinyMCE',
+about : 'Sobre',
+license : 'Licença',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Autor',
+version : 'Versão',
+loaded_plugins : 'Plugins carregados',
+help : 'Ajuda',
+not_set : '-- Por padrão --',
+close : 'Fechar',
+toolbar_focus : 'Ir para a barra de ferramentas - Alt+Q, Ir para o editor - Alt+Z, Ir para o elemento de destino - Alt+X',
+theme_visualaid_desc : 'Tornar linhas visíveis/invisíveis',
+insert_anchor_title : 'Inserir/editar âncora',
+insert_anchor_name : 'Nome da âncora',
+theme_anchor_desc : 'Inserir/editar âncora',
+theme_insert_link_titlefield : 'Título',
+theme_clipboard_msg : 'Copiar/Recortar/Colar não é permitido no Mozilla e Firefox.\nQuer mais informações sobre isso?',
+theme_path : 'Caminho',
+cut_desc : 'Recortar',
+copy_desc : 'Copiar',
+paste_desc : 'Colar',
+link_list : 'Lista de Links',
+image_list : 'Lista de Imagens',
+browse : 'Navegar',
+image_props_desc : 'Propriedades da Imagem',
+newdocument_desc : 'Novo Documento',
+class_name : 'Classe',
+newdocument : 'Tem certeza que deseja limpar todo o conteúdo?',
+theme_advanced_anchor_delta_width : 20
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/readme.txt b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/readme.txt
new file mode 100644 (file)
index 0000000..e32bcf0
--- /dev/null
@@ -0,0 +1,4 @@
+Theme specific language packs.
+
+The language pack codes are based on ISO-639-2
+http://www.loc.gov/standards/iso639-2/englangn.html
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru.js
new file mode 100644 (file)
index 0000000..0ecf8fc
--- /dev/null
@@ -0,0 +1,76 @@
+// Russian lang variables cp1251
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Ñòèëè --',
+theme_code_desc : 'Ðåäàêòèðîâàòü HTML êîäû',
+theme_code_title : 'Ðåäàêòîð HTML êîäîâ',
+theme_code_wordwrap : 'Ïåðåíîñ ïî ñëîâàì',
+theme_sub_desc : 'Íèæíèé èíäåêñ',
+theme_sup_desc : 'Âåðõíèé èíäåêñ',
+theme_hr_desc : 'Âñòàâèòü ãîðèçîíòàëüíûé ðàçäåëèòåëü',
+theme_removeformat_desc : 'Óáðàòü ôîðìàòèðîâàíèå',
+theme_custom1_desc : 'Âàøå ïðîèçâîëüíîå îïèñàíèå',
+insert_image_border : 'Ðàìêà',
+insert_image_dimensions : 'Ðàçìåðû',
+insert_image_vspace : 'Âåðòèêàëüíûé îòñòóï',
+insert_image_hspace : 'Ãîðèçîíòàëüíûé îòñòóï',
+insert_image_align : 'Âûðàâíèâàíèå',
+insert_image_align_default : '-- Íå çàäàíî --',
+insert_image_align_baseline : 'Ïî áàçîâîé ëèíèè',
+insert_image_align_top : 'Ïî âåðõó',
+insert_image_align_middle : 'Ïîñðåäèíå',
+insert_image_align_bottom : 'Ïî íèçó',
+insert_image_align_texttop : 'Ïî âåðõó òåêñòà',
+insert_image_align_absmiddle : 'Àáñîëþòíî ïîñðåäèíå',
+insert_image_align_absbottom : 'Àáñîëþòíî ñâåðõó',
+insert_image_align_left : 'Âëåâî',
+insert_image_align_right : 'Âïðàâî',
+theme_font_size : '-- Ðàçìåð øðèôòà --',
+theme_fontdefault : '-- Ñåìåéñòâî øðèôòîâ --',
+theme_block : '-- Ôîðìàò --',
+theme_paragraph : 'Àáçàö',
+theme_div : 'Div',
+theme_address : 'Ñòèëü àäðåñà',
+theme_pre : ':`Ïðåäâàðèòåëüíî ôîðìàòèðîâàííûé',
+theme_h1 : 'Çàãîëîâîê 1',
+theme_h2 : 'Çàãîëîâîê 2',
+theme_h3 : 'Çàãîëîâîê 3',
+theme_h4 : 'Çàãîëîâîê 4',
+theme_h5 : 'Çàãîëîâîê 5',
+theme_h6 : 'Çàãîëîâîê 6',
+theme_colorpicker_title : 'Âûáðàòü öâåò',
+theme_colorpicker_apply : 'Ïðèìåíèòü',
+theme_forecolor_desc : 'Âûáðàòü öâåò òåêñòà',
+theme_backcolor_desc : 'Âûáðàòü öâåò ôîíà',
+theme_charmap_title : 'Âûáîð ïðîèçâîëüíîãî ñèìâîëà',
+theme_charmap_desc : 'Âñòàâèòü ïðîèçâîëüíûé ñèìâîë',
+theme_visualaid_desc : 'Ïîêàçàòü ãðàíèöû ñêðûòûõ ýëåìåíòîâ',
+insert_anchor_title : 'Âñòàâèòü/ðåäàêòèðîâàòü ÿêîðü',
+insert_anchor_name : 'Èìÿ ÿêîðÿ',
+theme_anchor_desc : 'Âñòàâèòü/ðåäàêòèðîâàòü ÿêîðü',
+theme_insert_link_titlefield : 'Çàãîëîâîê',
+theme_clipboard_msg : 'Êîïèðîâàòü/Âûðåçàòü/Âñòàâèòü íåäîñòóïíû äëÿ Mozilla è Firefox.\nÕîòèòå óçíàòü îá ýòîì ïîäðîáíåå?',
+theme_path : 'Ïóòü',
+cut_desc : 'Âûðåçàòü',
+copy_desc : 'Êîïèðîâàòü',
+paste_desc : 'Âñòàâèòü',
+link_list : 'Ïåðå÷àíü ññûëîê',
+image_list : 'Ïåðå÷åíü êàðòèíîê',
+browse : 'Ïîäîáðàòü',
+image_props_desc : 'Ñâîéñòâà êàðòèíêè',
+newdocument_desc : 'Íîâûé äîêóìåíò',
+class_name : 'Êëàññ',
+newdocument : 'Âû óâåðåíû, ÷òî õîòèòå î÷èñòèòü âñ¸ ñîäåðæèìîå?',
+about_title : 'ΠTinyMCE',
+about : 'ΠTinyMCE',
+license : 'Ëèöåíçèÿ',
+plugins : 'Ïëàãèíû',
+plugin : 'Ïëàãèí',
+author : 'Àâòîð',
+version : 'Âåðñèÿ',
+loaded_plugins : 'Çàãðóæåííûå ïëàãèíû',
+help : 'Ïîìîùü',
+not_set : '-- íå óñòàíîâëåíî --',
+close : 'Çàêðûòü',
+toolbar_focus : 'Ïåðåìåñòèòü ôîêóñ íà ïàíåëü èíñòðóìåíòîâ - Alt+Q, Ïåðåìåñòèòü ôîêóñ â ðåäàêòîð - Alt-Z, Ïåðåìåñòèòü ôîêóñ íà ýëåìåíò ïóòè - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru_KOI8-R.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru_KOI8-R.js
new file mode 100644 (file)
index 0000000..d0b65bc
--- /dev/null
@@ -0,0 +1,76 @@
+// Russian lang variables KOI8-R
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- óÔÉÌÉ --',
+theme_code_desc : 'òÅÄÁËÔÉÒÏ×ÁÔØ HTML ËÏÄÙ',
+theme_code_title : 'òÅÄÁËÔÏÒ HTML ËÏÄÏ×',
+theme_code_wordwrap : 'ðÅÒÅÎÏÓ ÐÏ ÓÌÏ×ÁÍ',
+theme_sub_desc : 'îÉÖÎÉÊ ÉÎÄÅËÓ',
+theme_sup_desc : '÷ÅÒÈÎÉÊ ÉÎÄÅËÓ',
+theme_hr_desc : '÷ÓÔÁ×ÉÔØ ÇÏÒÉÚÏÎÔÁÌØÎÙÊ ÒÁÚÄÅÌÉÔÅÌØ',
+theme_removeformat_desc : 'õÂÒÁÔØ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ',
+theme_custom1_desc : '÷ÁÛÅ ÐÒÏÉÚ×ÏÌØÎÏÅ ÏÐÉÓÁÎÉÅ',
+insert_image_border : 'òÁÍËÁ',
+insert_image_dimensions : 'òÁÚÍÅÒÙ',
+insert_image_vspace : '÷ÅÒÔÉËÁÌØÎÙÊ ÏÔÓÔÕÐ',
+insert_image_hspace : 'çÏÒÉÚÏÎÔÁÌØÎÙÊ ÏÔÓÔÕÐ',
+insert_image_align : '÷ÙÒÁ×ÎÉ×ÁÎÉÅ',
+insert_image_align_default : '-- îÅ ÚÁÄÁÎÏ --',
+insert_image_align_baseline : 'ðÏ ÂÁÚÏ×ÏÊ ÌÉÎÉÉ',
+insert_image_align_top : 'ðÏ ×ÅÒÈÕ',
+insert_image_align_middle : 'ðÏÓÒÅÄÉÎÅ',
+insert_image_align_bottom : 'ðÏ ÎÉÚÕ',
+insert_image_align_texttop : 'ðÏ ×ÅÒÈÕ ÔÅËÓÔÁ',
+insert_image_align_absmiddle : 'áÂÓÏÌÀÔÎÏ ÐÏÓÒÅÄÉÎÅ',
+insert_image_align_absbottom : 'áÂÓÏÌÀÔÎÏ Ó×ÅÒÈÕ',
+insert_image_align_left : '÷ÌÅ×Ï',
+insert_image_align_right : '÷ÐÒÁ×Ï',
+theme_font_size : '-- òÁÚÍÅÒ ÛÒÉÆÔÁ --',
+theme_fontdefault : '-- óÅÍÅÊÓÔ×Ï ÛÒÉÆÔÏ× --',
+theme_block : '-- æÏÒÍÁÔ --',
+theme_paragraph : 'áÂÚÁÃ',
+theme_div : 'Div',
+theme_address : 'óÔÉÌØ ÁÄÒÅÓÁ',
+theme_pre : ':`ðÒÅÄ×ÁÒÉÔÅÌØÎÏ ÆÏÒÍÁÔÉÒÏ×ÁÎÎÙÊ',
+theme_h1 : 'úÁÇÏÌÏ×ÏË 1',
+theme_h2 : 'úÁÇÏÌÏ×ÏË 2',
+theme_h3 : 'úÁÇÏÌÏ×ÏË 3',
+theme_h4 : 'úÁÇÏÌÏ×ÏË 4',
+theme_h5 : 'úÁÇÏÌÏ×ÏË 5',
+theme_h6 : 'úÁÇÏÌÏ×ÏË 6',
+theme_colorpicker_title : '÷ÙÂÒÁÔØ Ã×ÅÔ',
+theme_colorpicker_apply : 'ðÒÉÍÅÎÉÔØ',
+theme_forecolor_desc : '÷ÙÂÒÁÔØ Ã×ÅÔ ÔÅËÓÔÁ',
+theme_backcolor_desc : '÷ÙÂÒÁÔØ Ã×ÅÔ ÆÏÎÁ',
+theme_charmap_title : '÷ÙÂÏÒ ÐÒÏÉÚ×ÏÌØÎÏÇÏ ÓÉÍ×ÏÌÁ',
+theme_charmap_desc : '÷ÓÔÁ×ÉÔØ ÐÒÏÉÚ×ÏÌØÎÙÊ ÓÉÍ×ÏÌ',
+theme_visualaid_desc : 'ðÏËÁÚÁÔØ ÇÒÁÎÉÃÙ ÓËÒÙÔÙÈ ÜÌÅÍÅÎÔÏ×',
+insert_anchor_title : '÷ÓÔÁ×ÉÔØ/ÒÅÄÁËÔÉÒÏ×ÁÔØ ÑËÏÒØ',
+insert_anchor_name : 'éÍÑ ÑËÏÒÑ',
+theme_anchor_desc : '÷ÓÔÁ×ÉÔØ/ÒÅÄÁËÔÉÒÏ×ÁÔØ ÑËÏÒØ',
+theme_insert_link_titlefield : 'úÁÇÏÌÏ×ÏË',
+theme_clipboard_msg : 'ëÏÐÉÒÏ×ÁÔØ/÷ÙÒÅÚÁÔØ/÷ÓÔÁ×ÉÔØ ÎÅÄÏÓÔÕÐÎÙ ÄÌÑ Mozilla É Firefox.\nèÏÔÉÔÅ ÕÚÎÁÔØ Ï ÜÔÏÍ ÐÏÄÒÏÂÎÅÅ?',
+theme_path : 'ðÕÔØ',
+cut_desc : '÷ÙÒÅÚÁÔØ',
+copy_desc : 'ëÏÐÉÒÏ×ÁÔØ',
+paste_desc : '÷ÓÔÁ×ÉÔØ',
+link_list : 'ðÅÒÅÞÁÎØ ÓÓÙÌÏË',
+image_list : 'ðÅÒÅÞÅÎØ ËÁÒÔÉÎÏË',
+browse : 'ðÏÄÏÂÒÁÔØ',
+image_props_desc : 'ó×ÏÊÓÔ×Á ËÁÒÔÉÎËÉ',
+newdocument_desc : 'îÏ×ÙÊ ÄÏËÕÍÅÎÔ',
+class_name : 'ëÌÁÓÓ',
+newdocument : '÷Ù Õ×ÅÒÅÎÙ, ÞÔÏ ÈÏÔÉÔÅ ÏÞÉÓÔÉÔØ ×Ó£ ÓÏÄÅÒÖÉÍÏÅ?',
+about_title : 'ï TinyMCE',
+about : 'ï TinyMCE',
+license : 'ìÉÃÅÎÚÉÑ',
+plugins : 'ðÌÁÇÉÎÙ',
+plugin : 'ðÌÁÇÉÎ',
+author : 'á×ÔÏÒ',
+version : '÷ÅÒÓÉÑ',
+loaded_plugins : 'úÁÇÒÕÖÅÎÎÙÅ ÐÌÁÇÉÎÙ',
+help : 'ðÏÍÏÝØ',
+not_set : '-- ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ --',
+close : 'úÁËÒÙÔØ',
+toolbar_focus : 'ðÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓ ÎÁ ÐÁÎÅÌØ ÉÎÓÔÒÕÍÅÎÔÏ× - Alt+Q, ðÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓ × ÒÅÄÁËÔÏÒ - Alt-Z, ðÅÒÅÍÅÓÔÉÔØ ÆÏËÕÓ ÎÁ ÜÌÅÍÅÎÔ ÐÕÔÉ - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru_UTF-8.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/ru_UTF-8.js
new file mode 100644 (file)
index 0000000..201f81f
--- /dev/null
@@ -0,0 +1,76 @@
+// Russian lang variables UTF-8
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Стили --',
+theme_code_desc : 'Редактировать HTML коды',
+theme_code_title : 'Редактор HTML кодов',
+theme_code_wordwrap : 'Перенос по словам',
+theme_sub_desc : 'Нижний индекс',
+theme_sup_desc : 'Верхний индекс',
+theme_hr_desc : 'Вставить горизонтальный разделитель',
+theme_removeformat_desc : 'Убрать форматирование',
+theme_custom1_desc : 'Ваше произвольное описание',
+insert_image_border : 'Рамка',
+insert_image_dimensions : 'Размеры',
+insert_image_vspace : 'Вертикальный отступ',
+insert_image_hspace : 'Горизонтальный отступ',
+insert_image_align : 'Выравнивание',
+insert_image_align_default : '-- Не задано --',
+insert_image_align_baseline : 'По базовой линии',
+insert_image_align_top : 'По верху',
+insert_image_align_middle : 'Посредине',
+insert_image_align_bottom : 'По низу',
+insert_image_align_texttop : 'По верху текста',
+insert_image_align_absmiddle : 'Абсолютно посредине',
+insert_image_align_absbottom : 'Абсолютно сверху',
+insert_image_align_left : 'Влево',
+insert_image_align_right : 'Вправо',
+theme_font_size : '-- Размер шрифта --',
+theme_fontdefault : '-- Семейство шрифтов --',
+theme_block : '-- Формат --',
+theme_paragraph : 'Абзац',
+theme_div : 'Div',
+theme_address : 'Стиль адреса',
+theme_pre : ':`Предварительно форматированный',
+theme_h1 : 'Заголовок 1',
+theme_h2 : 'Заголовок 2',
+theme_h3 : 'Заголовок 3',
+theme_h4 : 'Заголовок 4',
+theme_h5 : 'Заголовок 5',
+theme_h6 : 'Заголовок 6',
+theme_colorpicker_title : 'Выбрать цвет',
+theme_colorpicker_apply : 'Применить',
+theme_forecolor_desc : 'Выбрать цвет текста',
+theme_backcolor_desc : 'Выбрать цвет фона',
+theme_charmap_title : 'Выбор произвольного символа',
+theme_charmap_desc : 'Вставить произвольный символ',
+theme_visualaid_desc : 'Показать границы скрытых элементов',
+insert_anchor_title : 'Вставить/редактировать якорь',
+insert_anchor_name : 'Имя якоря',
+theme_anchor_desc : 'Вставить/редактировать якорь',
+theme_insert_link_titlefield : 'Заголовок',
+theme_clipboard_msg : 'Копировать/Вырезать/Вставить недоступны для Mozilla и Firefox.\nХотите узнать об этом подробнее?',
+theme_path : 'Путь',
+cut_desc : 'Вырезать',
+copy_desc : 'Копировать',
+paste_desc : 'Вставить',
+link_list : 'Перечань ссылок',
+image_list : 'Перечень картинок',
+browse : 'Подобрать',
+image_props_desc : 'Свойства картинки',
+newdocument_desc : 'Новый документ',
+class_name : 'Класс',
+newdocument : 'Вы уверены, что хотите очистить всё содержимое?',
+about_title : 'О TinyMCE',
+about : 'О TinyMCE',
+license : 'Лицензия',
+plugins : 'Плагины',
+plugin : 'Плагин',
+author : 'Автор',
+version : 'Версия',
+loaded_plugins : 'Загруженные плагины',
+help : 'Помощь',
+not_set : '-- не установлено --',
+close : 'Закрыть',
+toolbar_focus : 'Переместить фокус на панель инструментов - Alt+Q, Переместить фокус в редактор - Alt-Z, Переместить фокус на элемент пути - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/sk.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/sk.js
new file mode 100644 (file)
index 0000000..f11f799
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * Slovak lang variables 
+ * encoding: utf-8
+ * 
+ * @author Vladimir VASIL vvasil@post.sk
+ *    
+ * $Id: sk.js,v 1.1 2006-10-02 05:37:04 shizuki Exp $ 
+ */  
+
+
+tinyMCE.addToLang('',{
+theme_style_select : 'Štýly',
+theme_code_desc : 'Zobraziť HTML',
+theme_code_title : 'Editácia HTML',
+theme_code_wordwrap : 'Bez delení slov',
+theme_sub_desc : 'Dolný index',
+theme_sup_desc : 'Horný index',
+theme_hr_desc : 'Vložiť vodorovný oddeľovač',
+theme_removeformat_desc : 'Zrušiť formátovanie',
+theme_custom1_desc : 'Ľubovolný popisok',
+insert_image_border : 'Rámček',
+insert_image_dimensions : 'Rozmery',
+insert_image_vspace : 'Vertikálný okraj',
+insert_image_hspace : 'Horizontálný okraj',
+insert_image_align : 'Zarovnánie',
+insert_image_align_default : 'Výchozi',
+insert_image_align_baseline : 'Na čiare',
+insert_image_align_top : 'Nahor',
+insert_image_align_middle : 'Na stred',
+insert_image_align_bottom : 'Dole',
+insert_image_align_texttop : 'Najvyšší bod textu',
+insert_image_align_absmiddle : 'Stred riadku',
+insert_image_align_absbottom : 'Spodok riadku',
+insert_image_align_left : 'Vľavo',
+insert_image_align_right : 'Vpravo',
+theme_font_size : '-- Veľkosť textu --',
+theme_fontdefault : '-- Písmo --',
+theme_block : '-- Formát --',
+theme_paragraph : 'Odstavec',
+theme_div : 'Div',
+theme_address : 'Adresa',
+theme_pre : 'Predformát',
+theme_h1 : 'Nádpis 1',
+theme_h2 : 'Nádpis 2',
+theme_h3 : 'Nádpis 3',
+theme_h4 : 'Nádpis 4',
+theme_h5 : 'Nádpis 5',
+theme_h6 : 'Nádpis 6',
+theme_colorpicker_title : 'Výber farby',
+theme_colorpicker_apply : 'Vybrať',
+theme_forecolor_desc : 'Farba popredia',
+theme_backcolor_desc : 'Farba pozadia',
+theme_charmap_title : 'Výber znaku',
+theme_charmap_desc : 'Vložiť znak',
+theme_visualaid_desc : 'Zapnúť značky/neviditeľné prvky',
+insert_anchor_title : 'Vloženie/editácia záložky',
+insert_anchor_name : 'Názov',
+theme_anchor_desc : 'Vložiť/editovať záložku',
+theme_insert_link_titlefield : 'Názov',
+theme_clipboard_msg : 'Funkcie Kopírovať/vystrihnúť/vložiť niesú použiteľné v Mozille a Firefoxe.\nChcete viac informacií o tomto probléme?',
+theme_path : 'Cesta',
+cut_desc : 'Vystrihnúť',
+copy_desc : 'Kopírovať',
+paste_desc : 'Vložiť',
+link_list : 'Zoznam',
+image_list : 'Zoznam',
+browse : 'Prechádzať',
+image_props_desc : 'Vlastnosti obrázku',
+newdocument_desc : 'Nový dokument',
+newdocument : 'Ste si istý(á), že chcete vymazať všetok obsah?'
+});
+
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/sv.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/sv.js
new file mode 100644 (file)
index 0000000..d1d3b7c
--- /dev/null
@@ -0,0 +1,77 @@
+// SE lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Stilar --',
+theme_code_desc : 'Editera HTML-koden',
+theme_code_title : 'HTML-k&auml;llkodseditor',
+theme_code_wordwrap : 'Automatiskt radbyte',
+theme_sub_desc : 'Neds&auml;nkt text',
+theme_sup_desc : 'Upph&ouml;jd text',
+theme_hr_desc : 'S&auml;tt in horisontell linje',
+theme_removeformat_desc : 'Ta bort formatering',
+theme_custom1_desc : 'Din specialbeskriving h&auml;r',
+insert_image_border : 'Ram',
+insert_image_dimensions : 'Dimensioner',
+insert_image_vspace : 'Vertikalt tomrum',
+insert_image_hspace : 'Horisontellt tomrum',
+insert_image_align : 'Justering',
+insert_image_align_default : 'Ingen',
+insert_image_align_baseline : 'Bottenlinjen',
+insert_image_align_top : 'L&auml;ngst upp',
+insert_image_align_middle : 'Mitten',
+insert_image_align_bottom : 'L&auml;ngst ner',
+insert_image_align_texttop : 'Textens top',
+insert_image_align_absmiddle : 'Absoluta mitten',
+insert_image_align_absbottom : 'Absolut l&auml;ngst ner',
+insert_image_align_left : 'V&auml;nster',
+insert_image_align_right : 'H&ouml;ger',
+insert_image_delta_width : 30,
+insert_image_delta_height : 10,
+theme_font_size : '-- Fontstorlek --',
+theme_fontdefault : '-- Font familj --',
+theme_block : '-- Stycke --',
+theme_paragraph : 'Paragraf',
+theme_div : 'Div',
+theme_address : 'Adress',
+theme_pre : 'F&ouml;rformatterad',
+theme_h1 : 'Rubrik 1',
+theme_h2 : 'Rubrik 2',
+theme_h3 : 'Rubrik 3',
+theme_h4 : 'Rubrik 4',
+theme_h5 : 'Rubrik 5',
+theme_h6 : 'Rubrik 6',
+theme_colorpicker_title : 'V&auml;lj en f&auml;rg',
+theme_colorpicker_apply : 'Verkst&auml;ll',
+theme_forecolor_desc : 'V&auml;lj f&ouml;rgrundsf&auml;rg',
+theme_backcolor_desc : 'V&auml;lj bakgrundsf&auml;rg',
+theme_charmap_title : 'V&auml;lj specialtecken',
+theme_charmap_desc : 'S&auml;tt in specialtecken',
+theme_visualaid_desc : 'Sl&aring; av/p&aring; osynliga element',
+insert_anchor_title : 'Skapa/redigera ankare',
+insert_anchor_name : 'Ankarnamn',
+theme_anchor_desc : 'Skapa/redigera ankare',
+theme_insert_link_titlefield : 'Titel',
+theme_clipboard_msg : 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?',
+theme_path : 'S&ouml;kv&auml;g',
+cut_desc : 'Klipp ut',
+copy_desc : 'Kopiera',
+paste_desc : 'Klistra in',
+link_list : 'L&auml;nkar',
+image_list : 'Bilder',
+browse : 'Bl&auml;ddra',
+image_props_desc : 'Bild egenskaper',
+newdocument_desc : 'Nytt dokument',
+class_name : 'Stil',
+newdocument : '&Auml;r du s&auml;ker p&aring; att du vill t&ouml;mma hela redigerings ytan?',
+about_title : 'Om TinyMCE',
+about : 'Om',
+license : 'Licens',
+plugins : 'Insticksprogram',
+plugin : 'Insticksprogram',
+author : 'Utvecklare',
+version : 'Version',
+loaded_plugins : 'Laddade insticksprogram',
+help : 'Hj&auml;lp',
+not_set : '-- Inte satt --',
+close : 'St&auml;ng'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/tw.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/tw.js
new file mode 100644 (file)
index 0000000..be4a76b
--- /dev/null
@@ -0,0 +1,91 @@
+// TW lang variables contributed by Jim Kou
+
+tinyMCE.addToLang('',{
+bold_desc : '²Ê&Aring;é',
+bold_img : "bold.gif",
+bullist_desc : '²&Aring;¸¹¶µ¥Ø',
+cancel : '¨ú®ø',
+cleanup_desc : '²M°£',
+help_desc : '»²§U»¡©ú',
+image_desc : '¹Ï¤ù',
+indent_desc : 'ÁY±Æ',
+insert : '·s¼W',
+insert_anchor_name : '¼Ðµù¦WºÙ',
+insert_anchor_title : '·s¼W¼Ðµù',
+insert_image_align : '¹ï»ô',
+insert_image_align_absbottom : '±j¨î»ô¤U',
+insert_image_align_absmiddle : '±j¨î¸m¤¤',
+insert_image_align_baseline : '°ò·Ç½u',
+insert_image_align_bottom : '»ô¤U',
+insert_image_align_default : '¼Ð·Ç',
+insert_image_align_left : '»ô¥ª',
+insert_image_align_middle : '¸m¤¤',
+insert_image_align_right : '»ô¥k',
+insert_image_align_texttop : '¤&aring;¦r¤W¤è',
+insert_image_align_top : '»ô¤W',
+insert_image_alt : '¹Ï¤ù»¡©ú',
+insert_image_border : '¥~®Ø',
+insert_image_dimensions : '¤Ø¤o',
+insert_image_hspace : '¤ô¥­¶¡»Ø',
+insert_image_src : '¹Ï¤ù¨Ó·½',
+insert_image_title : '·s¼W¹Ï¤ù',
+insert_image_vspace : '««ª½¶¡»Ø',
+insert_link_target : '¥Ø¼Ð',
+insert_link_target_blank : '&Aring;ã¥Ü©ó·sµøµ¡¤¤',
+insert_link_target_same : '&Aring;ã¥Ü©ó¦P¤@µøµ¡¤¤',
+insert_link_title : '·s¼W¶W³sµ²',
+insert_link_url : '¶W³sµ²',
+italic_desc : '±×&Aring;é',
+italic_img : "italic.gif",
+justifycenter_desc : '»ô¤¤',
+justifyfull_desc : '¶ñº¡',
+justifyleft_desc : '»ô¥ª',
+justifyright_desc : '»ô¥k',
+link_desc : '«Ø¥ß³sµ²',
+numlist_desc : '¼Æ¦r¶µ¥Ø',
+outdent_desc : '¥Y±Æ',
+redo_desc : '­«°µ',
+striketrough_desc : '§R°£½u',
+theme_address : '¦a§}',
+theme_anchor_desc : '¼Ðµù',
+theme_charmap_desc : '¯S®í¦r¤¸',
+theme_charmap_title : '¯S®í¦r¤¸²M³æ',
+theme_code_desc : '&Aring;ã¥Ü HTML ­ì©l½X',
+theme_code_wordwrap : 'Word wrap',
+theme_code_title : 'HTML ­ì©l½X',
+theme_colorpicker_apply : '&Aring;ܧó',
+theme_colorpicker_title : 'ÃC¦â',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_forecolor_desc : '¦r«¬ÃC¦â',
+theme_backcolor_desc : 'Select background color',
+theme_h1 : '¼ÐÃD1',
+theme_h2 : '¼ÐÃD2',
+theme_h3 : '¼ÐÃD3',
+theme_h4 : '¼ÐÃD4',
+theme_h5 : '¼ÐÃD5',
+theme_h6 : '¼ÐÃD6',
+theme_hr_desc : '·s¼W¾î½u',
+theme_paragraph : '¬q¸¨',
+theme_pre : '¤º©w®æ¦¡',
+theme_removeformat_desc : '²M°£®æ¦¡³]©w',
+theme_style_select : '¼Ë¦¡',
+theme_sub_desc : '¤U¼Ð',
+theme_sup_desc : '¤W¼Ð',
+theme_visualaid_desc : '&Aring;ã¥Ü/ÁôÂëD¥i¨£ªº¤¸¯À',
+underline_desc : '©³½u',
+undo_desc : '´_­ì',
+unlink_desc : '¨ú®ø³sµ²',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+newdocument : 'Are you sure you want clear all contents?'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_cn.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_cn.js
new file mode 100644 (file)
index 0000000..0f42280
--- /dev/null
@@ -0,0 +1,76 @@
+// Simplified Chinese lang variables contributed by tom_cat (thomaswangyang@gmail.com)
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- ¸ñʽ --',
+theme_code_desc : '±à¼­HTMLÔ´´úÂë',
+theme_code_title : 'HTMLÔ´´úÂë±à¼­Æ÷',
+theme_code_wordwrap : '×Ô¶¯»»ÐÐ',
+theme_sub_desc : 'ϱê',
+theme_sup_desc : 'Éϱê',
+theme_hr_desc : '²åÈëˮƽÏß',
+theme_removeformat_desc : 'ÒƳý¸ñʽ',
+theme_custom1_desc : 'ÕâÀïÌîдÓû§×Ô¶¨ÒåÃèÊö',
+insert_image_border : '±ß¿ò',
+insert_image_dimensions : 'άÊý',
+insert_image_vspace : '´¹Ö±¼ä¾à',
+insert_image_hspace : 'ˮƽ¼ä¾à',
+insert_image_align : '¶ÔÆ뷽ʽ',
+insert_image_align_default : '-- Ä¬ÈÏ --',
+insert_image_align_baseline : '»ùÏß',
+insert_image_align_top : '¶¥¶Ë',
+insert_image_align_middle : '¾ÓÖÐ',
+insert_image_align_bottom : 'µ×²¿',
+insert_image_align_texttop : 'ÎÄ×ÖÉÏ·½',
+insert_image_align_absmiddle : '¾ø¶Ô¾ÓÖÐ',
+insert_image_align_absbottom : '¾ø¶Ôµ×²¿',
+insert_image_align_left : '×ó¶ÔÆë',
+insert_image_align_right : 'ÓÒ¶ÔÆë',
+theme_font_size : '-- ×ֺŠ--',
+theme_fontdefault : '-- ×ÖÌå --',
+theme_block : '-- ¸ñʽ --',
+theme_paragraph : '¶ÎÂä',
+theme_div : '²ã',
+theme_address : 'µØÖ·',
+theme_pre : 'Ô¤¸ñʽ»¯',
+theme_h1 : '±êÌâ 1',
+theme_h2 : '±êÌâ 2',
+theme_h3 : '±êÌâ 3',
+theme_h4 : '±êÌâ 4',
+theme_h5 : '±êÌâ 5',
+theme_h6 : '±êÌâ 6',
+theme_colorpicker_title : 'Ñ¡ÔñÑÕÉ«',
+theme_colorpicker_apply : 'Ó¦ÓÃ',
+theme_forecolor_desc : 'Ñ¡ÔñÎÄ×ÖÑÕÉ«',
+theme_backcolor_desc : 'Ñ¡Ôñ±³¾°ÑÕÉ«',
+theme_charmap_title : 'Ñ¡ÔñÌØÊâ·ûºÅ',
+theme_charmap_desc : '²åÈëÌØÊâ·ûºÅ',
+theme_visualaid_desc : '¿ª¹Ø²»¿É¼ûÔªËØ',
+insert_anchor_title : '²åÈë/±à¼­ Ãªµã',
+insert_anchor_name : 'êµãÃû³Æ',
+theme_anchor_desc : '²åÈë/±à¼­ Ãªµã',
+theme_insert_link_titlefield : '±êÌâ',
+theme_clipboard_msg : '¼ôÇÐ/¸´ÖÆ/Õ³Ìù¹¦ÄÜÔÚ Mozilla ºÍ Firefox ä¯ÀÀÆ÷Öв»Ö§³Ö¡£\nÄúÏ£Íû»ñµÃ¸ü¶àµÄÐÅÏ¢Âð£¿',
+theme_path : '·¾¶',
+cut_desc : '¼ôÇÐ',
+copy_desc : '¸´ÖÆ',
+paste_desc : 'Õ³Ìù',
+link_list : 'Á´½ÓÁбí',
+image_list : 'ͼÏñÁбí',
+browse : 'ä¯ÀÀ',
+image_props_desc : 'ͼÏñÊôÐÔ',
+newdocument_desc : 'н¨¼äµµ',
+class_name : 'Àà',
+newdocument : 'ÄúÈ·ÈÏÒªÇå³ýËùÓÐÄÚÈÝÂð£¿',
+about_title : '¹ØÓÚ TinyMCE',
+about : '¹ØÓÚ',
+license : 'ÊÚȨÊé',
+plugins : 'ËùÓвå¼þ',
+plugin : '²å¼þ',
+author : '×÷Õß',
+version : '°æ±¾',
+loaded_plugins : '¶ÁÈ¡²å¼þ',
+help : '°ïÖú',
+not_set : '-- ¿ÕÉ趨 --',
+close : '¹Ø±Õ',
+toolbar_focus : 'Ìøµ½¹¤¾ß°´Å¥ - Alt+Q, Ìøµ½±à¼­Æ÷ - Alt-Z, Ìøµ½ÔªËØ·¾¶ - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_tw.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_tw.js
new file mode 100644 (file)
index 0000000..231cebd
--- /dev/null
@@ -0,0 +1,78 @@
+// Traditional Chinese BIG-5; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// ÁcÅ餤¤å BIG-5 ¡F¼Æ¦ìÀ³¥Î§{»s§@¡F twapweb_AT_gmail_DOT_com
+
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- ¦¡¼Ë --',
+theme_code_desc : '½s¿è HTML ½X',
+theme_code_title : 'HTML ½X½s¿è¾¹',
+theme_code_wordwrap : '¦rµüÀô¶',
+theme_sub_desc : '¤U¼Ð',
+theme_sup_desc : '¤W¼Ð',
+theme_hr_desc : '´¡¤J¤ô¥­½u',
+theme_removeformat_desc : '²M°£®æ¦¡³]©w',
+theme_custom1_desc : '¦Û­q»¡©ú¦b¦¹¿é¤J',
+insert_image_border : '®Ø½u',
+insert_image_dimensions : '¤Ø¤o',
+insert_image_vspace : '¹Ï¹³¤W¤U°¼¶¡¶Z',
+insert_image_hspace : '¹Ï¹³¥ª¥kÃ䶡¶Z',
+insert_image_align : '««ª½¹ï»ô',
+insert_image_align_default : '-- ¥¼³]¸m --',
+insert_image_align_baseline : '©³½u',
+insert_image_align_top : '³»ºÝ',
+insert_image_align_middle : '¤¤½u',
+insert_image_align_bottom : '©³³¡',
+insert_image_align_texttop : '¤å¦r³»ºÝ',
+insert_image_align_absmiddle : 'µ´¹ï¤¤½u',
+insert_image_align_absbottom : 'µ´¹ï©³³¡',
+insert_image_align_left : '¥ª',
+insert_image_align_right : '¥k',
+theme_font_size : '-- ¦rÅé¤j¤p --',
+theme_fontdefault : '-- ¦rÅé¿ï¾Ü --',
+theme_block : '-- ®æ¦¡ --',
+theme_paragraph : '¬q¸¨',
+theme_div : '¤À¬É',
+theme_address : '¦ì¸m',
+theme_pre : '¤º©w®æ¦¡',
+theme_h1 : '¼ÐÃD¤@',
+theme_h2 : '¼ÐÃD¤G',
+theme_h3 : '¼ÐÃD¤T',
+theme_h4 : '¼ÐÃD¥|',
+theme_h5 : '¼ÐÃD¤­',
+theme_h6 : '¼ÐÃD¤»',
+theme_colorpicker_title : '¿ï¨úÃC¦â',
+theme_colorpicker_apply : '®M¥Î',
+theme_forecolor_desc : '¿ï¨ú¤å¦rÃC¦â',
+theme_backcolor_desc : '¿ï¨ú­I´ºÃC¦â',
+theme_charmap_title : '¿ï¨ú¦Û­q¦r¤¸',
+theme_charmap_desc : '´¡¤J¦Û­q¦r¤¸',
+theme_visualaid_desc : '¤Á´««ü¥Ü©Î«D¥i¨£¤¸¥ó',
+insert_anchor_title : '´¡¤J©Î½s¿è³sµ²ÂI',
+insert_anchor_name : '³sµ²ÂI¦WºÙ',
+theme_anchor_desc : '´¡¤J©Î½s¿è³sµ²ÂI',
+theme_insert_link_titlefield : '¼ÐÃD',
+theme_clipboard_msg : '¦b Mozilla ©M Firefox ¤¤µLªk¨Ï¥Î½Æ»s©Î°Å¤U©Î¶K¤W¥\¯à¡C\n»Ý­n§ó¦hÃö©ó¦¹ªº°T®§¶Ü¡H',
+theme_path : '¸ô®|',
+cut_desc : '°Å¤U',
+copy_desc : '½Æ»s',
+paste_desc : '¶K¤W',
+link_list : '³sµ²¦Cªí',
+image_list : '¹ÏÀɦCªí',
+browse : 'ÂsÄý',
+image_props_desc : '¹ÏÀÉÄÝ©Ê',
+newdocument_desc : '·s¤å¥ó',
+class_name : '¤ÀÃþ',
+newdocument : '½T©w­n²M°£¥þ³¡¤º®e¡H',
+about_title : 'Ãö©ó TinyMCE',
+about : 'Ãö©ó',
+license : '±ÂÅv',
+plugins : 'À³¥Î®M¥ó',
+plugin : 'À³¥Î®M¥ó',
+author : '§@ªÌ',
+version : 'ª©¥»',
+loaded_plugins : '¤w¸ü¤JÀ³¥Î®M¥ó',
+help : '¨ó§U',
+not_set : '-- ¥¼³]¸m --',
+close : 'Ãö³¬',
+toolbar_focus : '§Ö³t±Ò¥Î¤u¨ã¯Ã - Alt+Q¡F§Ö³t±Ò¥Î½s¿è¾¹ - Alt-Z¡F§Ö³t²¾¦Ü¤¸¥ó¸ô®| - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_tw_utf8.js b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/langs/zh_tw_utf8.js
new file mode 100644 (file)
index 0000000..dc45ecc
--- /dev/null
@@ -0,0 +1,78 @@
+// Traditional Chinese UTF-8; Twapweb Site translated; twapweb_AT_gmail_DOT_com
+// 繁體中文 UTF-8 ;數位應用坊製作; twapweb_AT_gmail_DOT_com
+
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- 式樣 --',
+theme_code_desc : '編輯 HTML 碼',
+theme_code_title : 'HTML 碼編輯器',
+theme_code_wordwrap : '字詞環繞',
+theme_sub_desc : '下標',
+theme_sup_desc : '上標',
+theme_hr_desc : '插入水平線',
+theme_removeformat_desc : '清除格式設定',
+theme_custom1_desc : '自訂說明在此輸入',
+insert_image_border : '框線',
+insert_image_dimensions : '尺寸',
+insert_image_vspace : '圖像上下側間距',
+insert_image_hspace : '圖像左右邊間距',
+insert_image_align : '垂直對齊',
+insert_image_align_default : '-- 未設置 --',
+insert_image_align_baseline : '底線',
+insert_image_align_top : '頂端',
+insert_image_align_middle : '中線',
+insert_image_align_bottom : '底部',
+insert_image_align_texttop : '文字頂端',
+insert_image_align_absmiddle : '絕對中線',
+insert_image_align_absbottom : '絕對底部',
+insert_image_align_left : '左',
+insert_image_align_right : '右',
+theme_font_size : '-- 字體大小 --',
+theme_fontdefault : '-- 字體選擇 --',
+theme_block : '-- 格式 --',
+theme_paragraph : '段落',
+theme_div : '分界',
+theme_address : '位置',
+theme_pre : '內定格式',
+theme_h1 : '標題一',
+theme_h2 : '標題二',
+theme_h3 : '標題三',
+theme_h4 : '標題四',
+theme_h5 : '標題五',
+theme_h6 : '標題六',
+theme_colorpicker_title : '選取顏色',
+theme_colorpicker_apply : '套用',
+theme_forecolor_desc : '選取文字顏色',
+theme_backcolor_desc : '選取背景顏色',
+theme_charmap_title : '選取自訂字元',
+theme_charmap_desc : '插入自訂字元',
+theme_visualaid_desc : '切換指示或非可見元件',
+insert_anchor_title : '插入或編輯連結點',
+insert_anchor_name : '連結點名稱',
+theme_anchor_desc : '插入或編輯連結點',
+theme_insert_link_titlefield : '標題',
+theme_clipboard_msg : '在 Mozilla 和 Firefox 中無法使用複製或剪下或貼上功能。\n需要更多關於此的訊息嗎?',
+theme_path : '路徑',
+cut_desc : '剪下',
+copy_desc : '複製',
+paste_desc : '貼上',
+link_list : '連結列表',
+image_list : '圖檔列表',
+browse : '瀏覽',
+image_props_desc : '圖檔屬性',
+newdocument_desc : '新文件',
+class_name : '分類',
+newdocument : '確定要清除全部內容?',
+about_title : '關於 TinyMCE',
+about : '關於',
+license : '授權',
+plugins : '應用套件',
+plugin : '應用套件',
+author : '作者',
+version : '版本',
+loaded_plugins : '已載入應用套件',
+help : '協助',
+not_set : '-- 未設置 --',
+close : '關閉',
+toolbar_focus : '快速啟用工具紐 - Alt+Q;快速啟用編輯器 - Alt-Z;快速移至元件路徑 - Alt-X'
+});
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/link.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/link.htm
new file mode 100644 (file)
index 0000000..a279b13
--- /dev/null
@@ -0,0 +1,92 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <title>{$lang_insert_link_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/link.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onsubmit="insertLink();return false;">
+  <table border="0" cellpadding="0" cellspacing="0" width="100">
+    <tr>
+      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
+          <tr>
+            <td colspan="2" class="title" nowrap="nowrap">{$lang_insert_link_title}</td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_link_url}:</td>
+            <td>              <table border="0" cellspacing="0" cellpadding="0">
+                <tr>
+                  <td><input name="href" type="text" id="href" value="" style="width: 200px"></td>
+                  <td id="hrefbrowsercontainer">&nbsp;</td>
+                </tr>
+              </table></td>
+          </tr>
+                 <!-- Link list -->
+                 <script language="javascript">
+                       if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
+                               var html = "";
+
+                               html += '<tr><td>{$lang_link_list}:</td>';
+                               html += '<td><select name="link_list" style="width: 200px" onchange="this.form.href.value=this.options[this.selectedIndex].value;">';
+                               html += '<option value="">---</option>';
+
+                               for (var i=0; i<tinyMCELinkList.length; i++)
+                                       html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
+
+                               html += '</select></td></tr>';
+
+                               document.write(html);
+                       }
+                 </script>
+                 <!-- /Link list -->
+          <tr>
+            <td nowrap="nowrap">{$lang_insert_link_target}:</td>
+            <td><select name="target" style="width: 200px">
+                <option value="_self">{$lang_insert_link_target_same}</option>
+                <option value="_blank">{$lang_insert_link_target_blank}</option>
+                               <script language="javascript">
+                                       var html = "";
+                                       var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
+
+                                       for (var i=0; i<targets.length; i++) {
+                                               var key, value;
+
+                                               if (targets[i] == "")
+                                                       continue;
+
+                                               key = targets[i].split('=')[0];
+                                               value = targets[i].split('=')[1];
+
+                                               html += '<option value="' + value + '">' + key + '</option>';
+                                       }
+
+                                       document.write(html);
+                               </script>
+            </select></td>
+          </tr>
+          <tr>
+            <td nowrap="nowrap">{$lang_theme_insert_link_titlefield}:</td>
+            <td><input name="linktitle" type="text" id="linktitle" value="" style="width: 200px"></td>
+          </tr>
+          <tr id="styleSelectRow">
+            <td>{$lang_class_name}:</td>
+            <td>
+                        <select id="styleSelect" name="styleSelect">
+                <option value="" selected>{$lang_theme_style_select}</option>
+             </select></td>
+            <td align="right">&nbsp;</td>
+            <td align="right">&nbsp;</td>
+          </tr>
+          <tr>
+            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();">
+            </td>
+            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();"></td>
+          </tr>
+        </table></td>
+    </tr>
+  </table>
+</form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/source_editor.htm b/trunk/NP_TinyMCE2j/tinymce2j/themes/advanced/source_editor.htm
new file mode 100644 (file)
index 0000000..fd00d52
--- /dev/null
@@ -0,0 +1,30 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+       <title>{$lang_theme_code_title}</title>
+       <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+       <script language="javascript" type="text/javascript" src="jscripts/source_editor.js"></script>
+       <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">
+       <form name="source" onsubmit="saveContent();" action="#">
+               <div style="float: left" class="title">{$lang_theme_code_title}</div>
+
+               <div style="float: right">
+                       <script language="javascript" type="text/javascript">renderWordWrap();</script>
+               </div>
+
+               <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>
+
+               <div class="mceActionPanel">
+                       <div style="float: left">
+                               <input type="button" name="insert" value="{$lang_update}" onclick="saveContent();" id="insert" />
+                       </div>
+
+                       <div style="float: right">
+                               <input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+                       </div>
+               </div>
+       </form>
+</body>
+</html>
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/tiny_mce.js b/trunk/NP_TinyMCE2j/tinymce2j/tiny_mce.js
new file mode 100644 (file)
index 0000000..de69db5
--- /dev/null
@@ -0,0 +1,3 @@
+function TinyMCE(){this.majorVersion="2";this.minorVersion="0";this.releaseDate="2005-12-01";this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();var ua=navigator.userAgent;this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(ua.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(ua.indexOf('MSIE 5.0')!=-1);this.isGecko=ua.indexOf('Gecko')!=-1;this.isSafari=ua.indexOf('Safari')!=-1;this.isOpera=ua.indexOf('Opera')!=-1;this.isMac=ua.indexOf('Mac')!=-1;this.isNS7=ua.indexOf('Netscape/7')!=-1;this.isNS71=ua.indexOf('Netscape/7.1')!=-1;this.dialogCounter=0;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false;}this.idCounter=0;};TinyMCE.prototype.defParam=function(key,def_val){this.settings[key]=tinyMCE.getParam(key,def_val);};TinyMCE.prototype.init=function(settings){var theme;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1)?'_src':'';src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.defParam("mode","none");this.defParam("theme","advanced");this.defParam("plugins","",true);this.defParam("language","en");this.defParam("docs_language",this.settings['language']);this.defParam("elements","");this.defParam("textarea_trigger","mce_editable");this.defParam("editor_selector","");this.defParam("editor_deselector","mceNoEditor");this.defParam("valid_elements","+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/b[class|style],-em/i[class|style],-strike[class|style],-u[class|style],+p[style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border=0|alt|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],-td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[style|dir|class|align],-h2[style|dir|class|align],-h3[style|dir|class|align],-h4[style|dir|class|align],-h5[style|dir|class|align],-h6[style|dir|class|align],hr[class|style],font[face|size|style|id|class|dir|color]");this.defParam("extended_valid_elements","");this.defParam("invalid_elements","");this.defParam("encoding","");this.defParam("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE.prototype.convertURL"));this.defParam("save_callback","");this.defParam("debug",false);this.defParam("force_br_newlines",false);this.defParam("force_p_newlines",true);this.defParam("add_form_submit_trigger",true);this.defParam("relative_urls",true);this.defParam("remove_script_host",true);this.defParam("focus_alert",true);this.defParam("document_base_url",this.documentURL);this.defParam("visual",true);this.defParam("visual_table_class","mceVisualAid");this.defParam("setupcontent_callback","");this.defParam("fix_content_duplication",true);this.defParam("custom_undo_redo",true);this.defParam("custom_undo_redo_levels",-1);this.defParam("custom_undo_redo_keyboard_shortcuts",true);this.defParam("verify_css_classes",false);this.defParam("verify_html",true);this.defParam("apply_source_formatting",false);this.defParam("directionality","ltr");this.defParam("cleanup_on_startup",false);this.defParam("inline_styles",false);this.defParam("convert_newlines_to_brs",false);this.defParam("auto_reset_designmode",true);this.defParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,202,Ecirc,203,Euml,204,Igrave,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,217,Ugrave,219,Ucirc,220,Uuml,376,Yuml,222,THORN,224,agrave,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,234,ecirc,235,euml,236,igrave,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,249,ugrave,251,ucirc,252,uuml,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy,233,eacute,237,iacute,243,oacute,250,uacute,193,Aacute,225,aacute,201,Eacute,205,Iacute,211,Oacute,218,Uacute,221,Yacute,253,yacute");this.defParam("entity_encoding","named");this.defParam("cleanup_callback","");this.defParam("add_unload_trigger",true);this.defParam("ask",false);this.defParam("nowrap",false);this.defParam("auto_resize",false);this.defParam("auto_focus",false);this.defParam("cleanup",true);this.defParam("remove_linebreaks",true);this.defParam("button_tile_map",false);this.defParam("submit_patch",true);this.defParam("browsers","msie,safari,gecko,opera");this.defParam("dialog_type","window");this.defParam("accessibility_warnings",true);this.defParam("merge_styles_invalid_parents","");this.defParam("force_hex_style_colors",true);this.defParam("trim_span_elements",true);this.defParam("convert_fonts_to_spans",false);this.defParam("doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');this.defParam("font_size_classes",'');this.defParam("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large');this.defParam("event_elements",'a,img');this.defParam("convert_urls",true);this.defParam("table_inline_editing",false);this.defParam("object_resizing",true);if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;if(this.isOpera&&this.settings['browsers'].indexOf('opera')==-1)return;var baseHREF=tinyMCE.settings['document_base_url'];var h=document.location.href;var p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings['document_base_url']=baseHREF;tinyMCE.settings['document_base_prefix']=h;}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.blockRegExp=new RegExp("^(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|blockquote|center|dl|dir|fieldset|form|noscript|noframes|menu|isindex)$","i");this.posKeyCodes=new Array(13,45,36,35,33,34,37,38,39,40);this.uniqueURL='http://tinymce.moxiecode.cp/mce_temp_url';this.uniqueTag='<div id="mceTMPElement" style="display: none">TMP</div>';this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else this.settings['content_css']=cssPath;}else this.settings['content_css']='';if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath;}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath;}else this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css";if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg);}this._initCleanup();if(this.configs.length==0){if(this.isSafari&&this.getParam('safari_warning',true))alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.\nYou can disable this message by setting: safari_warning option to false");tinyMCE.addEvent(window,"load",TinyMCE.prototype.onLoad);if(tinyMCE.isMSIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE.prototype.unloadHandler);}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i<themePlugins.length;i++)this.loadScript(tinyMCE.baseURL+'/plugins/'+themePlugins[i]+'/editor_plugin'+tinyMCE.srcMode+'.js');}settings['cleanup_entities']=new Array();var entities=tinyMCE.getParam('entities','',true,',');for(var i=0;i<entities.length;i+=2)settings['cleanup_entities']['c'+entities[i]]=entities[i+1];settings['index']=this.configs.length;this.configs[this.configs.length]=settings;};TinyMCE.prototype.loadScript=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.loadCSS=function(url){for(var i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}document.write('<link href="'+url+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=url;};TinyMCE.prototype.importCSS=function(doc,css_file){if(css_file=='')return;if(typeof(doc.createStyleSheet)=="undefined"){var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm);}else var styleSheet=doc.createStyleSheet(css_file);};TinyMCE.prototype.confirmAdd=function(e,settings){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true');};TinyMCE.prototype.updateContent=function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isMSIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid);}}};TinyMCE.prototype.addMCEControl=function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCEControl(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst.onAdd(replace_element,form_element_name,target_document);};TinyMCE.prototype.triggerSave=function(skip_cleanup,skip_callback){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(inst.getDoc(),inst.getBody().innerHTML);if(inst.settings['cleanup']==false){tinyMCE.handleVisualAid(inst.getBody(),true,false,inst);tinyMCE._setEventsEnabled(inst.getBody(),true);}tinyMCE._customCleanup(inst,"submit_content_dom",inst.contentWindow.document.body);var htm=skip_cleanup?inst.getBody().innerHTML:tinyMCE._cleanupHTML(inst,inst.getDoc(),this.settings,inst.getBody(),this.visualAid,true);htm=tinyMCE._customCleanup(inst,"submit_content",htm);if(tinyMCE.settings["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")htm=tinyMCE.convertStringToXML(htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(inst.formTargetElementId,htm,inst.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^","gi");if(inst.formElement)inst.formElement.value=htm;}};TinyMCE.prototype._setEventsEnabled=function(node,state){var events=new Array('onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup');var evs=tinyMCE.settings['event_elements'].split(',');for(var y=0;y<evs.length;y++){var elms=node.getElementsByTagName(evs[y]);for(var i=0;i<elms.length;i++){var event="";for(var x=0;x<events.length;x++){if((event=tinyMCE.getAttrib(elms[i],events[x]))!=''){event=tinyMCE.cleanupEventStr(""+event);if(!state)event="return true;"+event;else event=event.replace(/^return true;/gi,'');elms[i].removeAttribute(events[x]);elms[i].setAttribute(events[x],event);}}}}};TinyMCE.prototype.resetForm=function(form_index){var formObj=document.forms[form_index];for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();for(var i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name)inst.getBody().innerHTML=inst.startContent;}}};TinyMCE.prototype.execInstanceCommand=function(editor_id,command,user_interface,value,focus){var inst=tinyMCE.getInstanceById(editor_id);if(inst){if(typeof(focus)=="undefined")focus=true;if(focus)inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();this.selectedInstance=inst;tinyMCE.execCommand(command,user_interface,value);if(tinyMCE.isMSIE&&window.event!=null)tinyMCE.cancelEvent(window.event);}};TinyMCE.prototype.execCommand=function(command,user_interface,value){user_interface=user_interface?user_interface:false;value=value?value:null;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();switch(command){case 'mceHelp':var template=new Array();template['file']='about.htm';template['width']=480;template['height']=380;tinyMCE.openWindow(template,{tinymce_version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion,tinymce_releasedate:tinyMCE.releaseDate,inline:"yes"});return;case 'mceFocus':var inst=tinyMCE.getInstanceById(value);if(inst)inst.contentWindow.focus();return;case "mceAddControl":case "mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case "mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value['element'],value['document']);return;case "mceRemoveControl":case "mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case "mceResetDesignMode":if(!tinyMCE.isMSIE){for(var n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="on";}catch(e){}}}return;}if(this.selectedInstance){this.selectedInstance.execCommand(command,user_interface,value);}else if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert']);};TinyMCE.prototype.eventPatch=function(editor_id){if(typeof(tinyMCE)=="undefined")return true;for(var i=0;i<document.frames.length;i++){try{if(document.frames[i].event){var event=document.frames[i].event;if(!event.target)event.target=event.srcElement;TinyMCE.prototype.handleEvent(event);return;}}catch(ex){}}};TinyMCE.prototype.unloadHandler=function(){tinyMCE.triggerSave(true,true);};TinyMCE.prototype.addEventHandlers=function(editor_id){if(tinyMCE.isMSIE){var doc=document.frames[editor_id].document;tinyMCE.addEvent(doc,"keypress",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"keyup",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"keydown",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"mouseup",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(doc,"click",TinyMCE.prototype.eventPatch);}else{var inst=tinyMCE.instances[editor_id];var doc=inst.getDoc();inst.switchSettings();tinyMCE.addEvent(doc,"keypress",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keydown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keyup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"click",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mouseup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mousedown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"focus",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"blur",tinyMCE.handleEvent);eval('try { doc.designMode = "On"; } catch(e) {}');}};TinyMCE.prototype._createIFrame=function(replace_element){var iframe=document.createElement("iframe");var id=replace_element.getAttribute("id");var aw,ah;aw=""+tinyMCE.settings['area_width'];ah=""+tinyMCE.settings['area_height'];if(aw.indexOf('%')==-1){aw=parseInt(aw);aw=aw<0?300:aw;aw=aw+"px";}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=ah<0?240:ah;ah=ah+"px";}iframe.setAttribute("id",id);iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",aw);iframe.setAttribute("height",ah);iframe.setAttribute("allowtransparency","true");if(tinyMCE.settings["auto_resize"])iframe.setAttribute("scrolling","no");if(tinyMCE.isMSIE&&!tinyMCE.isOpera)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.isMSIE&&!tinyMCE.isOpera)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isMSIE)return window.frames[id];else return iframe;};TinyMCE.prototype.setupContent=function(editor_id){var inst=tinyMCE.instances[editor_id];var doc=inst.getDoc();var head=doc.getElementsByTagName('head').item(0);var content=inst.startContent;tinyMCE.operaOpacityCounter=100*tinyMCE.idCounter;inst.switchSettings();if(!tinyMCE.isMSIE&&tinyMCE.getParam("setupcontent_reload",false)&&doc.title!="blank_page"){try{doc.location.href=tinyMCE.baseURL+"/blank.htm";}catch(ex){}window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return;}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return;}tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/themes/"+inst.settings['theme']+"/css/editor_content.css");tinyMCE.importCSS(inst.getDoc(),inst.settings['content_css']);tinyMCE.executeCallback('init_instance_callback','_initInstance',0,inst);if(tinyMCE.getParam("convert_fonts_to_spans"))inst.getDoc().body.setAttribute('id','mceSpanFonts');if(tinyMCE.settings['nowrap'])doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isMSIE)doc.documentElement.editorId=editor_id;var base=doc.createElement("base");base.setAttribute('href',tinyMCE.settings['base_href']);head.appendChild(base);if(tinyMCE.settings['convert_newlines_to_brs']){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi");}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isMSIE){window.setInterval('try{tinyMCE.getCSSClasses(document.frames["'+editor_id+'"].document, "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])document.frames[editor_id].document.styleSheets[0].addRule("p","margin: 0px;");var body=document.frames[editor_id].document.body;tinyMCE.addEvent(body,"beforepaste",TinyMCE.prototype.eventPatch);tinyMCE.addEvent(body,"beforecut",TinyMCE.prototype.eventPatch);body.editorId=editor_id;}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isMSIE){var contentElement=inst.getDoc().createElement("body");var doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt'])content=content.replace(new RegExp('&lt;&gt;','g'),"");if(tinyMCE.settings['cleanup_on_startup'])tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else{content=tinyMCE.regexpReplace(content,"<strong","<b","gi");content=tinyMCE.regexpReplace(content,"<em(/?)>","<i$1>","gi");content=tinyMCE.regexpReplace(content,"<em ","<i ","gi");content=tinyMCE.regexpReplace(content,"</strong>","</b>","gi");content=tinyMCE.regexpReplace(content,"</em>","</i>","gi");tinyMCE.setInnerHTML(inst.getBody(),content);}inst.convertAllRelativeURLs();}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(inst.getDoc(),content);eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}');}else tinyMCE._setHTML(inst.getDoc(),content);}var parentElm=document.getElementById(inst.editorId+'_parent');if(parentElm.lastChild.nodeName=="INPUT")inst.formElement=tinyMCE.isGecko?parentElm.firstChild:parentElm.lastChild;else inst.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings['visual'],inst);tinyMCE.executeCallback('setupcontent_callback','_setupContent',0,editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isMSIE)TinyMCE.prototype.addEventHandlers(editor_id);if(tinyMCE.isMSIE)tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE.prototype.eventPatch);tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=inst.contentWindow.document.body;if(!inst.isHidden())tinyMCE.triggerNodeChange(false,true);tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoLevels[inst.undoLevels.length]=inst.startContent;tinyMCE.operaOpacityCounter=-1;};TinyMCE.prototype.cleanupHTMLCode=function(s){s=s.replace(/<p\/>/gi,'<p>&nbsp;</p>');s=s.replace(/<p>\s*<\/p>/gi,'<p>&nbsp;</p>');s=s.replace(/<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\|>]*?)\/>/gi,'<$1$2$3></$1$2>');s=s.replace(new RegExp('\\s+></','gi'),'></');s=s.replace(/<(img|br|hr)(.*?)><\/(img|br|hr)>/gi,'<$1$2 />');if(tinyMCE.isMSIE)s=s.replace(/<p><hr\/><\/p>/gi,"<hr>");s=s.replace(new RegExp('(href=\"?)(\\s*?#)','gi'),'$1'+tinyMCE.settings['document_base_url']+"#");return s;};TinyMCE.prototype.storeAwayURLs=function(s){s=s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"','gi'),'');s=s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"','gi'),'');s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"');return s;};TinyMCE.prototype.cancelEvent=function(e){if(tinyMCE.isMSIE){e.returnValue=false;e.cancelBubble=true;}else e.preventDefault();};TinyMCE.prototype.removeTinyMCEFormElements=function(form_obj){if(typeof(form_obj)=="undefined"||form_obj==null)return;if(form_obj.nodeName!="FORM"){if(form_obj.form)form_obj=form_obj.form;else form_obj=tinyMCE.getParentElement(form_obj,"form");}if(form_obj==null)return;for(var i=0;i<form_obj.elements.length;i++){var elementId=form_obj.elements[i].name?form_obj.elements[i].name:form_obj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)form_obj.elements[i].disabled=true;}};TinyMCE.prototype.accessibleEventHandler=function(e){var win=this._win;e=tinyMCE.isMSIE?win.event:e;var elm=tinyMCE.isMSIE?e.srcElement:e.target;if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null;}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);}};TinyMCE.prototype.addSelectAccessibility=function(e,select,win){if(!select._isAccessible){select.onkeydown=tinyMCE.accessibleEventHandler;select._isAccessible=true;select._win=win;}};TinyMCE.prototype.handleEvent=function(e){if(typeof(tinyMCE)=="undefined")return true;switch(e.type){case "blur":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceEndTyping');return;case "submit":tinyMCE.removeTinyMCEFormElements(tinyMCE.isMSIE?window.event.srcElement:e.target);tinyMCE.triggerSave();tinyMCE.isNotDirty=true;return;case "reset":var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10);}return;case "keypress":if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}else{if(e.target.ownerDocument.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.ownerDocument.editorId];}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&e.keyCode==13&&!e.shiftKey){if(tinyMCE.selectedInstance._insertPara(e)){tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.cancelEvent(e);return false;}}if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.cancelEvent(e);return false;}}if(tinyMCE.isGecko&&(e.ctrlKey&&!e.altKey)&&tinyMCE.settings['custom_undo_redo']){if(tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']){if(e.charCode==122){tinyMCE.selectedInstance.execCommand("Undo");tinyMCE.cancelEvent(e);return false;}if(e.charCode==121){tinyMCE.selectedInstance.execCommand("Redo");tinyMCE.cancelEvent(e);return false;}}if(e.charCode==98){tinyMCE.selectedInstance.execCommand("Bold");tinyMCE.cancelEvent(e);return false;}if(e.charCode==105){tinyMCE.selectedInstance.execCommand("Italic");tinyMCE.cancelEvent(e);return false;}if(e.charCode==117){tinyMCE.selectedInstance.execCommand("Underline");tinyMCE.cancelEvent(e);return false;}}if(tinyMCE.isMSIE&&tinyMCE.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false;}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false);}return false;break;case "keyup":case "keydown":if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];else return;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(tinyMCE.selectedInstance._handleBackSpace(e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false;}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);if(tinyMCE.isMSIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isMSIE&&e.type=="keyup"&&e.keyCode==13){var elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML="&nbsp;&nbsp;";else elm.innerHTML="&nbsp;";}}}var keys=tinyMCE.posKeyCodes;var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break;}}if(tinyMCE.isMSIE&&tinyMCE.settings['custom_undo_redo']){var keys=new Array(8,46);for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(e.type=="keyup")tinyMCE.triggerNodeChange(false);}}if(tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']){if(e.keyCode==90&&(e.ctrlKey&&!e.altKey)&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Undo");tinyMCE.triggerNodeChange(false);}if(e.keyCode==89&&(e.ctrlKey&&!e.altKey)&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Redo");tinyMCE.triggerNodeChange(false);}if((e.keyCode==90||e.keyCode==89)&&(e.ctrlKey&&!e.altKey)){e.returnValue=false;e.cancelBubble=true;return false;}}}if((e.keyCode==90||e.keyCode==89)&&(e.ctrlKey&&!e.altKey))return true;if(e.keyCode==17)return true;if(!posKey&&e.type=="keyup")tinyMCE.execCommand("mceStartTyping");if(e.type=="keyup"&&(posKey||e.ctrlKey))tinyMCE.execCommand("mceEndTyping");if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);if(tinyMCE.isMSIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case "mousedown":case "mouseup":case "click":case "focus":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var targetBody=tinyMCE.getParentElement(e.target,"body");for(var instanceName in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;var inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody()==targetBody){tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");break;}}if(tinyMCE.isSafari){tinyMCE.selectedInstance.lastSafariSelection=tinyMCE.selectedInstance.getBookmark();tinyMCE.selectedInstance.lastSafariSelectedElement=tinyMCE.selectedElement;var lnk=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");if(lnk&&e.type=="mousedown"){lnk.setAttribute("mce_real_href",lnk.getAttribute("href"));lnk.setAttribute("href","javascript:void(0);");}if(lnk&&e.type=="click"){window.setTimeout(function(){lnk.setAttribute("href",lnk.getAttribute("mce_real_href"));lnk.removeAttribute("mce_real_href");},10);}}if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);tinyMCE.execCommand("mceEndTyping");if(e.type=="mouseup")tinyMCE.execCommand("mceAddUndoLevel");if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];return false;break;}};TinyMCE.prototype.switchClass=function(element,class_name,lock_state){var lockChanged=false;if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.oldClassName=element.className;element.className=class_name;}};TinyMCE.prototype.restoreAndSwitchClass=function(element,class_name){if(element!=null&&!element.classLock){this.restoreClass(element);this.switchClass(element,class_name);}};TinyMCE.prototype.switchClassSticky=function(element_name,class_name,lock_state){var element,lockChanged=false;if(!this.stickyClassesLookup[element_name])this.stickyClassesLookup[element_name]=document.getElementById(element_name);element=this.stickyClassesLookup[element_name];if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.className=class_name;element.oldClassName=class_name;if(tinyMCE.isOpera){if(class_name=="mceButtonDisabled"){var suffix="";if(!element.mceOldSrc)element.mceOldSrc=element.src;if(this.operaOpacityCounter>-1)suffix='?rnd='+this.operaOpacityCounter++;element.src=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/images/opacity.png"+suffix;element.style.backgroundImage="url('"+element.mceOldSrc+"')";}else{if(element.mceOldSrc){element.src=element.mceOldSrc;element.parentNode.style.backgroundImage="";element.mceOldSrc=null;}}}}};TinyMCE.prototype.restoreClass=function(element){if(element!=null&&element.oldClassName&&!element.classLock){element.className=element.oldClassName;element.oldClassName=null;}};TinyMCE.prototype.setClassLock=function(element,lock_state){if(element!=null)element.classLock=lock_state;};TinyMCE.prototype.addEvent=function(obj,name,handler){if(tinyMCE.isMSIE){obj.attachEvent("on"+name,handler);}else obj.addEventListener(name,handler,false);};TinyMCE.prototype.submitPatch=function(){tinyMCE.removeTinyMCEFormElements(this);tinyMCE.triggerSave();this.mceOldSubmit();tinyMCE.isNotDirty=true;};TinyMCE.prototype.onLoad=function(){for(var c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];var selector=tinyMCE.getParam("editor_selector");var deselector=tinyMCE.getParam("editor_deselector");var elementRefAr=new Array();if(document.forms&&tinyMCE.settings['add_form_submit_trigger']&&!tinyMCE.submitTriggers){for(var i=0;i<document.forms.length;i++){var form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings['submit_patch']){try{form.mceOldSubmit=form.submit;form.submit=TinyMCE.prototype.submitPatch;}catch(e){}}}}var mode=tinyMCE.settings['mode'];switch(mode){case "exact":var elements=tinyMCE.getParam('elements','',true,',');for(var i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);var trigger=element?element.getAttribute(tinyMCE.settings['textarea_trigger']):"";if(tinyMCE.getAttrib(element,"class").indexOf(deselector)!=-1)continue;if(trigger=="false")continue;if(tinyMCE.settings['ask']&&element){elementRefAr[elementRefAr.length]=element;continue;}if(element)tinyMCE.addMCEControl(element,elements[i]);else if(tinyMCE.settings['debug'])alert("Error: Could not find element by id or name: "+elements[i]);}break;case "specific_textareas":case "textareas":var nodeList=document.getElementsByTagName("textarea");for(var i=0;i<nodeList.length;i++){var elm=nodeList.item(i);var trigger=elm.getAttribute(tinyMCE.settings['textarea_trigger']);if(selector!=''&&tinyMCE.getAttrib(elm,"class").indexOf(selector)==-1)continue;if(selector!='')trigger=selector!=""?"true":"";if(tinyMCE.getAttrib(elm,"class").indexOf(deselector)!=-1)continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm;}break;}for(var i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']){if(tinyMCE.isGecko){var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e){window.setTimeout(function(){TinyMCE.prototype.confirmAdd(e,settings);},10);});}else{var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE.prototype.confirmAdd(null,settings);});}}else tinyMCE.addMCEControl(element,elementId);}if(tinyMCE.settings['auto_focus']){window.setTimeout(function(){var inst=tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);inst.selectNode(inst.getBody(),true,true);inst.contentWindow.focus();},10);}tinyMCE.executeCallback('oninit','_oninit',0);}};TinyMCE.prototype.removeMCEControl=function(editor_id){var inst=tinyMCE.getInstanceById(editor_id);if(inst){inst.switchSettings();editor_id=inst.editorId;var html=tinyMCE.getContent(editor_id);var tmpInstances=new Array();for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(!tinyMCE.isInstance(instance))continue;if(instanceName!=editor_id)tmpInstances[instanceName]=instance;}tinyMCE.instances=tmpInstances;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;var replaceElement=document.getElementById(editor_id+"_parent");var oldTargetElement=inst.oldTargetElement;var targetName=oldTargetElement.nodeName.toLowerCase();if(targetName=="textarea"||targetName=="input"){replaceElement.parentNode.removeChild(replaceElement);oldTargetElement.style.display="inline";oldTargetElement.value=html;}else{oldTargetElement.innerHTML=html;replaceElement.parentNode.insertBefore(oldTargetElement,replaceElement);replaceElement.parentNode.removeChild(replaceElement);}}};TinyMCE.prototype._cleanupElementName=function(element_name,element){var name="";element_name=element_name.toLowerCase();if(element_name=="body")return null;if(tinyMCE.cleanup_verify_html){for(var i=0;i<tinyMCE.cleanup_invalidElements.length;i++){if(tinyMCE.cleanup_invalidElements[i]==element_name)return null;}var validElement=false;var elementAttribs=null;for(var i=0;i<tinyMCE.cleanup_validElements.length&&!elementAttribs;i++){for(var x=0,n=tinyMCE.cleanup_validElements[i][0].length;x<n;x++){var elmMatch=tinyMCE.cleanup_validElements[i][0][x];if(elmMatch.charAt(0)=='+'||elmMatch.charAt(0)=='-')elmMatch=elmMatch.substring(1);if(elmMatch.match(new RegExp('\\*|\\?|\\+','g'))!=null){elmMatch=elmMatch.replace(new RegExp('\\?','g'),'(\\S?)');elmMatch=elmMatch.replace(new RegExp('\\+','g'),'(\\S+)');elmMatch=elmMatch.replace(new RegExp('\\*','g'),'(\\S*)');elmMatch="^"+elmMatch+"$";if(element_name.match(new RegExp(elmMatch,'g'))){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;break;}}if(element_name==elmMatch){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;element_name=elementAttribs[0][0];break;}}}if(!validElement)return null;}if(element_name.charAt(0)=='+'||element_name.charAt(0)=='-')name=element_name.substring(1);if(!tinyMCE.isMSIE){if(name=="strong"&&!tinyMCE.cleanup_on_save)element_name="b";else if(name=="em"&&!tinyMCE.cleanup_on_save)element_name="i";}var elmData=new Object();elmData.element_name=element_name;elmData.valid_attribs=elementAttribs;return elmData;};TinyMCE.prototype._moveStyle=function(elm,style,attrib){if(tinyMCE.cleanup_inline_styles){var val=tinyMCE.getAttrib(elm,attrib);if(val!=''){val=''+val;switch(attrib){case "background":val="url('"+val+"')";break;case "bordercolor":if(elm.style.borderStyle==''||elm.style.borderStyle=='none')elm.style.borderStyle='solid';break;case "border":case "width":case "height":if(attrib=="border"&&elm.style.borderWidth>0)return;if(val.indexOf('%')==-1)val+='px';break;case "vspace":case "hspace":elm.style.marginTop=val+"px";elm.style.marginBottom=val+"px";elm.removeAttribute(attrib);return;case "align":if(elm.nodeName=="IMG"){if(tinyMCE.isMSIE)elm.style.styleFloat=val;else elm.style.cssFloat=val;}else elm.style.textAlign=val;elm.removeAttribute(attrib);return;}if(val!=''){eval('elm.style.'+style+' = val;');elm.removeAttribute(attrib);}}}else{if(style=='')return;var val=eval('elm.style.'+style)==''?tinyMCE.getAttrib(elm,attrib):eval('elm.style.'+style);val=val==null?'':''+val;switch(attrib){case "background":if(val.indexOf('url')==-1&&val!='')val="url('"+val+"');";if(val!=''){elm.style.backgroundImage=val;elm.removeAttribute(attrib);}return;case "border":case "width":case "height":val=val.replace('px','');break;case "align":if(tinyMCE.getAttrib(elm,'align')==''){if(elm.nodeName=="IMG"){if(tinyMCE.isMSIE&&elm.style.styleFloat!=''){val=elm.style.styleFloat;style='styleFloat';}else if(tinyMCE.isGecko&&elm.style.cssFloat!=''){val=elm.style.cssFloat;style='cssFloat';}}}break;}if(val!=''){elm.removeAttribute(attrib);elm.setAttribute(attrib,val);eval('elm.style.'+style+' = "";');}}};TinyMCE.prototype._cleanupAttribute=function(valid_attributes,element_name,attribute_node,element_node){var attribName=attribute_node.nodeName.toLowerCase();var attribValue=attribute_node.nodeValue;var attribMustBeValue=null;var verified=false;if(attribName.indexOf('moz_')!=-1)return null;if(!tinyMCE.cleanup_on_save&&(attribName=="mce_href"||attribName=="mce_src"))return{name:attribName,value:attribValue};if(tinyMCE.cleanup_verify_html&&!verified){for(var i=1;i<valid_attributes.length;i++){var attribMatch=valid_attributes[i][0];var re=null;if(attribMatch.match(new RegExp('\\*|\\?|\\+','g'))!=null){attribMatch=attribMatch.replace(new RegExp('\\?','g'),'(\\S?)');attribMatch=attribMatch.replace(new RegExp('\\+','g'),'(\\S+)');attribMatch=attribMatch.replace(new RegExp('\\*','g'),'(\\S*)');attribMatch="^"+attribMatch+"$";re=new RegExp(attribMatch,'g');}if((re&&attribName.match(re)!=null)||attribName==attribMatch){verified=true;attribMustBeValue=valid_attributes[i][3];break;}}if(!verified)return false;}else verified=true;switch(attribName){case "size":if(tinyMCE.isMSIE5&&element_name=="font")attribValue=element_node.size;break;case "width":case "height":case "border":if(tinyMCE.isMSIE5)attribValue=eval("element_node."+attribName);break;case "shape":attribValue=attribValue.toLowerCase();break;case "cellspacing":if(tinyMCE.isMSIE5)attribValue=element_node.cellSpacing;break;case "cellpadding":if(tinyMCE.isMSIE5)attribValue=element_node.cellPadding;break;case "color":if(tinyMCE.isMSIE5&&element_name=="font")attribValue=element_node.color;break;case "class":if(tinyMCE.cleanup_on_save&&attribValue.indexOf('mceItemAnchor')!=-1)attribValue=attribValue.replace(/mceItem[a-z0-9]+/gi,'');if(element_name=="table"||element_name=="td"){if(tinyMCE.cleanup_visual_table_class!="")attribValue=tinyMCE.getVisualAidClass(attribValue,!tinyMCE.cleanup_on_save);}if(!tinyMCE._verifyClass(element_node)||attribValue=="")return null;break;case "onfocus":case "onblur":case "onclick":case "ondblclick":case "onmousedown":case "onmouseup":case "onmouseover":case "onmousemove":case "onmouseout":case "onkeypress":case "onkeydown":case "onkeydown":case "onkeyup":attribValue=tinyMCE.cleanupEventStr(""+attribValue);if(attribValue.indexOf('return false;')==0)attribValue=attribValue.substring(14);break;case "style":attribValue=tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(element_node,"style")));break;case "href":case "src":case "longdesc":attribValue=tinyMCE.getAttrib(element_node,attribName);var href=tinyMCE.getAttrib(element_node,"mce_href");if(attribName=="href"&&href!="")attribValue=href;var src=tinyMCE.getAttrib(element_node,"mce_src");if(attribName=="src"&&src!="")attribValue=src;if(!tinyMCE.cleanup_on_save)attribValue=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],attribValue);else if(tinyMCE.getParam('convert_urls'))attribValue=eval(tinyMCE.cleanup_urlconverter_callback+"(attribValue, element_node, tinyMCE.cleanup_on_save);");break;case "colspan":case "rowspan":if(attribValue=="1")return null;break;case "_moz-userdefined":case "editorid":case "mce_href":case "mce_src":return null;}if(attribMustBeValue!=null){var isCorrect=false;for(var i=0;i<attribMustBeValue.length;i++){if(attribValue==attribMustBeValue[i]){isCorrect=true;break;}}if(!isCorrect)return null;}var attrib=new Object();attrib.name=attribName;attrib.value=attribValue;return attrib;};TinyMCE.prototype.clearArray=function(ar){for(var key in ar)ar[key]=null;};TinyMCE.prototype.isInstance=function(inst){return inst!=null&&typeof(inst)=="object"&&inst.isTinyMCEControl;};TinyMCE.prototype.parseStyle=function(str){var ar=new Array();if(str==null)return ar;var st=str.split(';');tinyMCE.clearArray(ar);for(var i=0;i<st.length;i++){if(st[i]=='')continue;var re=new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');var pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1];}return ar;};TinyMCE.prototype.compressStyle=function(ar,pr,sf,res){var box=new Array();box[0]=ar[pr+'-top'+sf];box[1]=ar[pr+'-left'+sf];box[2]=ar[pr+'-right'+sf];box[3]=ar[pr+'-bottom'+sf];for(var i=0;i<box.length;i++){if(box[i]==null)return;for(var a=0;a<box.length;a++){if(box[a]!=box[i])return;}}ar[res]=box[0];ar[pr+'-top'+sf]=null;ar[pr+'-left'+sf]=null;ar[pr+'-right'+sf]=null;ar[pr+'-bottom'+sf]=null;};TinyMCE.prototype.serializeStyle=function(ar){var str="";tinyMCE.compressStyle(ar,"border","","border");tinyMCE.compressStyle(ar,"border","-width","border-width");tinyMCE.compressStyle(ar,"border","-color","border-color");for(var key in ar){var val=ar[key];if(typeof(val)=='function')continue;if(val!=null&&val!=''){val=''+val;val=val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)",'gi'),"url('$1')");if(val.indexOf('url(')!=-1&&tinyMCE.getParam('convert_urls')){var m=new RegExp("url\\('(.*?)'\\)").exec(val);if(m.length>1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1], null, true);")+"')";}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);if(val!="url('')")str+=key.toLowerCase()+": "+val+"; ";}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str;};TinyMCE.prototype.convertRGBToHex=function(s,k){if(s.toLowerCase().indexOf('rgb')!=-1){var re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");var rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4];}}return s;};TinyMCE.prototype.convertHexToRGB=function(s){if(s.indexOf('#')!=-1){s=s.replace(new RegExp('[^0-9A-F]','gi'),'');return "rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")";}return s;};TinyMCE.prototype._verifyClass=function(node){if(tinyMCE.isGecko){var className=node.getAttribute('class');if(!className)return false;}if(tinyMCE.isMSIE)var className=node.getAttribute('className');if(tinyMCE.cleanup_verify_css_classes&&tinyMCE.cleanup_on_save){var csses=tinyMCE.getCSSClasses();nonDefinedCSS=true;for(var c=0;c<csses.length;c++){if(csses[c]==className){nonDefinedCSS=false;break;}}if(nonDefinedCSS&&className.indexOf('mce_')!=0){node.removeAttribute('className');node.removeAttribute('class');return false;}}return true;};TinyMCE.prototype.cleanupNode=function(node){var output="";switch(node.nodeType){case 1:var elementData=tinyMCE._cleanupElementName(node.nodeName,node);var elementName=elementData?elementData.element_name:null;var elementValidAttribs=elementData?elementData.valid_attribs:null;var elementAttribs="";var openTag=false,nonEmptyTag=false;if(elementName!=null&&elementName.charAt(0)=='+'){elementName=elementName.substring(1);openTag=true;}if(elementName!=null&&elementName.charAt(0)=='-'){elementName=elementName.substring(1);nonEmptyTag=true;}if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var lookup=tinyMCE.cleanup_elementLookupTable;for(var i=0;i<lookup.length;i++){if(lookup[i]==node)return output;}lookup[lookup.length]=node;}if(!elementName){if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return output;}if(tinyMCE.cleanup_on_save){if(node.nodeName=="A"&&node.className=="mceItemAnchor"){if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return '<a name="'+this.convertStringToXML(node.getAttribute("name"))+'"></a>'+output;}}var re=new RegExp("^(TABLE|TD|TR)$");if(re.test(node.nodeName)){if((node.nodeName!="TABLE"||tinyMCE.cleanup_inline_styles)&&(width=tinyMCE.getAttrib(node,"width"))!=''){node.style.width=width.indexOf('%')!=-1?width:width.replace(/[^0-9]/gi,'')+"px";node.removeAttribute("width");}if((node.nodeName=="TABLE"&&!tinyMCE.cleanup_inline_styles)&&node.style.width!=''){tinyMCE.setAttrib(node,"width",node.style.width.replace('px',''));node.style.width='';}if((height=tinyMCE.getAttrib(node,"height"))!=''){height=""+height;node.style.height=height.indexOf('%')!=-1?height:height.replace(/[^0-9]/gi,'')+"px";node.removeAttribute("height");}}if(tinyMCE.cleanup_inline_styles){var re=new RegExp("^(TABLE|TD|TR|IMG|HR)$");if(re.test(node.nodeName)&&tinyMCE.getAttrib(node,"class").indexOf('mceItem')==-1){tinyMCE._moveStyle(node,'width','width');tinyMCE._moveStyle(node,'height','height');tinyMCE._moveStyle(node,'borderWidth','border');tinyMCE._moveStyle(node,'','vspace');tinyMCE._moveStyle(node,'','hspace');tinyMCE._moveStyle(node,'textAlign','align');tinyMCE._moveStyle(node,'backgroundColor','bgColor');tinyMCE._moveStyle(node,'borderColor','borderColor');tinyMCE._moveStyle(node,'backgroundImage','background');if(tinyMCE.isMSIE5)node.outerHTML=node.outerHTML;}else if(tinyMCE.isBlockElement(node))tinyMCE._moveStyle(node,'textAlign','align');if(node.nodeName=="FONT")tinyMCE._moveStyle(node,'color','color');}if(elementValidAttribs){for(var a=1;a<elementValidAttribs.length;a++){var attribName,attribDefaultValue,attribForceValue,attribValue;attribName=elementValidAttribs[a][0];attribDefaultValue=elementValidAttribs[a][1];attribForceValue=elementValidAttribs[a][2];if(attribDefaultValue!=null||attribForceValue!=null){var attribValue=node.getAttribute(attribName);if(node.getAttribute(attribName)==null||node.getAttribute(attribName)=="")attribValue=attribDefaultValue;attribValue=attribForceValue?attribForceValue:attribValue;if(attribValue=="{$uid}")attribValue="uid_"+(tinyMCE.cleanup_idCount++);if(attribName=="class")attribValue=tinyMCE.getVisualAidClass(attribValue,tinyMCE.cleanup_on_save);node.setAttribute(attribName,attribValue);}}}if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&elementName=="style")return "<style>"+node.innerHTML+"</style>";if(elementName=="table"&&!node.hasChildNodes())return "";if(node.attributes.length>0){var lastAttrib="";for(var i=0;i<node.attributes.length;i++){if(node.attributes[i].specified){if(tinyMCE.isOpera){if(node.attributes[i].nodeName==lastAttrib)continue;lastAttrib=node.attributes[i].nodeName;}var attrib=tinyMCE._cleanupAttribute(elementValidAttribs,elementName,node.attributes[i],node);if(attrib&&attrib.value!="")elementAttribs+=" "+attrib.name+"="+'"'+this.convertStringToXML(""+attrib.value)+'"';}}}if(tinyMCE.isMSIE&&elementName=="table"&&node.getAttribute("summary")!=null&&elementAttribs.indexOf('summary')==-1){var summary=tinyMCE.getAttrib(node,'summary');if(summary!='')elementAttribs+=" summary="+'"'+this.convertStringToXML(summary)+'"';}if(tinyMCE.isMSIE5&&/^(td|img|a)$/.test(elementName)){var ma=new Array("scope","longdesc","hreflang","charset","type");for(var u=0;u<ma.length;u++){if(node.getAttribute(ma[u])!=null){var s=tinyMCE.getAttrib(node,ma[u]);if(s!='')elementAttribs+=" "+ma[u]+"="+'"'+this.convertStringToXML(s)+'"';}}}if(tinyMCE.isMSIE&&elementName=="input"){if(node.type){if(!elementAttribs.match(/type=/g))elementAttribs+=" type="+'"'+node.type+'"';}if(node.value){if(!elementAttribs.match(/value=/g))elementAttribs+=" value="+'"'+node.value+'"';}}if((elementName=="p"||elementName=="td")&&(node.innerHTML==""||node.innerHTML=="&nbsp;"))return "<"+elementName+elementAttribs+">"+this.convertStringToXML(String.fromCharCode(160))+"</"+elementName+">";if(tinyMCE.isMSIE&&elementName=="script")return "<"+elementName+elementAttribs+">"+node.text+"</"+elementName+">";if(node.hasChildNodes()){if(!(elementName=="span"&&elementAttribs==""&&tinyMCE.getParam("trim_span_elements"))){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="<div"+elementAttribs+">";else output+="<"+elementName+elementAttribs+">";}for(var i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);if(!(elementName=="span"&&elementAttribs==""&&tinyMCE.getParam("trim_span_elements"))){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="</div><br />";else output+="</"+elementName+">";}}else{if(!nonEmptyTag){if(openTag)output+="<"+elementName+elementAttribs+"></"+elementName+">";else output+="<"+elementName+elementAttribs+" />";}}return output;case 3:if(node.parentNode.nodeName=="SCRIPT"||node.parentNode.nodeName=="NOSCRIPT"||node.parentNode.nodeName=="STYLE")return node.nodeValue;return this.convertStringToXML(node.nodeValue);case 8:return "<!--"+node.nodeValue+"-->";default:return "[UNKNOWN NODETYPE "+node.nodeType+"]";}};TinyMCE.prototype.convertStringToXML=function(html_data){var output="";for(var i=0;i<html_data.length;i++){var chr=html_data.charCodeAt(i);if(tinyMCE.settings['entity_encoding']=="numeric"){if(chr>127)output+='&#'+chr+";";else output+=String.fromCharCode(chr);continue;}if(tinyMCE.settings['entity_encoding']=="raw"){output+=String.fromCharCode(chr);continue;}if(typeof(tinyMCE.settings['cleanup_entities']["c"+chr])!='undefined'&&tinyMCE.settings['cleanup_entities']["c"+chr]!='')output+='&'+tinyMCE.settings['cleanup_entities']["c"+chr]+';';else output+=''+String.fromCharCode(chr);}return output;};TinyMCE.prototype._getCleanupElementName=function(chunk){var pos;if(chunk.charAt(0)=='+')chunk=chunk.substring(1);if(chunk.charAt(0)=='-')chunk=chunk.substring(1);if((pos=chunk.indexOf('/'))!=-1)chunk=chunk.substring(0,pos);if((pos=chunk.indexOf('['))!=-1)chunk=chunk.substring(0,pos);return chunk;};TinyMCE.prototype._initCleanup=function(){var validElements=tinyMCE.settings["valid_elements"];validElements=validElements.split(',');var extendedValidElements=tinyMCE.settings["extended_valid_elements"];extendedValidElements=extendedValidElements.split(',');for(var i=0;i<extendedValidElements.length;i++){var elementName=this._getCleanupElementName(extendedValidElements[i]);var skipAdd=false;for(var x=0;x<validElements.length;x++){if(this._getCleanupElementName(validElements[x])==elementName){validElements[x]=extendedValidElements[i];skipAdd=true;break;}}if(!skipAdd)validElements[validElements.length]=extendedValidElements[i];}for(var i=0;i<validElements.length;i++){var item=validElements[i];item=item.replace('[','|');item=item.replace(']','');var attribs=item.split('|');for(var x=0;x<attribs.length;x++)attribs[x]=attribs[x].toLowerCase();attribs[0]=attribs[0].split('/');for(var x=1;x<attribs.length;x++){var attribName=attribs[x];var attribDefault=null;var attribForce=null;var attribMustBe=null;if((pos=attribName.indexOf('='))!=-1){attribDefault=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf(':'))!=-1){attribForce=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf('<'))!=-1){attribMustBe=attribName.substring(pos+1).split('?');attribName=attribName.substring(0,pos);}attribs[x]=new Array(attribName,attribDefault,attribForce,attribMustBe);}validElements[i]=attribs;}var invalidElements=tinyMCE.settings['invalid_elements'].split(',');for(var i=0;i<invalidElements.length;i++)invalidElements[i]=invalidElements[i].toLowerCase();tinyMCE.settings['cleanup_validElements']=validElements;tinyMCE.settings['cleanup_invalidElements']=invalidElements;};TinyMCE.prototype._cleanupHTML=function(inst,doc,config,element,visual,on_save){if(!tinyMCE.settings['cleanup']){tinyMCE.handleVisualAid(inst.getBody(),true,false,inst);var html=element.innerHTML;html=html.replace(new RegExp('(mce_href|mce_src)=".*?"','gi'),'');html=html.replace(/\s+>/gi,'>');return html;}if(on_save&&tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);var n=doc.getElementsByTagName("font");for(var i=0;i<n.length;i++){var c="";if((c=tinyMCE.getAttrib(n[i],"bgcolor"))!=""){n[i].style.backgroundColor=c;tinyMCE.setAttrib(n[i],"bgcolor","");}}tinyMCE.cleanup_validElements=tinyMCE.settings['cleanup_validElements'];tinyMCE.cleanup_invalidElements=tinyMCE.settings['cleanup_invalidElements'];tinyMCE.cleanup_verify_html=tinyMCE.settings['verify_html'];tinyMCE.cleanup_force_br_newlines=tinyMCE.settings['force_br_newlines'];tinyMCE.cleanup_urlconverter_callback=tinyMCE.settings['urlconverter_callback'];tinyMCE.cleanup_verify_css_classes=tinyMCE.settings['verify_css_classes'];tinyMCE.cleanup_visual_table_class=tinyMCE.settings['visual_table_class'];tinyMCE.cleanup_apply_source_formatting=tinyMCE.settings['apply_source_formatting'];tinyMCE.cleanup_inline_styles=tinyMCE.settings['inline_styles'];tinyMCE.cleanup_visual_aid=visual;tinyMCE.cleanup_on_save=on_save;tinyMCE.cleanup_idCount=0;tinyMCE.cleanup_elementLookupTable=new Array();var startTime=new Date().getTime();if(tinyMCE.isMSIE){var nodes=element.getElementsByTagName("hr");for(var i=0;i<nodes.length;i++){if(nodes[i].id=="null")nodes[i].removeAttribute("id");}tinyMCE.setInnerHTML(element,tinyMCE.regexpReplace(element.innerHTML,'<p>[ \n\r]*<hr.*>[ \n\r]*</p>','<hr />','gi'));tinyMCE.setInnerHTML(element,tinyMCE.regexpReplace(element.innerHTML,'<!([^-(DOCTYPE)]* )|<!/[^-]*>','','gi'));}var html=this.cleanupNode(element);if(tinyMCE.settings['debug'])tinyMCE.debug("Cleanup process executed in: "+(new Date().getTime()-startTime)+" ms.");html=tinyMCE.regexpReplace(html,'<p><hr /></p>','<hr />');html=tinyMCE.regexpReplace(html,'<p>&nbsp;</p><hr /><p>&nbsp;</p>','<hr />');html=tinyMCE.regexpReplace(html,'<td>\\s*<br />\\s*</td>','<td>&nbsp;</td>');html=tinyMCE.regexpReplace(html,'<p>\\s*<br />\\s*</p>','<p>&nbsp;</p>');html=tinyMCE.regexpReplace(html,'<p>\\s*&nbsp;\\s*<br />\\s*&nbsp;\\s*</p>','<p>&nbsp;</p>');html=tinyMCE.regexpReplace(html,'<p>\\s*&nbsp;\\s*<br />\\s*</p>','<p>&nbsp;</p>');html=tinyMCE.regexpReplace(html,'<p>\\s*<br />\\s*&nbsp;\\s*</p>','<p>&nbsp;</p>');html=html.replace(new RegExp('<a>(.*?)</a>','gi'),'$1');if(!tinyMCE.isMSIE)html=html.replace(new RegExp('<o:p _moz-userdefined="" />','g'),"");if(tinyMCE.settings['remove_linebreaks'])html=html.replace(new RegExp('\r|\n','g'),' ');if(tinyMCE.getParam('apply_source_formatting')){html=html.replace(new RegExp('<(p|div)([^>]*)>','g'),"\n<$1$2>\n");html=html.replace(new RegExp('<\/(p|div)([^>]*)>','g'),"\n</$1$2>\n");html=html.replace(new RegExp('<br />','g'),"<br />\n");}if(tinyMCE.settings['force_br_newlines']){var re=new RegExp('<p>&nbsp;</p>','g');html=html.replace(re,"<br />");}if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt']){var re=new RegExp('&lt;&gt;','g');html=html.replace(re,"");}html=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",html);var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","").toLowerCase();if(chk=="<br/>"||chk=="<br>"||chk=="<p>&nbsp;</p>"||chk=="<p>&#160;</p>"||chk=="<p></p>")html="";if(tinyMCE.settings["preformatted"])return "<pre>"+html+"</pre>";return html;};TinyMCE.prototype.insertLink=function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(this.selectedInstance&&this.selectedElement&&this.selectedElement.nodeName.toLowerCase()=="img"){var doc=this.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(this.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true;}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(this.selectedElement.cloneNode(true));this.selectedElement.parentNode.replaceChild(linkElement,this.selectedElement);}return;}if(!this.linkElement&&this.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="'+tinyMCE.uniqueURL+'">'+this.selectedInstance.getSelectedHTML()+'</a>');}else this.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i<elementArray.length;i++){var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class);}tinyMCE.linkElement=elementArray[0];}if(this.linkElement){var mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, this.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(this.linkElement,'href',href);tinyMCE.setAttrib(this.linkElement,'mce_href',mhref);tinyMCE.setAttrib(this.linkElement,'target',target);tinyMCE.setAttrib(this.linkElement,'title',title);tinyMCE.setAttrib(this.linkElement,'onclick',onclick);tinyMCE.setAttrib(this.linkElement,'class',style_class);}tinyMCE.execCommand('mceEndUndoLevel');};TinyMCE.prototype.insertImage=function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand('mceBeginUndoLevel');if(src=="")return;if(!this.imgElement&&tinyMCE.isSafari){var html="";html+='<img src="'+src+'" alt="'+alt+'"';html+=' border="'+border+'" hspace="'+hspace+'"';html+=' vspace="'+vspace+'" width="'+width+'"';html+=' height="'+height+'" align="'+align+'" title="'+title+'" onmouseover="'+onmouseover+'" onmouseout="'+onmouseout+'" />';tinyMCE.execCommand("mceInsertContent",false,html);}else{if(!this.imgElement&&this.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'<img src="'+tinyMCE.uniqueURL+'" />');else this.selectedInstance.contentDocument.execCommand("insertimage",false,tinyMCE.uniqueURL);tinyMCE.imgElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"img","src",tinyMCE.uniqueURL);}}if(this.imgElement){var needsRepaint=false;var msrc=src;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, tinyMCE.imgElement);");if(tinyMCE.getParam('convert_urls'))msrc=src;if(onmouseover&&onmouseover!="")onmouseover="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, tinyMCE.imgElement);")+"';";if(onmouseout&&onmouseout!="")onmouseout="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, tinyMCE.imgElement);")+"';";if(typeof(title)=="undefined")title=alt;if(width!=this.imgElement.getAttribute("width")||height!=this.imgElement.getAttribute("height")||align!=this.imgElement.getAttribute("align"))needsRepaint=true;tinyMCE.setAttrib(this.imgElement,'src',src);tinyMCE.setAttrib(this.imgElement,'mce_src',msrc);tinyMCE.setAttrib(this.imgElement,'alt',alt);tinyMCE.setAttrib(this.imgElement,'title',title);tinyMCE.setAttrib(this.imgElement,'align',align);tinyMCE.setAttrib(this.imgElement,'border',border,true);tinyMCE.setAttrib(this.imgElement,'hspace',hspace,true);tinyMCE.setAttrib(this.imgElement,'vspace',vspace,true);tinyMCE.setAttrib(this.imgElement,'width',width,true);tinyMCE.setAttrib(this.imgElement,'height',height,true);tinyMCE.setAttrib(this.imgElement,'onmouseover',onmouseover);tinyMCE.setAttrib(this.imgElement,'onmouseout',onmouseout);if(width&&width!="")this.imgElement.style.pixelWidth=width;if(height&&height!="")this.imgElement.style.pixelHeight=height;if(needsRepaint)tinyMCE.selectedInstance.repaint();}tinyMCE.execCommand('mceEndUndoLevel');};TinyMCE.prototype.getElementByAttributeValue=function(node,element_name,attrib,value){var elements=this.getElementsByAttributeValue(node,element_name,attrib,value);if(elements.length==0)return null;return elements[0];};TinyMCE.prototype.getElementsByAttributeValue=function(node,element_name,attrib,value){var elements=new Array();if(node&&node.nodeName.toLowerCase()==element_name){if(node.getAttribute(attrib)&&node.getAttribute(attrib).indexOf(value)!=-1)elements[elements.length]=node;}if(node&&node.hasChildNodes()){for(var x=0,n=node.childNodes.length;x<n;x++){var childElements=this.getElementsByAttributeValue(node.childNodes[x],element_name,attrib,value);for(var i=0,m=childElements.length;i<m;i++)elements[elements.length]=childElements[i];}}return elements;};TinyMCE.prototype.isBlockElement=function(node){return node!=null&&node.nodeType==1&&this.blockRegExp.test(node.nodeName);};TinyMCE.prototype.getParentBlockElement=function(node){while(node){if(this.blockRegExp.test(node.nodeName))return node;node=node.parentNode;}return null;};TinyMCE.prototype.getNodeTree=function(node,node_array,type,node_name){if(typeof(type)=="undefined"||node.nodeType==type&&(typeof(node_name)=="undefined"||node.nodeName==node_name))node_array[node_array.length]=node;if(node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++)tinyMCE.getNodeTree(node.childNodes[i],node_array,type,node_name);}return node_array;};TinyMCE.prototype.getParentElement=function(node,names,attrib_name,attrib_value){if(typeof(names)=="undefined"){if(node.nodeType==1)return node;while((node=node.parentNode)!=null&&node.nodeType!=1);return node;}var namesAr=names.split(',');if(node==null)return null;do{for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase()||names=="*"){if(typeof(attrib_name)=="undefined")return node;else if(node.getAttribute(attrib_name)){if(typeof(attrib_value)=="undefined"){if(node.getAttribute(attrib_name)!="")return node;}else if(node.getAttribute(attrib_name)==attrib_value)return node;}}}}while((node=node.parentNode)!=null);return null;};TinyMCE.prototype.convertURL=function(url,node,on_save){var prot=document.location.protocol;var host=document.location.hostname;var port=document.location.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0)=="#")return url;if(!tinyMCE.isMSIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings['base_href']+url;if(on_save&&tinyMCE.getParam('relative_urls')){var curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(curl.charAt(0)=='/')curl=tinyMCE.settings['document_base_prefix']+curl;var urlParts=tinyMCE.parseURL(curl);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(urlParts['port']==tmpUrlParts['port']))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],curl);}if(!tinyMCE.getParam('relative_urls')){var urlParts=tinyMCE.parseURL(url);var baseUrlParts=tinyMCE.parseURL(tinyMCE.settings['base_href']);url=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(urlParts['anchor']&&urlParts['path']==baseUrlParts['path'])return "#"+urlParts['anchor'];}if(tinyMCE.getParam('remove_script_host')){var start="",portPart="";if(port!="")portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1);}return url;};TinyMCE.prototype.parseURL=function(url_str){var urlParts=new Array();if(url_str){var pos,lastPos;pos=url_str.indexOf('://');if(pos!=-1){urlParts['protocol']=url_str.substring(0,pos);lastPos=pos+3;}for(var i=lastPos;i<url_str.length;i++){var chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break;}pos=i;urlParts['host']=url_str.substring(lastPos,pos);urlParts['port']="";lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts['port']=url_str.substring(lastPos+1,pos);}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts['query']=url_str.substring(lastPos+1,pos);}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts['anchor']=url_str.substring(lastPos+1,pos);}}return urlParts;};TinyMCE.prototype.serializeURL=function(up){var url="";if(up['protocol'])url+=up['protocol']+"://";if(up['host'])url+=up['host'];if(up['port'])url+=":"+up['port'];if(up['path'])url+=up['path'];if(up['query'])url+="?"+up['query'];if(up['anchor'])url+="#"+up['anchor'];return url;};TinyMCE.prototype.convertAbsoluteURLToRelativeURL=function(base_url,url_to_relative){var baseURL=this.parseURL(base_url);var targetURL=this.parseURL(url_to_relative);var strTok1;var strTok2;var breakPoint=0;var outPath="";var forceSlash=false;if(targetURL.path=="")targetURL.path="/";else forceSlash=true;base_url=baseURL.path.substring(0,baseURL.path.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=targetURL.path.split('/');if(strTok1.length>=strTok2.length){for(var i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length<strTok2.length){for(var i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return targetURL.path;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(var i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outPath+="/"+strTok2[i];else outPath+=strTok2[i];}targetURL.protocol=null;targetURL.host=null;targetURL.port=null;targetURL.path=outPath==""&&forceSlash?"/":outPath;var fileName=baseURL.path;var pos;if((pos=fileName.lastIndexOf('/'))!=-1)fileName=fileName.substring(pos+1);if(fileName==targetURL.path&&targetURL.anchor!="")targetURL.path="";return this.serializeURL(targetURL);};TinyMCE.prototype.convertRelativeToAbsoluteURL=function(base_url,relative_url){var baseURL=TinyMCE.prototype.parseURL(base_url);var relURL=TinyMCE.prototype.parseURL(relative_url);if(relative_url==""||relative_url.charAt(0)=='/'||relative_url.indexOf('://')!=-1||relative_url.indexOf('mailto:')!=-1||relative_url.indexOf('javascript:')!=-1)return relative_url;baseURLParts=baseURL['path'].split('/');relURLParts=relURL['path'].split('/');var newBaseURLParts=new Array();for(var i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i];}baseURLParts=newBaseURLParts.reverse();var newRelURLParts=new Array();var numBack=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue;}if(numBack>0){numBack--;continue;}newRelURLParts[newRelURLParts.length]=relURLParts[i];}relURLParts=newRelURLParts.reverse();var len=baseURLParts.length-numBack;var absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');var start="",end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return TinyMCE.prototype.serializeURL(relURL);};TinyMCE.prototype.getParam=function(name,default_value,strip_whitespace,split_chr){var value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var outArray=new Array();for(var i=0;i<value.length;i++){if(value[i]&&value[i]!="")outArray[outArray.length]=value[i];}value=outArray;}return value;};TinyMCE.prototype.getLang=function(name,default_value,parse_entities){var value=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name];if(parse_entities)value=tinyMCE.entityDecode(value);return value;};TinyMCE.prototype.entityDecode=function(s){var e=document.createElement("div");e.innerHTML=s;return e.innerHTML;};TinyMCE.prototype.addToLang=function(prefix,ar){for(var key in ar){if(typeof(ar[key])=='function')continue;tinyMCELang[(key.indexOf('lang_')==-1?'lang_':'')+(prefix!=''?(prefix+"_"):'')+key]=ar[key];}};TinyMCE.prototype.replaceVar=function(replace_haystack,replace_var,replace_str){var re=new RegExp('{\\\$'+replace_var+'}','g');return replace_haystack.replace(re,replace_str);};TinyMCE.prototype.replaceVars=function(replace_haystack,replace_vars){for(var key in replace_vars){var value=replace_vars[key];if(typeof(value)=='function')continue;replace_haystack=tinyMCE.replaceVar(replace_haystack,key,value);}return replace_haystack;};TinyMCE.prototype.triggerNodeChange=function(focus,setup_content){if(tinyMCE.settings['handleNodeChangeCallback']){if(tinyMCE.selectedInstance){var inst=tinyMCE.selectedInstance;var editorId=inst.editorId;var elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();var undoIndex=-1;var undoLevels=-1;var anySelection=false;var selectedText=inst.getSelectedText();inst.switchSettings();if(tinyMCE.settings["auto_resize"]){var doc=inst.getDoc();inst.iframeElement.style.width=doc.body.offsetWidth+"px";inst.iframeElement.style.height=doc.body.offsetHeight+"px";}if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=inst.undoIndex;undoLevels=inst.undoLevels.length;}tinyMCE.executeCallback('handleNodeChangeCallback','_handleNodeChange',0,editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content);}}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus();};TinyMCE.prototype._customCleanup=function(inst,type,content){var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content, inst);");var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){if(eval("typeof(TinyMCE_"+plugins[i]+"_cleanup)")!="undefined")content=eval("TinyMCE_"+plugins[i]+"_cleanup(type, content, inst);");}return content;};TinyMCE.prototype.getContent=function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.selectedInstance=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedInstance){var old=this.selectedInstance.getBody().innerHTML;var html=tinyMCE._cleanupHTML(this.selectedInstance,this.selectedInstance.getDoc(),tinyMCE.settings,this.selectedInstance.getBody(),false,true);tinyMCE.setInnerHTML(this.selectedInstance.getBody(),old);return html;}return null;};TinyMCE.prototype.setContent=function(html_content){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand('mceSetContent',false,html_content);tinyMCE.selectedInstance.repaint();}};TinyMCE.prototype.importThemeLanguagePack=function(name){if(typeof(name)=="undefined")name=tinyMCE.settings['theme'];tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings['language']+'.js');};TinyMCE.prototype.importPluginLanguagePack=function(name,valid_languages){var lang="en";valid_languages=valid_languages.split(',');for(var i=0;i<valid_languages.length;i++){if(tinyMCE.settings['language']==valid_languages[i])lang=tinyMCE.settings['language'];}tinyMCE.loadScript(tinyMCE.baseURL+'/plugins/'+name+'/langs/'+lang+'.js');};TinyMCE.prototype.applyTemplate=function(html,args){html=tinyMCE.replaceVar(html,"themeurl",tinyMCE.themeURL);if(typeof(args)!="undefined")html=tinyMCE.replaceVars(html,args);html=tinyMCE.replaceVars(html,tinyMCE.settings);html=tinyMCE.replaceVars(html,tinyMCELang);return html;};TinyMCE.prototype.openWindow=function(template,args){var html,width,height,x,y,resizable,scrollbars,url;args['mce_template_file']=template['file'];args['mce_width']=template['width'];args['mce_height']=template['height'];tinyMCE.windowArgs=args;html=template['html'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(tinyMCE.isMSIE)height+=40;else height+=20;x=parseInt(screen.width/2.0)-(width/2.0);y=parseInt(screen.height/2.0)-(height/2.0);resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]));}if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args);var win=window.open("","mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return;}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus();}else{if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&resizable!='yes'&&tinyMCE.settings["dialog_type"]=="modal"){var features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features);}else{var modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template['close_previous']!="no")try{tinyMCE.lastWindow.close();}catch(ex){}var win=window.open(url,"mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return;}if(template['close_previous']!="no")tinyMCE.lastWindow=win;eval('try { win.resizeTo(width, height); } catch(e) { }');if(tinyMCE.isGecko){if(win.document.defaultView.statusbar.visible)win.resizeBy(0,tinyMCE.isMac?10:24);}win.focus();}}};TinyMCE.prototype.closeWindow=function(win){win.close();};TinyMCE.prototype.getVisualAidClass=function(class_name,state){var aidClass=tinyMCE.settings['visual_table_class'];if(typeof(state)=="undefined")state=tinyMCE.settings['visual'];var classNames=new Array();var ar=class_name.split(' ');for(var i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!="")classNames[classNames.length]=ar[i];}if(state)classNames[classNames.length]=aidClass;var className="";for(var i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i];}return className;};TinyMCE.prototype.handleVisualAid=function(el,deep,state,inst){if(!el)return;var tableElement=null;switch(el.nodeName){case "TABLE":var oldW=el.style.width;var oldH=el.style.height;var bo=tinyMCE.getAttrib(el,"border");bo=bo==""||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(var y=0;y<el.rows.length;y++){for(var x=0;x<el.rows[y].cells.length;x++){var cn=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],"class"),state&&bo);tinyMCE.setAttrib(el.rows[y].cells[x],"class",cn);}}break;case "A":var anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!=''&&state){el.title=anchorName;el.className='mceItemAnchor';}else if(anchorName!=''&&!state)el.className='';break;}if(deep&&el.hasChildNodes()){for(var i=0;i<el.childNodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,inst);}};TinyMCE.prototype.getAttrib=function(elm,name,default_value){if(typeof(default_value)=="undefined")default_value="";if(!elm||elm.nodeType!=1)return default_value;var v=elm.getAttribute(name);if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko&&name=="src"&&elm.src!=null&&elm.src!="")v=elm.src;if(tinyMCE.isGecko&&name=="href"&&elm.href!=null&&elm.href!="")v=elm.href;if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!="")?v:default_value;};TinyMCE.prototype.setAttrib=function(element,name,value,fix_value){if(typeof(value)=="number"&&value!=null)value=""+value;if(fix_value){if(value==null)value="";var re=new RegExp('[^0-9%]','g');value=value.replace(re,'');}if(name=="style")element.style.cssText=value;if(name=="class")element.className=value;if(value!=null&&value!=""&&value!=-1)element.setAttribute(name,value);else element.removeAttribute(name);};TinyMCE.prototype.setStyleAttrib=function(elm,name,value){eval('elm.style.'+name+'=value;');if(tinyMCE.isMSIE&&value==null||value==''){var str=tinyMCE.serializeStyle(tinyMCE.parseStyle(elm.style.cssText));elm.style.cssText=str;elm.setAttribute("style",str);}};TinyMCE.prototype.convertSpansToFonts=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/<span/gi,'<font');h=h.replace(/<\/span/gi,'</font');doc.body.innerHTML=h;var s=doc.getElementsByTagName("font");for(var i=0;i<s.length;i++){var size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();var fSize=0;for(var x=0;x<sizes.length;x++){if(sizes[x]==size){fSize=x+1;break;}}if(fSize>0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize='';}var fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!=""){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily='';}var fColor=s[i].style.color;if(fColor!=null&&fColor!=""){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color='';}}};TinyMCE.prototype.convertFontsToSpans=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/<font/gi,'<span');h=h.replace(/<\/font/gi,'</span');doc.body.innerHTML=h;var fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else fsClasses=null;var s=doc.getElementsByTagName("span");for(var i=0;i<s.length;i++){var fSize,fFace,fColor;fSize=tinyMCE.getAttrib(s[i],'size');fFace=tinyMCE.getAttrib(s[i],'face');fColor=tinyMCE.getAttrib(s[i],'color');if(fSize!=""){fSize=parseInt(fSize);if(fSize>0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else s[i].style.fontSize=sizes[fSize-1];}s[i].removeAttribute('size');}if(fFace!=""){s[i].style.fontFamily=fFace;s[i].removeAttribute('face');}if(fColor!=""){s[i].style.color=fColor;s[i].removeAttribute('color');}}};TinyMCE.prototype.setInnerHTML=function(e,h){if(tinyMCE.isMSIE&&!tinyMCE.isOpera){e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h);}};TinyMCE.prototype.fixGeckoBaseHREFBug=function(m,e,h){if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," xsrc=");h=h.replace(/\shref=/gi," xhref=");return h;}else{if(h.indexOf(' xsrc')!=-1){var n=e.getElementsByTagName("img");for(var i=0;i<n.length;i++){var xsrc=tinyMCE.getAttrib(n[i],"xsrc");if(xsrc!=""){n[i].src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xsrc);n[i].removeAttribute("xsrc");}}var n=e.getElementsByTagName("select");for(var i=0;i<n.length;i++){var xsrc=tinyMCE.getAttrib(n[i],"xsrc");if(xsrc!=""){n[i].src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xsrc);n[i].removeAttribute("xsrc");}}var n=e.getElementsByTagName("iframe");for(var i=0;i<n.length;i++){var xsrc=tinyMCE.getAttrib(n[i],"xsrc");if(xsrc!=""){n[i].src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xsrc);n[i].removeAttribute("xsrc");}}}if(h.indexOf(' xhref')!=-1){var n=e.getElementsByTagName("a");for(var i=0;i<n.length;i++){var xhref=tinyMCE.getAttrib(n[i],"xhref");if(xhref!=""){n[i].href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xhref);n[i].removeAttribute("xhref");}}}}}return h;};TinyMCE.prototype.getOuterHTML=function(e){if(tinyMCE.isMSIE)return e.outerHTML;var d=e.ownerDocument.createElement("body");d.appendChild(e);return d.innerHTML;};TinyMCE.prototype.setOuterHTML=function(doc,e,h){if(tinyMCE.isMSIE){e.outerHTML=h;return;}var d=e.ownerDocument.createElement("body");d.innerHTML=h;e.parentNode.replaceChild(d.firstChild,e);};TinyMCE.prototype.insertAfter=function(nc,rc){if(rc.nextSibling)rc.parentNode.insertBefore(nc,rc.nextSibling);else rc.parentNode.appendChild(nc);};TinyMCE.prototype.cleanupAnchors=function(doc){var an=doc.getElementsByTagName("a");for(var i=0;i<an.length;i++){if(tinyMCE.getAttrib(an[i],"name")!=""){var cn=an[i].childNodes;for(var x=cn.length-1;x>=0;x--)tinyMCE.insertAfter(cn[x],an[i]);}}};TinyMCE.prototype._setHTML=function(doc,html_content){html_content=tinyMCE.cleanupHTMLCode(html_content);try{tinyMCE.setInnerHTML(doc.body,html_content);}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content);}if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<paras.length;i++){var node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML;}}var html=doc.body.innerHTML;if(html.indexOf('="mso')!=-1){for(var i=0;i<doc.body.all.length;i++){var el=doc.body.all[i];el.removeAttribute("className","",0);el.removeAttribute("style","",0);}html=doc.body.innerHTML;html=tinyMCE.regexpReplace(html,"<o:p><\/o:p>","<br />");html=tinyMCE.regexpReplace(html,"<o:p>&nbsp;<\/o:p>","");html=tinyMCE.regexpReplace(html,"<st1:.*?>","");html=tinyMCE.regexpReplace(html,"<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p><\/p>\r\n<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p>&nbsp;<\/p>","<br />");html=tinyMCE.regexpReplace(html,"<p>\s*(<p>\s*)?","<p>");html=tinyMCE.regexpReplace(html,"<\/p>\s*(<\/p>\s*)?","</p>");}tinyMCE.setInnerHTML(doc.body,html);}tinyMCE.cleanupAnchors(doc);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);};TinyMCE.prototype.getImageSrc=function(str){var pos=-1;if(!str)return "";if((pos=str.indexOf('this.src='))!=-1){var src=str.substring(pos+10);src=src.substring(0,src.indexOf('\''));return src;}return "";};TinyMCE.prototype._getElementById=function(element_id){var elm=document.getElementById(element_id);if(!elm){for(var j=0;j<document.forms.length;j++){for(var k=0;k<document.forms[j].elements.length;k++){if(document.forms[j].elements[k].name==element_id){elm=document.forms[j].elements[k];break;}}}}return elm;};TinyMCE.prototype.getEditorId=function(form_element){var inst=this.getInstanceById(form_element);if(!inst)return null;return inst.editorId;};TinyMCE.prototype.getInstanceById=function(editor_id){var inst=this.instances[editor_id];if(!inst){for(var n in tinyMCE.instances){var instance=tinyMCE.instances[n];if(!tinyMCE.isInstance(instance))continue;if(instance.formTargetElementId==editor_id){inst=instance;break;}}}return inst;};TinyMCE.prototype.queryInstanceCommandValue=function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandValue(command);return false;};TinyMCE.prototype.queryInstanceCommandState=function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandState(command);return null;};TinyMCE.prototype.setWindowArg=function(name,value){this.windowArgs[name]=value;};TinyMCE.prototype.getWindowArg=function(name,default_value){return(typeof(this.windowArgs[name])=="undefined")?default_value:this.windowArgs[name];};TinyMCE.prototype.getCSSClasses=function(editor_id,doc){var output=new Array();if(typeof(tinyMCE.cssClasses)!="undefined")return tinyMCE.cssClasses;if(typeof(editor_id)=="undefined"&&typeof(doc)=="undefined"){var instance;for(var instanceName in tinyMCE.instances){instance=tinyMCE.instances[instanceName];if(!tinyMCE.isInstance(instance))continue;break;}doc=instance.getDoc();}if(typeof(doc)=="undefined"){var instance=tinyMCE.getInstanceById(editor_id);doc=instance.getDoc();}if(doc){var styles=tinyMCE.isMSIE?doc.styleSheets:doc.styleSheets;if(styles&&styles.length>0){for(var x=0;x<styles.length;x++){var csses=null;eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets("+x+").rules : doc.styleSheets["+x+"].cssRules;} catch(e) {}");if(!csses)return new Array();for(var i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;if(selectorText){var rules=selectorText.split(',');for(var c=0;c<rules.length;c++){if(rules[c].indexOf(' ')!=-1||rules[c].indexOf(':')!=-1||rules[c].indexOf('mceItem')!=-1)continue;if(rules[c]=="."+tinyMCE.settings['visual_table_class'])continue;if(rules[c].indexOf('.')!=-1){output[output.length]=rules[c].substring(rules[c].indexOf('.')+1);}}}}}}}if(output.length>0)tinyMCE.cssClasses=output;return output;};TinyMCE.prototype.regexpReplace=function(in_str,reg_exp,replace_str,opts){if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';var re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);};TinyMCE.prototype.trim=function(str){return str.replace(/^\s*|\s*$/g,"");};TinyMCE.prototype.cleanupEventStr=function(str){str=""+str;str=str.replace('function anonymous()\n{\n','');str=str.replace('\n}','');str=str.replace(/^return true;/gi,'');return str;};TinyMCE.prototype.getAbsPosition=function(node){var pos=new Object();pos.absLeft=pos.absTop=0;var parentNode=node;while(parentNode){pos.absLeft+=parentNode.offsetLeft;pos.absTop+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}return pos;};TinyMCE.prototype.getControlHTML=function(control_name){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_getControlHTML";if(eval("typeof("+templateFunction+")")!='undefined'){var html=eval(templateFunction+"('"+control_name+"');");if(html!="")return tinyMCE.replaceVar(html,"pluginurl",tinyMCE.baseURL+"/plugins/"+themePlugins[i]);}}return eval('TinyMCE_'+tinyMCE.settings['theme']+"_getControlHTML"+"('"+control_name+"');");};TinyMCE.prototype._themeExecCommand=function(editor_id,element,command,user_interface,value){var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined'){if(eval(templateFunction+"(editor_id, element, command, user_interface, value);"))return true;}}templateFunction='TinyMCE_'+tinyMCE.settings['theme']+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined')return eval(templateFunction+"(editor_id, element, command, user_interface, value);");return false;};TinyMCE.prototype._getThemeFunction=function(suffix,skip_plugins){if(skip_plugins)return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;var themePlugins=tinyMCE.getParam('plugins','',true,',');var templateFunction;for(var i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+suffix;if(eval("typeof("+templateFunction+")")!='undefined')return templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;};TinyMCE.prototype.isFunc=function(func_name){if(func_name==null||func_name=="")return false;return eval("typeof("+func_name+")")!="undefined";};TinyMCE.prototype.exec=function(func_name,args){var str=func_name+'(';for(var i=3;i<args.length;i++){str+='args['+i+']';if(i<args.length-1)str+=',';}str+=');';return eval(str);};TinyMCE.prototype.executeCallback=function(param,suffix,mode){switch(mode){case 0:var state=false;var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){var func="TinyMCE_"+plugins[i]+suffix;if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);state=true;}}var func='TinyMCE_'+tinyMCE.settings['theme']+suffix;if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);state=true;}var func=tinyMCE.getParam(param,'');if(tinyMCE.isFunc(func)){tinyMCE.exec(func,this.executeCallback.arguments);state=true;}return state;case 1:var plugins=tinyMCE.getParam('plugins','',true,',');for(var i=0;i<plugins.length;i++){var func="TinyMCE_"+plugins[i]+suffix;if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments))return true;}}var func='TinyMCE_'+tinyMCE.settings['theme']+suffix;if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments))return true;}var func=tinyMCE.getParam(param,'');if(tinyMCE.isFunc(func)){if(tinyMCE.exec(func,this.executeCallback.arguments))return true;}return false;}};TinyMCE.prototype.debug=function(){var msg="";var elm=document.getElementById("tinymce_debug");if(!elm){var debugDiv=document.createElement("div");debugDiv.setAttribute("className","debugger");debugDiv.className="debugger";debugDiv.innerHTML='\
+                       Debug output:\
+                       <textarea id="tinymce_debug" style="width: 100%; height: 300px" wrap="nowrap"></textarea>';document.body.appendChild(debugDiv);elm=document.getElementById("tinymce_debug");}var args=this.debug.arguments;for(var i=0;i<args.length;i++){msg+=args[i];if(i<args.length-1)msg+=', ';}elm.value+=msg+"\n";};function TinyMCEControl(settings){this.undoLevels=new Array();this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true;this.isTinyMCEControl=true;this.settings=settings;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);};TinyMCEControl.prototype.repaint=function(){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return;try{this.getBody().style.display='none';this.getDoc().execCommand('selectall',false,null);this.getSel().collapseToStart();this.getBody().style.display='block';}catch(ex){}};TinyMCEControl.prototype.switchSettings=function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings['index']){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings['index'];}};TinyMCEControl.prototype.convertAllRelativeURLs=function(){var body=this.getBody();var elms=body.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=tinyMCE.getAttrib(elms[i],'src');var msrc=tinyMCE.getAttrib(elms[i],'mce_src');if(msrc!="")src=msrc;if(src!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);elms[i].setAttribute("src",src);}}var elms=body.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=tinyMCE.getAttrib(elms[i],'href');var mhref=tinyMCE.getAttrib(elms[i],'mce_href');if(mhref!="")href=mhref;if(href&&href!=""){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],href);elms[i].setAttribute("href",href);}}};TinyMCEControl.prototype.getSelectedHTML=function(){if(tinyMCE.isSafari){return this.getRng().toString();}var elm=document.createElement("body");if(tinyMCE.isGecko)elm.appendChild(this.getRng().cloneContents());else elm.innerHTML=this.getRng().htmlText;return tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,elm,this.visualAid);};TinyMCEControl.prototype.getBookmark=function(){var rng=this.getRng();if(tinyMCE.isSafari)return rng;if(tinyMCE.isMSIE)return rng;if(tinyMCE.isGecko)return rng.cloneRange();return null;};TinyMCEControl.prototype.moveToBookmark=function(bookmark){if(tinyMCE.isSafari){var sel=this.getSel().realSelection;sel.setBaseAndExtent(bookmark.startContainer,bookmark.startOffset,bookmark.endContainer,bookmark.endOffset);return true;}if(tinyMCE.isMSIE)return bookmark.select();if(tinyMCE.isGecko){var rng=this.getDoc().createRange();var sel=this.getSel();rng.setStart(bookmark.startContainer,bookmark.startOffset);rng.setEnd(bookmark.endContainer,bookmark.endOffset);sel.removeAllRanges();sel.addRange(rng);return true;}return false;};TinyMCEControl.prototype.getSelectedText=function(){if(tinyMCE.isMSIE){var doc=this.getDoc();if(doc.selection.type=="Text"){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText='';}else{var sel=this.getSel();if(sel&&sel.toString)selectedText=sel.toString();else selectedText='';}return selectedText;};TinyMCEControl.prototype.selectNode=function(node,collapse,select_text_node,to_start){if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(tinyMCE.isMSIE){var rng=this.getBody().createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select();}catch(e){}}else{var sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.realSelection.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.realSelection.collapseToStart();else sel.realSelection.collapseToEnd();}this.scrollToNode(node);return;}var rng=this.getDoc().createRange();if(select_text_node){var nodes=tinyMCE.getNodeTree(node,new Array(),3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node);}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length);}else rng.collapse(to_start);}sel.removeAllRanges();sel.addRange(rng);}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node;};TinyMCEControl.prototype.scrollToNode=function(node){var pos=tinyMCE.getAbsPosition(node);var doc=this.getDoc();var scrollX=doc.body.scrollLeft+doc.documentElement.scrollLeft;var scrollY=doc.body.scrollTop+doc.documentElement.scrollTop;var height=tinyMCE.isMSIE?document.getElementById(this.editorId).style.pixelHeight:this.targetElement.clientHeight;if(!tinyMCE.settings['auto_resize']&&!(pos.absTop>scrollY&&pos.absTop<(scrollY-25+height)))this.contentWindow.scrollTo(pos.absLeft,pos.absTop-height+25);};TinyMCEControl.prototype.getBody=function(){return this.getDoc().body;};TinyMCEControl.prototype.getDoc=function(){return this.contentWindow.document;};TinyMCEControl.prototype.getWin=function(){return this.contentWindow;};TinyMCEControl.prototype.getSel=function(){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return this.getDoc().selection;var sel=this.contentWindow.getSelection();if(tinyMCE.isSafari&&!sel.getRangeAt){var newSel=new Object();var doc=this.getDoc();function getRangeAt(idx){var rng=new Object();rng.startContainer=this.focusNode;rng.endContainer=this.anchorNode;rng.commonAncestorContainer=this.focusNode;rng.createContextualFragment=function(html){if(html.charAt(0)=='<'){var elm=doc.createElement("div");elm.innerHTML=html;return elm.firstChild;}return doc.createTextNode("UNSUPPORTED, DUE TO LIMITATIONS IN SAFARI!");};rng.deleteContents=function(){doc.execCommand("Delete",false,"");};return rng;}newSel.focusNode=sel.baseNode;newSel.focusOffset=sel.baseOffset;newSel.anchorNode=sel.extentNode;newSel.anchorOffset=sel.extentOffset;newSel.getRangeAt=getRangeAt;newSel.text=""+sel;newSel.realSelection=sel;newSel.toString=function(){return this.text;};return newSel;}return sel;};TinyMCEControl.prototype.getRng=function(){var sel=this.getSel();if(sel==null)return null;if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return sel.createRange();if(tinyMCE.isSafari){var rng=this.getDoc().createRange();var sel=this.getSel().realSelection;rng.setStart(sel.baseNode,sel.baseOffset);rng.setEnd(sel.extentNode,sel.extentOffset);return rng;}return this.getSel().getRangeAt(0);};TinyMCEControl.prototype._insertPara=function(e){function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()=="";}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;var nodes=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false;}return true;}var doc=this.getDoc();var sel=this.getSel();var win=this.contentWindow;var rng=sel.getRangeAt(0);var body=doc.body;var rootElm=doc.documentElement;var self=this;var blockName="P";var rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);var rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);var direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;var startNode=direct?sel.anchorNode:sel.focusNode;var startOffset=direct?sel.anchorOffset:sel.focusOffset;var endNode=direct?sel.focusNode:sel.anchorNode;var endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;var startBlock=tinyMCE.getParentBlockElement(startNode);var endBlock=tinyMCE.getParentBlockElement(endNode);if(startBlock!=null){blockName=startBlock.nodeName;if(blockName=="TD"||blockName=="TABLE"||(blockName=="DIV"&&new RegExp('left|right','gi').test(startBlock.style.cssFloat)))blockName="P";}if(tinyMCE.getParentElement(startBlock,"OL,UL")!=null)return false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;var paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);var paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");var startChop=startNode;var endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node;}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node;}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startChop.nodeName=="TD")startChop=startChop.firstChild;if(endChop.nodeName=="TD")endChop=endChop.lastChild;if(startBlock==null){rng.deleteContents();sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);if(endChop.nodeName!="#text"&&endChop.nodeName!="BODY")rngBefore.setEndAfter(endChop);var contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName=="BODY"))paraAfter.innerHTML=contents.firstChild.innerHTML;else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore);}else{body.innerHTML="<"+blockName+">&nbsp;</"+blockName+"><"+blockName+">&nbsp;</"+blockName+">";paraAfter=body.childNodes[1];}this.selectNode(paraAfter,true,true);return true;}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);var contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML;}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";var rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode);}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset);}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();rng.insertNode(paraAfter);rng.insertNode(paraBefore);paraAfter.normalize();paraBefore.normalize();this.selectNode(paraAfter,true,true);return true;};TinyMCEControl.prototype._handleBackSpace=function(evt_type){var doc=this.getDoc();var sel=this.getSel();if(sel==null)return false;var rng=sel.getRangeAt(0);var node=rng.startContainer;var elm=node.nodeType==3?node.parentNode:node;if(node==null)return;if(elm&&elm.nodeName==""){var para=doc.createElement("p");while(elm.firstChild)para.appendChild(elm.firstChild);elm.parentNode.insertBefore(para,elm);elm.parentNode.removeChild(elm);var rng=rng.cloneRange();rng.setStartBefore(node.nextSibling);rng.setEndAfter(node.nextSibling);rng.extractContents();this.selectNode(node.nextSibling,true,true);}var para=tinyMCE.getParentBlockElement(node);if(para!=null&&para.nodeName.toLowerCase()=='p'&&evt_type=="keypress"){var htm=para.innerHTML;var block=tinyMCE.getParentBlockElement(node);if(htm==""||htm=="&nbsp;"||block.nodeName.toLowerCase()=="li"){var prevElm=para.previousSibling;while(prevElm!=null&&prevElm.nodeType!=1)prevElm=prevElm.previousSibling;if(prevElm==null)return false;var nodes=tinyMCE.getNodeTree(prevElm,new Array(),3);var lastTextNode=nodes.length==0?null:nodes[nodes.length-1];if(lastTextNode!=null)this.selectNode(lastTextNode,true,false,false);para.parentNode.removeChild(para);return true;}}return false;};TinyMCEControl.prototype._insertSpace=function(){return true;};TinyMCEControl.prototype.autoResetDesignMode=function(){if(!tinyMCE.isMSIE&&tinyMCE.settings['auto_reset_designmode']&&this.isHidden())eval('try { this.getDoc().designMode = "On"; } catch(e) {}');};TinyMCEControl.prototype.isHidden=function(){if(tinyMCE.isMSIE)return false;var sel=this.getSel();return(!sel||!sel.rangeCount||sel.rangeCount==0);};TinyMCEControl.prototype.isDirty=function(){return this.startContent!=tinyMCE.trim(this.getBody().innerHTML)&&!tinyMCE.isNotDirty;};TinyMCEControl.prototype._mergeElements=function(scmd,pa,ch,override){if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return;}var st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));var stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));var className=tinyMCE.getAttrib(pa,"class");className+=" "+tinyMCE.getAttrib(ch,"class");if(override){for(var n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n];}}else{for(var n in stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n];}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.setAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style");};TinyMCEControl.prototype.setUseCSS=function(b){var doc=this.getDoc();try{doc.execCommand("useCSS",false,!b);}catch(ex){}try{doc.execCommand("styleWithCSS",false,b);}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{doc.execCommand('enableInlineTableEditing',false,"false");}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{doc.execCommand('enableObjectResizing',false,"false");}catch(ex){}};TinyMCEControl.prototype.execCommand=function(command,user_interface,value){var doc=this.getDoc();var win=this.getWin();var focusElm=this.getFocusElement();if(this.lastSafariSelection&&!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command)){this.moveToBookmark(this.lastSafariSelection);tinyMCE.selectedElement=this.lastSafariSelectedElement;}if(!tinyMCE.isMSIE&&!this.useCSS){this.setUseCSS(false);this.useCSS=true;}this.contentDocument=doc;if(tinyMCE._themeExecCommand(this.editorId,this.getBody(),command,user_interface,value))return;if(focusElm&&focusElm.nodeName=="IMG"){var align=focusElm.getAttribute('align');var img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case "JustifyLeft":if(align=='left')img.removeAttribute('align');else img.setAttribute('align','left');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case "JustifyCenter":img.removeAttribute('align');var div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);}else{var div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm);}this.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case "JustifyRight":if(align=='right')img.removeAttribute('align');else img.setAttribute('align','right');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings['force_br_newlines']){var alignValue="";if(doc.selection.type!="Control"){switch(command){case "JustifyLeft":alignValue="left";break;case "JustifyCenter":alignValue="center";break;case "JustifyFull":alignValue="justify";break;case "JustifyRight":alignValue="right";break;}if(alignValue!=""){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return;}}}switch(command){case "mceRepaint":this.repaint();return true;case "mceStoreSelection":this.selectionBookmark=this.getBookmark();return true;case "mceRestoreSelection":this.moveToBookmark(this.selectionBookmark);return true;case "InsertUnorderedList":case "InsertOrderedList":var tag=(command=="InsertUnorderedList")?"ul":"ol";if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<"+tag+"><li>&nbsp;</li><"+tag+">");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case "Strikethrough":if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<strike>"+this.getSelectedHTML()+"</strike>");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case "mceSelectNode":this.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case "FormatBlock":if(value==null||value==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)this.execCommand("mceRemoveNode",false,elm);}else this.getDoc().execCommand("FormatBlock",false,value);tinyMCE.triggerNodeChange();break;case "mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isMSIE){value.outerHTML=value.innerHTML;}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML));}tinyMCE.triggerNodeChange();break;case "mceSelectNodeDepth":var parentNode=this.getFocusElement();for(var i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue;}if(i==value){this.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return;}parentNode=parentNode.parentNode;}break;case "SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value['command'];var sname=value['name'];var svalue=value['value']==null?'':value['value'];var wrapper=value['wrapper']?value['wrapper']:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings['merge_styles_invalid_parents']!=''?new RegExp(tinyMCE.settings['merge_styles_invalid_parents'],"gi"):null;if(tinyMCE.isMSIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm;}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(/td|tr|tbody|table/ig.test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm;}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','');}var ch=tinyMCE.getNodeTree(parentElm,new Array(),1);for(var z=0;z<ch.length;z++){if(ch[z]==parentElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','');}}}else{doc.execCommand("fontname",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=doc.createElement(wrapper);if(scmd=="setstyle")tinyMCE.setStyleAttrib(spanElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(spanElm,sname,svalue);if(scmd=="removeformat"){spanElm.style.cssText='';tinyMCE.setAttrib(spanElm,'class','');}if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true));}spanElm.setAttribute("mce_new","true");elm.parentNode.replaceChild(spanElm,elm);var ch=tinyMCE.getNodeTree(spanElm,new Array(),1);for(var z=0;z<ch.length;z++){if(ch[z]==spanElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','');}}}}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue;}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false);}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('<span>','gi').test(tmp.innerHTML)){for(var x=0;x<elm.childNodes.length;x++){if(elm.parentNode!=null)elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true),elm);}elm.parentNode.removeChild(elm);}}if(scmd=="removeformat")tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case "FontName":if(value==null){var s=this.getSel();if(tinyMCE.isGecko&&s.isCollapsed){var f=tinyMCE.getParentElement(this.getFocusElement(),"font");if(f!=null)this.selectNode(f,false);}this.getDoc().execCommand("RemoveFormat",false,null);if(f!=null&&tinyMCE.isGecko){var r=this.getRng().cloneRange();r.collapse(true);s.removeAllRanges();s.addRange(r);}}else this.getDoc().execCommand('FontName',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case "FontSize":this.getDoc().execCommand('FontSize',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case "forecolor":this.getDoc().execCommand('forecolor',false,value);break;case "HiliteColor":if(tinyMCE.isGecko){this.setUseCSS(true);this.getDoc().execCommand('hilitecolor',false,value);this.setUseCSS(false);}else this.getDoc().execCommand('BackColor',false,value);break;case "Cut":case "Copy":case "Paste":var cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isOpera&&cmdFailed)alert('Currently not supported by your browser, use keyboard shortcuts instead.');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.getLang('lang_clipboard_msg')))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return;}else tinyMCE.triggerNodeChange();break;case "mceSetContent":if(!value)value="";value=tinyMCE.storeAwayURLs(value);value=tinyMCE._customCleanup(this,"insert_to_editor",value);tinyMCE._setHTML(doc,value);tinyMCE.setInnerHTML(doc.body,tinyMCE._cleanupHTML(this,doc,tinyMCE.settings,doc.body));this.convertAllRelativeURLs();tinyMCE.handleVisualAid(doc.body,true,this.visualAid,this);tinyMCE._setEventsEnabled(doc.body,false);return true;case "mceLink":var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText=this.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return;}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");}action="update";}if(this.settings['insertlink_callback']){var returnVal=eval(this.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])tinyMCE.insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class']);}else{tinyMCE.openWindow(this.insertLinkTemplate,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"});}break;case "mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img;}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h);}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:"";}onmouseover=tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));onmouseout=tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");}if(onmouseover!="")onmouseover=eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, img, true);");if(onmouseout!="")onmouseout=eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, img, true);");action="update";}if(this.settings['insertimage_callback']){var returnVal=eval(this.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])tinyMCE.insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout']);}else tinyMCE.openWindow(this.insertImageTemplate,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});break;case "mceCleanup":tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,this.getBody(),this.visualAid));this.convertAllRelativeURLs();tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this.repaint();tinyMCE.triggerNodeChange();break;case "mceReplaceContent":this.getWin().focus();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText=this.getSel().toString();if(selectedText.length>0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value);}tinyMCE.triggerNodeChange();break;case "mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange();}}break;case "mceSetCSSClass":this.execCommand("SetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case "mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getDoc().body.scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getDoc().body.scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case "mceInsertContent":var insertHTMLFailed=false;this.getWin().focus();if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2);}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value);}}catch(ex){insertHTMLFailed=true;}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return;}}if(tinyMCE.isOpera&&insertHTMLFailed){this.getDoc().execCommand("insertimage",false,tinyMCE.uniqueURL);var ar=tinyMCE.getElementsByAttributeValue(this.getBody(),"img","src",tinyMCE.uniqueURL);ar[0].outerHTML=value;return;}if(!tinyMCE.isMSIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value);}else value=rng.createContextualFragment(value);}else{var el=document.createElement("div");el.innerHTML=value;value=el.firstChild.nodeValue;value=doc.createTextNode(value);}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true;}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true;}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node);}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng);}else rng.collapse(false);}else{var rng=doc.selection.createRange();var c=value.indexOf('<!--')!=-1;if(c)value=tinyMCE.uniqueTag+value;if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);if(c){var e=this.getDoc().getElementById('mceTMPElement');e.parentNode.removeChild(e);}}tinyMCE.triggerNodeChange();break;case "mceStartTyping":if(tinyMCE.settings['custom_undo_redo']&&this.typingUndoIndex==-1){this.typingUndoIndex=this.undoIndex;this.execCommand('mceAddUndoLevel');}break;case "mceEndTyping":if(tinyMCE.settings['custom_undo_redo']&&this.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.typingUndoIndex=-1;}break;case "mceBeginUndoLevel":this.undoRedo=false;break;case "mceEndUndoLevel":this.undoRedo=true;this.execCommand('mceAddUndoLevel');break;case "mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedo){if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;}var newHTML=tinyMCE.trim(this.getBody().innerHTML);if(newHTML!=this.undoLevels[this.undoIndex]){tinyMCE.executeCallback('onchange_callback','_onchange',0,this);var customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(var i=0;i<this.undoLevels.length-1;i++){this.undoLevels[i]=this.undoLevels[i+1];}this.undoLevels.length--;this.undoIndex--;}this.undoIndex++;this.undoLevels[this.undoIndex]=newHTML;this.undoLevels.length=this.undoIndex+1;tinyMCE.triggerNodeChange(false);}}break;case "Undo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");if(this.undoIndex>0){this.undoIndex--;tinyMCE.setInnerHTML(this.getBody(),this.undoLevels[this.undoIndex]);this.repaint();}tinyMCE.triggerNodeChange();}else this.getDoc().execCommand(command,user_interface,value);break;case "Redo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;tinyMCE.setInnerHTML(this.getBody(),this.undoLevels[this.undoIndex]);this.repaint();}tinyMCE.triggerNodeChange();}else this.getDoc().execCommand(command,user_interface,value);break;case "mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case "Indent":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();if(tinyMCE.isMSIE){var n=tinyMCE.getParentElement(this.getFocusElement(),"blockquote");do{if(n&&n.nodeName=="BLOCKQUOTE"){n.removeAttribute("dir");n.removeAttribute("style");}}while(n!=null&&(n=n.parentNode)!=null);}break;case "removeformat":var text=this.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return;}if(tinyMCE.isMSIE){try{var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null);}catch(e){}this.execCommand("SetStyleInfo",false,{command:"removeformat"});}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("SetStyleInfo",false,{command:"removeformat"});}if(text.length==0)this.execCommand("mceSetCSSClass",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(command,user_interface,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);else tinyMCE.triggerNodeChange();}if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceStartTyping"&&command!="mceEndTyping")tinyMCE.execCommand("mceAddUndoLevel");};TinyMCEControl.prototype.queryCommandValue=function(command){try{return this.getDoc().queryCommandValue(command);}catch(ex){return null;}};TinyMCEControl.prototype.queryCommandState=function(command){return this.getDoc().queryCommandState(command);};TinyMCEControl.prototype.onAdd=function(replace_element,form_element_name,target_document){var targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings['theme'];this.settings['themeurl']=tinyMCE.themeURL;if(!replace_element){alert("Error: Could not find the target element.");return false;}var templateFunction=tinyMCE._getThemeFunction('_getInsertLinkTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertLinkTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getInsertImageTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertImageTemplate=eval(templateFunction+'(this.settings);');var templateFunction=tinyMCE._getThemeFunction('_getEditorTemplate');if(eval("typeof("+templateFunction+")")=='undefined'){alert("Error: Could not find the template function: "+templateFunction);return false;}var editorTemplate=eval(templateFunction+'(this.settings, this.editorId);');var deltaWidth=editorTemplate['delta_width']?editorTemplate['delta_width']:0;var deltaHeight=editorTemplate['delta_height']?editorTemplate['delta_height']:0;var html='<span id="'+this.editorId+'_parent">'+editorTemplate['html'];var templateFunction=tinyMCE._getThemeFunction('_handleNodeChange',true);if(eval("typeof("+templateFunction+")")!='undefined')this.settings['handleNodeChangeCallback']=templateFunction;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.settings['old_width']=this.settings['width'];this.settings['old_height']=this.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;if(this.settings['width']==0)this.settings['width']=replace_element.style.width;if(this.settings['height']==0)this.settings['height']=replace_element.style.height;if(this.settings['width']==0)this.settings['width']=320;if(this.settings['height']==0)this.settings['height']=240;this.settings['area_width']=parseInt(this.settings['width']);this.settings['area_height']=parseInt(this.settings['height']);this.settings['area_width']+=deltaWidth;this.settings['area_height']+=deltaHeight;if((""+this.settings['width']).indexOf('%')!=-1)this.settings['area_width']="100%";if((""+this.settings['height']).indexOf('%')!=-1)this.settings['area_height']="100%";if((""+replace_element.style.width).indexOf('%')!=-1){this.settings['width']=replace_element.style.width;this.settings['area_width']="100%";}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings['height']=replace_element.style.height;this.settings['area_height']="100%";}html=tinyMCE.applyTemplate(html);this.settings['width']=this.settings['old_width'];this.settings['height']=this.settings['old_height'];this.visualAid=this.settings['visual'];this.formTargetElementId=form_element_name;if(replace_element.nodeName=="TEXTAREA"||replace_element.nodeName=="INPUT")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName.toLowerCase()!="textarea"){this.oldTargetElement=replace_element.cloneNode(true);if(tinyMCE.settings['debug'])html+='<textarea wrap="off" id="'+form_element_name+'" name="'+form_element_name+'" cols="100" rows="15"></textarea>';else html+='<input type="hidden" type="text" id="'+form_element_name+'" name="'+form_element_name+'" />';html+='</span>';if(!tinyMCE.isMSIE){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);replace_element.parentNode.replaceChild(fragment,replace_element);}else replace_element.outerHTML=html;}else{html+='</span>';this.oldTargetElement=replace_element;if(!tinyMCE.settings['debug'])this.oldTargetElement.style.display="none";if(!tinyMCE.isMSIE){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);if(tinyMCE.isGecko)tinyMCE.insertAfter(fragment,replace_element);else replace_element.parentNode.insertBefore(fragment,replace_element);}else replace_element.insertAdjacentHTML("beforeBegin",html);}var dynamicIFrame=false;var tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isMSIE){if(tElm&&tElm.nodeName.toLowerCase()=="span"){tElm=tinyMCE._createIFrame(tElm);dynamicIFrame=true;}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName.toLowerCase()=="span")tElm=tinyMCE._createIFrame(tElm);else tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);if(tinyMCE.isOpera){this.contentDocument=this.iframeElement.contentDocument;this.contentWindow=this.iframeElement.contentWindow;dynamicIFrame=true;}else{this.contentDocument=tElm.window.document;this.contentWindow=tElm.window;}this.getDoc().designMode="on";}var doc=this.contentDocument;if(dynamicIFrame){var html=tinyMCE.getParam('doctype')+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+tinyMCE.settings['base_href']+'" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';try{if(!this.isHidden())this.getDoc().designMode="on";doc.open();doc.write(html);doc.close();}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE)window.setTimeout("TinyMCE.prototype.addEventHandlers('"+this.editorId+"');",1);tinyMCE.setupContent(this.editorId,true);return true;};TinyMCEControl.prototype.getFocusElement=function(){if(tinyMCE.isMSIE&&!tinyMCE.isOpera){var doc=this.getDoc();var rng=doc.selection.createRange();var elm=rng.item?rng.item(0):rng.parentElement();}else{if(this.isHidden())return this.getBody();var sel=this.getSel();var rng=this.getRng();var elm=rng.commonAncestorContainer;if(!rng.collapsed){if(rng.startContainer==rng.endContainer){if(rng.startOffset-rng.endOffset<2){if(rng.startContainer.hasChildNodes())elm=rng.startContainer.childNodes[rng.startOffset];}}}elm=tinyMCE.getParentElement(elm);}return elm;};var tinyMCE=new TinyMCE();var tinyMCELang=new Array();
\ No newline at end of file
diff --git a/trunk/NP_TinyMCE2j/tinymce2j/tiny_mce_popup.js b/trunk/NP_TinyMCE2j/tinymce2j/tiny_mce_popup.js
new file mode 100644 (file)
index 0000000..f4808a4
--- /dev/null
@@ -0,0 +1,253 @@
+/**
+ * $RCSfile: tiny_mce_popup.js,v $
+ * $Revision: 1.1 $
+ * $Date: 2006-10-02 05:37:14 $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
+ */
+
+var tinyMCE = null, tinyMCELang = null;
+
+function TinyMCEPopup() {
+};
+
+TinyMCEPopup.prototype.init = function() {
+       var win = window.opener ? window.opener : window.dialogArguments;
+
+       if (!win) {
+               // Try parent
+               win = parent.parent;
+
+               // Try top
+               if (typeof(win.tinyMCE) == "undefined")
+                       win = top;
+       }
+
+       window.opener = win;
+       this.windowOpener = win;
+       this.onLoadEval = "";
+
+       // Setup parent references
+       tinyMCE = win.tinyMCE;
+       tinyMCELang = win.tinyMCELang;
+
+       if (!tinyMCE) {
+               alert("tinyMCE object reference not found from popup.");
+               return;
+       }
+
+       this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
+       this.storeSelection = (tinyMCE.isMSIE && !tinyMCE.isOpera) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);
+
+       if (this.isWindow)
+               window.focus();
+
+       // Store selection
+       if (this.storeSelection)
+               tinyMCE.selectedInstance.execCommand('mceStoreSelection');
+
+       // Setup dir
+       if (tinyMCELang['lang_dir'])
+               document.dir = tinyMCELang['lang_dir'];
+
+       // Setup title
+       var re = new RegExp('{|\\\$|}', 'g');
+       var title = document.title.replace(re, "");
+       if (typeof tinyMCELang[title] != "undefined") {
+               var divElm = document.createElement("div");
+               divElm.innerHTML = tinyMCELang[title];
+               document.title = divElm.innerHTML;
+
+               if (tinyMCE.setWindowTitle != null)
+                       tinyMCE.setWindowTitle(window, divElm.innerHTML);
+       }
+
+       // Output Popup CSS class
+       document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');
+
+       tinyMCE.addEvent(window, "load", this.onLoad);
+};
+
+TinyMCEPopup.prototype.onLoad = function() {
+       var body = document.body;
+
+       if (tinyMCE.getWindowArg('mce_replacevariables', true))
+               body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
+
+       var dir = tinyMCE.selectedInstance.settings['directionality'];
+       if (dir == "rtl") {
+               var elms = document.forms[0].elements;
+               for (var i=0; i<elms.length; i++) {
+                       if ((elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr")
+                               elms[i].dir = dir;
+               }
+       }
+
+       if (body.style.display == 'none')
+               body.style.display = 'block';
+
+       // Execute real onload (Opera fix)
+       if (tinyMCEPopup.onLoadEval != "") {
+               eval(tinyMCEPopup.onLoadEval);
+       }
+};
+
+TinyMCEPopup.prototype.executeOnLoad = function(str) {
+       if (tinyMCE.isOpera)
+               this.onLoadEval = str;
+       else
+               eval(str);
+};
+
+TinyMCEPopup.prototype.resizeToInnerSize = function() {
+       // Netscape 7.1 workaround
+       if (this.isWindow && tinyMCE.isNS71) {
+               window.resizeBy(0, 10);
+               return;
+       }
+
+       if (this.isWindow) {
+               var doc = document;
+               var body = doc.body;
+               var oldMargin, wrapper, iframe, nodes, dx, dy;
+
+               if (body.style.display == 'none')
+                       body.style.display = 'block';
+
+               // Remove margin
+               oldMargin = body.style.margin;
+               body.style.margin = '0px';
+
+               // Create wrapper
+               wrapper = doc.createElement("div");
+               wrapper.id = 'mcBodyWrapper';
+               wrapper.style.display = 'none';
+               wrapper.style.margin = '0px';
+
+               // Wrap body elements
+               nodes = doc.body.childNodes;
+               for (var i=nodes.length-1; i>=0; i--) {
+                       if (wrapper.hasChildNodes())
+                               wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
+                       else
+                               wrapper.appendChild(nodes[i].cloneNode(true));
+
+                       nodes[i].parentNode.removeChild(nodes[i]);
+               }
+
+               // Add wrapper
+               doc.body.appendChild(wrapper);
+
+               // Create iframe
+               iframe = document.createElement("iframe");
+               iframe.id = "mcWinIframe";
+               iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings['default_document'];
+               iframe.width = "100%";
+               iframe.height = "100%";
+               iframe.style.margin = '0px';
+
+               // Add iframe
+               doc.body.appendChild(iframe);
+
+               // Measure iframe
+               iframe = document.getElementById('mcWinIframe');
+               dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
+               dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;
+
+               // Resize window
+               // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
+               window.resizeBy(dx, dy);
+
+               // Hide iframe and show wrapper
+               body.style.margin = oldMargin;
+               iframe.style.display = 'none';
+               wrapper.style.display = 'block';
+       }
+};
+
+TinyMCEPopup.prototype.resizeToContent = function() {
+       var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
+       var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
+
+       if (isOpera)
+               return;
+
+       if (isMSIE) {
+               try { window.resizeTo(10, 10); } catch (e) {}
+
+               var elm = document.body;
+               var width = elm.offsetWidth;
+               var height = elm.offsetHeight;
+               var dx = (elm.scrollWidth - width) + 4;
+               var dy = elm.scrollHeight - height;
+
+               try { window.resizeBy(dx, dy); } catch (e) {}
+       } else {
+               window.scrollBy(1000, 1000);
+               if (window.scrollX > 0 || window.scrollY > 0) {
+                       window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
+                       window.sizeToContent();
+                       window.scrollTo(0, 0);
+                       var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
+                       var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
+                       window.moveTo(x, y);
+               }
+       }
+};
+
+TinyMCEPopup.prototype.getWindowArg = function(name, default_value) {
+       return tinyMCE.getWindowArg(name, default_value);
+};
+
+TinyMCEPopup.prototype.restoreSelection = function() {
+       if (this.storeSelection) {
+               var inst = tinyMCE.selectedInstance;
+
+               inst.getWin().focus();
+               inst.execCommand('mceRestoreSelection');
+       }
+};
+
+TinyMCEPopup.prototype.execCommand = function(command, user_interface, value) {
+       var inst = tinyMCE.selectedInstance;
+
+       this.restoreSelection();
+       inst.execCommand(command, user_interface, value);
+
+       // Store selection
+       if (this.storeSelection)
+               inst.execCommand('mceStoreSelection');
+};
+
+TinyMCEPopup.prototype.close = function() {
+       tinyMCE.closeWindow(window);
+};
+
+TinyMCEPopup.prototype.pickColor = function(e, element_id) {
+       tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
+               element_id : element_id,
+               document : document,
+               window : window,
+               store_selection : false
+       });
+};
+
+TinyMCEPopup.prototype.openBrowser = function(element_id, type, option) {
+       var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
+       var url = document.getElementById(element_id).value;
+
+       tinyMCE.setWindowArg("window", window);
+       tinyMCE.setWindowArg("document", document);
+
+       // Call to external callback
+       if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
+               alert("Callback function: " + cb + " could not be found.");
+       else
+               eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
+};
+
+// Setup global instance
+var tinyMCEPopup = new TinyMCEPopup();
+
+tinyMCEPopup.init();
diff --git a/trunk/NP_ToolbarButtons/NP_ToolbarButtons.php b/trunk/NP_ToolbarButtons/NP_ToolbarButtons.php
new file mode 100644 (file)
index 0000000..3dfd4b2
--- /dev/null
@@ -0,0 +1,239 @@
+<?php 
+class NP_ToolbarButtons extends NucleusPlugin { 
+       function getName() { return get_class($this); } 
+       function getAuthor()  { return 'Katsumi + nakahara21'; } 
+       function getVersion() { return '0.3'; } 
+       function getURL() { return 'http://nakahara21.com';} 
+       function getMinNucleusVersion() { return 250; } 
+       function getDescription() { return get_class($this).' plugin'; } 
+       function supportsFeature($what) { return (int)($what=='SqlTablePrefix'); } 
+       function getEventList() { return array('PrepareItemForEdit', 'PreAddItemForm', 
+               'AdminPrePageHead', 'AdminPrePageFoot', 
+               'AddItemFormExtras', 'EditItemFormExtras', 
+               'PreToolbarParse','PrePluginOptionsEdit'); } 
+       function install(){
+               $this->createOption("lbtns", "Codes (Before default toolbars)", "textarea",''."\n");
+               $this->createOption("rbtns", "Codes (After default toolbars)", "textarea",''."\n");
+               $this->createOption("addscripts", "Optional Javascripts Codes ", "textarea",''."\n");
+       }
+       function event_PrePluginOptionsEdit(&$data) {
+               global $CONF;
+//                     $aurl = $CONF['ActionURL'] . '?action=plugin&amp;name=ToolbarButtons&amp;type=redirect';
+//                     $extra = '<br /><a href="'.$aurl.'" onclick="if (event &amp;&amp; event.preventDefault) event.preventDefault(); return help(this.href);">Button Maker</a>';
+                       $maker = '<form style="margin:0;"><table><tr><td>¥Ü¥¿¥ó¤Î¼ïÎà</td><td><input type="radio" name="inc_mode" value="3" tabindex="120" checked="checked" id="btn_type_a" /><label for="btn_type_a">A: ÁªÂòÃæ¤ÎÁ°¸å¤Ë¥¿¥°Åù¤òÁÞÆþ¤¹¤ë</label> <br /><input type="radio" name="inc_mode" value="5"  id="btn_type_b" /><label for="btn_type_b">B: ¥«¡¼¥½¥ë°ÌÃ֤˥ƥ­¥¹¥ÈÅù¤òÁÞÆþ¤¹¤ë</label></td></tr><tr><td>Á°¤ËÁÞÆþ¤¹¤ë¥³¡¼¥É</td><td><input id="preadd" size="40" maxlength="160" value="" />(AB¶¦)</td></tr><tr><td nowrap>¸å¤í¤ËÁÞÆþ¤¹¤ë¥³¡¼¥É</td><td><input id="postadd" size="40" maxlength="160" value="" />(A¤Î¤ß)</td></tr><tr><td>¥Ä¡¼¥ë¥Ð¡¼¥Á¥Ã¥×</td><td><input id="inputtitle" size="40" maxlength="160" value="" /></td></tr><tr><td>¥Ü¥¿¥óɽ¼¨</td><td><input id="buttoncode" size="40" maxlength="160" value="" /></td></tr><tr><td colspan="2"><INPUT TYPE="button" VALUE="¥³¡¼¥É¤òÀ¸À®" onClick="inserButtons()"><span id="so" style="color:red;"></span></td></tr><tr><td colspan="2"><textarea cols="60" rows="12" id="inputcodes" ></textarea><br /><INPUT TYPE="button" VALUE="Before¤ËÄɲÃ" onClick="reflectButtons(0)"><INPUT TYPE="button" VALUE="After¤ËÄɲÃ" onClick="reflectButtons(1)"></form></table>';
+
+               foreach($data['options'] as $tmp){
+                       if($tmp['name'] == 'lbtns' || $tmp['name'] == 'rbtns'){
+/*
+                               $oid = $tmp['oid'];
+                               $data['options'][$oid]['extra'] = $extra;
+*/
+                               $name = $tmp['name'];
+                               $$tmp['name'] = 'plugoption['.$tmp['oid'].']['.$tmp['contextid'].']';
+                       }
+                       if($tmp['name'] == 'rbtns'){
+                               $oid = $tmp['oid'];
+                               $data['options'][$oid]['extra'] .= <<<EOD
+                       <script type="text/javascript">
+                       //<![CDATA[
+                       function inserButtons(){ 
+                               var tag="";
+
+                               var caution = document.getElementById("so");
+                               if(document.getElementById('buttoncode').value == ''){
+                                       caution.innerHTML = '¡Ø¥Ü¥¿¥óɽ¼¨¡Ù¤ÎÆþÎϤ¬¤¢¤ê¤Þ¤»¤ó!';
+                                       return;
+                               }
+                               
+                               caution.innerHTML = '';
+
+                               if(document.getElementById('btn_type_a').checked){
+                                       tag = tag + "\\t\\t\\t<span class=\"jsbutton\" \\n\\t\\t\\tonmouseover=\"BtnHighlight(this);\" \\n\\t\\t\\tonmouseout=\"BtnNormal(this);\" \\n\\t\\t\\tonclick=\"insertAroundCaret('";
+                                       tag = tag + document.getElementById('preadd').value;
+                                       tag = tag + "','";
+                                       tag = tag + document.getElementById('postadd').value;
+                               }
+
+                               if(document.getElementById('btn_type_b').checked){
+                                       tag = tag + "\\t\\t\\t<span class=\"jsbutton\" \\n\\t\\t\\tonmouseover=\"BtnHighlight(this);\" \\n\\t\\t\\tonmouseout=\"BtnNormal(this);\" \\n\\t\\t\\tonclick=\"insertAtCaret('";
+                                       tag = tag + document.getElementById('preadd').value;
+                               }
+                                       tag = tag + "')\" \\n\\t\\t\\ttitle=\"";
+                                       tag = tag + document.getElementById('inputtitle').value;
+                                       tag = tag + "\">\\n\\t\\t\\t";
+                                       tag = tag + document.getElementById('buttoncode').value;
+                                       tag = tag + "\\n\\t\\t\\t</span>\\n";
+                               document.getElementById('inputcodes').value += tag;             
+                       } 
+
+                       function reflectButtons(lr) {
+                               elName = ['$lbtns','$rbtns'];
+                               data = document.getElementById('inputcodes').value;             
+                               
+                               ElementsList = document.getElementsByName(elName[lr]);
+                               for (i = 0; i < ElementsList.length; i++) {
+                                       ElementsList[i].value += data;
+                               }
+                               document.getElementById('inputcodes').value = '';               
+                       }
+                       function helperinit() {
+                               var htitle = document.getElementsByTagName("h2");
+                               subhtitle=document.createElement("div");
+                               subhtitle.style.fontWeight="normal";
+                               subhtitle.innerHTML = '$maker';
+                               htitle[0].appendChild(subhtitle);
+                               htitle[0].style.styleFloat = "left";
+                               htitle[1].style.clear = "left";
+
+
+                               var tables = document.getElementsByTagName("table");
+                               for (i = 0; i < tables.length; i++) {
+                                       tables[i].style.width = "auto";
+                               }
+                       }
+
+                       window.onload = helperinit;
+                       
+                       //]]>
+                       </script>
+EOD;
+                       }
+               }
+       }
+/*
+       function doAction($type){
+               global $CONF;
+               switch ($type) {
+                       case 'redirect':
+                               $file = $this->getDirectory().'buttonmaker.html';
+                               ob_start();
+                               include($file);
+                               $contents = ob_get_contents();
+                               ob_end_clean();
+                               echo $contents;
+                               break;
+                       default:
+                               break;
+               }
+               exit;
+       }
+*/
+       function event_PrepareItemForEdit(&$data){ $this->before(); } 
+       function event_PreAddItemForm(&$data){ $this->before(); } 
+       var $usefoot; 
+       function event_AdminPrePageHead(&$data){ $this->usefoot=true; } 
+       function event_AdminPrePageFoot(&$data){ $this->after(); } 
+       function event_AddItemFormExtras(&$data){ if (!$this->usefoot) $this->after(); } 
+       function event_EditItemFormExtras(&$data){ if (!$this->usefoot) $this->after(); } 
+       var $ob_ok; 
+       function before() { $this->ob_ok=ob_start(); } 
+       function after() { 
+               global $manager; 
+               if (!$this->ob_ok) return; 
+               $buff=ob_get_contents(); 
+               ob_end_clean(); 
+               $lbutton=''; 
+               $rbutton=''; 
+               $script=''; 
+               $pattern='/<div([^>]*?)class="jsbuttonbar"([^>]*?)>/'; 
+               if (preg_match($pattern,$buff,$matches)){ 
+                       $manager->notify('PreToolbarParse',array('lbutton' => &$lbutton, 'rbutton' => &$rbutton, 'script' => &$script)); 
+                       $buff=str_replace($matches[0],$matches[0].$lbutton,$buff); 
+                       $pattern=array('/<\/div>([^<]*?)<textarea([^>]*?)id="inputbody"([^>]*?)>/', 
+                               '/<\/div>([^<]*?)<textarea([^>]*?)id="inputmore"([^>]*?)>/'); 
+                       $replace=array('</div><textarea$2id="inputbody"$3>', 
+                               '</div><textarea$2id="inputmore"$3>'); 
+                       $buff=preg_replace($pattern,$replace,$buff); 
+                       $pattern='/<\/div><textarea([^>]*?)id="inputbody"([^>]*?)>/'; 
+                       if (preg_match($pattern,$buff,$matches)){ 
+                               $buff=str_replace($matches[0],$rbutton.$matches[0],$buff); 
+                       } 
+                       $pattern='/<\/div><textarea([^>]*?)id="inputmore"([^>]*?)>/'; 
+                       if (preg_match($pattern,$buff,$matches)){ 
+                               $buff=str_replace($matches[0],$rbutton.$matches[0],$buff); 
+                       } 
+               } 
+               echo $buff.$script; 
+       } 
+       function event_PreToolbarParse(&$data) { 
+               global $CONF;
+               $lbutton=&$data['lbutton']; 
+               $rbutton=&$data['rbutton']; 
+               $script=&$data['script'];
+               
+               $setOptionURL = $CONF['AdminURL'] . 'index.php?action=pluginoptions&amp;plugid=' . $this->getID();
+
+               $lbutton.="<div style=\"padding-top:4px;padding-bottom:4px;margin-bottom:1px;\">\n";
+               $lbutton.= $this->getOption('lbtns');
+               $lbutton.= <<<EOD
+
+EOD;
+/*
+               $lbutton.= <<<EOD
+                       <span class="jsbutton" 
+                       onmouseover="BtnHighlight(this);" 
+                       onmouseout="BtnNormal(this);" 
+                       onclick="helloWorld()" >
+                       heii
+                       </span>
+
+EOD;
+*/
+               $lbutton.="</div>\n";
+
+//             $lbutton.="<hr style=\"height:1px;color:#ddd;background-color:#ddd\"/>\n";
+               $lbutton.="<div style=\"padding-top:4px;padding-bottom:4px;\">\n";
+
+               $rbutton.="</div>\n";
+//             $rbutton.="<hr style=\"height:1px;color:#ddd;background-color:#ddd;margin:0px;\"/>\n";
+
+               $rbutton.="<div style=\"padding-top:4px;padding-bottom:4px;margin-top:1px;\">\n";
+               $rbutton.= $this->getOption('rbtns');
+               $rbutton.=<<<EOD
+                       <span class="jsbutton" 
+                       onmouseover="BtnHighlight(this);" 
+                       onmouseout="BtnNormal(this);" 
+                       onclick="entitiesCaret()" 
+                       title="toEntities" >
+                       &amp;lt;
+                       </span>
+
+                       <a href="$setOptionURL">Edit Buttons</a>
+
+EOD;
+               $rbutton.="</div>\n";
+               
+               $script.= <<<EOD
+                       <script type="text/javascript">
+                       //<![CDATA[
+
+EOD;
+               $script.= $this->getOption('addscripts');
+               $script.= <<<EOD
+                       function helloWorld(){
+                               alert('Hello Left World!');
+                       }
+                       function helloWorld2(){
+                               alert('Hello Right World!')
+                       }
+                       function entitiesCaret () {
+                               var textEl = lastSelected;
+                               if (textEl && textEl.createTextRange && lastCaretPos) {
+                                       var caretPos = lastCaretPos;
+                                       caretPos.text = caretPos.text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');
+                               } else if (!document.all && document.getElementById) {
+                                       newText = mozSelectedText().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');
+                                       mozReplace(document.getElementById('input' + nonie_FormType), newText);
+                               }
+                               updAllPreviews();
+                       }
+
+EOD;
+               $script.= <<<EOD
+                       //]]>
+                       </script>
+
+EOD;
+       } 
+} 
+?>
\ No newline at end of file
diff --git a/trunk/NP_TreeMenu/NP_TreeMenu.php b/trunk/NP_TreeMenu/NP_TreeMenu.php
new file mode 100644 (file)
index 0000000..36a88b7
--- /dev/null
@@ -0,0 +1,178 @@
+<?php
+
+class NP_TreeMenu extends NucleusPlugin {
+
+       function getName()              { return 'JavaScript Tree Menu'; }
+       function getAuthor()    { return 'nakahara21'; }
+       function getURL()               { return 'http://nakahara21.com/'; }
+       function getVersion()   { return '0.5'; }
+       function getDescription() { return 'JavaScript DHTML navigation';       }
+
+       function supportsFeature($what) {
+               switch($what)
+               { case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0; }
+       }
+
+       function install() {
+       }
+       
+       function unInstall() {
+       }
+
+
+       function doSkinVar($skinType){
+               global $CONF, $manager;
+               $fileName = $CONF['ActionURL'].'?action=plugin&name=TreeMenu&type=f';
+?>
+<script language="JavaScript" src="<?php echo $this->getAdminURL(); ?>ua.js"></script>
+<script language="JavaScript" src="<?php echo $this->getAdminURL(); ?>ftiens4.js"></script>
+<script language="JavaScript" src="<?php echo $fileName; ?>"></script>
+
+<a style="display:none;" href="http://www.treemenu.net/" target=_blank>Menu</a>
+
+<span class=TreeviewSpanArea>
+<script>initializeDocument()</script>
+<a style="font-size:7pt;text-decoration:none;color:silver" href="http://www.treemenu.net/" target=_blank>* By treemenu.net</a>
+
+<noscript>
+A tree for site navigation will open here if you enable JavaScript in your browser.
+</noscript>
+</span>
+<?php
+
+
+
+       }
+
+       function doAction($type) {
+               if($type == 'f'){
+               global $manager, $CONF;
+               $aurl = $this->getAdminURL();
+
+echo <<<EOD
+
+// You can find instructions for this file at http://www.treeview.net
+
+//Environment variables are usually set at the top of this file.
+USETEXTLINKS = 1
+STARTALLOPEN = 0
+USEFRAMES = 0
+USEICONS = 1
+WRAPTEXT = 1
+PRESERVESTATE = 1
+
+ICONPATH = '{$aurl}icons/'
+HIGHLIGHT = 1
+HIGHLIGHT_COLOR = ''
+HIGHLIGHT_BG    = 'silver'
+BUILDALL = 0
+GLOBALTARGET = "S" // variable only applicable for addChildren uses
+
+foldersTree = gFld("Home", "{$CONF['IndexURL']}")
+
+EOD;
+
+echo <<<EOD
+
+// You can find instructions for this file at http://www.treeview.net
+
+//Environment variables are usually set at the top of this file.
+USETEXTLINKS = 1
+STARTALLOPEN = 0
+USEFRAMES = 0
+USEICONS = 1
+WRAPTEXT = 1
+PRESERVESTATE = 1
+ICONPATH = '{$aurl}icons/'
+
+foldersTree = gFld("Home", "{$CONF['IndexURL']}")
+
+EOD;
+
+               $query = 'SELECT bnumber as blogid, bname as blogname, burl as blogurl, bshortname, bdesc as blogdesc';
+               $query .= ' FROM '.sql_table('blog').' b';
+               $query .= ' ORDER BY bnumber';
+
+               $res = sql_query($query);
+               $bn=1;
+               while ($o = mysql_fetch_object($res)) {
+                       $this->bid = $o->blogid;
+                       $burl = createBlogidLink($o->blogid);
+                       echo 'blog'.$bn.' = insFld(foldersTree, gFld("'.$o->blogname.'", "'.$burl.'"))'."\n";
+                       $cquery = 'SELECT c.catid as catid, c.cname as catname, c.cdesc as catdesc'
+                               .' FROM '.sql_table('category').' as c'
+                               .' WHERE c.cblog='.$o->blogid
+                               .' ORDER BY c.catid';
+                       $cres = sql_query($cquery);
+                       $cn = 1;
+                       while ($co = mysql_fetch_object($cres)) {
+                               $curl = createBlogidLink($this->bid, array('catid'=>$co->catid));
+                               echo 'cat'.$cn.' = insFld(blog'.$bn.', gFld("'.$co->catname.'", "'.$curl.'"))'."\n";
+                               if ($manager->pluginInstalled('NP_MultipleCategories')) {
+                               $sres = sql_query("SELECT scatid as subcatid, sname as subname, sdesc as subdesc FROM ".sql_table('plug_multiple_categories_sub')." WHERE catid=".$co->catid." AND parentid=0");
+                               if (mysql_num_rows($sres) > 0) {
+                                       $sn = 1;
+                                       while ($so =  mysql_fetch_object($sres)) {
+                                               $surl = createBlogidLink($this->bid, array('catid'=>$co->catid, 'subcatid'=>$so->subcatid));
+                                               $nodeName = 'scat'.$sn;
+                                               echo $nodeName.' = insFld(cat'.$cn.', gFld("'.$so->subname.'", "'.$surl.'"))'."\n";
+                                               $this->did = 100;
+                                               echo $this->scanChild($nodeName, $so->subcatid, $co->catid);
+                                               $sn++;
+                                       }
+                               }
+                               }
+                       $cn++;
+                       }
+               $bn++;
+               }
+
+
+
+/*
+echo <<<EOD
+
+  aux1 = insFld(foldersTree, gFld("Expand for example with pics and flags", "javascript:undefined"))
+    aux2 = insFld(aux1, gFld("United States", "demoFrameless.html?pic=%22beenthere_unitedstates%2Egif%22"))
+                       insDoc(aux2, gLnk("S", "Boston", "demoFrameless.html?pic=%22beenthere_boston%2Ejpg%22"))
+                       insDoc(aux2, gLnk("S", "Tiny pic of New York City", "demoFrameless.html?pic=%22beenthere_newyork%2Ejpg%22"))
+                       insDoc(aux2, gLnk("S", "Washington", "demoFrameless.html?pic=%22beenthere_washington%2Ejpg%22"))
+    aux2 = insFld(aux1, gFld("php", "http://nakahara21.com/000/index.php?catid=2"))
+      insDoc(aux2, gLnk("S", "London", "demoFrameless.html?pic=%22beenthere_london%2Ejpg%22"))
+      insDoc(aux2, gLnk("S", "Lisbon", "demoFrameless.html?pic=%22beenthere_lisbon%2Ejpg%22"))
+  aux1 = insFld(foldersTree, gFld("Types of node", "javascript:undefined"))
+    aux2 = insFld(aux1, gFld("Expandable with link", "demoFrameless.html?pic=%22beenthere_europe%2Egif%22"))
+      insDoc(aux2, gLnk("S", "London", "demoFrameless.html?pic=%22beenthere_london%2Ejpg%22"))
+    aux2 = insFld(aux1, gFld("Expandable without link", "javascript:undefined"))
+                       insDoc(aux2, gLnk("S", "NYC", "demoFrameless.html?pic=%22beenthere_newyork%2Ejpg%22"))
+    insDoc(aux1, gLnk("B", "Opens in new window", "http://www.treeview.net/treemenu/demopics/beenthere_pisa.jpg"))
+
+
+EOD;
+*/
+               }else{
+                       return;
+               }
+       }
+
+       function scanChild($nodeName, $sid=0, $catid){
+                               $sres = sql_query("SELECT scatid as subcatid, sname as subname, sdesc as subdesc FROM ".sql_table('plug_multiple_categories_sub')." WHERE parentid=".$sid);
+                               if (mysql_num_rows($sres) > 0) {
+                                       $ssn = 0;
+                                       while ($so =  mysql_fetch_object($sres)) {
+//                                             $surl = createCategoryLink($catid, array('subcatid'=>$so->subcatid));
+                                               $surl = createBlogidLink($this->bid, array('catid'=>$catid, 'subcatid'=>$so->subcatid));
+                                               $this->did++;
+                                               $snode = 'sscat'.$this->did;
+                                               $out .= $snode.' = insFld('.$nodeName.', gFld("'.$so->subname.'", "'.$surl.'"))'."\n";
+                                               $out .= $this->scanChild($snode, $so->subcatid, $catid);
+                                       }
+                               }
+               return $out;
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_TreeMenu/treemenu/demoFramelessNodes.js b/trunk/NP_TreeMenu/treemenu/demoFramelessNodes.js
new file mode 100644 (file)
index 0000000..867374e
--- /dev/null
@@ -0,0 +1,28 @@
+// You can find instructions for this file at http://www.treeview.net
+
+//Environment variables are usually set at the top of this file.
+USETEXTLINKS = 1
+STARTALLOPEN = 0
+USEFRAMES = 0
+USEICONS = 1
+WRAPTEXT = 1
+PRESERVESTATE = 1
+
+
+foldersTree = gFld("<b>¥á¥Ë¥å¡¼</b>", "demoFrameless.html")
+  aux1 = insFld(foldersTree, gFld("Expand for example with pics and flags", "javascript:undefined"))
+    aux2 = insFld(aux1, gFld("United States", "demoFrameless.html?pic=%22beenthere_unitedstates%2Egif%22"))
+                       insDoc(aux2, gLnk("S", "Boston", "demoFrameless.html?pic=%22beenthere_boston%2Ejpg%22"))
+                       insDoc(aux2, gLnk("S", "Tiny pic of New York City", "demoFrameless.html?pic=%22beenthere_newyork%2Ejpg%22"))
+                       insDoc(aux2, gLnk("S", "Washington", "demoFrameless.html?pic=%22beenthere_washington%2Ejpg%22"))
+    aux2 = insFld(aux1, gFld("php", "http://nakahara21.com/000/index.php?catid=2"))
+      insDoc(aux2, gLnk("S", "London", "demoFrameless.html?pic=%22beenthere_london%2Ejpg%22"))
+      insDoc(aux2, gLnk("S", "Lisbon", "demoFrameless.html?pic=%22beenthere_lisbon%2Ejpg%22"))
+  aux1 = insFld(foldersTree, gFld("Types of node", "javascript:undefined"))
+    aux2 = insFld(aux1, gFld("Expandable with link", "demoFrameless.html?pic=%22beenthere_europe%2Egif%22"))
+      insDoc(aux2, gLnk("S", "London", "demoFrameless.html?pic=%22beenthere_london%2Ejpg%22"))
+    aux2 = insFld(aux1, gFld("Expandable without link", "javascript:undefined"))
+                       insDoc(aux2, gLnk("S", "NYC", "demoFrameless.html?pic=%22beenthere_newyork%2Ejpg%22"))
+    insDoc(aux1, gLnk("B", "Opens in new window", "http://www.treeview.net/treemenu/demopics/beenthere_pisa.jpg"))
+
\ No newline at end of file
diff --git a/trunk/NP_TreeMenu/treemenu/ftiens4.js b/trunk/NP_TreeMenu/treemenu/ftiens4.js
new file mode 100644 (file)
index 0000000..7d82d04
--- /dev/null
@@ -0,0 +1,1173 @@
+//**************************************************************** 
+// Keep this copyright notice: 
+// This copy of the script is the property of the owner of the 
+// particular web site you were visiting.
+// Do not download the script's files from there.
+// For a free download and full instructions go to: 
+// http://www.treeview.net
+//**************************************************************** 
+
+// Log of changes: 
+//
+//      08 Jun 04 - Very small change to one error message
+//      21 Mar 04 - Support for folder.addChildren allows for much bigger trees
+//      12 May 03 - Support for Safari Beta 3
+//      01 Mar 03 - VERSION 4.3 - Support for checkboxes
+//      21 Feb 03 - Added support for Opera 7
+//      22 Sep 02 - Added maySelect member for node-by-node control
+//                  of selection and highlight
+//      21 Sep 02 - Cookie values are now separated by cookieCutter
+//      12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and 
+//                  can preserve state through external (DB) IDs
+//      29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac
+//      25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless
+//      09 Aug 02 - Fix repeated folder on Mozilla 1.x
+//      31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees 
+//      with hundreds or thousands of nodes; changes to the control
+//      flags of the gLnk function
+//      18 Jul 02 - Changes in pre-load images function
+//      13 Jun 02 - Add ICONPATH var to allow for gif subdir
+//      20 Apr 02 - Improve support for frame-less layout
+//      07 Apr 02 - Minor changes to support server-side dynamic feeding
+//                  (example: FavoritesManagerASP)
+
+// Definition of class Folder 
+// ***************************************************************** 
+function Folder(folderDescription, hreference) //constructor 
+{ 
+  //constant data 
+  this.desc = folderDescription; 
+  this.hreference = hreference;
+  this.id = -1;
+  this.navObj = 0;
+  this.iconImg = 0; 
+  this.nodeImg = 0;
+  this.isLastNode = 0;
+  this.iconSrc = ICONPATH + "ftv2folderopen.gif";
+  this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif";
+  this.children = new Array;
+  this.nChildren = 0;
+  this.level = 0;
+  this.leftSideCoded = "";
+  this.isLastNode=false;
+  this.parentObj = null;
+  this.maySelect=true;
+  this.prependHTML = ""
+  //dynamic data 
+  this.isOpen = false
+  this.isLastOpenedFolder = false
+  this.isRendered = 0
+  //methods 
+  this.initialize = initializeFolder 
+  this.setState = setStateFolder 
+  this.addChild = addChild 
+  this.addChildren = addChildren
+  this.createIndex = createEntryIndex 
+  this.escondeBlock = escondeBlock
+  this.esconde = escondeFolder 
+  this.folderMstr = folderMstr 
+  this.renderOb = drawFolder 
+  this.totalHeight = totalHeight 
+  this.subEntries = folderSubEntries 
+  this.linkHTML = linkFolderHTML
+  this.blockStartHTML = blockStartHTML
+  this.blockEndHTML = blockEndHTML
+  this.nodeImageSrc = nodeImageSrc
+  this.iconImageSrc = iconImageSrc
+  this.getID = getID
+  this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
+} 
+function initializeFolder(level, lastNode, leftSide) 
+{ 
+  var j=0 
+  var i=0       
+  nc = this.nChildren 
+   
+  this.createIndex() 
+  this.level = level
+  this.leftSideCoded = leftSide
+
+  if (browserVersion == 0 || STARTALLOPEN==1)
+    this.isOpen=true;
+
+  if (level>0)
+    if (lastNode) //the last child in the children array 
+               leftSide = leftSide + "0"
+       else
+               leftSide = leftSide + "1"
+
+  this.isLastNode = lastNode
+  if (nc > 0) 
+  { 
+    level = level + 1 
+    for (i=0 ; i < this.nChildren; i++)  
+    {
+      if (typeof this.children[i].initialize == 'undefined') //document node was specified using the addChildren function
+      {
+        if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string')
+        {
+          this.children[i] = ["item incorrectly defined", ""];
+        }
+
+        //Basic initialization of the Item object
+        //These members or methods are needed even before the Item is rendered
+        this.children[i].initialize=initializeItem;
+        this.children[i].createIndex=createEntryIndex;
+        if (typeof this.children[i].maySelect == 'undefined')
+          this.children[i].maySelect=true
+        this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders
+      }
+      if (i == this.nChildren-1) 
+        this.children[i].initialize(level, 1, leftSide)
+      else 
+        this.children[i].initialize(level, 0, leftSide)
+    } 
+  } 
+} 
+function drawFolder(insertAtObj) 
+{ 
+  var nodeName = ""
+  var auxEv = ""
+  var docW = ""
+  var i=0
+
+  finalizeCreationOfChildDocs(this)
+
+  var leftSide = leftSideHTML(this.leftSideCoded)
+
+  if (browserVersion > 0) 
+    auxEv = "<a href='javascript:clickOnNode(\""+this.getID()+"\")'>" 
+  else 
+    auxEv = "<a>" 
+
+  nodeName = this.nodeImageSrc()
+  if (this.level>0) 
+    if (this.isLastNode) //the last child in the children array 
+           leftSide = leftSide + "<td valign=top>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=19 height=16 border=0></a></td>"
+    else 
+      leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=19 height=16 border=0></a></td>"
+
+  this.isRendered = 1
+
+  if (browserVersion == 2) { 
+    if (!doc.yPos) 
+      doc.yPos=20 
+  } 
+
+  docW = this.blockStartHTML("folder");
+
+  docW = docW + "<tr>" + leftSide + "<td valign=top>";
+  if (USEICONS)
+  {
+    docW = docW + this.linkHTML(false) 
+    docW = docW + "<img id='folderIcon" + this.id + "' name='folderIcon" + this.id + "' src='" + this.iconImageSrc() + "' border=0></a>"
+  }
+  else
+  {
+         if (this.prependHTML == "")
+        docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=2>"
+  }
+  if (WRAPTEXT)
+         docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
+  else
+         docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
+  if (USETEXTLINKS) 
+  { 
+    docW = docW + this.linkHTML(true) 
+    docW = docW + this.desc + "</a>"
+  } 
+  else 
+    docW = docW + this.desc
+  docW = docW + "</td>"
+
+  docW = docW + this.blockEndHTML()
+
+  if (insertAtObj == null)
+  {
+         if (supportsDeferral) {
+                 doc.write("<div id=domRoot></div>") //transition between regular flow HTML, and node-insert DOM DHTML
+                 insertAtObj = getElById("domRoot")
+                 insertAtObj.insertAdjacentHTML("beforeEnd", docW)
+         }
+         else
+                 doc.write(docW)
+  }
+  else
+  {
+      insertAtObj.insertAdjacentHTML("afterEnd", docW)
+  }
+  if (browserVersion == 2) 
+  { 
+    this.navObj = doc.layers["folder"+this.id] 
+    if (USEICONS)
+      this.iconImg = this.navObj.document.images["folderIcon"+this.id] 
+    this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] 
+    doc.yPos=doc.yPos+this.navObj.clip.height 
+  } 
+  else if (browserVersion != 0)
+  { 
+    this.navObj = getElById("folder"+this.id)
+    if (USEICONS)
+      this.iconImg = getElById("folderIcon"+this.id) 
+    this.nodeImg = getElById("nodeIcon"+this.id)
+  } 
+} 
+function setStateFolder(isOpen) 
+{ 
+  var subEntries 
+  var totalHeight 
+  var fIt = 0 
+  var i=0 
+  var currentOpen
+  if (isOpen == this.isOpen) 
+    return 
+  if (browserVersion == 2)  
+  { 
+    totalHeight = 0 
+    for (i=0; i < this.nChildren; i++) 
+      totalHeight = totalHeight + this.children[i].navObj.clip.height 
+      subEntries = this.subEntries() 
+    if (this.isOpen) 
+      totalHeight = 0 - totalHeight 
+    for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) 
+      indexOfEntries[fIt].navObj.moveBy(0, totalHeight) 
+  }  
+  this.isOpen = isOpen;
+
+  if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing
+  {
+     currentOpen = GetCookie("clickedFolder")
+     if (currentOpen != null) {
+         currentOpen = currentOpen.replace(this.getID()+cookieCutter, "")
+         SetCookie("clickedFolder", currentOpen)
+     }
+  }
+       
+  if (!this.isOpen && this.isLastOpenedfolder)
+  {
+               lastOpenedFolder = null;
+               this.isLastOpenedfolder = false;
+  }
+  propagateChangesInState(this) 
+} 
+function propagateChangesInState(folder) 
+{   
+  var i=0 
+
+  //Change icon
+  if (folder.nChildren > 0 && folder.level>0)  //otherwise the one given at render stays
+    folder.nodeImg.src = folder.nodeImageSrc()
+
+  //Change node
+  if (USEICONS)
+    folder.iconImg.src = folder.iconImageSrc()
+
+  //Propagate changes
+  for (i=folder.nChildren-1; i>=0; i--) {
+    if (folder.isOpen) 
+      folder.children[i].folderMstr(folder.navObj)
+    else 
+         folder.children[i].esconde() 
+  }
+} 
+function escondeFolder() 
+{ 
+  this.escondeBlock()
+   
+  this.setState(0) 
+} 
+function linkFolderHTML(isTextLink) 
+{ 
+  var docW = "";
+
+  if (this.hreference) 
+  { 
+       if (USEFRAMES)
+         docW = docW + "<a href='" + this.hreference + "' TARGET=\"basefrm\" "
+       else
+         docW = docW + "<a href='" + this.hreference + "' TARGET=_top "
+        
+    if (isTextLink) {
+        docW += "id=\"itemTextLink"+this.id+"\" ";
+    }
+
+    if (browserVersion > 0) 
+      docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'"
+
+    docW = docW + ">"
+  } 
+  else 
+    docW = docW + "<a>" 
+
+  return docW;
+} 
+function addChild(childNode) 
+{ 
+  this.children[this.nChildren] = childNode 
+  childNode.parentObj = this
+  this.nChildren++ 
+  return childNode 
+} 
+
+//The list can contain either a Folder object or a sub list with the arguments for Item 
+function addChildren(listOfChildren) 
+{ 
+  this.children = listOfChildren 
+  this.nChildren = listOfChildren.length
+  for (i=0; i<this.nChildren; i++)
+    this.children[i].parentObj = this
+} 
+
+function folderSubEntries() 
+{ 
+  var i = 0 
+  var se = this.nChildren 
+  for (i=0; i < this.nChildren; i++){ 
+    if (this.children[i].children) //is a folder 
+      se = se + this.children[i].subEntries() 
+  } 
+  return se 
+} 
+
+function nodeImageSrc() {
+  var srcStr = "";
+
+  if (this.isLastNode) //the last child in the children array 
+  { 
+    if (this.nChildren == 0)
+      srcStr = ICONPATH + "ftv2lastnode.gif"
+    else
+      if (this.isOpen)
+        srcStr = ICONPATH + "ftv2mlastnode.gif"  
+      else
+        srcStr = ICONPATH + "ftv2plastnode.gif"  
+  } 
+  else 
+  { 
+    if (this.nChildren == 0)
+      srcStr = ICONPATH + "ftv2node.gif"
+    else
+      if (this.isOpen)
+        srcStr = ICONPATH + "ftv2mnode.gif"
+      else
+        srcStr = ICONPATH + "ftv2pnode.gif"
+  }   
+  return srcStr;
+}
+
+function iconImageSrc() {
+  if (this.isOpen)
+    return(this.iconSrc)
+  else
+    return(this.iconSrcClosed)
+} 
+// Definition of class Item (a document or link inside a Folder) 
+// ************************************************************* 
+function Item(itemDescription) // Constructor 
+{ 
+  // constant data 
+  this.desc = itemDescription 
+
+  this.level = 0
+  this.isLastNode = false
+  this.leftSideCoded = ""
+  this.parentObj = null
+
+  this.maySelect=true
+
+  this.initialize = initializeItem;
+  this.createIndex = createEntryIndex;
+  this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders;
+
+  finalizeCreationOfItem(this)
+} 
+
+//Assignments that can be delayed when the item is created with folder.addChildren
+//The assignments that cannot be delayed are done in addChildren and in initializeFolder
+//Additionaly, some assignments are also done in finalizeCreationOfChildDocs itself
+function finalizeCreationOfItem(itemArray)
+{
+  itemArray.navObj = 0 //initialized in render() 
+  itemArray.iconImg = 0 //initialized in render() 
+  itemArray.iconSrc = ICONPATH + "ftv2doc.gif" 
+  itemArray.isRendered = 0
+  itemArray.nChildren = 0
+  itemArray.prependHTML = ""
+  // methods 
+  itemArray.escondeBlock = escondeBlock
+  itemArray.esconde = escondeBlock
+  itemArray.folderMstr = folderMstr 
+  itemArray.renderOb = drawItem 
+  itemArray.totalHeight = totalHeight 
+  itemArray.blockStartHTML = blockStartHTML
+  itemArray.blockEndHTML = blockEndHTML
+  itemArray.getID = getID
+}
+
+function initializeItem(level, lastNode, leftSide) 
+{  
+  this.createIndex() 
+  this.level = level
+  this.leftSideCoded = leftSide
+  this.isLastNode = lastNode
+} 
+function drawItem(insertAtObj) 
+{ 
+  var leftSide = leftSideHTML(this.leftSideCoded)
+  var docW = ""
+
+  var fullLink = "href=\""+this.link+"\" target=\""+this.target+"\" onClick=\"clickOnLink('"+this.getID()+"\', '"+this.link+"','"+this.target+"');return false;\"";
+  this.isRendered = 1
+
+  if (this.level>0) 
+    if (this.isLastNode) //the last 'brother' in the children array 
+    { 
+      leftSide = leftSide + "<td valign=top><img src='" + ICONPATH + "ftv2lastnode.gif' width=19 height=16></td>"
+    } 
+    else 
+    { 
+      leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2node.gif' width=19 height=16></td>"
+    } 
+
+  docW = docW + this.blockStartHTML("item")
+
+  docW = docW + "<tr>" + leftSide + "<td valign=top>"
+  if (USEICONS)
+      docW = docW + "<a " + fullLink  + " id=\"itemIconLink"+this.id+"\">" + "<img id='itemIcon"+this.id+"' " + "src='"+this.iconSrc+"' border=0>" + "</a>"
+  else
+         if (this.prependHTML == "")
+        docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=3>"
+
+  if (WRAPTEXT)
+    docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>"
+  else
+    docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>"
+
+  if (USETEXTLINKS) 
+    docW = docW + "<a " + fullLink + " id=\"itemTextLink"+this.id+"\">" + this.desc + "</a>"
+  else 
+    docW = docW + this.desc
+
+  docW = docW + "</td>"
+
+  docW = docW + this.blockEndHTML()
+  if (insertAtObj == null)
+  {
+         doc.write(docW)
+  }
+  else
+  {
+      insertAtObj.insertAdjacentHTML("afterEnd", docW)
+  }
+
+  if (browserVersion == 2) { 
+    this.navObj = doc.layers["item"+this.id] 
+    if (USEICONS)
+      this.iconImg = this.navObj.document.images["itemIcon"+this.id] 
+    doc.yPos=doc.yPos+this.navObj.clip.height 
+  } else if (browserVersion != 0) { 
+    this.navObj = getElById("item"+this.id)
+    if (USEICONS)
+      this.iconImg = getElById("itemIcon"+this.id)
+  } 
+} 
+// Methods common to both objects (pseudo-inheritance) 
+// ******************************************************** 
+function forceOpeningOfAncestorFolders() {
+  if (this.parentObj == null || this.parentObj.isOpen)
+    return
+  else {
+    this.parentObj.forceOpeningOfAncestorFolders()
+    clickOnNodeObj(this.parentObj)
+  }
+}
+
+function escondeBlock() 
+{ 
+  if (browserVersion == 1 || browserVersion == 3) { 
+    if (this.navObj.style.display == "none") 
+      return 
+    this.navObj.style.display = "none" 
+  } else { 
+    if (this.navObj.visibility == "hidden") 
+      return 
+    this.navObj.visibility = "hidden" 
+  }     
+} 
+function folderMstr(domObj) 
+{ 
+  if (browserVersion == 1 || browserVersion == 3) { 
+    if (t==-1)
+      return
+    var str = new String(doc.links[t])
+    if (str.slice(14,16) != "em")
+      return
+  }
+
+  if (!this.isRendered)
+     this.renderOb(domObj)
+  else
+    if (browserVersion == 1 || browserVersion == 3) 
+      this.navObj.style.display = "block" 
+    else 
+      this.navObj.visibility = "show" 
+} 
+
+function blockStartHTML(idprefix) {
+  var idParam = "id='" + idprefix + this.id + "'"
+  var docW = ""
+
+  if (browserVersion == 2) 
+    docW = "<layer "+ idParam + " top=" + doc.yPos + " visibility=show>"
+  else if (browserVersion != 0)
+    docW = "<div " + idParam + " style='display:block; position:block;'>"
+     
+  docW = docW + "<table border=0 cellspacing=0 cellpadding=0 width=100% >"
+
+  return docW
+}
+
+function blockEndHTML() {
+  var docW = ""
+
+  docW = "</table>"
+   
+  if (browserVersion == 2) 
+    docW = docW + "</layer>"
+  else if (browserVersion != 0)
+    docW = docW + "</div>"
+
+  return docW
+}
+function createEntryIndex() 
+{ 
+  this.id = nEntries 
+  indexOfEntries[nEntries] = this 
+  nEntries++ 
+} 
+// total height of subEntries open 
+function totalHeight() //used with browserVersion == 2 
+{ 
+  var h = this.navObj.clip.height 
+  var i = 0 
+   
+  if (this.isOpen) //is a folder and _is_ open 
+    for (i=0 ; i < this.nChildren; i++)  
+      h = h + this.children[i].totalHeight() 
+  return h 
+} 
+
+
+function leftSideHTML(leftSideCoded) {
+       var i;
+       var retStr = "";
+
+       for (i=0; i<leftSideCoded.length; i++)
+       {
+               if (leftSideCoded.charAt(i) == "1")
+               {
+                       retStr = retStr + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2vertline.gif' width=19 height=16></td>"
+               }
+               if (leftSideCoded.charAt(i) == "0")
+               {
+                       retStr = retStr + "<td valign=top><img src='" + ICONPATH + "ftv2blank.gif' width=19 height=16></td>"
+               }
+       }
+       return retStr
+}
+
+function getID()
+{
+  //define a .xID in all nodes (folders and items) if you want to PERVESTATE that
+  //work when the tree changes. The value eXternal value must be unique for each
+  //node and must node change when other nodes are added or removed
+  //The value may be numeric or string, but cannot have the same char used in cookieCutter
+  if (typeof this.xID != "undefined") 
+    return this.xID
+  else
+    return this.id
+}
+
+// Events 
+// ********************************************************* 
+function clickOnFolder(folderId) 
+{ 
+  var clicked = findObj(folderId)
+
+  if (typeof clicked=='undefined' || clicked==null)
+  {
+    alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID values, it must set them for ALL nodes, including the foldersTree root.")
+    return;
+  }
+
+  if (!clicked.isOpen) {
+    clickOnNodeObj(clicked) 
+  }
+
+  if (lastOpenedFolder != null && lastOpenedFolder != folderId)
+    clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null
+
+  if (clicked.nChildren==0) {
+    lastOpenedFolder = folderId;
+    clicked.isLastOpenedfolder = true
+  }
+
+  if (isLinked(clicked.hreference)) {
+      highlightObjLink(clicked);
+  }
+} 
+function clickOnNode(folderId) 
+{ 
+  fOb = findObj(folderId);
+  if (typeof fOb=='undefined' || fOb==null)
+  {
+    alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID, it must set foldersTree.xID as well.")
+    return;
+  }
+
+  clickOnNodeObj(fOb);
+}
+
+function clickOnNodeObj(folderObj) 
+{ 
+  var state = 0 
+  var currentOpen
+  state = folderObj.isOpen 
+  folderObj.setState(!state) //open<->close  
+
+  if (folderObj.id!=foldersTree.id && PRESERVESTATE)
+  {
+    currentOpen = GetCookie("clickedFolder")
+    if (currentOpen == null)
+      currentOpen = ""
+
+    if (!folderObj.isOpen) //closing
+    {
+      currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "")
+      SetCookie("clickedFolder", currentOpen)
+    }
+    else
+      SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter)
+  }
+}
+
+function clickOnLink(clickedId, target, windowName) {
+    highlightObjLink(findObj(clickedId));
+    if (isLinked(target)) {
+        window.open(target,windowName);
+    }
+}
+
+function ld  ()
+{
+       return document.links.length-1
+}
+
+// Auxiliary Functions 
+// *******************
+
+function finalizeCreationOfChildDocs(folderObj) {
+  for(i=0; i < folderObj.nChildren; i++)  {
+    child = folderObj.children[i]
+    if (typeof child[0] != 'undefined')
+    {
+      // Amazingly, arrays can have members, so   a = ["a", "b"]; a.desc="asdas"   works
+      // If a doc was inserted as an array, we can transform it into an itemObj by adding 
+      // the missing members and functions
+      child.desc = child[0] 
+      setItemLink(child, GLOBALTARGET, child[1])   
+      finalizeCreationOfItem(child)
+    }
+  }
+}
+
+function findObj(id)
+{
+  var i=0;
+  var nodeObj;
+
+  if (typeof foldersTree.xID != "undefined") {
+    nodeObj = indexOfEntries[i];
+    for(i=0;i<nEntries&&indexOfEntries[i].xID!=id;i++) //may need optimization
+      ;
+    id = i
+  }
+  if (id >= nEntries)
+    return null; //example: node removed in DB
+  else
+    return indexOfEntries[id];
+}
+
+function isLinked(hrefText) {
+    var result = true;
+    result = (result && hrefText !=null);
+    result = (result && hrefText != '');
+    result = (result && hrefText.indexOf('undefined') < 0);
+    result = (result && hrefText.indexOf('parent.op') < 0);
+    return result;
+}
+
+// Do highlighting by changing background and foreg. colors of folder or doc text
+function highlightObjLink(nodeObj) {
+  if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB 
+    return;
+  }
+
+  if (browserVersion == 1 || browserVersion == 3) {
+    var clickedDOMObj = getElById('itemTextLink'+nodeObj.id);
+    if (clickedDOMObj != null) {
+        if (lastClicked != null) {
+            var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id);
+            prevClickedDOMObj.style.color=lastClickedColor;
+            prevClickedDOMObj.style.backgroundColor=lastClickedBgColor;
+        }
+        
+        lastClickedColor    = clickedDOMObj.style.color;
+        lastClickedBgColor  = clickedDOMObj.style.backgroundColor;
+        clickedDOMObj.style.color=HIGHLIGHT_COLOR;
+        clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG;
+    }
+  }
+  lastClicked = nodeObj;
+  if (PRESERVESTATE)
+    SetCookie('highlightedTreeviewLink', nodeObj.getID());
+}
+
+function insFld(parentFolder, childFolder) 
+{ 
+  return parentFolder.addChild(childFolder) 
+} 
+function insDoc(parentFolder, document) 
+{ 
+  return parentFolder.addChild(document) 
+} 
+
+function gFld(description, hreference) 
+{ 
+  folder = new Folder(description, hreference);
+  return folder;
+} 
+function gLnk(optionFlags, description, linkData) 
+{ 
+  if (optionFlags>=0) { //is numeric (old style) or empty (error)
+    //Target changed from numeric to string in Aug 2002, and support for numeric style was entirely dropped in Mar 2004
+    alert("Change your Treeview configuration file to use the new style of target argument in gLnk");
+    return;
+  }
+
+  newItem = new Item(description);
+  setItemLink(newItem, optionFlags, linkData);
+  return newItem;
+} 
+
+function setItemLink(item, optionFlags, linkData) {
+  var targetFlag = "";
+  var target = "";
+  var protocolFlag = "";
+  var protocol = "";
+
+  targetFlag = optionFlags.charAt(0)
+  if (targetFlag=="B")
+    target = "_blank"
+  if (targetFlag=="P")
+    target = "_parent"
+  if (targetFlag=="R")
+    target = "basefrm"
+  if (targetFlag=="S")
+    target = "_self"
+  if (targetFlag=="T")
+    target = "_top"
+
+  if (optionFlags.length > 1) {
+    protocolFlag = optionFlags.charAt(1)
+    if (protocolFlag=="h")
+      protocol = "http://"
+    if (protocolFlag=="s")
+      protocol = "https://"
+    if (protocolFlag=="f")
+      protocol = "ftp://"
+    if (protocolFlag=="m")
+      protocol = "mailto:"
+  }
+
+  item.link = protocol+linkData;    
+  item.target = target
+}
+
+//Function created  for backwards compatibility purposes
+//Function contents voided in March 2004
+function oldGLnk(target, description, linkData)
+{
+}
+function preLoadIcons() {
+       var auxImg
+       auxImg = new Image();
+       auxImg.src = ICONPATH + "ftv2vertline.gif";
+       auxImg.src = ICONPATH + "ftv2mlastnode.gif";
+       auxImg.src = ICONPATH + "ftv2mnode.gif";
+       auxImg.src = ICONPATH + "ftv2plastnode.gif";
+       auxImg.src = ICONPATH + "ftv2pnode.gif";
+       auxImg.src = ICONPATH + "ftv2blank.gif";
+       auxImg.src = ICONPATH + "ftv2lastnode.gif";
+       auxImg.src = ICONPATH + "ftv2node.gif";
+       auxImg.src = ICONPATH + "ftv2folderclosed.gif";
+       auxImg.src = ICONPATH + "ftv2folderopen.gif";
+       auxImg.src = ICONPATH + "ftv2doc.gif";
+}
+
+//Open some folders for initial layout, if necessary
+function setInitialLayout() {
+  if (browserVersion > 0 && !STARTALLOPEN)
+    clickOnNodeObj(foldersTree);
+  
+  if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE)
+               PersistentFolderOpening();
+}
+
+//Used with NS4 and STARTALLOPEN
+function renderAllTree(nodeObj, parent) {
+  var i=0;
+  nodeObj.renderOb(parent)
+  if (supportsDeferral)
+    for (i=nodeObj.nChildren-1; i>=0; i--) 
+      renderAllTree(nodeObj.children[i], nodeObj.navObj)
+  else
+    for (i=0 ; i < nodeObj.nChildren; i++) 
+      renderAllTree(nodeObj.children[i], null)
+}
+
+function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) {
+  var i=0;
+  var heightContained=0;
+  var childrenMove=nodeObjMove;
+
+  if (hideThisOne)
+    nodeObj.escondeBlock()
+
+  if (browserVersion == 2)
+    nodeObj.navObj.moveBy(0, 0-nodeObjMove)
+
+  for (i=0 ; i < nodeObj.nChildren; i++) {
+    heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove)
+    if (browserVersion == 2) {
+      heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height
+      childrenMove = childrenMove + heightContainedInChild
+       }
+  }
+
+  return heightContained;
+}
+
+// Simulating inserAdjacentHTML on NS6
+// Code by thor@jscript.dk
+// ******************************************
+
+if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
+       HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode)
+       {
+               switch (where){
+               case 'beforeBegin':
+                       this.parentNode.insertBefore(parsedNode,this)
+                       break;
+               case 'afterBegin':
+                       this.insertBefore(parsedNode,this.firstChild);
+                       break;
+               case 'beforeEnd':
+                       this.appendChild(parsedNode);
+                       break;
+               case 'afterEnd':
+                       if (this.nextSibling) 
+                               this.parentNode.insertBefore(parsedNode,this.nextSibling);
+                       else this.parentNode.appendChild(parsedNode);
+                       break;
+               }
+       }
+
+       HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
+       {
+               var r = this.ownerDocument.createRange();
+               r.setStartBefore(this);
+               var parsedHTML = r.createContextualFragment(htmlStr);
+               this.insertAdjacentElement(where,parsedHTML)
+       }
+}
+
+function getElById(idVal) {
+  if (document.getElementById != null)
+    return document.getElementById(idVal)
+  if (document.all != null)
+    return document.all[idVal]
+  
+  alert("Problem getting element by id")
+  return null
+}
+
+
+// Functions for cookies
+// Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless
+// the PRESERVESTATE variable is set to 1 (default 0)
+// The separator currently in use is ^ (chr 94)
+// *********************************************************** 
+
+function PersistentFolderOpening()
+{
+  var stateInCookie;
+  var fldStr=""
+  var fldArr
+  var fldPos=0
+  var id
+  var nodeObj
+  stateInCookie = GetCookie("clickedFolder");
+  SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases
+
+  if(stateInCookie!=null)
+  {
+    fldArr = stateInCookie.split(cookieCutter)
+    for (fldPos=0; fldPos<fldArr.length; fldPos++)
+    {
+      fldStr=fldArr[fldPos]
+      if (fldStr != "") {
+        nodeObj = findObj(fldStr)
+        if (nodeObj!=null) //may have been deleted
+          if (nodeObj.setState) {
+            nodeObj.forceOpeningOfAncestorFolders()
+            clickOnNodeObj(nodeObj);
+          }
+          else
+            alert("Internal id is not pointing to a folder anymore.\nConsider giving an ID to the tree and external IDs to the individual nodes.")
+      }
+    }
+  }
+}
+
+function storeAllNodesInClickCookie(treeNodeObj)
+{
+  var currentOpen
+  var i = 0
+
+  if (typeof treeNodeObj.setState != "undefined") //is folder
+  {
+    currentOpen = GetCookie("clickedFolder")
+    if (currentOpen == null)
+      currentOpen = ""
+
+    if (treeNodeObj.getID() != foldersTree.getID())
+      SetCookie("clickedFolder", currentOpen+treeNodeObj.getID()+cookieCutter)
+
+    for (i=0; i < treeNodeObj.nChildren; i++) 
+        storeAllNodesInClickCookie(treeNodeObj.children[i])
+  }
+}
+
+function CookieBranding(name) {
+  if (typeof foldersTree.treeID != "undefined")
+    return name+foldersTree.treeID //needed for multi-tree sites. make sure treeId does not contain cookieCutter
+  else
+    return name
+}
+function GetCookie(name)
+{  
+  name = CookieBranding(name)
+
+       var arg = name + "=";  
+       var alen = arg.length;  
+       var clen = document.cookie.length;  
+       var i = 0;  
+
+       while (i < clen) {    
+               var j = i + alen;    
+               if (document.cookie.substring(i, j) == arg)      
+                       return getCookieVal (j);    
+               i = document.cookie.indexOf(" ", i) + 1;    
+               if (i == 0) break;   
+       }  
+       return null;
+}
+
+function getCookieVal(offset) {  
+       var endstr = document.cookie.indexOf (";", offset);  
+       if (endstr == -1)    
+       endstr = document.cookie.length;  
+       return unescape(document.cookie.substring(offset, endstr));
+}
+
+function SetCookie(name, value) 
+{  
+       var argv = SetCookie.arguments;  
+       var argc = SetCookie.arguments.length;  
+       var expires = (argc > 2) ? argv[2] : null;  
+       //var path = (argc > 3) ? argv[3] : null;  
+       var domain = (argc > 4) ? argv[4] : null;  
+       var secure = (argc > 5) ? argv[5] : false;  
+       var path = "/"; //allows the tree to remain open across pages with diff names & paths
+
+  name = CookieBranding(name)
+
+       document.cookie = name + "=" + escape (value) + 
+       ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
+       ((path == null) ? "" : ("; path=" + path)) +  
+       ((domain == null) ? "" : ("; domain=" + domain)) +    
+       ((secure == true) ? "; secure" : "");
+}
+
+function ExpireCookie (name) 
+{  
+       var exp = new Date();  
+       exp.setTime (exp.getTime() - 1);  
+       var cval = GetCookie (name);  
+  name = CookieBranding(name)
+       document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
+}
+
+
+//To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.)
+var USETEXTLINKS = 1;
+var STARTALLOPEN = 0;
+var USEFRAMES = 0;
+var USEICONS = 1;
+var WRAPTEXT = 1;
+var PERSERVESTATE = 0; //backward compatibility
+var PRESERVESTATE = 1;
+var ICONPATH = '';
+var HIGHLIGHT = 1;
+var HIGHLIGHT_COLOR = 'white';
+var HIGHLIGHT_BG    = 'blue';
+var BUILDALL = 1;
+var GLOBALTARGET = "S"; // variable only applicable for addChildren uses
+
+
+//Other variables
+var lastClicked = null;
+var lastClickedColor;
+var lastClickedBgColor;
+var indexOfEntries = new Array 
+var nEntries = 0 
+var browserVersion = 0 
+var selectedFolder=0
+var lastOpenedFolder=null
+var t=5
+var doc = document
+var supportsDeferral = false
+var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values
+
+doc.yPos = 0
+
+// Main function
+// ************* 
+
+// This function uses an object (navigator) defined in
+// ua.js, imported in the main html page (left frame).
+function initializeDocument() 
+{ 
+  preLoadIcons();
+  switch(navigator.family)
+  {
+    case 'ie4':
+      browserVersion = 1 //Simply means IE > 3.x
+      break;
+    case 'opera':
+      browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM
+      break;
+    case 'nn4':
+      browserVersion = 2 //NS4.x 
+      break;
+    case 'gecko':
+      browserVersion = 3 //NS6.x
+      break;
+    case 'safari':
+      browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror
+      break;
+       default:
+      browserVersion = 0 //other, possibly without DHTML  
+      break;
+  }
+
+  // backward compatibility
+  if (PERSERVESTATE)
+    PRESERVESTATE = 1;
+
+  supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3);
+  supportsDeferral = supportsDeferral & (!BUILDALL)
+  if (!USEFRAMES && browserVersion == 2)
+       browserVersion = 0;
+  eval(String.fromCharCode(116,61,108,100,40,41))
+
+  //If PRESERVESTATE is on, STARTALLOPEN can only be effective the first time the page 
+  //loads during the session. For subsequent (re)loads the PRESERVESTATE data stored 
+  //in cookies takes over the control of the initial expand/collapse
+  if (PRESERVESTATE && GetCookie("clickedFolder") != null)
+    STARTALLOPEN = 0
+
+  //foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example)
+  foldersTree.initialize(0, true, "") 
+  if (supportsDeferral && !STARTALLOPEN) {
+      foldersTree.renderOb(null) //delay construction of nodes
+  }
+
+  else {
+    renderAllTree(foldersTree, null);
+
+    if (PRESERVESTATE && STARTALLOPEN)
+      storeAllNodesInClickCookie(foldersTree)
+
+    //To force the scrollable area to be big enough
+    if (browserVersion == 2) 
+      doc.write("<layer top=" + indexOfEntries[nEntries-1].navObj.top + ">&nbsp;</layer>") 
+
+    if (browserVersion != 0 && !STARTALLOPEN)
+      hideWholeTree(foldersTree, false, 0)
+  }
+
+  setInitialLayout()
+
+  if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null  && GetCookie('highlightedTreeviewLink')!="") {
+    var nodeObj = findObj(GetCookie('highlightedTreeviewLink'))
+    if (nodeObj!=null){
+      nodeObj.forceOpeningOfAncestorFolders()
+      highlightObjLink(nodeObj);
+    }
+    else
+      SetCookie('highlightedTreeviewLink', '')
+  }
+} 
\ No newline at end of file
diff --git a/trunk/NP_TreeMenu/treemenu/icons/Thumbs.db b/trunk/NP_TreeMenu/treemenu/icons/Thumbs.db
new file mode 100644 (file)
index 0000000..4f2e821
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/Thumbs.db differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/diffDoc.gif b/trunk/NP_TreeMenu/treemenu/icons/diffDoc.gif
new file mode 100644 (file)
index 0000000..d61f509
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/diffDoc.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/diffFolder.gif b/trunk/NP_TreeMenu/treemenu/icons/diffFolder.gif
new file mode 100644 (file)
index 0000000..b73e2e1
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/diffFolder.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2blank.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2blank.gif
new file mode 100644 (file)
index 0000000..1993c8b
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2blank.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2doc.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2doc.gif
new file mode 100644 (file)
index 0000000..8b9e456
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2doc.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2folderclosed.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2folderclosed.gif
new file mode 100644 (file)
index 0000000..01b64b0
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2folderclosed.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2folderopen.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2folderopen.gif
new file mode 100644 (file)
index 0000000..cc9521d
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2folderopen.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2lastnode.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2lastnode.gif
new file mode 100644 (file)
index 0000000..18b9569
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2lastnode.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2link.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2link.gif
new file mode 100644 (file)
index 0000000..f0c9997
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2link.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2mlastnode.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2mlastnode.gif
new file mode 100644 (file)
index 0000000..68d46c8
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2mlastnode.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2mnode.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2mnode.gif
new file mode 100644 (file)
index 0000000..0ca0f53
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2mnode.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2node.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2node.gif
new file mode 100644 (file)
index 0000000..4e6d2e2
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2node.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2plastnode.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2plastnode.gif
new file mode 100644 (file)
index 0000000..b8bcb3d
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2plastnode.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2pnode.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2pnode.gif
new file mode 100644 (file)
index 0000000..5933237
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2pnode.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/icons/ftv2vertline.gif b/trunk/NP_TreeMenu/treemenu/icons/ftv2vertline.gif
new file mode 100644 (file)
index 0000000..efe7e67
Binary files /dev/null and b/trunk/NP_TreeMenu/treemenu/icons/ftv2vertline.gif differ
diff --git a/trunk/NP_TreeMenu/treemenu/ua.js b/trunk/NP_TreeMenu/treemenu/ua.js
new file mode 100644 (file)
index 0000000..93b7807
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * $Log: not supported by cvs2svn $
+ * Revision 1.9  2002/07/22 14:06:21  bc6ix
+ * fix license path, change version reporting to use 2 digits for each level
+ *
+ * Revision 1.8  2002/07/07 08:23:07  bc6ix
+ * fix line endings
+ *
+ * Revision 1.7  2002/05/14 16:52:52  bc6ix
+ * use CVS Log for revision history
+ *
+ *
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ * Full Terms at http://bclary.com/lib/js/license/mpl-tri-license.txt
+ *
+ * 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 Netscape code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2001
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Bob Clary <bclary@netscape.com>
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function xbDetectBrowser()
+{
+  var oldOnError = window.onerror;
+  var element = null;
+
+  window.onerror = null;
+  
+  // work around bug in xpcdom Mozilla 0.9.1
+  window.saveNavigator = window.navigator;
+
+  navigator.OS    = '';
+  navigator.version  = parseFloat(navigator.appVersion);
+  navigator.org    = '';
+  navigator.family  = '';
+
+  var platform;
+  if (typeof(window.navigator.platform) != 'undefined')
+  {
+    platform = window.navigator.platform.toLowerCase();
+    if (platform.indexOf('win') != -1)
+      navigator.OS = 'win';
+    else if (platform.indexOf('mac') != -1)
+      navigator.OS = 'mac';
+    else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
+      navigator.OS = 'nix';
+  }
+
+  var i = 0;
+  var ua = window.navigator.userAgent.toLowerCase();
+  
+  if (ua.indexOf('safari') != -1)
+  {
+    i = ua.indexOf('safari');
+    navigator.family = 'safari';
+    navigator.org = 'safari';
+    navigator.version = parseFloat('0' + ua.substr(i+7), 10);
+  }
+  else if (ua.indexOf('opera') != -1)
+  {
+    i = ua.indexOf('opera');
+    navigator.family  = 'opera';
+    navigator.org    = 'opera';
+    navigator.version  = parseFloat('0' + ua.substr(i+6), 10);
+  }
+  else if ((i = ua.indexOf('msie')) != -1)
+  {
+    navigator.org    = 'microsoft';
+    navigator.version  = parseFloat('0' + ua.substr(i+5), 10);
+    
+    if (navigator.version < 4)
+      navigator.family = 'ie3';
+    else
+      navigator.family = 'ie4'
+  }
+  else if (ua.indexOf('gecko') != -1)
+  {
+    navigator.family = 'gecko';
+    var rvStart = ua.indexOf('rv:');
+    var rvEnd   = ua.indexOf(')', rvStart);
+    var rv      = ua.substring(rvStart+3, rvEnd);
+    var rvParts = rv.split('.');
+    var rvValue = 0;
+    var exp     = 1;
+
+    for (var i = 0; i < rvParts.length; i++)
+    {
+      var val = parseInt(rvParts[i]);
+      rvValue += val / exp;
+      exp *= 100;
+    }
+    navigator.version = rvValue;
+
+    if (ua.indexOf('netscape') != -1)
+      navigator.org = 'netscape';
+    else if (ua.indexOf('compuserve') != -1)
+      navigator.org = 'compuserve';
+    else
+      navigator.org = 'mozilla';
+  }
+  else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
+  {
+    var is_major = parseFloat(navigator.appVersion);
+    
+    if (is_major < 4)
+      navigator.version = is_major;
+    else
+    {
+      i = ua.lastIndexOf('/')
+      navigator.version = parseFloat('0' + ua.substr(i+1), 10);
+    }
+    navigator.org = 'netscape';
+    navigator.family = 'nn' + parseInt(navigator.appVersion);
+  }
+  else if ((i = ua.indexOf('aol')) != -1 )
+  {
+    // aol
+    navigator.family  = 'aol';
+    navigator.org    = 'aol';
+    navigator.version  = parseFloat('0' + ua.substr(i+4), 10);
+  }
+  else if ((i = ua.indexOf('hotjava')) != -1 )
+  {
+    // hotjava
+    navigator.family  = 'hotjava';
+    navigator.org    = 'sun';
+    navigator.version  = parseFloat(navigator.appVersion);
+  }
+
+  window.onerror = oldOnError;
+}
+
+xbDetectBrowser();
+
diff --git a/trunk/NP_TrimImage/NP_TrimImage.php b/trunk/NP_TrimImage/NP_TrimImage.php
new file mode 100644 (file)
index 0000000..887db27
--- /dev/null
@@ -0,0 +1,334 @@
+<?php
+
+//history
+//     0.2:    $archive, $blogid and $catid suppot ($exmode=all ready)
+//                     echos 'no images' 
+//     0.3:    add strtolower 
+//                     Initialize $this->exquery
+//     0.5:    use createGlobalItemLink
+//                     sql_table support :-P
+//     0.6:    parameter supports blogid and catid
+//     0.7:    supports templatevar
+//                     supports <%popup()%> 
+//     0.8:            supports gif 
+
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) {
+               return 'nucleus_' . $name;
+       }
+}
+
+
+class NP_TrimImage extends NucleusPlugin {
+       function getName () {return 'TrimImage'; }
+       function getAuthor () {return 'nakahara21'; }
+       function getURL () {return 'http://xx.nakahara21.net/';}
+       function getVersion () {return '0.8';}
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function getDescription () {
+               return 'Extract image in items, and embed these images.';
+       }
+
+       function install () {
+/*
+               $this->createOption('default_catname','Default Category Name.','text','');
+*/     
+       }
+
+       function init() {
+               $this->fileex = array('.gif','.jpg','.png');
+               $this->random = 1;
+       }
+       
+       function doSkinVar($skinType, $amount=10, $wsize=80, $hsize=80, $point=0, $random=0, $exmode='') {
+               global $CONF, $blog;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+               
+               if($amount=='') $amount = 10;
+               if($hsize=='') $hsize = 80;
+               if($wsize=='') $wsize = 80;
+               if($point != 'lefttop') $point = 0;
+               $this->exquery = '';
+               
+
+               switch($skinType){
+                       case 'archive': 
+                               global $archive;
+                               sscanf($archive,'%4c-%2c-%2c',$year,$month,$day);
+                               if ($day == 0) {
+                                       $timestamp_start = mktime(0,0,0,$month,1,$year);
+                                       $timestamp_end = mktime(0,0,0,$month+1,1,$year);  // also works when $month==12
+                               } else {
+                                       $timestamp_start = mktime(0,0,0,$month,$day,$year);
+                                       $timestamp_end = mktime(0,0,0,$month,$day+1,$year);  
+                               }
+                               $this->exquery .= ' and itime>=' . mysqldate($timestamp_start)
+                                               . ' and itime<' . mysqldate($timestamp_end);
+
+//                     break;
+                       default:
+                               if($exmode == ''){
+                                       $this->exquery .= ' and iblog =' . $b->getID();
+                                       global $catid;
+                                       if($catid)      $this->exquery .= ' and icat =' . $catid;
+                               }elseif($exmode == 'all'){
+                               }else{
+                                       $spid_array = $spbid = $spcid = array();
+                                       $spid_array = explode('/',$exmode);
+                                       foreach($spid_array as $spid){
+                                               if(substr($spid, 0, 1) == 'b')
+                                                       $spbid[] = intval(substr($spid, 1));
+                                               if(substr($spid, 0, 1) == 'c')
+                                                       $spcid[] = intval(substr($spid, 1));
+                                       }
+                                       $spbid = implode(',',$spbid);
+                                       $spcid = implode(',',$spcid);
+                                       if($spbid && $spcid){
+                                               $this->exquery .= ' and ( iblog IN ('.$spbid.') or icat IN ('.$spcid.') )';
+                                       }elseif($spbid){
+                                               $this->exquery .= ' and iblog IN ('.$spbid.') ';
+                                       }elseif($spcid){
+                                               $this->exquery .= ' and icat IN ('.$spcid.') ';
+                                       }
+                               }
+               }
+
+
+               $filelist = array();
+               $this->imglists = array();
+               $this->imgfilename = array();
+               if(!($filelist = $this->listup())){
+                       echo 'No images here.';
+                       return;
+               }
+//             print_r($filelist);
+               $amount = min($amount,count($filelist));
+               if($random){
+                       srand((float)microtime()*1000000);
+                       shuffle($filelist);
+               }
+
+               echo '<div>';
+               for($i=0;$i<$amount;$i++){
+                       $itemlink = $this->createGlobalItemLink($filelist[$i][1], '');
+                       echo '<a href="'.$itemlink.'">';
+                       
+                       $exq = '';
+                       if($point)      $exq = '&pnt=lefttop';
+                               
+                       echo '<img src="'.$CONF['ActionURL'].'?action=plugin&name=TrimImage&type=draw&p='.$filelist[$i][0][0].'&wsize='.$wsize.'&hsize='.$hsize.$exq.'" />';
+                       echo "</a>\n";
+               }
+               echo "</div>\n";
+       }
+
+       function listup(){
+               global $blog;
+               ($blog)?
+                       $b =& $blog :
+                       $b =& $manager->getBlog($CONF['DefaultBlog']);
+
+               $query = 'SELECT inumber as itemid, ititle as title, ibody as body, iauthor, itime, imore as more,' ;
+               $query .= ' icat as catid, iclosed as closed' ;
+               $query .= ' FROM '.sql_table('item');
+               $query .= ' WHERE idraft=0';
+               $query .= ' and itime <=' . mysqldate($b->getCorrectTime());    // don't show future items!
+               $query .= $this->exquery;
+               $query .= ' ORDER BY itime DESC'; 
+       
+               $res = sql_query($query);
+               
+               if(!mysql_num_rows($res)) return FALSE;
+               
+               while ($it = mysql_fetch_object($res)){
+                       $txt = $it->body.$it->more;
+                       preg_match_all("/\<\%image\((.*)\)\%\>/Us",$txt,$imgpnt,PREG_PATTERN_ORDER);
+                       @array_walk($imgpnt[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor));
+                       preg_match_all("/\<\%popup\((.*)\)\%\>/Us",$txt,$imgpntp,PREG_PATTERN_ORDER);
+                       @array_walk($imgpntp[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor));
+               }
+               return $this->imglists;
+       }
+
+       function exarray($imginfo,$key,$iaid){
+               $imginfo = explode("|",$imginfo);
+               if(!in_array(strtolower(strrchr($imginfo[0], "." )),$this->fileex)) return;
+               if(in_array($imginfo[0],$this->imgfilename)) return;
+               $this->imgfilename[] = $imginfo[0];
+               if (!strstr($imginfo[0],'/')) {
+                       $imginfo[0] = $iaid[1] . '/' . $imginfo[0];
+               }
+               $this->imglists[] = array($imginfo,$iaid[0]);
+       }
+
+       function baseimageCreate($p,$imgtype){
+               switch($imgtype){
+                       case 2:
+                       return ImageCreateFromJpeg($p);
+                       case 3:
+                       return ImageCreateFromPng($p);
+                       default:
+                       return;
+               }
+       }
+
+       function doTemplateVar(&$item, $wsize=80, $hsize=80, $point=0){
+               global $CONF;
+               if($hsize=='') $hsize = 80;
+               if($wsize=='') $wsize = 80;
+               if($point != 'lefttop') $point = 0;
+               
+               $filelist = array();
+               $this->imglists = array();
+               $this->imgfilename = array();
+                       $txt = $item->body.$item->more;
+                       preg_match_all("/\<\%image\((.*)\)\%\>/Us",$txt,$imgipnt,PREG_PATTERN_ORDER);
+                       @array_walk($imgipnt[1], array(&$this, "exarray"), array($item->itemid,$item->authorid));
+                       preg_match_all("/\<\%popup\((.*)\)\%\>/Us",$txt,$imgipntp,PREG_PATTERN_ORDER);
+                       @array_walk($imgipntp[1], array(&$this, "exarray"), array($item->itemid,$item->authorid));
+                       
+                       $filelist = $this->imglists;
+//                     print_r($filelist);
+               $amount = count($filelist);
+
+//             echo '<div style="text-align:center;padding:3px;">';
+
+               if(!$amount){
+//                     echo '<img src="" width="'.$wsize.'" height="'.$hsize.'" />';
+                       echo '<img src="'.$CONF['ActionURL'].'?action=plugin&name=TrimImage&type=draw&p=non&wsize='.$wsize.'&hsize='.$hsize.$exq.'" width="'.$wsize.'" height="'.$hsize.'" />';
+               }
+
+
+               for($i=0;$i<$amount;$i++){
+//                     $itemlink = $this->createGlobalItemLink($filelist[$i][1], '');
+//                     echo '<a href="'.$itemlink.'">';
+                       
+                       $exq = '';
+                       if($point)      $exq = '&pnt=lefttop';
+                               
+                       echo '<img src="'.$CONF['ActionURL'].'?action=plugin&name=TrimImage&type=draw&p='.$filelist[$i][0][0].'&wsize='.$wsize.'&hsize='.$hsize.$exq.'" width="'.$wsize.'" height="'.$hsize.'" />';
+//                     echo '<br />'.shorten(strip_tags($item->title),16,'...');
+//                     echo "</a>\n";
+               }
+//             echo "</div>\n";
+       }
+
+
+       function doAction($type) {
+               global $CONF;
+               global $DIR_MEDIA;
+               $return = serverVar('HTTP_REFERER');
+               switch($type) {
+                       case draw:
+                               if(!requestVar('p')) return;
+                               $p = $DIR_MEDIA.requestVar('p');        //path
+               
+                               
+                               if(requestVar('p') == 'non'){
+                                       $im = ImageCreate(requestVar('wsize'),requestVar('hsize')) or die ("Cannnot Initialize new GD image stream");
+                                       $bgcolor = ImageColorAllocate($im,0,255,255); //color index:0
+//                                     $strcolor = ImageColorAllocate($im,153,153,153); //color index:1
+                                       imagecolortransparent($im, $bgcolor);
+//                                     imageString($im, 1, 4, 0,'No images',$strcolor);
+                                       header ("Content-type: image/png");
+                                       ImagePng($im);
+                                       imagedestroy($im);
+                                       berak;
+                               }
+
+                               list($imgwidth, $imgheight, $imgtype) = GetImageSize($p);
+               
+                               $tsize['w'] = requestVar('wsize');
+                               $tsize['h'] = requestVar('hsize');
+                               $point = requestVar('pnt');
+                               
+                               if($imgwidth / $imgheight < $tsize['w'] / $tsize['h']){ // height longer
+                                       $trimX = 0;
+                                       $trimW = $imgwidth;
+                                       $trimH = intval($tsize['h']/$tsize['w']*$imgwidth);
+                                       $trimY = intval(($imgheight - $trimH) / 2);
+                               }else{ // width longer
+                                       $trimY = 0;
+                                       $trimH = $imgheight;
+                                       $trimW = intval($tsize['w']/$tsize['h']*$imgheight);
+                                       $trimX = intval(($imgwidth - $trimW) / 2);
+                               }
+                               
+                               if($point == 'lefttop'){
+                                       $trimX = $trimY = 0;
+                               }
+                               
+                               $im_r = $this->baseimageCreate($p,$imgtype);
+                               $im = ImageCreateTrueColor($tsize['w'],$tsize['h']);
+                               ImageCopyResampled( $im, $im_r, 0, 0, $trimX, $trimY, $tsize['w'], $tsize['h'], $trimW, $trimH);
+                               switch($imgtype){
+                                       case 1:
+                                       header ("Content-type: image/gif");
+                                       Imagegif($im);
+                                       imagedestroy($im);
+                                       break;
+                                       case 2:
+                                       header ("Content-type: image/jpeg");
+                                       ImageJpeg($im);
+                                       imagedestroy($im);
+                                       break;
+                                       case 3:
+                                       header ("Content-type: image/png");
+                                       ImagePng($im);
+                                       imagedestroy($im);
+                                       break;
+                                       default:
+                                       return;
+                               }
+                       break;
+
+                       default:
+                               Header('Location: ' . $return);
+                               break;
+//_=======
+               }
+       }
+
+       function canEdit() {
+               global $member, $manager;
+               if (!$member->isLoggedIn()) return 0;
+               return $member->isAdmin();
+       }
+
+
+       function createGlobalItemLink($itemid, $extra = '') {
+               global $CONF, $manager;
+
+               if ($CONF['URLMode'] == 'pathinfo'){
+                       $link = $CONF['ItemURL'] . '/item/' . $itemid;
+               }else{
+                       $blogid = getBlogIDFromItemID($itemid);
+                       $b_tmp =& $manager->getBlog($blogid);
+                       $blogurl = $b_tmp->getURL() ;
+                       if(!$blogurl){
+                               $blogurl = $CONF['IndexURL'];
+                       }
+                       if(substr($blogurl, -4) != '.php'){
+                               if(substr($blogurl, -1) != '/')
+                                       $blogurl .= '/';
+                               $blogurl .= 'index.php';
+                       }
+                       $link = $blogurl . '?itemid=' . $itemid;
+               }
+               return addLinkParams($link, $extra);
+       }
+
+
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_UpdateTime/NP_UpdateTime.php b/trunk/NP_UpdateTime/NP_UpdateTime.php
new file mode 100644 (file)
index 0000000..bb58418
--- /dev/null
@@ -0,0 +1,145 @@
+<?php
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('sql_table')){
+       function sql_table($name) { return 'nucleus_' . $name; }
+}
+
+class NP_UpdateTime extends NucleusPlugin {
+       function getName() { return 'UpdateTime'; }
+       function getAuthor()  { return 'nakahara21'; }
+       function getURL() { return 'http://xx.nakahara21.net/'; }
+       function getVersion() { return '0.7'; }
+       function getDescription() { return 'Record updatetime when the item updated.'; }
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+       function getTableList() {       return array( sql_table('plugin_rectime') ); }
+       function getEventList() { return array('EditItemFormExtras','PreUpdateItem'); }
+       function install() {
+               sql_query('CREATE TABLE IF NOT EXISTS ' . sql_table('plugin_rectime'). ' (up_id int(11) not null, updatetime datetime, PRIMARY KEY (up_id))');
+               $this->createOption('DefautMode','¥Ç¥Õ¥©¥ë¥È¤Î¥â¡¼¥É¤Ï¡©(0:²¿¤â¤·¤Ê¤¤, 1:¹¹¿·Æü»þµ­Ï¿¤Î¤ß, 2:¥¢¥¤¥Æ¥àÆü»þ¾å½ñ¤­)','text','1');
+               $this->createOption('BeforeTime','¥¢¥¤¥Æ¥àÆü»þ¾å½ñ¤­¤Î¾ì¹ç¤Îɽ¼¨·Á¼°:','text','¢¨ ¤³¤Î¥¢¥¤¥Æ¥à¤Ï<%utime%>¤ËÊݸ¤µ¤ì¤¿¤â¤Î¤òºÆÊÔ½¸¤·¤Æ¤¤¤Þ¤¹');
+               $this->createOption('AfterTime','¹¹¿·Æü»þµ­Ï¿¤Î¤ß¤Î¾ì¹ç¤Îɽ¼¨·Á¼°','text','ºÇ½ª¹¹¿·Æü»þ:<%utime%>');
+               $this->createOption('DateFormat','¥Æ¥ó¥×¥ì¡¼¥ÈÆâ¤ÎÆü»þɽ¼¨·Á¼°(php¤Îdate´Ø¿ô Îã Y-m-d H:i:s):','text','Y-m-d H:i:s');
+               $this->createOption('s_lists','ºÇ¿·¹¹¿·¥ê¥¹¥È¤Î³«»Ï¥¿¥°','text','<ul class="nobullets">');
+               $this->createOption('e_lists','ºÇ¿·¹¹¿·¥ê¥¹¥È¤Î½ªÎ»¥¿¥°','text','</ul>');
+               $this->createOption('s_items','ºÇ¿·¹¹¿·¥ê¥¹¥È¤Î³Æ¥¢¥¤¥Æ¥à¤Î³«»Ï¥¿¥°','text','<li>');
+               $this->createOption('e_items','ºÇ¿·¹¹¿·¥ê¥¹¥È¤Î³Æ¥¢¥¤¥Æ¥à¤Î½ªÎ»¥¿¥°','text','</li>');
+               $this->createOption("del_uninstall", "Delete tables on uninstall?", "yesno", "no");
+       }
+       function unInstall() { 
+               if ($this->getOption('del_uninstall') == "yes") {
+                       mysql_query ("DROP TABLE IF EXISTS ".sql_table('plugin_rectime'));
+               }
+       }
+       function init() {
+               if(($this->def_mode = intval($this->getOption('DefautMode'))) > 2){
+                       $this->def_mode = 0;
+               }
+       }
+
+       function event_EditItemFormExtras($data) {
+               $checked_flag[$this->def_mode] = ' checked="checked"';
+               echo '<h3 style="margin-bottom:0;">¹¹¿·»þ¹ï¤Îµ­Ï¿ÊýË¡¤ÎÁªÂò</h3>';
+               echo '<input type="radio" name="updatetime" value="2" id="updatetime_2"'.$checked_flag[2].' /><label for="updatetime_2">¥¢¥¤¥Æ¥àÆü»þ¤È¤·¤Æ¾å½ñ¤­¤¹¤ë</label><br />';
+               echo '<input type="radio" name="updatetime" value="1" id="updatetime_1"'.$checked_flag[1].' /><label for="updatetime_1">¹¹¿·Æü»þ¤òµ­Ï¿¤¹¤ë¤Î¤ß</label><br />';
+               echo '<input type="radio" name="updatetime" value="0" id="updatetime_0"'.$checked_flag[0].' /><label for="updatetime_0">²¿¤â¤·¤Ê¤¤</label><br />';
+       }
+
+       function event_PreUpdateItem($data) {
+               global $manager;
+
+               $recd = intRequestVar('updatetime');
+               if (!$recd) return;
+               if (postVar('actiontype') == 'adddraft') return;
+
+               $updatetime = mysqldate($data['blog']->getCorrectTime());
+               if ($recd == 2){
+                       $up_query = 'UPDATE '.sql_table('item').' SET itime='.$updatetime.' WHERE inumber='.$data['itemid'];
+                       $updatetime = '"'.quickQuery('SELECT itime as result FROM '.sql_table('item').' WHERE inumber='.$data['itemid']).'"';
+                       $tmptime = '"'.quickQuery('SELECT updatetime as result FROM '.sql_table('plugin_rectime').' WHERE up_id='.$data['itemid']).'"';
+                       if($tmptime > $updatetime)
+                               $updatetime = $tmptime;
+                       sql_query($up_query);
+               }
+               sql_query('DELETE FROM '.sql_table('plugin_rectime')." WHERE up_id=".$data['itemid']);
+               $query = 'INSERT INTO ' . sql_table('plugin_rectime') . " (up_id, updatetime) VALUES ('".$data['itemid']."',".$updatetime.")";
+               $res = @mysql_query($query);
+               if (!$res) 
+                       return 'Could not save data: ' . mysql_error();
+       }
+
+       function doSkinVar($skinType, $maxtoshow = 5, $bmode = 'current') {
+               global $manager, $CONF, $blogid;
+               $b =& $manager->getBlog($CONF['DefaultBlog']);
+               $this->defaultblogurl = $b->getURL() ;
+               if(!$this->defaultblogurl)
+                       $this->defaultblogurl = $CONF['IndexURL'] ;
+
+               if($maxtoshow == ''){$maxtoshow = 5;}
+               if($bmode == ''){$bmode = 'current';}
+
+               echo $this->getOption(s_lists)."\n";
+               $query = 'SELECT r.up_id as up_id, IF(INTERVAL(r.updatetime, i.itime), UNIX_TIMESTAMP(r.updatetime), UNIX_TIMESTAMP(i.itime) ) as utime FROM '.sql_table('plugin_rectime') . ' as r, '.sql_table('item') .' as i WHERE  r.up_id=i.inumber';
+               if($bmode != 'all'){
+                       $query .= ' and i.iblog='.$blogid;
+               }       
+               $query .= ' ORDER BY utime DESC';
+               $query .= ' LIMIT 0,'.intval($maxtoshow);
+               $res = mysql_query($query);
+               while($row = mysql_fetch_object($res)){
+                       $item =& $manager->getItem($row->up_id,0,0);
+                       if($item){
+                               $itemlink = $this->createGlobalItemLink($item['itemid'], '');
+                               $itemtitle = strip_tags($item['title']);
+                               $itemtitle = shorten($itemtitle,26,'..');
+                               $itemdate = date('m/d H:i',$row->utime);
+
+                               echo $this->getOption(s_items)."\n";
+                               echo '<a href="'.$itemlink.'">'.$itemtitle.'</a> <small>'.$itemdate."</small>\n";
+                               echo $this->getOption(e_items)."\n";
+                       }
+               }
+               echo $this->getOption(e_lists);
+       }
+
+       function doTemplateVar(&$item){
+               $query = 'SELECT r.up_id, UNIX_TIMESTAMP(r.updatetime) as updatetime, UNIX_TIMESTAMP(i.itime) as itemtime FROM '.sql_table('plugin_rectime') . ' as r, '.sql_table('item') .' as i WHERE r.up_id='.$item->itemid.' and r.up_id=i.inumber';
+               $res = sql_query($query);
+               if($row = mysql_fetch_assoc($res)){
+                       $data['utime'] = date($this->getOption('DateFormat'),$row['updatetime']);
+                       if($row['updatetime'] > $row['itemtime']){
+                               echo TEMPLATE::fill($this->getOption('AfterTime'),$data);;
+                       }elseif($row['updatetime'] < $row['itemtime']){
+                               echo TEMPLATE::fill($this->getOption('BeforeTime'),$data);;
+                       }
+               }
+       }
+
+       function createGlobalItemLink($itemid, $extra = '') {
+               global $CONF, $manager;
+               if ($CONF['URLMode'] == 'pathinfo'){
+                       $link = $CONF['ItemURL'] . '/item/' . $itemid;
+               }else{
+                       $blogid = getBlogIDFromItemID($itemid);
+                       $b_tmp =& $manager->getBlog($blogid);
+                       $blogurl = $b_tmp->getURL() ;
+                       if(!$blogurl){
+                               $blogurl = $this->defaultblogurl;
+                       }
+                       if(substr($blogurl, -4) != '.php'){
+                               if(substr($blogurl, -1) != '/')
+                                       $blogurl .= '/';
+                               $blogurl .= 'index.php';
+                       }
+                       $link = $blogurl . '?itemid=' . $itemid;
+               }
+               return addLinkParams($link, $extra);
+       }
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Wikistyle/NP_Wikistyle.php b/trunk/NP_Wikistyle/NP_Wikistyle.php
new file mode 100644 (file)
index 0000000..d134e4c
--- /dev/null
@@ -0,0 +1,190 @@
+<?php
+// plugin needs to work on Nucleus versions <=2.0 as well
+if (!function_exists('removeBreaks')){
+       function removeBreaks($var) {                   return preg_replace("/<br \/>([\r\n])/","$1",$var); }
+}
+
+
+class NP_Wikistyle extends NucleusPlugin {
+
+       function getName() {    // name of plugin
+               return 'Wikistyle'; 
+       }
+       
+       function getAuthor()  { // author of plugin 
+               return 'nakahara21'; 
+       }
+       
+       function getURL()       {       // an URL to the plugin website
+               return 'http://xx.nakahara21.net/'; 
+       }
+       
+       function getVersion() { // version of the plugin
+               return '0.5'; 
+       }
+       
+       // a description to be shown on the installed plugins listing
+       function getDescription() { 
+               return 'convert WikiTag';
+       }
+
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+       function getEventList() { return array('PreItem'); }
+
+       function event_PreItem(&$data) {
+               $this->currentItem = &$data["item"]; 
+               $this->convert_wikitag($this->currentItem->body); 
+               if($this->currentItem->more)
+                       $this->convert_wikitag($this->currentItem->more); 
+       }
+
+       function convert_wikitag(&$text) { 
+               $text = removeBreaks($text);
+               $tmp_lines = explode("\n", $text);
+               $tmp_lines[] = "&nbsp;";
+               $text = "";
+               $level = array();
+               $templevel = array();
+               
+               $endline = count($tmp_lines) - 1;
+               for($i=0;$i<=$endline;$i++){
+//                     $tmp_lines[$i] = trim($tmp_lines[$i]);
+                       $level = '';
+               //__________
+               $replaceFrom = array(
+                       '/([^:\/\/\w]|^)((https:\/\/)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',           
+                       '/([^:\/\/\w]|^)((http:\/\/|www\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',
+                       '/([^:\/\/\w]|^)((ftp:\/\/|ftp\.)([\w\.-]+)([\/\w+\.~%&?@=_:;#,-]+))/ie',
+                       '/([^:\/\/\w]|^)(mailto:(([a-zA-Z\@\%\.\-\+_])+))/ie'                   
+               );
+               $replaceTo = array(
+                       '$this->createLinkCodeWiki("\\1", "\\2","https")',              
+                       '$this->createLinkCodeWiki("\\1", "\\2","http")',
+                       '$this->createLinkCodeWiki("\\1", "\\2","ftp")',
+                       '$this->createLinkCodeWiki("\\1", "\\3","mailto")'                      
+               );
+
+                       if ($level[p] = preg_match('/^(https:\/\/|http:\/\/|www\.|ftp:\/\/|ftp\.|mailto:)/ie',$tmp_lines[$i]) ){
+                               $tmp_lines[$i] = preg_replace($replaceFrom, $replaceTo, $tmp_lines[$i]);
+                               $text .= $tmp_lines[$i]."<br />";
+                       }
+               //__________
+                       if (($level[h] = strspn($tmp_lines[$i],'*')) > 6) {
+                               $level[h] = 6; // limitation ;(
+                       }
+                       if($level[h]){
+                               $tmp_lines[$i] = ltrim(substr($tmp_lines[$i],$level[h]));
+                               $text .= '<h'.$level[h].' class="wiki">'.$tmp_lines[$i].'</h'.$level[h].'>';
+                       }
+               //__________
+                       if (($level[u] = strspn($tmp_lines[$i],'-')) > 3){ 
+                               $level[r] = 4; 
+                               $level[u] = 3; // limitation ;(
+                       }
+                       if($level[u] && !$level[r]){
+                               $tmp_lines[$i] = ltrim(substr($tmp_lines[$i],$level[u]));
+//                             $tmp_lines[$i] = '<li>'.$tmp_lines[$i].'</li>';
+//_-------------
+                               if($temptoplevel == 'u' && $templevel[o]){
+                                       $tmp_lines[$i] = str_repeat("</ol>\n",$templevel[o])."\n".'<li>'.$tmp_lines[$i].'</li>';
+                                       $templevel[o] = 0;
+                               }else{
+                                       $tmp_lines[$i] = '<li>'.$tmp_lines[$i].'</li>';
+                               }
+//_-------------
+                               
+                               $difflevel = $level[u] - $templevel[u];
+                               if($difflevel < 0)
+                                       $text .= str_repeat("</ul>\n",0-$difflevel);
+                               if( $difflevel > 0)
+                                       $text .= str_repeat("<ul>\n",$difflevel);
+                               
+                               $text .= $tmp_lines[$i];
+                               if(!array_sum($templevel))
+                                       $temptoplevel = 'u';
+                               $templevel[u] = $level[u];
+                       }
+               //__________
+                       if($level[r]){
+                               $tmp_lines[$i] = ltrim(substr($tmp_lines[$i],$level[r]));
+                               $text .= '<div class="hr"><hr /></div>';
+                       }
+               //__________
+                       if (($level[o] = strspn($tmp_lines[$i],'+')) > 3) 
+                               $level[o] = 3; // limitation ;(
+                       if($level[o]){
+                               $tmp_lines[$i] = ltrim(substr($tmp_lines[$i],$level[o]));
+
+//                             $tmp_lines[$i] = '<li>'.$tmp_lines[$i].'</li>';
+//_-------------
+                               if($temptoplevel == 'o' && $templevel[u]){
+                                       $tmp_lines[$i] = str_repeat("</ul>\n",$templevel[u])."\n".'<li>'.$tmp_lines[$i].'</li>';
+                                       $templevel[u] = 0;
+                               }else{
+                                       $tmp_lines[$i] = '<li>'.$tmp_lines[$i].'</li>';
+                               }
+//_-------------
+                               
+                               $difflevel = $level[o] - $templevel[o];
+                               if($difflevel < 0)
+                                       $text .= str_repeat("</ol>\n",0-$difflevel);
+                               if( $difflevel > 0)
+                                       $text .= str_repeat("<ol>\n",$difflevel);
+                               
+                               $text .= $tmp_lines[$i];
+                               if(!array_sum($templevel))
+                                       $temptoplevel = 'o';
+                               $templevel[o] = $level[o];
+                       }
+               //__________
+                       if(array_sum($level) == 0){
+                               if(array_sum($templevel)){
+                                       if($templevel[u])
+                                               $text .= str_repeat("</ul>\n",$templevel[u]);
+                                       if($templevel[o])
+                                               $text .= str_repeat("</ol>\n",$templevel[o]);
+                                       $templevel = array();
+                                       $temptoplevel = '';
+                               }
+                               if($tmp_lines[$i] && $i != $endline)
+                                       $text .= $tmp_lines[$i]."<br />";
+                       }
+                       if($tmp_lines[$i] && $i != $endline)
+                               $text .= "\n";
+               }
+       } 
+
+       function createLinkCodeWiki($pre, $url, $protocol = 'http') {
+               $post = '';
+       
+               // it's possible that $url ends with an entities 
+               // since htmlspecialchars is applied before URL linking
+               if (preg_match('/(&\w+;)+$/i', $url, $matches)) {
+                       $post = $matches[0];    // found entities (1 or more)
+                       $url = substr($url, 0, strlen($url) - strlen($post));
+               }
+
+               if (!ereg('^'.$protocol.'://',$url))
+                       $linkedUrl = $protocol . (($protocol == 'mailto') ? ':' : '://') . $url;
+               else
+                       $linkedUrl = $url;
+                       
+                       
+               if ($protocol != 'mailto')
+                       $displayedUrl = $linkedUrl;
+               else
+                       $displayedUrl = $url;
+               return $pre . '<a href="'.$linkedUrl.'" target="_blank">'.$displayedUrl.'</a>' . $post;
+       }
+       
+
+}
+?>
\ No newline at end of file
diff --git a/trunk/NP_Wtable/NP_Wtable.php b/trunk/NP_Wtable/NP_Wtable.php
new file mode 100644 (file)
index 0000000..3d5da7d
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+class NP_Wtable extends NucleusPlugin {
+
+       function getName() {    // name of plugin
+               return 'Convert table'; 
+       }
+       
+       function getAuthor()  { // author of plugin 
+               return 'nakahara21'; 
+       }
+       
+       function getURL()       {       // an URL to the plugin website
+               return 'http://xx.nakahara21.net/'; 
+       }
+       
+       function getVersion() { // version of the plugin
+               return '0.2'; //tate array
+       }
+       
+       // a description to be shown on the installed plugins listing
+       function getDescription() { 
+               return 'Convert table';
+       }
+
+       function supportsFeature($what) {
+               switch($what){
+                       case 'SqlTablePrefix':
+                               return 1;
+                       default:
+                               return 0;
+               }
+       }
+
+       function getEventList() { return array('PreItem'); }
+
+       function event_PreItem(&$data) {
+               $this->currentItem = &$data["item"]; 
+
+               $this->currentItem->body = removeBreaks($this->currentItem->body);
+//             $this->currentItem->body = str_replace("\r\n","\n",$this->currentItem->body);
+               $this->currentItem->body = preg_replace_callback("#\|(.*)\|\r\n#", array(&$this, 'list_table'), $this->currentItem->body); 
+               $this->currentItem->body = preg_replace_callback("#\!(.*)\!#", array(&$this, 'convert_table'), $this->currentItem->body); 
+               $this->currentItem->body = addBreaks($this->currentItem->body);
+
+               $this->currentItem->more = preg_replace_callback("#\|(.*?)\|#", array(&$this, 'convert_table'), $this->currentItem->more); 
+       }
+
+       function list_table($text) { 
+               return "!".$text[1]."!";
+       } 
+
+       function convert_table($text) { 
+               $rows = explode('!!',$text[1]);
+               for($r =0; $r < count($rows); $r++){
+                       $cell = explode('|',$rows["$r"]);
+                       for($c = 0; $c < count($cell); $c++){
+                               $cols["$c"]["$r"] = $cell["$c"];
+                       }
+               }
+               
+               for($c = 0; $c < count($cols); $c++){
+                       $cols["$c"] = array_reverse ($cols["$c"], TRUE);
+                       $rowspan = 1;
+//                     print_r($cols["$c"]);
+                       foreach($cols["$c"] as $key => $val){
+                               if($val == '~'){
+                                       $rowspan ++;
+                                       $row["$key"]["$c"] = $val;
+                               }elseif($val == '>'){
+                                       $row["$key"]["$c"] = $val;
+                               }elseif($rowspan > 1){
+                                       $row["$key"]["$c"] = '<td rowspan="'.$rowspan.'">'.$val.'</td>';
+                                       $rowspan = 1;
+                               }else{
+                                       $row["$key"]["$c"] = '<td>'.$val.'</td>';
+                               }
+                       }
+               }
+               $row = array_reverse ($row, TRUE);
+//             print_r($row);
+               
+               for($r = 0; $r < count($row); $r++){
+                       $out .= '<tr>';
+                       $colspan = 1;
+                       for($c =0; $c < count($row["$r"]); $c++){
+                               if($row["$r"]["$c"] == '~'){
+                                       $out .= '';
+                               }elseif($row["$r"]["$c"] == '>'){
+                                       $out .= '';
+                                       $colspan ++;
+                               }elseif($colspan >1){
+                                       $out .= str_replace('<td>','<td colspan="'.$colspan.'">',$row["$r"]["$c"]);
+                                       $colspan = 1;
+                               }else{
+                                       $out .= $row["$r"]["$c"];
+                               }
+                       }
+                       
+                       $out .= '</tr>';
+               }
+               
+               return '<table border=1>'.$out.'</table>';
+       } 
+}
+?>
\ No newline at end of file