Index: trunk/addons/trunk/languages/EN.php
===================================================================
--- trunk/addons/trunk/languages/EN.php	(revision 102)
+++ trunk/addons/trunk/languages/EN.php	(nonexistent)
@@ -1,506 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Define that this file is loaded
-if(!defined('LANGUAGE_LOADED')) {
-	define('LANGUAGE_LOADED', true);
-}
-
-// Set the language information
-$language_code = 'EN';
-$language_name = 'English';
-$language_author = 'Ryan Djurovich';
-$language_version = '2.5';
-$language_designed_for = '2.5.x';
-
-// Menu titles
-$MENU['START'] = 'Start';
-$MENU['PAGES'] = 'Pages';
-$MENU['MEDIA'] = 'Media';
-$MENU['ADDONS'] = 'Add-ons';
-$MENU['MODULES'] = 'Modules';
-$MENU['TEMPLATES'] = 'Templates';
-$MENU['LANGUAGES'] = 'Languages';
-$MENU['PREFERENCES'] = 'Preferences';
-$MENU['SETTINGS'] = 'Settings';
-$MENU['ACCESS'] = 'Access';
-$MENU['USERS'] = 'Users';
-$MENU['GROUPS'] = 'Groups';
-$MENU['HELP'] = 'Help';
-$MENU['VIEW'] = 'View';
-$MENU['LOGOUT'] = 'Log-out';
-$MENU['LOGIN'] = 'Login';
-$MENU['FORGOT'] = 'Retrieve Login Details';
-
-// Section overviews
-$OVERVIEW['START'] = 'Administration overview';
-$OVERVIEW['PAGES'] = 'Manage your websites pages...';
-$OVERVIEW['MEDIA'] = 'Manage files stored in the media folder...';
-$OVERVIEW['MODULES'] = 'Manage Website Baker modules...';
-$OVERVIEW['TEMPLATES'] = 'Change the look and feel of your website with templates...';
-$OVERVIEW['LANGUAGES'] = 'Manage Website Baker languages...';
-$OVERVIEW['PREFERENCES'] = 'Change preferences such as email address, password, etc... ';
-$OVERVIEW['SETTINGS'] = 'Changes settings for Website Baker...';
-$OVERVIEW['USERS'] = 'Manage users who can log-in to Website Baker...';
-$OVERVIEW['GROUPS'] = 'Manage user groups and their system permissions...';
-$OVERVIEW['HELP'] = 'Got a questions? Find your answer...';
-$OVERVIEW['VIEW'] = 'Quickly view and browse your website in a new window...';
-
-// Headings
-$HEADING['MODIFY_DELETE_PAGE'] = 'Modify/Delete Page';
-$HEADING['DELETED_PAGES'] = 'Deleted Pages';
-$HEADING['ADD_PAGE'] = 'Add Page';
-$HEADING['ADD_HEADING'] = 'Add Heading';
-$HEADING['MODIFY_PAGE'] = 'Modify Page';
-$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modify Page Settings';
-$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modify Advanced Page Settings';
-$HEADING['MANAGE_SECTIONS'] = 'Manage Sections';
-$HEADING['MODIFY_INTRO_PAGE'] = 'Modify Intro Page';
-
-$HEADING['BROWSE_MEDIA'] = 'Browse Media';
-$HEADING['CREATE_FOLDER'] = 'Create Folder';
-$HEADING['UPLOAD_FILES'] = 'Upload File(s)';
-
-$HEADING['INSTALL_MODULE'] = 'Install Module';
-$HEADING['UNINSTALL_MODULE'] = 'Uninstall Module';
-$HEADING['MODULE_DETAILS'] = 'Module Details';
-
-$HEADING['INSTALL_TEMPLATE'] = 'Install Template';
-$HEADING['UNINSTALL_TEMPLATE'] = 'Uninstall Template';
-$HEADING['TEMPLATE_DETAILS'] = 'Template Details';
-
-$HEADING['INSTALL_LANGUAGE'] = 'Install Language';
-$HEADING['UNINSTALL_LANGUAGE'] = 'Uninstall Language';
-$HEADING['LANGUAGE_DETAILS'] = 'Language Details';
-
-$HEADING['MY_SETTINGS'] = 'My Settings';
-$HEADING['MY_EMAIL'] = 'My Email';
-$HEADING['MY_PASSWORD'] = 'My Password';
-
-$HEADING['GENERAL_SETTINGS'] = 'General Settings';
-$HEADING['DEFAULT_SETTINGS'] = 'Default Settings';
-$HEADING['SEARCH_SETTINGS'] = 'Search Settings';
-$HEADING['FILESYSTEM_SETTINGS'] = 'Filesystem Settings';
-
-$HEADING['MODIFY_DELETE_USER'] = 'Modify/Delete User';
-$HEADING['ADD_USER'] = 'Add User';
-$HEADING['MODIFY_USER'] = 'Modify User';
-
-$HEADING['MODIFY_DELETE_GROUP'] = 'Modify/Delete Group';
-$HEADING['ADD_GROUP'] = 'Add Group';
-$HEADING['MODIFY_GROUP'] = 'Modify Group';
-
-// Other text
-$TEXT['ADD'] = 'Add';
-$TEXT['MODIFY'] = 'Modify';
-$TEXT['SETTINGS'] = 'Settings';
-$TEXT['DELETE'] = 'Delete';
-$TEXT['SAVE'] = 'Save';
-$TEXT['RESET'] = 'Reset';
-$TEXT['LOGIN'] = 'Login';
-$TEXT['RELOAD'] = 'Reload';
-$TEXT['CANCEL'] = 'Cancel';
-$TEXT['NAME'] = 'Name';
-$TEXT['PLEASE_SELECT'] = 'Please select';
-$TEXT['TITLE'] = 'Title';
-$TEXT['PARENT'] = 'Parent';
-$TEXT['TYPE'] = 'Type';
-$TEXT['VISIBILITY'] = 'Visibility';
-$TEXT['PRIVATE'] = 'Private';
-$TEXT['PUBLIC'] = 'Public';
-$TEXT['NONE'] = 'None';
-$TEXT['NONE_FOUND'] = 'None Found';
-$TEXT['CURRENT'] = 'Current';
-$TEXT['CHANGE'] = 'Change';
-$TEXT['WINDOW'] = 'Window';
-$TEXT['DESCRIPTION'] = 'Description';
-$TEXT['KEYWORDS'] = 'Keywords';
-$TEXT['ADMINISTRATORS'] = 'Administrators';
-$TEXT['PRIVATE_VIEWERS'] = 'Private Viewers';
-$TEXT['EXPAND'] = 'Expand';
-$TEXT['COLLAPSE'] = 'Collapse';
-$TEXT['MOVE_UP'] = 'Move Up';
-$TEXT['MOVE_DOWN'] = 'Move Down';
-$TEXT['RENAME'] = 'Rename';
-$TEXT['MODIFY_SETTINGS'] = 'Modify Settings';
-$TEXT['MODIFY_CONTENT'] = 'Modify Content';
-$TEXT['VIEW'] = 'View';
-$TEXT['UP'] = 'Up';
-$TEXT['FORGOTTEN_DETAILS'] = 'Forgotten your details?';
-$TEXT['NEED_TO_LOGIN'] = 'Need to log-in?';
-$TEXT['SEND_DETAILS'] = 'Send Details';
-$TEXT['USERNAME'] = 'Username';
-$TEXT['PASSWORD'] = 'Password';
-$TEXT['HOME'] = 'Home';
-$TEXT['TARGET_FOLDER'] = 'Target folder';
-$TEXT['OVERWRITE_EXISTING'] = 'Overwrite existing';
-$TEXT['FILE'] = 'File';
-$TEXT['FILES'] = 'Files';
-$TEXT['FOLDER'] = 'Folder';
-$TEXT['FOLDERS'] = 'Folders';
-$TEXT['CREATE_FOLDER'] = 'Create Folder';
-$TEXT['UPLOAD_FILES'] = 'Upload File(s)';
-$TEXT['CURRENT_FOLDER'] = 'Current Folder';
-$TEXT['TO'] = 'To';
-$TEXT['FROM'] = 'From';
-$TEXT['INSTALL'] = 'Install';
-$TEXT['UNINSTALL'] = 'Uninstall';
-$TEXT['VIEW_DETAILS'] = 'View Details';
-$TEXT['DISPLAY_NAME'] = 'Display Name';
-$TEXT['AUTHOR'] = 'Author';
-$TEXT['VERSION'] = 'Version';
-$TEXT['DESIGNED_FOR'] = 'Designed For';
-$TEXT['DESCRIPTION'] = 'Description';
-$TEXT['EMAIL'] = 'Email';
-$TEXT['LANGUAGE'] = 'Language';
-$TEXT['TIMEZONE'] = 'Timezone';
-$TEXT['CURRENT_PASSWORD'] = 'Current Password';
-$TEXT['NEW_PASSWORD'] = 'New Password';
-$TEXT['RETYPE_NEW_PASSWORD'] = 'Re-type New Password';
-$TEXT['ACTIVE'] = 'Active';
-$TEXT['DISABLED'] = 'Disabled';
-$TEXT['ENABLED'] = 'Enabled';
-$TEXT['RETYPE_PASSWORD'] = 'Re-type Password';
-$TEXT['GROUP'] = 'Group';
-$TEXT['SYSTEM_PERMISSIONS'] = 'System Permissions';
-$TEXT['MODULE_PERMISSIONS'] = 'Module Permissions';
-$TEXT['SHOW_ADVANCED'] = 'Show Advanced Options';
-$TEXT['HIDE_ADVANCED'] = 'Hide Advanced Options';
-$TEXT['BASIC'] = 'Basic';
-$TEXT['ADVANCED'] = 'Advanced';
-$TEXT['WEBSITE'] = 'Website';
-$TEXT['DEFAULT'] = 'Default';
-$TEXT['KEYWORDS'] = 'Keywords';
-$TEXT['TEXT'] = 'Text';
-$TEXT['HEADER'] = 'Header';
-$TEXT['FOOTER'] = 'Footer';
-$TEXT['TEMPLATE'] = 'Template';
-$TEXT['INSTALLATION'] = 'Installation';
-$TEXT['DATABASE'] = 'Database';
-$TEXT['HOST'] = 'Host';
-$TEXT['INTRO'] = 'Intro';
-$TEXT['PAGE'] = 'Page';
-$TEXT['SIGNUP'] = 'Sign-up';
-$TEXT['PHP_ERROR_LEVEL'] = 'PHP Error Reporting Level';
-$TEXT['ADMIN'] = 'Admin';
-$TEXT['PATH'] = 'Path';
-$TEXT['URL'] = 'URL';
-$TEXT['FRONTEND'] = 'Front-end';
-$TEXT['EXTENSION'] = 'Extension';
-$TEXT['TABLE_PREFIX'] = 'Table Prefix';
-$TEXT['CHANGES'] = 'Changes';
-$TEXT['ADMINISTRATION'] = 'Administration';
-$TEXT['FORGOT_DETAILS'] = 'Forgot Details?';
-$TEXT['LOGGED_IN'] = 'Logged-In';
-$TEXT['WELCOME_BACK'] = 'Welcome back';
-$TEXT['FULL_NAME'] = 'Full Name';
-$TEXT['ACCOUNT_SIGNUP'] = 'Account Sign-Up';
-$TEXT['LINK'] = 'Link';
-$TEXT['TARGET'] = 'Target';
-$TEXT['NEW_WINDOW'] = 'New Window';
-$TEXT['SAME_WINDOW'] = 'Same Window';
-$TEXT['PAGE_LEVEL_LIMIT'] = 'Page Level Limit';
-$TEXT['SUCCESS'] = 'Success';
-$TEXT['ERROR'] = 'Error';
-$TEXT['ARE_YOU_SURE'] = 'Are you sure?';
-$TEXT['YES'] = 'Yes';
-$TEXT['NO'] = 'No';
-$TEXT['SYSTEM_DEFAULT'] = 'System Default';
-$TEXT['PAGE_TITLE'] = 'Page Title';
-$TEXT['MENU_TITLE'] = 'Menu Title';
-$TEXT['ACTIONS'] = 'Actions';
-$TEXT['UNKNOWN'] = 'Unknown';
-$TEXT['BLOCK'] = 'Block';
-$TEXT['SEARCH'] = 'Search';
-$TEXT['SEARCHING'] = 'Searching';
-$TEXT['POST'] = 'Post';
-$TEXT['COMMENT'] = 'Comment';
-$TEXT['COMMENTS'] = 'Comments';
-$TEXT['COMMENTING'] = 'Commenting';
-$TEXT['SHORT'] = 'Short';
-$TEXT['LONG'] = 'Long';
-$TEXT['LOOP'] = 'Loop';
-$TEXT['FIELD'] = 'Field';
-$TEXT['REQUIRED'] = 'Required';
-$TEXT['LENGTH'] = 'Length';
-$TEXT['MESSAGE'] = 'Message';
-$TEXT['SUBJECT'] = 'Subject';
-$TEXT['MATCH'] = 'Match';
-$TEXT['ALL_WORDS'] = 'All Words';
-$TEXT['ANY_WORDS'] = 'Any Words';
-$TEXT['EXACT_MATCH'] = 'Exact Match';
-$TEXT['SHOW'] = 'Show';
-$TEXT['HIDE'] = 'Hide';
-$TEXT['START_PUBLISHING'] = 'Start Publishing';
-$TEXT['FINISH_PUBLISHING'] = 'Finish Publishing';
-$TEXT['DATE'] = 'Date';
-$TEXT['START'] = 'Start';
-$TEXT['END'] = 'End';
-$TEXT['IMAGE'] = 'Image';
-$TEXT['ICON'] = 'Icon';
-$TEXT['SECTION'] = 'Section';
-$TEXT['DATE_FORMAT'] = 'Date Format';
-$TEXT['TIME_FORMAT'] = 'Time Format';
-$TEXT['RESULTS'] = 'Results';
-$TEXT['RESIZE'] = 'Re-size';
-$TEXT['MANAGE'] = 'Manage';
-$TEXT['CODE'] = 'Code';
-$TEXT['WIDTH'] = 'Width';
-$TEXT['HEIGHT'] = 'Height';
-$TEXT['MORE'] = 'More';
-$TEXT['READ_MORE'] = 'Read More';
-$TEXT['CHANGE_SETTINGS'] = 'Change Settings';
-$TEXT['CURRENT_PAGE'] = 'Current Page';
-$TEXT['CLOSE'] = 'Close';
-$TEXT['INTRO_PAGE'] = 'Intro Page';
-$TEXT['INSTALLATION_URL'] = 'Installation URL';
-$TEXT['INSTALLATION_PATH'] = 'Installation Path';
-$TEXT['PAGE_EXTENSION'] = 'Page Extension';
-$TEXT['NO_RESULTS'] = 'No Results';
-$TEXT['WEBSITE_TITLE'] = 'Website Title';
-$TEXT['WEBSITE_DESCRIPTION'] = 'Website Description';
-$TEXT['WEBSITE_KEYWORDS'] = 'Website Keywords';
-$TEXT['WEBSITE_HEADER'] = 'Website Header';
-$TEXT['WEBSITE_FOOTER'] = 'Website Footer';
-$TEXT['RESULTS_HEADER'] = 'Results Header';
-$TEXT['RESULTS_LOOP'] = 'Results Loop';
-$TEXT['RESULTS_FOOTER'] = 'Results Footer';
-$TEXT['LEVEL'] = 'Level';
-$TEXT['NOT_FOUND'] = 'Not Found';
-$TEXT['PAGE_SPACER'] = 'Page Spacer';
-$TEXT['MATCHING'] = 'Matching';
-$TEXT['TEMPLATE_PERMISSIONS'] = 'Template Permissions';
-$TEXT['PAGES_DIRECTORY'] = 'Pages Directory';
-$TEXT['MEDIA_DIRECTORY'] = 'Media Directory';
-$TEXT['FILE_MODE'] = 'File Mode';
-$TEXT['USER'] = 'User';
-$TEXT['OTHERS'] = 'Others';
-$TEXT['READ'] = 'Read';
-$TEXT['WRITE'] = 'Write';
-$TEXT['EXECUTE'] = 'Execute';
-$TEXT['SMART_LOGIN'] = 'Smart Login';
-$TEXT['REMEMBER_ME'] = 'Remember Me';
-$TEXT['FILESYSTEM_PERMISSIONS'] = 'Filesystem Permissions';
-$TEXT['DIRECTORIES'] = 'Directories';
-$TEXT['DIRECTORY_MODE'] = 'Directory Mode';
-$TEXT['LIST_OPTIONS'] = 'List Options';
-$TEXT['OPTION'] = 'Option';
-$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Allow Multiple Selections';
-$TEXT['TEXTFIELD'] = 'Textfield';
-$TEXT['TEXTAREA'] = 'Textarea';
-$TEXT['SELECT_BOX'] = 'Select Box';
-$TEXT['CHECKBOX_GROUP'] = 'Checkbox Group';
-$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button Group';
-$TEXT['SIZE'] = 'Size';
-$TEXT['DEFAULT_TEXT'] = 'Default Text';
-$TEXT['SEPERATOR'] = 'Seperator';
-$TEXT['BACK'] = 'Back';
-$TEXT['UNDER_CONSTRUCTION'] = 'Under Construction';
-$TEXT['MULTISELECT'] = 'Multi-select';
-$TEXT['SHORT_TEXT'] = 'Short Text';
-$TEXT['LONG_TEXT'] = 'Long Text';
-$TEXT['HOMEPAGE_REDIRECTION'] = 'Homepage Redirection';
-$TEXT['HEADING'] = 'Heading';
-$TEXT['MULTIPLE_MENUS'] = 'Multiple Menu\'s';
-$TEXT['REGISTERED'] = 'Registered';
-$TEXT['START'] = 'Start';
-$TEXT['SECTION_BLOCKS'] = 'Section Blocks';
-$TEXT['REGISTERED_VIEWERS'] = 'Registered Viewers';
-$TEXT['SUBMISSION_ID'] = 'Submission ID';
-$TEXT['SUBMISSIONS'] = 'Submissions';
-$TEXT['SUBMITTED'] = 'Submitted';
-$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Submissions Per Hour';
-$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Submissions Stored In Database';
-$TEXT['EMAIL_ADDRESS'] = 'Email Address';
-$TEXT['CUSTOM'] = 'Custom';
-$TEXT['ANONYMOUS'] = 'Anonymous';
-$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server Operating System';
-$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-writeable file permissions';
-$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix based';
-$TEXT['WINDOWS'] = 'Windows';
-$TEXT['HOME_FOLDER'] = 'Home Folder';
-$TEXT['HOME_FOLDERS'] = 'Home Folders';
-$TEXT['PAGE_TRASH'] = 'Page Trash';
-$TEXT['INLINE'] = 'In-line';
-$TEXT['SEPARATE'] = 'Separate';
-$TEXT['DELETED'] = 'Deleted';
-$TEXT['VIEW_DELETED_PAGES'] = 'View Deleted Pages';
-$TEXT['EMPTY_TRASH'] = 'Empty Trash';
-$TEXT['TRASH_EMPTIED'] = 'Trash Emptied';
-$TEXT['ADD_SECTION'] = 'Add Section';
-$TEXT['POST_HEADER'] = 'Post Header';
-$TEXT['POST_FOOTER'] = 'Post Footer';
-$TEXT['POSTS_PER_PAGE'] = 'Posts Per Page';
-$TEXT['RESIZE_IMAGE_TO'] = 'Resize Image To';
-$TEXT['UNLIMITED'] = 'Unlimited';
-$TEXT['OF'] = 'Of';
-$TEXT['OUT_OF'] = 'Out Of';
-$TEXT['NEXT'] = 'Next';
-$TEXT['PREVIOUS'] = 'Previous';
-$TEXT['NEXT_PAGE'] = 'Next Page';
-$TEXT['PREVIOUS_PAGE'] = 'Previous Page';
-$TEXT['ON'] = 'On';
-$TEXT['LAST_UPDATED_BY'] = 'Last Updated By';
-$TEXT['RESULTS_FOR'] = 'Results For';
-$TEXT['TIME'] = 'Time';
-$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
-$TEXT['WYSIWYG_EDITOR'] = "WYSIWYG Editor";
-$TEXT['SERVER_EMAIL'] = 'Server Email';
-$TEXT['MENU'] = 'Menu';
-$TEXT['MANAGE_GROUPS'] = 'Manage Groups';
-$TEXT['MANAGE_USERS'] = 'Manage Users';
-$TEXT['PAGE_LANGUAGES'] = 'Page Languages';
-$TEXT['HIDDEN'] = 'Hidden';
-$TEXT['MAIN'] = 'Main';
-$TEXT['RENAME_FILES_ON_UPLOAD'] = 'Rename Files On Upload';
-
-// Success/error messages
-$MESSAGE['FRONTEND']['SORRY_NO_VIEWING_PERMISSIONS'] = 'Sorry, you do not have permissions to view this page';
-
-$MESSAGE['ADMIN']['INSUFFICIENT_PRIVELLIGES'] = 'Insufficient privelliges to be here';
-
-$MESSAGE['LOGIN']['BOTH_BLANK'] = 'Please enter you username and password below';
-$MESSAGE['LOGIN']['USERNAME_BLANK'] = 'Please enter a username';
-$MESSAGE['LOGIN']['PASSWORD_BLANK'] = 'Please enter a password';
-$MESSAGE['LOGIN']['USERNAME_TOO_SHORT'] = 'Supplied username to short';
-$MESSAGE['LOGIN']['PASSWORD_TOO_SHORT'] = 'Supplied password to short';
-$MESSAGE['LOGIN']['USERNAME_TOO_LONG'] = 'Supplied username to long';
-$MESSAGE['LOGIN']['PASSWORD_TOO_LONG'] = 'Supplied password to long';
-$MESSAGE['LOGIN']['AUTHENTICATION_FAILED'] = 'Username or password incorrect';
-
-$MESSAGE['SIGNUP']['NO_EMAIL'] = 'You must enter an email address';
-
-$MESSAGE['FORGOT_PASS']['NO_DATA'] = 'Please enter your email address below';
-$MESSAGE['FORGOT_PASS']['EMAIL_NOT_FOUND'] = 'The email that you entered cannot be found in the database';
-$MESSAGE['FORGOT_PASS']['CANNOT_EMAIL'] = 'Unable to email password, please contact system administrator';
-$MESSAGE['FORGOT_PASS']['PASSWORD_RESET'] = 'Your username and password have been sent to your email address';
-$MESSAGE['FORGOT_PASS']['ALREADY_RESET'] = 'Password cannot be reset more than once per hour, sorry';
-
-$MESSAGE['START']['WELCOME_MESSAGE'] = 'Welcome to Website Baker Administration';
-$MESSAGE['START']['INSTALL_DIR_EXISTS'] = 'Warning, Installation Directory Still Exists!';
-$MESSAGE['START']['CURRENT_USER'] = 'You are currently logged in as:';
-
-$MESSAGE['SETTINGS']['UNABLE_OPEN_CONFIG'] = 'Unable to open the configuration file';
-$MESSAGE['SETTINGS']['UNABLE_WRITE_CONFIG'] = 'Cannot write to configuration file';
-$MESSAGE['SETTINGS']['SAVED'] = 'Settings saved successfully';
-$MESSAGE['SETTINGS']['MODE_SWITCH_WARNING'] = 'Please Note: Pressing this button resets all unsaved changes';
-$MESSAGE['SETTINGS']['WORLD_WRITEABLE_WARNING'] = 'Please note: this is only recommended for testing environments';
-
-$MESSAGE['USERS']['ADDED'] = 'User added successfully';
-$MESSAGE['USERS']['SAVED'] = 'User saved successfully';
-$MESSAGE['USERS']['DELETED'] = 'User deleted successfully';
-$MESSAGE['USERS']['NO_GROUP'] = 'No group was selected';
-$MESSAGE['USERS']['USERNAME_TOO_SHORT'] = 'The username you entered was too short';
-$MESSAGE['USERS']['PASSWORD_TOO_SHORT'] = 'The password you entered was too short';
-$MESSAGE['USERS']['PASSWORD_MISMATCH'] = 'The passwords you entered do not match';
-$MESSAGE['USERS']['INVALID_EMAIL'] = 'The email address you entered is invalid';
-$MESSAGE['USERS']['EMAIL_TAKEN'] = 'The email you entered is already in use';
-$MESSAGE['USERS']['USERNAME_TAKEN'] = 'The username you entered is already taken';
-$MESSAGE['USERS']['CHANGING_PASSWORD'] = 'Please note: You should only enter values in the above fields if you wish to change this users password';
-$MESSAGE['USERS']['CONFIRM_DELETE'] = 'Are you sure you want to delete the selected user?';
-
-$MESSAGE['GROUPS']['ADDED'] = 'Group added successfully';
-$MESSAGE['GROUPS']['SAVED'] = 'Group saved successfully';
-$MESSAGE['GROUPS']['DELETED'] = 'Group deleted successfully';
-$MESSAGE['GROUPS']['GROUP_NAME_BLANK'] = 'Group name is blank';
-$MESSAGE['GROUPS']['CONFIRM_DELETE'] = 'Are you sure you want to delete the selected group (and any users that belong to it)?';
-$MESSAGE['GROUPS']['NO_GROUPS_FOUND'] = 'No groups found';
-$MESSAGE['GROUPS']['GROUP_NAME_EXISTS'] = 'Group name already exists';
-
-$MESSAGE['PREFERENCES']['DETAILS_SAVED'] = 'Details saved successfully';
-$MESSAGE['PREFERENCES']['EMAIL_UPDATED'] = 'Email updated successfully';
-$MESSAGE['PREFERENCES']['CURRENT_PASSWORD_INCORRECT'] = 'The (current) password you entered is incorrect';
-$MESSAGE['PREFERENCES']['PASSWORD_CHANGED'] = 'Password changed successfully';
-
-$MESSAGE['TEMPLATES']['CHANGE_TEMPLATE_NOTICE'] = 'Please note: to change the template you must go to the Settings section';
-
-$MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH'] = 'Cannot include ../ in the folder name';
-$MESSAGE['MEDIA']['DIR_DOES_NOT_EXIST'] = 'Directory does not exist';
-$MESSAGE['MEDIA']['TARGET_DOT_DOT_SLASH'] = 'Cannot have ../ in the folder target';
-$MESSAGE['MEDIA']['NAME_DOT_DOT_SLASH'] = 'Cannot include ../ in the name';
-$MESSAGE['MEDIA']['NAME_INDEX_PHP'] = 'Cannot use index.php as the name';
-$MESSAGE['MEDIA']['NONE_FOUND'] = 'No media found in the current folder';
-$MESSAGE['MEDIA']['FILE_NOT_FOUND'] = 'File not found';
-$MESSAGE['MEDIA']['DELETED_FILE'] = 'File deleted successfully';
-$MESSAGE['MEDIA']['DELETED_DIR'] = 'Folder deleted successfully';
-$MESSAGE['MEDIA']['CONFIRM_DELETE'] = 'Are you sure you want to delete the following file or folder?';
-$MESSAGE['MEDIA']['CANNOT_DELETE_FILE'] = 'Cannot delete the selected file';
-$MESSAGE['MEDIA']['CANNOT_DELETE_DIR'] = 'Cannot delete the selected folder';
-$MESSAGE['MEDIA']['BLANK_NAME'] = 'You did not enter a new name';
-$MESSAGE['MEDIA']['BLANK_EXTENSION'] = 'You did not enter a file extension';
-$MESSAGE['MEDIA']['RENAMED'] = 'Rename successful';
-$MESSAGE['MEDIA']['CANNOT_RENAME'] = 'Rename unsuccessful';
-$MESSAGE['MEDIA']['FILE_EXISTS'] = 'A file matching the name you entered already exists';
-$MESSAGE['MEDIA']['DIR_EXISTS'] = 'A folder matching the name you entered already exists';
-$MESSAGE['MEDIA']['DIR_MADE'] = 'Folder created successfully';
-$MESSAGE['MEDIA']['DIR_NOT_MADE'] = 'Unable to create folder';
-$MESSAGE['MEDIA']['SINGLE_UPLOADED'] = ' file was successfully uploaded';
-$MESSAGE['MEDIA']['UPLOADED'] = ' files were successfully uploaded';
-
-$MESSAGE['PAGES']['ADDED'] = 'Page added successfully';
-$MESSAGE['PAGES']['ADDED_HEADING'] = 'Page heading added successfully';
-$MESSAGE['PAGES']['PAGE_EXISTS'] = 'A page with the same or similar title exists';
-$MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE'] = 'Error creating access file in the /pages directory (insufficient privileges)';
-$MESSAGE['PAGES']['CANNOT_DELETE_ACCESS_FILE'] = 'Error deleting access file in the /pages directory (insufficient privileges)';
-$MESSAGE['PAGES']['NOT_FOUND'] = 'Page not found';
-$MESSAGE['PAGES']['SAVED'] = 'Page saved successfully';
-$MESSAGE['PAGES']['SAVED_SETTINGS'] = 'Page settings saved successfully';
-$MESSAGE['PAGES']['NOT_SAVED'] = 'Error saving page';
-$MESSAGE['PAGES']['DELETE_CONFIRM'] = 'Are you sure you want to delete the selected page (and all of its sub-pages)';
-$MESSAGE['PAGES']['DELETED'] = 'Page deleted successfully';
-$MESSAGE['PAGES']['RESTORED'] = 'Page restored successfully';
-$MESSAGE['PAGES']['BLANK_PAGE_TITLE'] = 'Please enter a page title';
-$MESSAGE['PAGES']['BLANK_MENU_TITLE'] = 'Please enter a menu title';
-$MESSAGE['PAGES']['REORDERED'] = 'Page re-ordered successfully';
-$MESSAGE['PAGES']['CANNOT_REORDER'] = 'Error re-ordering page';
-$MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS'] = 'You do not have permissions to modify this page';
-$MESSAGE['PAGES']['INTRO_NOT_WRITABLE'] = 'Cannot write to file /pages/intro.php (insufficient priviliges)';
-$MESSAGE['PAGES']['INTRO_SAVED'] = 'Intro page saved successfully';
-$MESSAGE['PAGES']['LAST_MODIFIED'] = 'Last modification by';
-$MESSAGE['PAGES']['INTRO_LINK'] = 'Click HERE to modify the intro page';
-$MESSAGE['PAGES']['SECTIONS_PROPERTIES_SAVED'] = 'Section properties saved successfully';
-$MESSAGE['PAGES']['RETURN_TO_PAGES'] = 'Return to pages';
-
-$MESSAGE['GENERIC']['FILL_IN_ALL'] = 'Please go back and fill-in all fields';
-$MESSAGE['GENERIC']['FILE_TYPE'] = 'Please note that the file you upload must be of the following format:';
-$MESSAGE['GENERIC']['FILE_TYPES'] = 'Please note that the file you upload must be in one of the following formats:';
-$MESSAGE['GENERIC']['CANNOT_UPLOAD'] = 'Cannot upload file';
-$MESSAGE['GENERIC']['ALREADY_INSTALLED'] = 'Already installed';
-$MESSAGE['GENERIC']['NOT_INSTALLED'] = 'Not installed';
-$MESSAGE['GENERIC']['CANNOT_UNINSTALL'] = 'Cannot uninstall';
-$MESSAGE['GENERIC']['CANNOT_UNZIP'] = 'Cannot unzip file';
-$MESSAGE['GENERIC']['INSTALLED'] = 'Installed successfully';
-$MESSAGE['GENERIC']['INSTALLED'] = 'Upgraded successfully';
-$MESSAGE['GENERIC']['UNINSTALLED'] = 'Uninstalled successfully';
-$MESSAGE['GENERIC']['BAD_PERMISSIONS'] = 'Unable to write to the target directory';
-$MESSAGE['GENERIC']['INVALID'] = 'The file you uploaded is invalid';
-$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE'] = 'Cannot Uninstall: the selected file is in use';
-$MESSAGE['GENERIC']['WEBSITE_UNDER_CONTRUCTION'] = 'Website Under Construction';
-$MESSAGE['GENERIC']['PLEASE_CHECK_BACK_SOON'] = 'Please check back soon...';
-
-$MESSAGE['MOD_FORM']['REQUIRED_FIELDS'] = 'You must enter details for the following fields';
-$MESSAGE['MOD_FORM']['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
-
-?>

Property changes on: trunk/addons/trunk/languages/EN.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/uninstall.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/uninstall.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/uninstall.php	(nonexistent)
@@ -1,9 +0,0 @@
-<?php
-
-// Must include code to stop this file being access directly
-if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-
-// Delete the editor directory
-rm_full_dir(WB_PATH.'/modules/htmlarea/htmlarea');
-
-?>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/index.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/index.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/index.html	(nonexistent)
@@ -1,199 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
-<html>
-  <head>
-    <title>HTMLArea -- the free, customizable online editor</title>
-
-    <style type="text/css">
-      html, body { font-family: georgia,"times new roman",serif; background-color: #fff; color: #000; }
-      .label { text-align: right; padding-right: 0.3em; }
-      .bline { border-bottom: 1px solid #aaa; }
-    </style>
-  </head>
-
-  <body>
-    <div style="float: right; border: 1px solid #aaa; background-color: #eee; padding: 3px; margin-left: 10px; margin-bottom: 10px;">
-      <table cellspacing="0" cellpadding="0" border="0">
-        <tr>
-          <td class="label">Version:</td><td>3.0</td>
-        </tr>
-        <tr>
-          <td class="label">Release:</td><td>rc1 (<a href="release-notes.html">release notes</a>)</td>
-        </tr>
-        <tr>
-          <td class="label bline">Compiled at:</td><td class="bline">Mar  1, 2004 [19:37] GMT</td>
-        </tr>
-        <tr>
-          <td class="label">SourceForge page:</td><td><a href="http://sf.net/projects/itools-htmlarea/">http://sf.net/projects/itools-htmlarea/</a></td>
-      </table>
-    </div>
-    <h1>HTMLArea -- the free<br/>customizable online editor</h1>
-
-    <p>
-      HTMLArea is a free, customizable online editor.  It works inside your
-      browser.  It uses a non-standard feature implemented in Internet
-      Explorer 5.5 or better for Windows and Mozilla 1.3 or better (any
-      platform), therefore it will only work in one of these browsers.
-    </p>
-
-    <p>
-      HTMLArea is copyright <a
-      href="http://interactivetools.com">InteractiveTools.com</a> and <a
-      href="http://dynarch.com">Dynarch.com</a> and it is
-      released under a BSD-style license.  HTMLArea is created and developed
-      upto version 2.03 by InteractiveTools.com.  Version 3.0 developed by
-      <a href="http://dynarch.com/mishoo/">Mihai Bazon</a> for
-      InteractiveTools.  It contains code sponsored by third-party companies as well.
-      Please see our About Box for details about who sponsored what plugins.
-    </p>
-
-    <h2>Online demos</h2>
-
-    <ul>
-
-      <li><a href="examples/core.html">HTMLArea standard</a> -- contains the core
-        editor.</li>
-
-      <li><a href="examples/table-operations.html">HTMLArea + tables</a> --
-        loads the <tt>TableOperations</tt> plugin which provides some extra
-        editing features for tables.</li>
-
-      <li><a href="examples/spell-checker.html">HTMLArea + spell checher</a>
-        -- loads the <tt>SpellChecker</tt> plugin which provides what its
-        name says: a spell checker.  This one requires additional support on
-        the server-side.</li>
-
-      <li><a href="examples/full-page.html">HTMLArea Full HTML Editor</a> --
-        loads the <tt>FullPage</tt> plugin which allows you to edit a full
-        HTML page, including &lt;title&gt;, &lt;!DOCTYPE...&gt; and some
-        other options.</li>
-
-      <li><a href="examples/context-menu.html">HTMLArea with Context
-          Menu</a> -- this plugin provides a nice and useful context menu.</li>
-
-      <li><a href="examples/fully-loaded.html">HTMLArea fully loaded</a> --
-        all of the above. ;-)</li>
-
-    </ul>
-
-    <h2>Installation</h2>
-
-    <p>
-      Installation is (or should be) easy.  You need to unpack the ZIP file
-      in a directory accessible through your webserver.  Supposing you
-      unpack in your <tt>DocumentRoot</tt> and your <tt>DocumentRoot</tt> is
-      <tt>/var/www/html</tt> as in a standard RedHat installation, you need
-      to acomplish the following steps: (the example is for a Unix-like
-      operating system)
-    </p>
-
-    <pre style="margin-left: 2em"
->
-cd /var/www/html
-unzip /path/to/archive/HTMLArea-3.0-rc1.zip
-mv HTMLArea-3.0-rc1 htmlarea
-find htmlarea/ -type f -exec chmod 644 {} \;
-find htmlarea/ -type d -exec chmod 755 {} \;
-find htmlarea/ -name "*.cgi" -exec chmod 755 {} \;</pre>
-
-    <p>
-      <strong>Notes.</strong> You may chose to symlink "htmlarea" to "HTMLArea-3.0-rc1", in which case your server needs to be configured to
-      "<tt>FollowSymLinks</tt>".  You need to make sure that *.cgi files are
-      interpreted as CGI scripts.  If you want to use the SpellChecker
-      plugin you need to have a recent version of Perl installed (I
-      recommend 5.8.0) on the server, and the module Text::Aspell, available
-      from CPAN.  More info in "<a
-      href="plugins/SpellChecker/readme-tech.html">plugins/SpellChecker/readme-tech.html</a>".
-    </p>
-
-    <p>About how to setup your pages to use the editor, please read the
-      [outdated yet generally valid] <a
-        href="reference.html">documentation</a>.</p>
-
-    <h2>Status and links</h2>
-
-    <p>HTMLArea has reached version 3.0.  As of this version, it
-      supports:</p>
-
-    <ul>
-
-      <li>Customizable toolbar</li>
-
-      <li>Easy internationalization</li>
-
-      <li>Plugin-based infrastructure</li>
-
-      <li>Delivers W3-compliant HTML (with few exceptions)</li>
-
-      <li>Has a subset of Microsoft Word's keyboard shortcuts</li>
-
-      <li>Full-screen editor</li>
-
-      <li>Advanced table operations (by external plugin
-        "TableOperations")</li>
-
-      <li>Spell checker (by external plugin "SpellChecker")</li>
-
-      <li>probably more... ;-)</li>
-
-    </ul>
-
-    <p>We have a <a
-    href="http://sourceforge.net/projects/itools-htmlarea/">project page</a>
-    at <a href="http://sourceforge.net">SourceForge.net</a>.  There you can
-    also find out <a href="http://sourceforge.net/cvs/?group_id=69750">how
-    to retrieve the code from CVS</a>, or you can <a
-    href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/itools-htmlarea">browse
-    the CVS online</a>.  We also have a <a
-    href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug
-    system</a>, a <a
-    href="http://sourceforge.net/tracker/?atid=525658&group_id=69750&func=browse">patch
-    tracking system</a> and a <a
-    href="http://sourceforge.net/tracker/?atid=525659&group_id=69750&func=browse">feature
-    request page</a>.</p>
-
-    <p>We invite you to say everything you want about HTMLArea <a
-    href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">on the
-    forums</a> at InteractiveTools.com.  There you should also find the
-    latest news.</p>
-
-    <p>Sometimes I post news about the latest developments on <a
-    href="http://dynarch.com/mishoo/">my personal homepage</a>.</p>
-
-    <h2>"It doesn't work, what's wrong?"</h2>
-
-    <p>If it doesn't work, you have several options:</p>
-
-    <ul>
-
-      <li>Post a message to the forum.  Describe your problem in as much
-      detail as possible.  Include errors you might find in the JavaScript
-      console (if you are a Mozilla user), or errors displayed by IE (though
-      they're most of the times useless).</li>
-
-      <li>If you're positive that you discovered a bug in HTMLArea then feel
-      free to fill a bug report in our bug system.  If you have the time you
-      should check to see if a similar bug was reported or not; it might be
-      fixed already in the CVS ;-) If you're positive that a similar bug was
-      not yet reported, do fill a bug report and please include as much
-      detail as possible, such as your browser, OS, errors from JavaScript
-      console, etc.</li>
-
-      <li>If you want a new feature to be implemented, post it on the
-      features request and someone will hopefully take care of it.</li>
-
-    </ul>
-
-    <p>You can <a href="mailto:mishoo@infoiasi.ro">contact me directly</a>
-    <em>only</em> if you want to pay me for implementing custom features to
-    HTMLArea.  If you want to sponsor these features (that is, allow them to
-    get back into the public HTMLArea distribution) I'll be cheaper. ;-)</p>
-
-    <hr />
-    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
-<!-- Created: Sun Aug  3 14:11:26 EEST 2003 -->
-<!-- hhmts start --> Last modified: Wed Jan 28 11:54:47 EET 2004 <!-- hhmts end -->
-<!-- doc-lang: English -->
-  </body>
-</html>
-
-
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/reference.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/reference.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/reference.html	(nonexistent)
@@ -1,523 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
-<html> <head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>HTMLArea-3.0 Reference</title>
-
-<style type="text/css">
-  @import url(htmlarea.css);
-  body { font: 14px verdana,sans-serif; background: #fff; color: #000; }
-  h1, h2 { font-family:tahoma,sans-serif; }
-  h1 { border-bottom: 2px solid #000; }
-  h2 { border-bottom: 1px solid #aaa; }
-  h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; }
-  h4 { font-size: 90%; margin-left: 1em; }
-  acronym { border-bottom: 1px dotted #063; color: #063; }
-  p { margin-left: 2em; margin-top: 0.3em; }
-  li p { margin-left: 0px; }
-  .abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;}
-  li { margin-left: 2em; }
-  em { color: #042; }
-  a { color: #00f; }
-  a:hover { color: #f00; }
-  a:active { color: #f80; }
-  span.browser { font-weight: bold; color: #864; }
-  .fixme { font-size: 20px; font-weight: bold; color: red; background: #fab;
-padding: 5px; text-align: center; }
-  .code {
-   background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em;
-   font-family: fixed,"lucidux mono","andale mono","courier new",monospace;
-  }
-  .note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; }
-  .warning { color: #a00; }
-
-.string {
-  color: #06c;
-} /* font-lock-string-face */
-.comment {
-  color: #840;
-} /* font-lock-comment-face */
-.variable-name {
-  color: #000;
-} /* font-lock-variable-name-face */
-.type {
-  color: #008;
-  font-weight: bold;
-} /* font-lock-type-face */
-.reference {
-  color: #048;
-} /* font-lock-reference-face */
-.preprocessor {
-  color: #808;
-} /* font-lock-preprocessor-face */
-.keyword {
-  color: #00f;
-  font-weight: bold;
-} /* font-lock-keyword-face */
-.function-name {
-  color: #044;
-} /* font-lock-function-name-face */
-.html-tag {
-  font-weight: bold;
-} /* html-tag-face */
-.html-helper-italic {
-  font-style: italic;
-} /* html-helper-italic-face */
-.html-helper-bold {
-  font-weight: bold;
-} /* html-helper-bold-face */
-
-</style>
-
-<script type="text/javascript">
-  _editor_url = './';
-  _editor_lang = 'en';
-</script>
-<script type="text/javascript" src="htmlarea.js"></script>
-<script type="text/javascript" src="dialog.js"></script>
-<script tyle="text/javascript" src="lang/en.js"></script>
-
-</head>
-
-<body onload="HTMLArea.replace('TA')">
-
-
-<h1>HTMLArea-3.0 Documentation</h1>
-
-<div class="abstract" style="color: red; font-weight: bold">
-
-      This documentation contains valid information, but is outdated in the
-      terms that it does not covers all the features of HTMLArea.  A new
-      documentation project will be started, based on LaTeX.
-
-</div>
-
-
-<h2>Introduction</h2>
-
-<h3>What is HTMLArea?</h3>
-
-<p>HTMLArea is a free <acronym title="What You See Is What You Get"
->WYSIWYG</acronym> editor replacement for <code>&lt;textarea&gt;</code>
-fields.  By adding a few simple lines of JavaScript code to your web page
-you can replace a regular textarea with a rich text editor that lets your
-users do the following:</p>
-
-<ul>
-  <li>Format text to be bold, italicized, or underlined.</li>
-  <li>Change the face, size, style and color.</li>
-  <li>Left, center, or right-justify paragraphs.</li>
-  <li>Make bulleted or numbered lists.</li>
-  <li>Indent or un-indent paragraphs.</li>
-  <li>Insert a horizontal line.</li>
-  <li>Insert hyperlinks and images.</li>
-  <li>View the raw HTML source of what they're editing.</li>
-  <li>and much more...</li>
-</ul>
-
-<p>Some of the interesting features of HTMLArea that set's it apart from
-other web based WYSIWYG editors are as follows:</p>
-
-<ul>
-  <li>It's lightweight, fast loading and can transform a regular textarea
-  into a rich-text editor with a single line of JavaScript.</li>
-  <li>Generates clean, valid HTML.</li>
-  <li>It degrades gracefully to older or non-supported browsers
-  (they get the original textarea field).</li>
-  <li>It's free and can be incorporated into any free or commercial
-  program.</li>
-  <li>It works with any server-side languages (ASP, PHP, Perl, Java,
-  etc).</li>
-  <li>It's written in JavaScript and can be easily viewed, modified or
-  extended.</li>
-  <li>It remembers entered content when a user navigates away and then hits
-  "back" in their browser.</li>
-  <li>Since it replaces existing textareas it doesn't require a lot of code
-  to add it to your pages (just one line).</li>
-  <li>Did we mention it was free? ;-)</li>
-</ul>
-
-<h3>Is it really free?  What's the catch?</h3>
-
-<p>Yes! It's really free. You can use it, modify it, distribute it with your
-software, or do just about anything you like with it.</p>
-
-<h3>What are the browser requirements?</h3>
-
-<p>HTMLArea requires <span class="browser"><a
-href="http://www.microsoft.com/ie">Internet Explorer</a> &gt;= 5.5</span>
-(Windows only), or <span class="browser"><a
-href="http://mozilla.org">Mozilla</a> &gt;= 1.3-Beta</span> on any platform.
-Any browser based on <a href="http://mozilla.org/newlayout">Gecko</a> will
-also work, provided that Gecko version is at least the one included in
-Mozilla-1.3-Beta (for example, <a
-href="http://galeon.sf.net">Galeon-1.2.8</a>).  However, it degrades
-gracefully to other browsers. They will get a regular textarea field
-instead of a WYSIWYG editor.</p>
-
-<h3>Can I see an example of what it looks like?</h3>
-
-<p>Just make sure you're using one of the browsers mentioned above and see
-below.</p>
-
-<form onsubmit="return false;">
-<textarea id="TA" style="width: 100%; height: 15em;">
-<p>Here is some sample text in textarea that's been transformed with <font
-color="#0000CC"><b>HTMLArea</b></font>.<br />
-You can make things <b>bold</b>, <i>italic</i>, <u>underline</u>.  You can change the
-<font size="3">size</font> and <b><font color="#0000CC">c</font><font color="#00CC00">o</font><font color="#00CCCC">l</font><font color="#CC0000">o</font><font color="#CC00CC">r</font><font color="#CCCC00">s</font><font color="#CCCCCC">!</font></b>
-And lots more...</p>
-
-<p align="center"><font size="4" color="#ff0000"><b><u>Try HTMLArea
-today!</u></b></font><br /></p>
-</textarea>
-</form>
-
-<h3>Where can I find out more info, download the latest version and talk to
-other HTMLArea users?</h3>
-
-<p>You can find out more about HTMLArea and download the latest version on
-the <a href="http://dynarch.com/htmlarea/">HTMLArea
-homepage</a> and you can talk to other HTMLArea users and post any comments
-or suggestions you have in the <a
-href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/"
->HTMLArea forum</a>.</p>
-
-<h2>Keyboard shortcuts</h2>
-
-<p>The editor provides the following key combinations:</p>
-
-<ul>
-  <li>CTRL-A -- select all</li>
-  <li>CTRL-B -- bold</li>
-  <li>CTRL-I -- italic</li>
-  <li>CTRL-U -- underline</li>
-  <li>CTRL-S -- strikethrough</li>
-  <li>CTRL-L -- justify left</li>
-  <li>CTRL-E -- justify center</li>
-  <li>CTRL-R -- justify right</li>
-  <li>CTRL-J -- justify full</li>
-  <li>CTRL-1 .. CTRL-6 -- headings (&lt;h1&gt; .. &lt;h6&gt;)</li>
-  <li>CTRL-0 (zero) -- clean content pasted from Word</li>
-</ul>
-
-<h2>Installation</h2>
-
-<h3>How do I add HTMLArea to my web page?</h3>
-
-<p>It's easy.  First you need to upload HTMLArea files to your website.
-Just follow these steps.</p>
-
-<ol>
-  <li>Download the latest version from the <a
-  href="http://www.interactivetools.com/products/htmlarea/">htmlArea
-  homepage</a>.</li>
-  <li>Unzip the files onto your local computer (making sure to maintain the
-  directory structure contained in the zip).</li>
-  <li>Create a new folder on your website called /htmlarea/ (make sure it's
-  NOT inside the cgi-bin).</li>
-  <li>Transfer all the HTMLArea files from your local computer into the
-  /htmlarea/ folder on your website.</li>
-  <li>Open the example page /htmlarea/examples/core.html with your browser to make
-  sure everything works.</li>
-</ol>
-
-<p>Once htmlArea is on your website all you need to do is add some
-JavaScript to any pages that you want to add WYSIWYG editors to.  Here's how
-to do that.</p>
-
-<ol>
-
-  <li>Define some global variables.  "_editor_url" has to be the absolute
-  URL where HTMLArea resides within your
-  website; as we discussed, this would be “/htmlarea/”.  "_editor_lang" must
-  be the language code in which you want HTMLArea to appear.  This defaults
-  to "en" (English); for a list of supported languages, please look into
-  the "lang" subdirectory in the distribution.
-  <pre class="code"
-  ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span><span class="function-name">&gt;</span>
-   _editor_url = <span class="string">&quot;/htmlarea/&quot;</span>;
-   _editor_lang = <span class="string">&quot;en&quot;</span>;
-<span class="function-name">&lt;</span><span class="html-tag">/script</span><span class="function-name">&gt;</span></pre>
-
-  <li>Include the "htmlarea.js" script:
-  <pre class="code"
-  ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/htmlarea.js&quot;</span><span class="function-name">&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
-  </li>
-
-  <li><p>If you want to change all your &lt;textarea&gt;-s into
-  HTMLArea-s then you can use the simplest way to create HTMLArea:</p>
-  <pre class="code"
-  ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">defer=</span><span class="string">&quot;1&quot;</span><span class="function-name">&gt;</span>
-    HTMLArea.replaceAll<span class="function-name">()</span>;
-<span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
-  <p><span class="note">Note:</span> you can also add the
-  <code>HTMLArea.replaceAll()</code> code to the <code>onload</code>
-  event handler for the <code>body</code> element, if you find it more appropriate.</p>
-
-  <p>A different approach, if you have more than one textarea and only want
-  to change one of them, is to use <code>HTMLArea.replace("id")</code> --
-  pass the <code>id</code> of your textarea.  Do not use the
-  <code>name</code> attribute anymore, it's not a standard solution!</p>
-
-</ol>
-
-<p>This section applies to HTMLArea-3.0 release candidate 1 or later; prior
-to this version, one needed to include more files; however, now HTMLArea is
-able to include other files too (such as stylesheet, language definition
-file, etc.) so you only need to define the editor path and load
-"htmlarea.js".  Nice, eh? ;-)</p>
-
-<h3>I want to change the editor settings, how do I do that?</h3>
-
-<p>While it's true that all you need is one line of JavaScript to create an
-htmlArea WYSIWYG editor, you can also specify more config settings in the
-code to control how the editor works and looks.  Here's an example of some of
-the available settings:</p>
-
-<pre class="code"
-><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config(); <span class="comment">// create a new configuration object
-</span>                                    <span class="comment">// having all the default values
-</span>config.width = '<span class="string">90%</span>';
-config.height = '<span class="string">200px</span>';
-
-<span class="comment">// the following sets a style for the page body (black text on yellow page)
-// and makes all paragraphs be bold by default
-</span>config.pageStyle =
-  '<span class="string">body { background-color: yellow; color: black; font-family: verdana,sans-serif } </span>' +
-  '<span class="string">p { font-width: bold; } </span>';
-
-<span class="comment">// the following replaces the textarea with the given id with a new
-// HTMLArea object having the specified configuration
-</span>HTMLArea.replace('<span class="string">id</span>', config);</pre>
-
-<p><span class="warning">Important:</span> It's recommended that you add
-custom features and configuration to a separate file.  This will ensure you
-that when we release a new official version of HTMLArea you'll have less
-trouble upgrading it.</p>
-
-<h3>How do I customize the toolbar?</h3>
-
-<p>Using the configuration object introduced above allows you to completely
-control what the toolbar contains.  Following is an example of a one-line,
-customized toolbar, much simpler than the default one:</p>
-
-<pre class="code"
-><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
-config.toolbar = [
-  ['<span class="string">fontname</span>', '<span class="string">space</span>',
-   '<span class="string">fontsize</span>', '<span class="string">space</span>',
-   '<span class="string">formatblock</span>', '<span class="string">space</span>',
-   '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>']
-];
-HTMLArea.replace('<span class="string">id</span>', config);</pre>
-
-<p>The toolbar is an Array of Array objects.  Each array in the toolbar
-defines a new line.  The default toolbar looks like this:</p>
-
-<pre class="code"
->config.toolbar = [
-[ &quot;<span class="string">fontname</span>&quot;, &quot;<span class="string">space</span>&quot;,
-  &quot;<span class="string">fontsize</span>&quot;, &quot;<span class="string">space</span>&quot;,
-  &quot;<span class="string">formatblock</span>&quot;, &quot;<span class="string">space</span>&quot;,
-  &quot;<span class="string">bold</span>&quot;, &quot;<span class="string">italic</span>&quot;, &quot;<span class="string">underline</span>&quot;, &quot;<span class="string">separator</span>&quot;,
-  &quot;<span class="string">strikethrough</span>&quot;, &quot;<span class="string">subscript</span>&quot;, &quot;<span class="string">superscript</span>&quot;, &quot;<span class="string">separator</span>&quot;,
-  &quot;<span class="string">copy</span>&quot;, &quot;<span class="string">cut</span>&quot;, &quot;<span class="string">paste</span>&quot;, &quot;<span class="string">space</span>&quot;, &quot;<span class="string">undo</span>&quot;, &quot;<span class="string">redo</span>&quot; ],
-		
-[ &quot;<span class="string">justifyleft</span>&quot;, &quot;<span class="string">justifycenter</span>&quot;, &quot;<span class="string">justifyright</span>&quot;, &quot;<span class="string">justifyfull</span>&quot;, &quot;<span class="string">separator</span>&quot;,
-  &quot;<span class="string">insertorderedlist</span>&quot;, &quot;<span class="string">insertunorderedlist</span>&quot;, &quot;<span class="string">outdent</span>&quot;, &quot;<span class="string">indent</span>&quot;, &quot;<span class="string">separator</span>&quot;,
-  &quot;<span class="string">forecolor</span>&quot;, &quot;<span class="string">hilitecolor</span>&quot;, &quot;<span class="string">textindicator</span>&quot;, &quot;<span class="string">separator</span>&quot;,
-  &quot;<span class="string">inserthorizontalrule</span>&quot;, &quot;<span class="string">createlink</span>&quot;, &quot;<span class="string">insertimage</span>&quot;, &quot;<span class="string">inserttable</span>&quot;, &quot;<span class="string">htmlmode</span>&quot;, &quot;<span class="string">separator</span>&quot;,
-  &quot;<span class="string">popupeditor</span>&quot;, &quot;<span class="string">separator</span>&quot;, &quot;<span class="string">showhelp</span>&quot;, &quot;<span class="string">about</span>&quot; ]
-];</pre>
-
-<p>Except three strings, all others in the examples above need to be defined
-in the <code>config.btnList</code> object (detailed a bit later in this
-document).  The three exceptions are: 'space', 'separator' and 'linebreak'.
-These three have the following meaning, and need not be present in
-<code>btnList</code>:</p>
-
-<ul>
-  <li>'space' -- Inserts a space of 5 pixels (the width is configurable by external
-  <acronym title="Cascading Style Sheets">CSS</acronym>) at the current
-  position in the toolbar.</li>
-  <li>'separator' -- Inserts a small vertical separator, for visually grouping related
-  buttons.</li>
-  <li>'linebreak' -- Starts a new line in the toolbar.  Subsequent controls will be
-  inserted on the new line.</li>
-</ul>
-
-<p><span class="warning">Important:</span> It's recommended that you add
-custom features and configuration to a separate file.  This will ensure you
-that when we release a new official version of HTMLArea you'll have less
-trouble upgrading it.</p>
-
-<h3>How do I create custom buttons?</h3>
-
-<p>By design, the toolbar is easily extensible.  For adding a custom button
-one needs to follow two steps.</p>
-
-<h4 id="regbtn">1. Register the button in <code>config.btnList</code>.</h4>
-
-<p>For each button in the toolbar, HTMLArea needs to know the following
-information:</p>
-<ul>
-  <li>a name for it (we call it the ID of the button);</li>
-  <li>the path to an image to be displayed in the toolbar;</li>
-  <li>a tooltip for it;</li>
-  <li>whether the button is enabled or not in text mode;</li>
-  <li>what to do when the button is clicked;</li>
-</ul>
-<p>You need to provide all this information for registering a new button
-too.  The button ID can be any string identifier and it's used when
-defining the toolbar, as you saw above.  We recommend starting
-it with "my-" so that it won't clash with the standard ID-s (those from
-the default toolbar).</p>
-
-<p class="note">Register button example #1</p>
-
-<pre class="code"
-><span class="comment">// get a default configuration
-</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
-<span class="comment">// register the new button using Config.registerButton.
-// parameters:        button ID,   tooltip,          image,           textMode,
-</span>config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Highlight text</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>,
-<span class="comment">// function that gets called when the button is clicked
-</span>  <span class="keyword">function</span>(editor, id) {
-    editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
-  }
-);</pre>
-
-<p>An alternate way of calling registerButton is exemplified above.  Though
-the code might be a little bit larger, using this form makes your code more
-maintainable.  It doesn't even needs comments as it's pretty clear.</p>
-
-<p class="note">Register button example #2</p>
-
-<pre class="code"
-><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
-config.registerButton({
-  id        : &quot;<span class="string">my-hilite</span>&quot;,
-  tooltip   : &quot;<span class="string">Highlight text</span>&quot;,
-  image     : &quot;<span class="string">my-hilite.gif</span>&quot;,
-  textMode  : <span class="keyword">false</span>,
-  action    : <span class="keyword">function</span>(editor, id) {
-                editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
-              }
-});</pre>
-
-<p>You might notice that the "action" function receives two parameters:
-<b>editor</b> and <b>id</b>.  In the examples above we only used the
-<b>editor</b> parameter.  But it could be helpful for you to understand
-both:</p>
-
-<ul>
-  <li><b>editor</b> is a reference to the HTMLArea object.  Since our entire
-  code now has an <acronym title="Object Oriented Programming">OOP</acronym>-like
-  design, you need to have a reference to
-  the editor object in order to do things with it.  In previous versions of
-  HTMLArea, in order to identify the object an ID was used -- the ID of the
-  HTML element.  In this version ID-s are no longer necessary.</li>
-
-  <li><b>id</b> is the button ID.  Wondering why is this useful?  Well, you
-  could use the same handler function (presuming that it's not an anonymous
-  function like in the examples above) for more buttons.  You can <a
-  href="#btnex">see an example</a> a bit later in this document.</li>
-</ul>
-
-<h4>2. Inserting it into the toolbar</h4>
-
-<p>At this step you need to specify where in the toolbar to insert the
-button, or just create the whole toolbar again as you saw in the previous
-section.  You use the button ID, as shown in the examples of customizing the
-toolbar in the previous section.</p>
-
-<p>For the sake of completion, following there are another examples.</p>
-
-<p class="note">Append your button to the default toolbar</p>
-
-<pre class="code"
->config.toolbar.push([ &quot;<span class="string">my-hilite</span>&quot; ]);</pre>
-
-<p class="note">Customized toolbar</p>
-
-<pre class="code"
->config.toolbar = [
-  ['<span class="string">fontname</span>', '<span class="string">space</span>',
-   '<span class="string">fontsize</span>', '<span class="string">space</span>',
-   '<span class="string">formatblock</span>', '<span class="string">space</span>',
-   '<span class="string">separator</span>', '<span class="string">my-hilite</span>', '<span class="string">separator</span>', '<span class="string">space</span>', <span class="comment">// here's your button
-</span>   '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>', '<span class="string">space</span>']
-];</pre>
-
-<p><span class="note">Note:</span> in the example above our new button is
-between two vertical separators.  But this is by no means required.  You can
-put it wherever you like.  Once registered in the btnList (<a
-href="#regbtn">step 1</a>) your custom button behaves just like a default
-button.</p>
-
-<p><span class="warning">Important:</span> It's recommended that you add
-custom features and configuration to a separate file.  This will ensure you
-that when we release a new official version of HTMLArea you'll have less
-trouble upgrading it.</p>
-
-<h4 id="btnex">A complete example</h4>
-
-<p>Please note that it is by no means necessary to include the following
-code into the htmlarea.js file.  On the contrary, it might not work there.
-The configuration system is designed such that you can always customize the
-editor <em>from outside files</em>, thus keeping the htmlarea.js file
-intact.  This will make it easy for you to upgrade your HTMLArea when we
-release a new official version.  OK, I promise it's the last time I said
-this. ;)</p>
-
-<pre class="code"
-><span class="comment">// All our custom buttons will call this function when clicked.
-// We use the <b>buttonId</b> parameter to determine what button
-// triggered the call.
-</span><span class="keyword">function</span> <span class="function-name">clickHandler</span>(editor, buttonId) {
-  <span class="keyword">switch</span> (buttonId) {
-    <span class="keyword">case</span> &quot;<span class="string">my-toc</span>&quot;:
-      editor.insertHTML(&quot;<span class="string">&lt;h1&gt;Table Of Contents&lt;/h1&gt;</span>&quot;);
-      <span class="keyword">break</span>;
-    <span class="keyword">case</span> &quot;<span class="string">my-date</span>&quot;:
-      editor.insertHTML((<span class="keyword">new</span> Date()).toString());
-      <span class="keyword">break</span>;
-    <span class="keyword">case</span> &quot;<span class="string">my-bold</span>&quot;:
-      editor.execCommand(&quot;<span class="string">bold</span>&quot;);
-      editor.execCommand(&quot;<span class="string">italic</span>&quot;);
-      <span class="keyword">break</span>;
-    <span class="keyword">case</span> &quot;<span class="string">my-hilite</span>&quot;:
-      editor.surroundHTML(&quot;<span class="string">&lt;span class=\&quot;hilite\&quot;&gt;</span>&quot;, &quot;<span class="string">&lt;/span&gt;</span>&quot;);
-      <span class="keyword">break</span>;
-  }
-};
-
-<span class="comment">// Create a new configuration object
-</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
-
-<span class="comment">// Register our custom buttons
-</span>config.registerButton(&quot;<span class="string">my-toc</span>&quot;,  &quot;<span class="string">Insert TOC</span>&quot;, &quot;<span class="string">my-toc.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
-config.registerButton(&quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">Insert date/time</span>&quot;, &quot;<span class="string">my-date.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
-config.registerButton(&quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">Toggle bold/italic</span>&quot;, &quot;<span class="string">my-bold.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
-config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Hilite selection</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
-
-<span class="comment">// Append the buttons to the default toolbar
-</span>config.toolbar.push([&quot;<span class="string">linebreak</span>&quot;, &quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">my-hilite</span>&quot;]);
-
-<span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
-</span>HTMLArea.replace(&quot;<span class="string">textAreaID</span>&quot;, config);</pre>
-
-
-<hr />
-<address>&copy; <a href="http://interactivetools.com" title="Visit our website"
->InteractiveTools.com</a> 2002-2004.
-<br />
-© <a href="http://dynarch.com">dynarch.com</a> 2003-2004<br />
-HTMLArea v3.0 developed by <a
-href="http://dynarch.com/mishoo/">Mihai Bazon</a>.
-<br />
-Documentation written by Mihai Bazon.
-</address>
-<!-- hhmts start --> Last modified: Wed Jan 28 12:18:23 EET 2004 <!-- hhmts end -->
-<!-- doc-lang: English -->
-</body> </html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_sub.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_sub.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_redo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_redo.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_splitcel.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_splitcel.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_right_to_left.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_right_to_left.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_link.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_delete.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_sup.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_sup.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_cut.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_cut.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_bold.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_bold.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_paste.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_paste.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_list_num.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_list_num.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_about.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_about.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_html.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_html.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_left_to_right.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_left_to_right.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_underline.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_underline.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_justify.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_justify.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_image.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_image.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_indent_more.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_indent_more.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_indent_less.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_indent_less.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_italic.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_italic.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_blank.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_blank.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_charmap.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_charmap.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_save.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_save.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/fullscreen_maximize.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/fullscreen_maximize.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_color_fg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_color_fg.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_color_bg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_color_bg.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_center.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_center.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_help.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_help.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_custom.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_custom.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/fullscreen_minimize.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/fullscreen_minimize.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_undo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_undo.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_strike.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_format_strike.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_left.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_left.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_right.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_align_right.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_copy.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_copy.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_list_bullet.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_list_bullet.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/insert_table.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/insert_table.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_show_border.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_show_border.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_hr.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/images/ed_hr.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/vn.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/vn.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/vn.js	(nonexistent)
@@ -1,51 +0,0 @@
-// I18N constants : Vietnamese
-// LANG: "en", ENCODING: UTF-8
-// Author: Nguyễn Đình Nam, <hncryptologist@yahoo.com>
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "vn",
-
-	tooltips: {
-		bold:           "Đậm",
-		italic:         "Nghiêng",
-		underline:      "Gạch Chân",
-		strikethrough:  "Gạch Xóa",
-		subscript:      "Viết Xuống Dưới",
-		superscript:    "Viết Lên Trên",
-		justifyleft:    "Căn Trái",
-		justifycenter:  "Căn Giữa",
-		justifyright:   "Căn Phải",
-		justifyfull:    "Căn Đều",
-		orderedlist:    "Danh Sách Có Thứ Tự",
-		unorderedlist:  "Danh Sách Phi Thứ Tự",
-		outdent:        "Lùi Ra Ngoài",
-		indent:         "Thụt Vào Trong",
-		forecolor:      "Màu Chữ",
-		backcolor:      "Màu Nền",
-		horizontalrule: "Dòng Kẻ Ngang",
-		createlink:     "Tạo Liên Kết",
-		insertimage:    "Chèn Ảnh",
-		inserttable:    "Chèn Bảng",
-		htmlmode:       "Chế Độ Mã HTML",
-		popupeditor:    "Phóng To Ô Soạn Thảo",
-		about:          "Tự Giới Thiệu",
-		showhelp:       "Giúp Đỡ",
-		textindicator:  "Định Dạng Hiện Thời",
-		undo:           "Undo",
-		redo:           "Redo",
-		cut:            "Cắt",
-		copy:           "Copy",
-		paste:          "Dán"
-	},
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Hủy"
-	},
-	msg: {
-		"Path":         "Đường Dẫn",
-		"TEXT_MODE":    "Bạn đang ở chế độ text.  Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-sjis.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-sjis.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-sjis.js	(nonexistent)
@@ -1,37 +0,0 @@
-// I18N constants -- Japanese Shift-JIS
-// by Manabu Onoue -- tmocsys@tmocsys.com
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ja-sjis",
-
-	tooltips: {
-		bold:           "",
-		italic:         "Α",
-		underline:      "",
-		strikethrough:  "ł",
-		subscript:      "tY",
-		superscript:    "tY",
-		justifyleft:    "",
-		justifycenter:  "",
-		justifyright:   "E",
-		justifyfull:    "ϓt",
-		orderedlist:    "ԍtӏ",
-		unorderedlist:  "Ltӏ",
-		outdent:        "Cfg",
-		indent:         "Cfgݒ",
-		forecolor:      "F",
-		backcolor:      "wiF",
-		horizontalrule: "",
-		createlink:     "N쐬",
-		insertimage:    "摜}",
-		inserttable:    "e[u}",
-		htmlmode:       "HTML\ؑ",
-		popupeditor:    "GfB^g",
-		about:          "o[W",
-		help:           "wv",
-		textindicator:  "݂̃X^C"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/pt_br.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/pt_br.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/pt_br.js	(nonexistent)
@@ -1,37 +0,0 @@
-// I18N constants
-// Brazilian Portuguese Translation by Alex Piaz <webmaster@globalmap.com>
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "pt_br",
-
-	tooltips: {
-		bold:           "Negrito",
-		italic:         "Itlico",
-		underline:      "Sublinhado",
-		strikethrough:  "Tachado",
-		subscript:      "Subescrito",
-		superscript:    "Sobrescrito",
-		justifyleft:    "Alinhar  Esquerda",
-		justifycenter:  "Centralizar",
-		justifyright:   "Alinhar  Direita",
-		justifyfull:    "Justificar",
-		orderedlist:    "Lista Numerada",
-		unorderedlist:  "Lista Marcadores",
-		outdent:        "Diminuir Indentao",
-		indent:         "Aumentar Indentao",
-		forecolor:      "Cor da Fonte",
-		backcolor:      "Cor do Fundo",
-		horizontalrule: "Linha Horizontal",
-		createlink:     "Inserir Link",
-		insertimage:    "Inserir Imagem",
-		inserttable:    "Inserir Tabela",
-		htmlmode:       "Ver Cdigo-Fonte",
-		popupeditor:    "Expandir Editor",
-		about:          "Sobre",
-		help:           "Ajuda",
-		textindicator:  "Estilo Atual"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/b5.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/b5.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/b5.js	(nonexistent)
@@ -1,36 +0,0 @@
-// I18N constants -- Chinese Big-5
-// by Dave Lo -- dlo@interactivetools.com
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "b5",
-
-	tooltips: {
-		bold:           "",
-		italic:         "",
-		underline:      "u",
-		strikethrough:  "Ru",
-		subscript:      "U",
-		superscript:    "W",
-		justifyleft:    "ma",
-		justifycenter:  "m~",
-		justifyright:   "mak",
-		justifyfull:    "mk",
-		orderedlist:    "ǲM",
-		unorderedlist:  "LǲM",
-		outdent:        "peť",
-		indent:         "[eeť",
-		forecolor:      "rC",
-		backcolor:      "IC",
-		horizontalrule: "u",
-		createlink:     "Js",
-		insertimage:    "Jϧ",
-		inserttable:    "J",
-		htmlmode:       "HTMLlX",
-		popupeditor:    "j",
-		about:          " HTMLArea",
-		help:           "",
-		textindicator:  "rҤl"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-utf8.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-utf8.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-utf8.js	(nonexistent)
@@ -1,37 +0,0 @@
-﻿// I18N constants -- Japanese UTF-8
-// by Manabu Onoue -- tmocsys@tmocsys.com
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ja-utf8",
-
-	tooltips: {
-		bold:           "太字",
-		italic:         "斜体",
-		underline:      "下線",
-		strikethrough:  "打ち消し線",
-		subscript:      "下付き添え字",
-		superscript:    "上付き添え字",
-		justifyleft:    "左寄せ",
-		justifycenter:  "中央寄せ",
-		justifyright:   "右寄せ",
-		justifyfull:    "均等割付",
-		orderedlist:    "番号付き箇条書き",
-		unorderedlist:  "記号付き箇条書き",
-		outdent:        "インデント解除",
-		indent:         "インデント設定",
-		forecolor:      "文字色",
-		backcolor:      "背景色",
-		horizontalrule: "水平線",
-		createlink:     "リンク作成",
-		insertimage:    "画像挿入",
-		inserttable:    "テーブル挿入",
-		htmlmode:       "HTML表示切替",
-		popupeditor:    "エディタ拡大",
-		about:          "バージョン情報",
-		help:           "ヘルプ",
-		textindicator:  "現在のスタイル"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/cz.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/cz.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/cz.js	(nonexistent)
@@ -1,63 +0,0 @@
-﻿// I18N constants
-
-// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
-// Author: Jiri Löw, <jirilow@jirilow.com>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "cz",
-
-	tooltips: {
-		bold:           "Tučně",
-		italic:         "Kurzíva",
-		underline:      "Podtržení",
-		strikethrough:  "Přeškrtnutí",
-		subscript:      "Dolní index",
-		superscript:    "Horní index",
-		justifyleft:    "Zarovnat doleva",
-		justifycenter:  "Na střed",
-		justifyright:   "Zarovnat doprava",
-		justifyfull:    "Zarovnat do stran",
-		orderedlist:    "Seznam",
-		unorderedlist:  "Odrážky",
-		outdent:        "Předsadit",
-		indent:         "Odsadit",
-		forecolor:      "Barva písma",
-		hilitecolor:    "Barva pozadí",
-		horizontalrule: "Vodorovná čára",
-		createlink:     "Vložit odkaz",
-		insertimage:    "Vložit obrázek",
-		inserttable:    "Vložit tabulku",
-		htmlmode:       "Přepnout HTML",
-		popupeditor:    "Nové okno editoru",
-		about:          "O této aplikaci",
-		showhelp:       "Nápověda aplikace",
-		textindicator:  "Zvolený styl",
-		undo:           "Vrátí poslední akci",
-		redo:           "Opakuje poslední akci",
-		cut:            "Vyjmout",
-		copy:           "Kopírovat",
-		paste:          "Vložit"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Zrušit"
-	},
-
-	msg: {
-		"Path":         "Cesta",
-		"TEXT_MODE":    "Jste v TEXTOVÉM REŽIMU.  Použijte tlačítko [<>] pro přepnutí do WYSIWIG."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/da.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/da.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/da.js	(nonexistent)
@@ -1,38 +0,0 @@
-// danish version for htmlArea v3.0 - Alpha Release
-// - translated by rene<rene@laerke.net>
-// terms and licenses are equal to htmlarea!
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "da",
-
-	tooltips: {
-		bold:           "Fed",
-		italic:         "Kursiv",
-		underline:      "Understregning",
-		strikethrough:  "Overstregning ",
-		subscript:      "Snket skrift",
-		superscript:    "Hvet skrift",
-		justifyleft:    "Venstrejuster",
-		justifycenter:  "Centrer",
-		justifyright:   "Hjrejuster",
-		justifyfull:    "Lige margener",
-		orderedlist:    "Opstilling med tal",
-		unorderedlist:  "Opstilling med punkttegn",
-		outdent:        "Formindsk indrykning",
-		indent:         "Forg indrykning",
-		forecolor:      "Skriftfarve",
-		backcolor:      "Baggrundsfarve",
-		horizontalrule: "Horisontal linie",
-		createlink:     "Indst hyperlink",
-		insertimage:    "Indst billede",
-		inserttable:    "Indst tabel",
-		htmlmode:       "HTML visning",
-		popupeditor:    "Vis editor i popup",
-		about:          "Om htmlarea",
-		help:           "Hjlp",
-		textindicator:  "Anvendt stil"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/de.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/de.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/de.js	(nonexistent)
@@ -1,54 +0,0 @@
-// german version for htmlArea v3.0 - Alpha Release
-// - translated by AtK<atk@chello.at>
-// terms and licenses are equal to htmlarea!
-// translation improved by broxx<broxx@broxx.com>
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "de",
-
-	tooltips: {
-		bold:           "Fett",
-		italic:         "Kursiv",
-		underline:      "Unterstrichen",
-		strikethrough:  "Durchgestrichen",
-		subscript:      "Hochgestellt",
-		superscript:    "Tiefgestellt",
-		justifyleft:    "Links ausrichten",
-		justifycenter:  "Zentrieren",
-		justifyright:   "Rechts ausrichten",
-		justifyfull:    "Blocksatz",
-		orderedlist:    "Nummerierung",
-		unorderedlist:  "Aufzaehlungszeichen",
-		outdent:        "Einzug verkleinern",
-		indent:         "Einzug vergrssern",
-		forecolor:      "Text Farbe",
-		hilitecolor:    "Hintergrund Farbe",
-		horizontalrule: "Horizontale Linie",
-		createlink:     "Hyperlink einfuegen",
-		insertimage:    "Bild einfuegen",
-		inserttable:    "Tabelle einfuegen",
-		htmlmode:       "HTML Modus",
-		popupeditor:    "Editor im Popup ffnen",
-		about:          "Ueber HtmlArea",
-		showhelp:       "Hilfe",
-		textindicator:  "derzeitiger Stil",
-		undo:           "Rueckgaengig",
-		redo:           "Wiederholen",
-		cut:            "Ausschneiden",
-		copy:           "Kopieren",
-		paste:          "Einfuegen"
-	},
-  
- buttons: {
-		"ok":           "OK",
-		"cancel":       "Abbrechen"
-	},
-
-	msg: {
-		"Path":         "Pfad",
-		"TEXT_MODE":    "Du befindest dich im HTML Modus.  Benuetze die [<>] Schaltflaeche um in den WYSIWIG-Modus zu wechseln."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ee.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ee.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ee.js	(nonexistent)
@@ -1,63 +0,0 @@
-// I18N constants
-
-// LANG: "ee", ENCODING: UTF-8 | ISO-8859-1
-// Author: Martin Raie, <albertvill@hot.ee>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ee",
-
-	tooltips: {
-		bold:           "Paks",
-		italic:         "Kursiiv",
-		underline:      "Allakriipsutatud",
-		strikethrough:  "Lbikriipsutatud",
-		subscript:      "Allindeks",
-		superscript:    "laindeks",
-		justifyleft:    "Joonda vasakule",
-		justifycenter:  "Joonda keskele",
-		justifyright:   "Joonda paremale",
-		justifyfull:    "Rpjoonda",
-		insertorderedlist:    "Nummerdus",
-		insertunorderedlist:  "Tpploend",
-		outdent:        "Vhenda taanet",
-		indent:         "Suurenda taanet",
-		forecolor:      "Fondi vrv",
-		hilitecolor:    "Tausta vrv",
-		inserthorizontalrule: "Horisontaaljoon",
-		createlink:     "Lisa viit",
-		insertimage:    "Lisa pilt",
-		inserttable:    "Lisa tabel",
-		htmlmode:       "HTML/tavaline vaade",
-		popupeditor:    "Suurenda toimeti aken",
-		about:          "Teave toimeti kohta",
-		showhelp:       "Spikker",
-		textindicator:  "Kirjastiil",
-		undo:           "Vta tagasi",
-		redo:           "Tee uuesti",
-		cut:            "Lika",
-		copy:           "Kopeeri",
-		paste:          "Kleebi"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Loobu"
-	},
-
-	msg: {
-		"Path":         "Path",
-		"TEXT_MODE":    "Sa oled tekstireziimis.  Kasuta nuppu [<>] llitamaks tagasi WYSIWIG reziimi."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/el.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/el.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/el.js	(nonexistent)
@@ -1,75 +0,0 @@
-// I18N constants
-
-// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
-// Author: Dimitris Glezos, dimitris@glezos.com
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "el",
-
-	tooltips: {
-		bold:           "Έντονα",
-		italic:         "Πλάγια",
-		underline:      "Υπογραμμισμένα",
-		strikethrough:  "Διαγραμμένα",
-		subscript:      "Δείκτης",
-		superscript:    "Δείκτης",
-		justifyleft:    "Στοίχιση Αριστερά",
-		justifycenter:  "Στοίχιση Κέντρο",
-		justifyright:   "Στοίχιση Δεξιά",
-		justifyfull:    "Πλήρης Στοίχιση",
-		orderedlist:    "Αρίθμηση",
-		unorderedlist:  "Κουκκίδες",
-		outdent:        "Μείωση Εσοχής",
-		indent:         "Αύξηση Εσοχής",
-		forecolor:      "Χρώμα Γραμματοσειράς",
-		hilitecolor:    "Χρώμα Φόντου",
-		horizontalrule: "Οριζόντια Γραμμή",
-		createlink:     "Εισαγωγή Συνδέσμου",
-		insertimage:    "Εισαγωγή/Τροποποίηση Εικόνας",
-		inserttable:    "Εισαγωγή Πίνακα",
-		htmlmode:       "Εναλλαγή σε/από HTML",
-		popupeditor:    "Μεγένθυνση επεξεργαστή",
-		about:          "Πληροφορίες",
-		showhelp:       "Βοήθεια",
-		textindicator:  "Παρών στυλ",
-		undo:           "Αναίρεση τελευταίας ενέργειας",
-		redo:           "Επαναφορά από αναίρεση",
-		cut:            "Αποκοπή",
-		copy:           "Αντιγραφή",
-		paste:          "Επικόλληση",
-        lefttoright:    "Κατεύθυνση αριστερά προς δεξιά",
-        righttoleft:    "Κατεύθυνση από δεξιά προς τα αριστερά"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Ακύρωση"
-	},
-
-	msg: {
-		"Path":         "Διαδρομή",
-		"TEXT_MODE":    "Είστε σε TEXT MODE.  Χρησιμοποιήστε το κουμπί [<>] για να επανέρθετε στο WYSIWIG.",
-
-       "IE-sucks-full-screen":	"Η κατάσταση πλήρης οθόνης έχει προβλήματα με τον Internet Explorer, " +
-       							"λόγω σφαλμάτων στον ίδιο τον browser.  Αν το σύστημα σας είναι Windows 9x " +
-       							"μπορεί και να χρειαστείτε reboot. Αν είστε σίγουροι, πατήστε ΟΚ."
-       },
-
-       dialogs: {
-               "Cancel"                                            : "Ακύρωση",
-               "Insert/Modify Link"                                : "Εισαγωγή/Τροποποίηση σύνδεσμου",
-               "New window (_blank)"                               : "Νέο παράθυρο (_blank)",
-               "None (use implicit)"                               : "Κανένα (χρήση απόλυτου)",
-               "OK"                                                : "Εντάξει",
-               "Other"                                             : "Αλλο",
-               "Same frame (_self)"                                : "Ίδιο frame (_self)",
-               "Target:"                                           : "Target:",
-               "Title (tooltip):"                                  : "Τίτλος (tooltip):",
-               "Top frame (_top)"                                  : "Πάνω frame (_top)",
-               "URL:"                                              : "URL:",
-               "You must enter the URL where this link points to"  : "Πρέπει να εισάγετε το URL που οδηγεί αυτός ο σύνδεσμος"
-       }
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/en.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/en.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/en.js	(nonexistent)
@@ -1,88 +0,0 @@
-// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "en",
-
-	tooltips: {
-		bold:           "Bold",
-		italic:         "Italic",
-		underline:      "Underline",
-		strikethrough:  "Strikethrough",
-		subscript:      "Subscript",
-		superscript:    "Superscript",
-		justifyleft:    "Justify Left",
-		justifycenter:  "Justify Center",
-		justifyright:   "Justify Right",
-		justifyfull:    "Justify Full",
-		orderedlist:    "Ordered List",
-		unorderedlist:  "Bulleted List",
-		outdent:        "Decrease Indent",
-		indent:         "Increase Indent",
-		forecolor:      "Font Color",
-		hilitecolor:    "Background Color",
-		horizontalrule: "Horizontal Rule",
-		createlink:     "Insert Web Link",
-		insertimage:    "Insert/Modify Image",
-		inserttable:    "Insert Table",
-		htmlmode:       "Toggle HTML Source",
-		popupeditor:    "Enlarge Editor",
-		about:          "About this editor",
-		showhelp:       "Help using editor",
-		textindicator:  "Current style",
-		undo:           "Undoes your last action",
-		redo:           "Redoes your last action",
-		cut:            "Cut selection",
-		copy:           "Copy selection",
-		paste:          "Paste from clipboard",
-		lefttoright:    "Direction left to right",
-		righttoleft:    "Direction right to left"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Cancel"
-	},
-
-	msg: {
-		"Path":         "Path",
-		"TEXT_MODE":    "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.",
-
-		"IE-sucks-full-screen" :
-		// translate here
-		"The full screen mode is known to cause problems with Internet Explorer, " +
-		"due to browser bugs that we weren't able to workaround.  You might experience garbage " +
-		"display, lack of editor functions and/or random browser crashes.  If your system is Windows 9x " +
-		"it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
-		"You have been warned.  Please press OK if you still want to try the full screen editor."
-	},
-
-	dialogs: {
-		"Cancel"                                            : "Cancel",
-		"Insert/Modify Link"                                : "Insert/Modify Link",
-		"New window (_blank)"                               : "New window (_blank)",
-		"None (use implicit)"                               : "None (use implicit)",
-		"OK"                                                : "OK",
-		"Other"                                             : "Other",
-		"Same frame (_self)"                                : "Same frame (_self)",
-		"Target:"                                           : "Target:",
-		"Title (tooltip):"                                  : "Title (tooltip):",
-		"Top frame (_top)"                                  : "Top frame (_top)",
-		"URL:"                                              : "URL:",
-		"You must enter the URL where this link points to"  : "You must enter the URL where this link points to"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/es.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/es.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/es.js	(nonexistent)
@@ -1,51 +0,0 @@
-// I18N constants
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "es",
-
-	tooltips: {
-		bold:           "Negrita",
-		italic:         "Cursiva",
-		underline:      "Subrayado",
-		strikethrough:  "Tachado",
-		subscript:      "Subndice",
-		superscript:    "Superndice",
-		justifyleft:    "Alinear a la Izquierda",
-		justifycenter:  "Centrar",
-		justifyright:   "Alinear a la Derecha",
-		justifyfull:    "Justificar",
-		insertorderedlist:    "Lista Ordenada",
-		insertunorderedlist:  "Lista No Ordenada",
-		outdent:        "Aumentar Sangra",
-		indent:         "Disminuir Sangra",
-		forecolor:      "Color del Texto",
-		hilitecolor:    "Color del Fondo",
-		inserthorizontalrule: "Lnea Horizontal",
-		createlink:     "Insertar Enlace",
-		insertimage:    "Insertar Imagen",
-		inserttable:    "Insertar Tabla",
-		htmlmode:       "Ver Documento en HTML",
-		popupeditor:    "Ampliar Editor",
-		about:          "Acerca del Editor",
-		showhelp:       "Ayuda",
-		textindicator:  "Estilo Actual",
-		undo:           "Deshacer",
-		redo:           "Rehacer",
-		cut:            "Cortar seleccin",
-		copy:           "Copiar seleccin",
-		paste:          "Pegar desde el portapapeles"
-	},
-
-	buttons: {
-		"ok":           "Aceptar",
-		"cancel":       "Cancelar"
-	},
-
-	msg: {
-		"Path":         "Ruta",
-		"TEXT_MODE":    "Esta en modo TEXTO. Use el boton [<>] para cambiar a WYSIWIG",
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/fi.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/fi.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/fi.js	(nonexistent)
@@ -1,46 +0,0 @@
-// I18N constants
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "en",
-
-	tooltips: {
-		bold:           	"Lihavoitu",
-		italic:         	"Kursivoitu",
-		underline:      	"Alleviivattu",
-		strikethrough:  	"Yliviivattu",
-		subscript:      	"Alaindeksi",
-		superscript:    	"Ylindeksi",
-		justifyleft:    	"Tasaa vasemmat reunat",
-		justifycenter:  	"Keskit",
-		justifyright:   	"Tasaa oikeat reunat",
-		justifyfull:    	"Tasaa molemmat reunat",
-		insertorderedlist: 	"Numerointi",
-		insertunorderedlist: 	"Luettelomerkit",
-		outdent:        	"Lis sisennyst",
-		indent:         	"Pienenn sisennyst",
-		forecolor:      	"Fontin vri",
-		hilitecolor:    	"Taustavri",
-		inserthorizontalrule: 	"Vaakaviiva",
-		createlink:     	"Lis Linkki",
-		insertimage:    	"Lis Kuva",
-		inserttable:    	"Lis Taulu",
-		htmlmode:       	"HTML Lhdekoodi vs WYSIWYG",
-		popupeditor:    	"Suurenna Editori",
-		about:          	"Tietoja Editorista",
-		showhelp:           	"Nyt Ohje",
-		textindicator:  	"Nykyinen tyyli",
-		undo:           	"Peruuta viimeinen toiminto",
-		redo:           	"Palauta viimeinen toiminto",
-		cut:            	"Leikkaa maalattu",
-		copy:           	"Kopioi maalattu",
-		paste:          	"Liit leikepydlt"
-	},
-
-	buttons: {
-		"ok":           	"Hyvksy",
-		"cancel":       	"Peruuta"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/fr.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/fr.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/fr.js	(nonexistent)
@@ -1,61 +0,0 @@
-// I18N constants
-// Author: Jonathan Ernst, <Jonathan.Ernst@NetOxygen.ch>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "fr",
-
-	tooltips: {
-		bold:           "Gras",
-		italic:         "Italique",
-		underline:      "Soulign",
-		strikethrough:  "Barr",
-		subscript:      "Subscript",
-		superscript:    "Superscript",
-		justifyleft:    "Align  gauche",
-		justifycenter:  "Centr",
-		justifyright:   "Align  droite",
-		justifyfull:    "Justifi",
-		orderedlist:    "Numrotation",
-		unorderedlist:  "Puces",
-		outdent:        "Augmenter le retrait",
-		indent:         "Diminuer le retrait",
-		forecolor:      "Couleur du texte",
-		hilitecolor:    "Couleur du fond",
-		horizontalrule: "Ligne horizontale",
-		createlink:     "Insrer un lien",
-		insertimage:    "Insrer une image",
-		inserttable:    "Insrer un tableau",
-		htmlmode:       "Passer au code source HTML",
-		popupeditor:    "Agrandir l'diteur",
-		about:          "A propos de cet diteur",
-		showhelp:       "Aide sur l'diteur",
-		textindicator:  "Style courant",
-		undo:           "Annule la dernire action",
-		redo:           "Refait la dernire action",
-		cut:            "Coupe la slection",
-		copy:           "Copie la slection",
-		paste:          "Colle depuis le presse papiers"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Annuler"
-	},
-
-	msg: {
-		"Path":         "Chemin",
-		"TEXT_MODE":    "Vous tes en mode texte.  Utilisez le bouton [<>] pour revenir au mode WYSIWIG."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/gb.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/gb.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/gb.js	(nonexistent)
@@ -1,36 +0,0 @@
-// I18N constants -- Chinese GB
-// by Dave Lo -- dlo@interactivetools.com
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "gb",
-
-	tooltips: {
-		bold:           "",
-		italic:         "б",
-		underline:      "",
-		strikethrough:  "ɾ",
-		subscript:      "±",
-		superscript:    "ϱ",
-		justifyleft:    "λÿ",
-		justifycenter:  "λþ",
-		justifyright:   "λÿ",
-		justifyfull:    "λƽ",
-		orderedlist:    "˳嵥",
-		unorderedlist:  "嵥",
-		outdent:        "Сǰհ",
-		indent:         "ӿǰհ",
-		forecolor:      "ɫ",
-		backcolor:      "ɫ",
-		horizontalrule: "ˮƽ",
-		createlink:     "",
-		insertimage:    "ͼ",
-		inserttable:    "",
-		htmlmode:       "лHTMLԭʼ",
-		popupeditor:    "Ŵ",
-		about:          " HTMLArea",
-		help:           "˵",
-		textindicator:  ""
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/hu.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/hu.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/hu.js	(nonexistent)
@@ -1,63 +0,0 @@
-// I18N constants
-
-// LANG: "hu", ENCODING: UTF-8
-// Author: Miklós Somogyi, <somogyine@vnet.hu>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "hu",
-
-	tooltips: {
-		bold:           "Félkövér",
-		italic:         "Dőlt",
-		underline:      "Aláhúzott",
-		strikethrough:  "Áthúzott",
-		subscript:      "Alsó index",
-		superscript:    "Felső index",
-		justifyleft:    "Balra zárt",
-		justifycenter:  "Középre zárt",
-		justifyright:   "Jobbra zárt",
-		justifyfull:    "Sorkizárt",
-		orderedlist:    "Számozott lista",
-		unorderedlist:  "Számozatlan lista",
-		outdent:        "Behúzás csökkentése",
-		indent:         "Behúzás növelése",
-		forecolor:      "Karakterszín",
-		hilitecolor:    "Háttérszín",
-		horizontalrule: "Elválasztó vonal",
-		createlink:     "Hiperhivatkozás beszúrása",
-		insertimage:    "Kép beszúrása",
-		inserttable:    "Táblázat beszúrása",
-		htmlmode:       "HTML forrás be/ki",
-		popupeditor:    "Szerkesztő külön ablakban",
-		about:          "Névjegy",
-		showhelp:       "Súgó",
-		textindicator:  "Aktuális stílus",
-		undo:           "Visszavonás",
-		redo:           "Újra végrehajtás",
-		cut:            "Kivágás",
-		copy:           "Másolás",
-		paste:          "Beillesztés"
-	},
-
-	buttons: {
-		"ok":           "Rendben",
-		"cancel":       "Mégsem"
-	},
-
-	msg: {
-		"Path":         "Hierarchia",
-		"TEXT_MODE":    "Forrás mód. Visszaváltás [<>] gomb"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/he.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/he.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/he.js	(nonexistent)
@@ -1,63 +0,0 @@
-// I18N constants
-
-// LANG: "he", ENCODING: UTF-8
-// Author: Liron Newman, <plastish@ultinet.org>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "he",
-
-	tooltips: {
-		bold:           "מודגש",
-		italic:         "נטוי",
-		underline:      "קו תחתי",
-		strikethrough:  "קו אמצע",
-		subscript:      "כתב עילי",
-		superscript:    "כתב תחתי",
-		justifyleft:    " ישור לשמאל",
-		justifycenter:  "ישור למרכז",
-		justifyright:   "ישור לימין",
-		justifyfull:    "יישור לשורה מלאה",
-		orderedlist:    "רשימה ממוספרת",
-		unorderedlist:  "רשימה לא ממוספרת",
-		outdent:        "הקטן כניסה",
-		indent:         "הגדל כניסה",
-		forecolor:      "צבע גופן",
-		hilitecolor:    "צבע רקע",
-		horizontalrule: "קו אנכי",
-		createlink:     "הכנס היפר-קישור",
-		insertimage:    "הכנס תמונה",
-		inserttable:    "הכנס טבלה",
-		htmlmode:       "שנה מצב קוד HTML",
-		popupeditor:    "הגדל את העורך",
-		about:          "אודות עורך זה",
-		showhelp:       "עזרה לשימוש בעורך",
-		textindicator:  "סגנון נוכחי",
-		undo:           "מבטל את פעולתך האחרונה",
-		redo:           "מבצע מחדש את הפעולה האחרונה שביטלת",
-		cut:            "גזור בחירה",
-		copy:           "העתק בחירה",
-		paste:          "הדבק מהלוח"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "ביטול"
-	},
-
-	msg: {
-		"Path":         "נתיב עיצוב",
-		"TEXT_MODE":    "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב)."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-jis.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-jis.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-jis.js	(nonexistent)
@@ -1,37 +0,0 @@
-// I18N constants -- Japanese JIS
-// by Manabu Onoue -- tmocsys@tmocsys.com
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ja-jis",
-
-	tooltips: {
-		bold:           "$BB@;z(B",
-		italic:         "$B<PBN(B",
-		underline:      "$B2<@~(B",
-		strikethrough:  "$BBG$A>C$7@~(B",
-		subscript:      "$B2<IU$-E:$(;z(B",
-		superscript:    "$B>eIU$-E:$(;z(B",
-		justifyleft:    "$B:84s$;(B",
-		justifycenter:  "$BCf1{4s$;(B",
-		justifyright:   "$B1&4s$;(B",
-		justifyfull:    "$B6QEy3dIU(B",
-		orderedlist:    "$BHV9fIU$-2U>r=q$-(B",
-		unorderedlist:  "$B5-9fIU$-2U>r=q$-(B",
-		outdent:        "$B%$%s%G%s%H2r=|(B",
-		indent:         "$B%$%s%G%s%H@_Dj(B",
-		forecolor:      "$BJ8;z?'(B",
-		backcolor:      "$BGX7J?'(B",
-		horizontalrule: "$B?eJ?@~(B",
-		createlink:     "$B%j%s%/:n@.(B",
-		insertimage:    "$B2hA|A^F~(B",
-		inserttable:    "$B%F!<%V%kA^F~(B",
-		htmlmode:       "HTML$BI=<(@ZBX(B",
-		popupeditor:    "$B%(%G%#%?3HBg(B",
-		about:          "$B%P!<%8%g%s>pJs(B",
-		help:           "$B%X%k%W(B",
-		textindicator:  "$B8=:_$N%9%?%$%k(B"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/it.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/it.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/it.js	(nonexistent)
@@ -1,54 +0,0 @@
-// I18N constants
-
-// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
-// Author: Fabio Rotondo <fabio@rotondo.it>
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "it",
-
-	tooltips: {
-		bold:           "Grassetto",
-		italic:         "Italico",
-		underline:      "Sottolineato",
-		strikethrough:  "Barrato",
-		subscript:      "Pedice",
-		superscript:    "Apice",
-		justifyleft:    "Giustifica a Sinistra",
-		justifycenter:  "Giustifica in Centro",
-		justifyright:   "Giustifica a Destra",
-		justifyfull:    "Giustifica Completamente",
-		orderedlist:    "Lista Ordinata",
-		unorderedlist:  "Lista Puntata",
-		outdent:        "Decrementa Indentazione",
-		indent:         "Incrementa Indentazione",
-		forecolor:      "Colore del Carattere",
-		hilitecolor:    "Colore di Sfondo",
-		horizontalrule: "Linea Orizzontale",
-		createlink:     "Inserisci un Link",
-		insertimage:    "Inserisci un'Immagine",
-		inserttable:    "Inserisci una Tabella",
-		htmlmode:       "Attiva il codice HTML",
-		popupeditor:    "Allarga l'editor",
-		about:          "Info sull'editor",
-		showhelp:       "Aiuto sull'editor",
-		textindicator:  "Stile Attuale",
-		undo:           "Elimina l'ultima modifica",
-		redo:           "Ripristina l'ultima modifica",
-		cut:            "Taglia l'area selezionata",
-		copy:           "Copia l'area selezionata",
-		paste:          "Incolla dalla memoria"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Annulla"
-	},
-
-	msg: {
-		"Path":         "Percorso",
-		"TEXT_MODE":    "Sei in MODALITA' TESTO. Usa il bottone [<>] per tornare alla modalità WYSIWYG."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/lt.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/lt.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/lt.js	(nonexistent)
@@ -1,55 +0,0 @@
-// I18N constants
-
-// LANG: "lt", ENCODING: UTF-8
-// Author: Jaroslav Šatkevič, <jaro@akl.lt>
-
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "lt",
-
-	tooltips: {
-		bold:           "Paryškinti",
-		italic:         "Kursyvas",
-		underline:      "Pabraukti",
-		strikethrough:  "Perbraukti",
-		subscript:      "Apatinis indeksas",
-		superscript:    "Viršutinis indeksas",
-		justifyleft:    "Lygiavimas pagal kairę",
-		justifycenter:  "Lygiavimas pagal centrą",
-		justifyright:   "Lygiavimas pagal dešinę",
-		justifyfull:    "Lygiuoti pastraipą",
-		orderedlist:    "Numeruotas sąrašas",
-		unorderedlist:  "Suženklintas sąrašas",
-		outdent:        "Sumažinti paraštę",
-		indent:         "Padidinti paraštę",
-		forecolor:      "Šrifto spalva",
-		hilitecolor:    "Fono spalva",
-		horizontalrule: "Horizontali linija",
-		createlink:     "Įterpti nuorodą",
-		insertimage:    "Įterpti paveiksliuką",
-		inserttable:    "Įterpti lentelę",
-		htmlmode:       "Perjungti į HTML/WYSIWYG",
-		popupeditor:    "Išplėstas redagavimo ekranas/Enlarge Editor",
-		about:          "Apie redaktorių",
-		showhelp:       "Pagalba naudojant redaktorių",
-		textindicator:  "Dabartinis stilius",
-		undo:           "Atšaukia paskutini jūsų veiksmą",
-		redo:           "Pakartoja paskutinį atšauktą jūsų veiksmą",
-		cut:            "Iškirpti",
-		copy:           "Kopijuoti",
-		paste:          "Įterpti"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Atšaukti"
-	},
-
-	msg: {
-		"Path":         "Kelias",
-		"TEXT_MODE":    "Jūs esete teksto režime.  Naudokite [<>] mygtuką grįžimui į WYSIWYG."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/lv.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/lv.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/lv.js	(nonexistent)
@@ -1,55 +0,0 @@
-// I18N constants
-
-// LANG: "lv", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-// Translated by: Janis Klavins, <janis.klavins@devia.lv>
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "lv",
-
-	tooltips: {
-		bold:           "Trekniem burtiem",
-		italic:         "Kursv",
-		underline:      "Pasvtrots",
-		strikethrough:  "Prsvtrots",
-		subscript:      "Novietot zem rindas",
-		superscript:    "Novietot virs rindas",
-		justifyleft:    "Izldzint pa kreisi",
-		justifycenter:  "Izldzint centr",
-		justifyright:   "Izldzint pa labi",
-		justifyfull:    "Izldzint pa visu lapu",
-		orderedlist:    "Numurts saraksts",
-		unorderedlist:  "Saraksts",
-		outdent:        "Samazint atkpi",
-		indent:         "Palielint atkpi",
-		forecolor:      "Burtu krsa",
-		hilitecolor:    "Fona krsa",
-		horizontalrule: "Horizontla atdaltjsvtra",
-		createlink:     "Ievietot hipersaiti",
-		insertimage:    "Ievietot attlu",
-		inserttable:    "Ievietot tabulu",
-		htmlmode:       "Skatt HTML kodu",
-		popupeditor:    "Palielint Reditju",
-		about:          "Par o reditju",
-		showhelp:       "Reditja palgs",
-		textindicator:  "Patreizjais stils",
-		undo:           "Atcelt pdjo darbbu",
-		redo:           "Atkrtot pdjo darbbu",
-		cut:            "Izgriezt iezmto",
-		copy:           "Kopt iezmto",
-		paste:          "Ievietot iezmto"
-	},
-
-	buttons: {
-		"ok":           "Labi",
-		"cancel":       "Atcelt"
-	},
-
-	msg: {
-		"Path":         "Ce",
-		"TEXT_MODE":    "Js patlaban darbojaties TEKSTA REM. Lai prietu atpaka uz GRAFISKO REMU (WYSIWIG), lietojiet [<>] pogu."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/nb.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/nb.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/nb.js	(nonexistent)
@@ -1,36 +0,0 @@
-// I18N constants
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "nb",
-
-	tooltips: {
-		bold:           "Fet",
-		italic:         "Kursiv",
-		underline:      "Understreket",
-		strikethrough:  "Gjennomstreket",
-		subscript:      "Senket",
-		superscript:    "Hevet",
-		justifyleft:    "Venstrejuster",
-		justifycenter:  "Midtjuster",
-		justifyright:   "Hyrejuster",
-		justifyfull:    "Blokkjuster",
-		orderedlist:    "Nummerert liste",
-		unorderedlist:  "Punktmerket liste",
-		outdent:        "ke innrykk",
-		indent:         "Reduser innrykk",
-		forecolor:      "Skriftfarge",
-		backcolor:      "Bakgrunnsfarge",
-		horizontalrule: "Horisontal linje",
-		createlink:     "Sett inn lenke",
-		insertimage:    "Sett inn bilde",
-		inserttable:    "Sett inn tabell",
-		htmlmode:       "Vis HTML kode",
-		popupeditor:    "Forstrr redigeringsvindu",
-		about:          "Om..",
-		help:           "Hjelp",
-		textindicator:  "Gjeldende stil"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/nl.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/nl.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/nl.js	(nonexistent)
@@ -1,90 +0,0 @@
-// I18N constants
-
-// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
-// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "nl",
-
-	tooltips: {
-		bold:					"Vet",
-		italic:					"Cursief",
-		underline:				"Onderstrepen",
-		strikethrough:			"Doorhalen",
-		subscript:				"Subscript",
-		superscript:			"Superscript",
-		justifyleft:			"Links uitlijnen",
-		justifycenter:			"Centreren",
-		justifyright:			"Rechts uitlijnen",
-		justifyfull:			"Uitvullen",
-		insertorderedlist:		"Nummering",
-		insertunorderedlist:	"Opsommingstekens",
-		outdent:				"Inspringing verkleinen",
-		indent:					"Inspringing vergroten",
-		forecolor:				"Tekstkleur",
-		hilitecolor:			"Achtergrondkleur",
-		inserthorizontalrule:	"Horizontale lijn",
-		createlink:				"Hyperlink invoegen/aanpassen",
-		insertimage:			"Afbeelding invoegen/aanpassen",
-		inserttable:			"Tabel invoegen",
-		htmlmode:				"HTML broncode",
-		popupeditor:			"Vergroot Editor",
-		about:					"Over deze editor",
-		showhelp:				"HTMLArea help",
-		textindicator:			"Huidige stijl",
-		undo:					"Ongedaan maken",
-		redo:					"Herhalen",
-		cut:					"Knippen",
-		copy:					"Kopiren",
-		paste:					"Plakken",
-		lefttoright:			"Tekstrichting links naar rechts",
-		righttoleft:			"Tekstrichting rechts naar links"
-	},
-
-	buttons: {
-		"ok":					"OK",
-		"cancel":				"Annuleren"
-	},
-
-	msg: {
-		"Path":					"Pad",
-		"TEXT_MODE":			"Je bent in TEKST-mode. Gebruik de [<>] knop om terug te keren naar WYSIWYG-mode.",
-      
-		"IE-sucks-full-screen" :
-		// translate here
-		"Fullscreen-mode veroorzaakt problemen met Internet Explorer door bugs in de webbrowser " +
-		"die we niet kunnen omzeilen. Hierdoor kunnen de volgende effecten optreden: verknoeide teksten, " +
-		"een verlies aan editor-functionaliteit en/of willekeurig vastlopen van de webbrowser. " +
-		"Als u Windows 95 of 98 gebruikt, is het zeer waarschijnlijk dat u een algemene beschermingsfout " +
-		"('General Protection Fault') krijgt en de computer opnieuw zal moeten opstarten.\n\n" +
-		"U bent gewaarschuwd. Druk OK als u toch nog de Fullscreen-editor wil gebruiken."
-	},
-
-	dialogs: {
-		"Cancel"                                            : "Annuleren",
-		"Insert/Modify Link"                                : "Hyperlink invoegen/aanpassen",
-		"New window (_blank)"                               : "Nieuw venster (_blank)",
-		"None (use implicit)"                               : "Geen",
-		"OK"                                                : "OK",
-		"Other"                                             : "Ander",
-		"Same frame (_self)"                                : "Zelfde frame (_self)",
-		"Target:"                                           : "Doel:",
-		"Title (tooltip):"                                  : "Titel (tooltip):",
-		"Top frame (_top)"                                  : "Bovenste frame (_top)",
-		"URL:"                                              : "URL:",
-		"You must enter the URL where this link points to"  : "Geef de URL in waar de link naar verwijst"
-	}
-};
-
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/no.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/no.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/no.js	(nonexistent)
@@ -1,79 +0,0 @@
-// Norwegian version for htmlArea v3.0 - pre1
-// - translated by ses<ses@online.no>
-// Additional translations by Hvard Wigtil <havardw@extend.no>
-// terms and licenses are equal to htmlarea!
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "no",
-
-	tooltips: {
-		bold:                 "Fet",
-		italic:               "Kursiv",
-		underline:            "Understreket",
-		strikethrough:        "Gjennomstreket",
-		subscript:            "Nedsenket",
-		superscript:          "Opphyet",
-		justifyleft:          "Venstrejuster",
-		justifycenter:        "Midtjuster",
-		justifyright:         "Hyrejuster",
-		justifyfull:          "Blokkjuster",
-		insertorderedlist:    "Nummerert liste",
-		insertunorderedlist:  "Punktliste",
-		outdent:              "Reduser innrykk",
-		indent:               "ke innrykk",
-		forecolor:            "Tekstfarge",
-		hilitecolor:          "Bakgrundsfarge",
-		inserthorizontalrule: "Vannrett linje",
-		createlink:           "Lag lenke",
-		insertimage:          "Sett inn bilde",
-		inserttable:          "Sett inn tabell",
-		htmlmode:             "Vis kildekode",
-		popupeditor:          "Vis i eget vindu",
-		about:                "Om denne editor",
-		showhelp:             "Hjelp",
-		textindicator:        "Nvrende stil",
-                undo:                 "Angrer siste redigering",
-		redo:                 "Gjr om siste angring",
-		cut:                  "Klipp ut omrde",
-		copy:                 "Kopier omrde",
-		paste:                "Lim inn",
-		lefttoright:          "Fra venstre mot hyre",
-		righttoleft:          "Fra hyre mot venstre"
-	},
-    
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Avbryt"
-	},
-
-	msg: {
-		"Path":         "Tekstvelger",
-		"TEXT_MODE":    "Du er i tekstmodus  Klikk p [<>] for  g tilbake til WYSIWIG.",
-                "IE-sucks-full-screen" :
-		// translate here
-                "Visning i eget vindu har kjente problemer med Internet Explorer, " + 
-                "p grunn av problemer med denne nettleseren. Mulige problemer er et uryddig " + 
-                "skjermbilde, manglende editorfunksjoner og/eller at nettleseren crasher. Hvis du bruker Windows 95 eller Windows 98 " +
-                "er det ogs muligheter for at Windows will crashe.\n\n" +
-                "Trykk 'OK' hvis du vil bruke visning i eget vindu p tross av denne advarselen."
-	},
-
-	dialogs: {
-		"Cancel"                                            : "Avbryt",
-		"Insert/Modify Link"                                : "Rediger lenke",
-		"New window (_blank)"                               : "Eget vindu (_blank)",
-		"None (use implicit)"                               : "Ingen (bruk standardinnstilling)",
-		"OK"                                                : "OK",
-		"Other"                                             : "Annen",
-		"Same frame (_self)"                                : "Samme ramme (_self)",
-		"Target:"                                           : "Ml:",
-		"Title (tooltip):"                                  : "Tittel (tooltip):",
-		"Top frame (_top)"                                  : "Toppramme (_top)",
-		"URL:"                                              : "Adresse:",
-		"You must enter the URL where this link points to"  : "Du m skrive inn en adresse som denne lenken skal peke til"
-	}
-};
-
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/pl.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/pl.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/pl.js	(nonexistent)
@@ -1,36 +0,0 @@
-// I18N constants
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "pl",
-
-	tooltips: {
-		bold:           "Pogrubienie",
-		italic:         "Pochylenie",
-		underline:      "Podkrelenie",
-		strikethrough:  "Przekrelenie",
-		subscript:      "Indeks dolny",
-		superscript:    "Indeks grny",
-		justifyleft:    "Wyrwnaj do lewej",
-		justifycenter:  "Wyrodkuj",
-		justifyright:   "Wyrwnaj do prawej",
-		justifyfull:    "Wyjustuj",
-		orderedlist:    "Numerowanie",
-		unorderedlist:  "Wypunktowanie",
-		outdent:        "Zmniejsz wcicie",
-		indent:         "Zwiksz wcicie",
-		forecolor:      "Kolor czcionki",
-		backcolor:      "Kolor ta",
-		horizontalrule: "Linia pozioma",
-		createlink:     "Wstaw adres sieci Web",
-		insertimage:    "Wstaw obraz",
-		inserttable:    "Wstaw tabel",
-		htmlmode:       "Edycja WYSIWYG/w rdle strony",
-		popupeditor:    "Peny ekran",
-		about:          "Informacje o tym edytorze",
-		help:           "Pomoc",
-		textindicator:  "Obecny styl"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ro.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ro.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ro.js	(nonexistent)
@@ -1,80 +0,0 @@
-// I18N constants
-
-// LANG: "ro", ENCODING: UTF-8
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ro",
-
-	tooltips: {
-		bold:           "Îngroşat",
-		italic:         "Italic",
-		underline:      "Subliniat",
-		strikethrough:  "Tăiat",
-		subscript:      "Indice jos",
-		superscript:    "Indice sus",
-		justifyleft:    "Aliniere la stânga",
-		justifycenter:  "Aliniere pe centru",
-		justifyright:   "Aliniere la dreapta",
-		justifyfull:    "Aliniere în ambele părţi",
-		orderedlist:    "Listă ordonată",
-		unorderedlist:  "Listă marcată",
-		outdent:        "Micşorează alineatul",
-		indent:         "Măreşte alineatul",
-		forecolor:      "Culoarea textului",
-		hilitecolor:    "Culoare de fundal",
-		horizontalrule: "Linie orizontală",
-		createlink:     "Inserează/modifică link",
-		insertimage:    "Inserează/modifică imagine",
-		inserttable:    "Inserează un tabel",
-		htmlmode:       "Sursa HTML / WYSIWYG",
-		popupeditor:    "Maximizează editorul",
-		about:          "Despre editor",
-		showhelp:       "Documentaţie (devel)",
-		textindicator:  "Stilul curent",
-		undo:           "Anulează ultima acţiune",
-		redo:           "Reface ultima acţiune anulată",
-		cut:            "Taie în clipboard",
-		copy:           "Copie în clipboard",
-		paste:          "Aduce din clipboard",
-		lefttoright:    "Direcţia de scriere: stânga - dreapta",
-		righttoleft:    "Direcţia de scriere: dreapta - stânga"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Anulează"
-	},
-
-	msg: {
-		"Path":         "Calea",
-		"TEXT_MODE":    "Eşti în modul TEXT.  Apasă butonul [<>] pentru a te întoarce în modul WYSIWYG."
-	},
-
-	dialogs: {
-		"Cancel"                                            : "Renunţă",
-		"Insert/Modify Link"                                : "Inserează/modifcă link",
-		"New window (_blank)"                               : "Fereastră nouă (_blank)",
-		"None (use implicit)"                               : "Nimic (foloseşte ce-i implicit)",
-		"OK"                                                : "Acceptă",
-		"Other"                                             : "Alt target",
-		"Same frame (_self)"                                : "Aceeaşi fereastră (_self)",
-		"Target:"                                           : "Ţinta:",
-		"Title (tooltip):"                                  : "Titlul (tooltip):",
-		"Top frame (_top)"                                  : "Fereastra principală (_top)",
-		"URL:"                                              : "URL:",
-		"You must enter the URL where this link points to"  : "Trebuie să introduceţi un URL"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ru.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ru.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ru.js	(nonexistent)
@@ -1,63 +0,0 @@
-﻿// I18N constants
-
-// LANG: "ru", ENCODING: UTF-8 | ISO-8859-1
-// Author: Yulya Shtyryakova, <yulya@vdcom.ru>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ru",
-
-	tooltips: {
-		bold:           "Полужирный",
-		italic:         "Наклонный",
-		underline:      "Подчеркнутый",
-		strikethrough:  "Перечеркнутый",
-		subscript:      "Нижний индекс",
-		superscript:    "Верхний индекс",
-		justifyleft:    "По левому краю",
-		justifycenter:  "По центру",
-		justifyright:   "По правому краю",
-		justifyfull:    "По ширине",
-		insertorderedlist:    "Нумерованный лист",
-		insertunorderedlist:  "Маркированный лист",
-		outdent:        "Уменьшить отступ",
-		indent:         "Увеличить отступ",
-		forecolor:      "Цвет шрифта",
-		hilitecolor:    "Цвет фона",
-		horizontalrule: "Горизонтальный разделитель",
-		createlink:     "Вставить гиперссылку",
-		insertimage:    "Вставить изображение",
-		inserttable:    "Вставить таблицу",
-		htmlmode:       "Показать Html-код",
-		popupeditor:    "Увеличить редактор",
-		about:          "О редакторе",
-		showhelp:       "Помощь",
-		textindicator:  "Текущий стиль",
-		undo:           "Отменить",
-		redo:           "Повторить",
-		cut:            "Вырезать",
-		copy:           "Копировать",
-		paste:          "Вставить"
-	},
-
-	buttons: {
-		"ok":           "OK",
-		"cancel":       "Отмена"
-	},
-
-	msg: {
-		"Path":         "Путь",
-		"TEXT_MODE":    "Вы в режиме отображения Html-кода. нажмите кнопку [<>], чтобы переключиться в визуальный режим."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/se.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/se.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/se.js	(nonexistent)
@@ -1,38 +0,0 @@
-// Swedish version for htmlArea v3.0 - Alpha Release
-// - translated by pat<pat@engvall.nu>
-// terms and licenses are equal to htmlarea!
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "se",
-
-	tooltips: {
-		bold:           "Fet",
-		italic:         "Kursiv",
-		underline:      "Understruken",
-		strikethrough:  "Genomstruken",
-		subscript:      "Nedsnkt",
-		superscript:    "Upphjd",
-		justifyleft:    "Vnsterjustera",
-		justifycenter:  "Centrera",
-		justifyright:   "Hgerjustera",
-		justifyfull:    "Marginaljustera",
-		orderedlist:    "Numrerad lista",
-		unorderedlist:  "Punktlista",
-		outdent:        "Minska indrag",
-		indent:         "ka indrag",
-		forecolor:      "Textfrg",
-		backcolor:      "Bakgrundsfrg",
-		horizontalrule: "Vgrt linje",
-		createlink:     "Infoga lnk",
-		insertimage:    "Infoga bild",
-		inserttable:    "Infoga tabell",
-		htmlmode:       "Visa kllkod",
-		popupeditor:    "Visa i eget fnster",
-		about:          "Om denna editor",
-		help:           "Hjlp",
-		textindicator:  "Nuvarande stil"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/si.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/si.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/si.js	(nonexistent)
@@ -1,63 +0,0 @@
-// I18N constants
-
-// LANG: "si", ENCODING: ISO-8859-2
-// Author: Tomaz Kregar, x_tomo_x@email.si
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "si",
-
-	tooltips: {
-		bold:           "Krepko",
-		italic:         "Leee",
-		underline:      "Podrtano",
-		strikethrough:  "Prertano",
-		subscript:      "Podpisano",
-		superscript:    "Nadpisano",
-		justifyleft:    "Poravnaj levo",
-		justifycenter:  "Na sredino",
-		justifyright:   "Poravnaj desno",
-		justifyfull:    "Porazdeli vsebino",
-		orderedlist:    "Otevilevanje",
-		unorderedlist:  "Oznaevanje",
-		outdent:        "Zmanjaj zamik",
-		indent:         "Poveaj zamik",
-		forecolor:      "Barva pisave",
-		hilitecolor:    "Barva ozadja",
-		horizontalrule: "Vodoravna rta",
-		createlink:     "Vstavi hiperpovezavo",
-		insertimage:    "Vstavi sliko",
-		inserttable:    "Vstavi tabelo",
-		htmlmode:       "Preklopi na HTML kodo",
-		popupeditor:    "Poveaj urejevalnik",
-		about:          "Vizitka za urejevalnik",
-		showhelp:       "Pomo za urejevalnik",
-		textindicator:  "Trenutni slog",
-		undo:           "Razveljavi zadnjo akcijo",
-		redo:           "Uveljavi zadnjo akcijo",
-		cut:            "Izrei",
-		copy:           "Kopiraj",
-		paste:          "Prilepi"
-	},
-
-	buttons: {
-		"ok":           "V redu",
-		"cancel":       "Preklii"
-	},
-
-	msg: {
-		"Path":         "Pot",
-		"TEXT_MODE":    "Si v tekstovnem nainu.  Uporabi [<>] gumb za prklop nazaj na WYSIWYG."
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-euc.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-euc.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/lang/ja-euc.js	(nonexistent)
@@ -1,37 +0,0 @@
-// I18N constants -- Japanese EUC
-// by Manabu Onoue -- tmocsys@tmocsys.com
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "ja-euc",
-
-	tooltips: {
-		bold:           "",
-		italic:         "",
-		underline:      "",
-		strikethrough:  "Ǥä",
-		subscript:      "դź",
-		superscript:    "դź",
-		justifyleft:    "",
-		justifycenter:  "",
-		justifyright:   "",
-		justifyfull:    "",
-		orderedlist:    "ֹդվ",
-		unorderedlist:  "դվ",
-		outdent:        "ǥȲ",
-		indent:         "ǥ",
-		forecolor:      "ʸ",
-		backcolor:      "طʿ",
-		horizontalrule: "ʿ",
-		createlink:     "󥯺",
-		insertimage:    "",
-		inserttable:    "ơ֥",
-		htmlmode:       "HTMLɽ",
-		popupeditor:    "ǥ",
-		about:          "С",
-		help:           "إ",
-		textindicator:  "ߤΥ"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/release-notes.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/release-notes.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/release-notes.html	(nonexistent)
@@ -1,165 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <title>HTMLArea-3.0-rc1 release notes</title>
-    <style>
-      .fixme { color: red; }
-    </style>
-  </head>
-
-  <body>
-
-    <h1>HTMLArea-3.0-rc1 release notes</h1>
-
-    <p>This release was compiled on Mar  1, 2004 [19:37] GMT.</p>
-
-    <h2>3.0-rc1</h2>
-
-    <p>Changes since 3.0-Beta:</p>
-
-    <ul>
-      <li>
-        <b>New plugins</b>
-        <ul>
-          <li>
-            ContextMenu plugin (provides a nice context menu with common
-            operations, including table ops, link ops, etc.)
-          </li>
-          <li>
-            CSS plugin (provides an easy way to insert/change CSS classes)
-          </li>
-          <li>
-            FullPage plugin (allows HTMLArea to edit a whole HTML file,
-            not only the content within &lt;body&gt;.)
-          </li>
-        </ul>
-      </li>
-      <li>
-        <b>Changes in the SpellChecker plugin</b>
-        <ul>
-          <li>
-            Many bugfixes: now it works ;-)  Fully Unicode-safe.
-          </li>
-          <li>
-            Speed and bandwidth optimization: reports the list of
-            suggestions only once for each mispelled word; this helps
-            in cases where you have, for instance, the word “HTMLArea”
-            in 10 places all over the document; the list of
-            suggestions for it--which is kind of huge--will only be
-            included <em>once</em>.
-          </li>
-          <li>
-            User interface improvements: the highlighted word will
-            remain in view; in cases where it's normally outside, the
-            window will be scrolled to it.
-          </li>
-          <li>
-            Added a "Revert" button for those that change their minds ;-)
-          </li>
-          <li>
-            Added a "Info" button which reports information about the
-            document, retrieved by the server-side spell checker:
-            total number of words, total number of mispelled words,
-            number of suggestions made, spell check time, etc.  More
-            can be easily added.  <span class="fixme">FIXME: this part
-            is not yet internationalized.</span>
-          </li>
-          <li>
-            The server-side spell checker now uses XML::DOM instead of
-            HTML::Parser, which means that it will be unable to parse
-            “tag-soup” HTML.  It needs valid code.  Usually HTMLArea
-            generates valid code, but on rare occasions it might fail
-            and the spell checker will report a gross error message.
-            This gonna have to be fixed, but instead of making the
-            spell checker accept invalid HTML I prefer to make
-            HTMLArea generate valid code, so changes are to be done in
-            other places ;-)
-          </li>
-        </ul>
-      </li>
-      <li>
-        <b>Changes in the core editor</b>
-        <ul>
-          <li>
-            Easier to setup: you only need to load
-            <tt>htmlarea.js</tt>; other scripts will be loaded
-            automatically.  <a href="reference.html">Documentation</a>
-            and <a href="examples/">examples</a> updated.
-          </li>
-          <li>
-            Better plugin support (they register information about
-            themselves with the editor; can register event handlers for
-            the editor, etc.)
-          </li>
-          <li>
-            New about box; check it out, it's cool ;-)
-          </li>
-          <li>
-            Word cleaner (can be enabled to automatically kill Word crap
-            on paste (see Config.killWordOnPaste); otherwise accessible by
-            pressing CTRL-0 in the editor; a toolbar button will come up
-            soon)
-          </li>
-          <li>
-            Image preview in "insert image" dialog.  Also allows
-            modification of current image, if selected.
-          </li>
-          <li>
-            New "insert link" dialog, allows target and title
-            specification, allows editing links.
-          </li>
-          <li>
-            Implemented support for text direction (left-to-right or
-            right-to-left).
-          </li>
-          <li>
-            Lots of bug fixes!  ... and more, I guess ;-) an
-            automatically generated <a href="ChangeLog">change log</a>
-            is now available.
-          </li>
-        </ul>
-      </li>
-    </ul>
-
-    <p>I don't have the power to go through the <a
-href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug
-system</a> at SourceForge
-    now.  Some of the bugs reported there may be fixed; I'll update
-    their status, some other time.  If you reported bugs there and now
-    find them to be fixed, please let me know.</p>
-
-    <h2>3.0-Beta</h2>
-
-    <p>Changes since 3.0-Alpha:</p>
-
-    <ul>
-
-      <li>Performance improvements.</li>
-
-      <li>Many bugs fixed.</li>
-
-      <li>Plugin infrastructure.</li>
-
-      <li>TableOperations plugin.</li>
-
-      <li>SpellChecker plugin.</li>
-
-      <li>Status bar.</li>
-
-      <li>API for registering custom buttons and drop-down boxes in the
-        toolbar.</li>
-
-      <li>Toolbar can contain text labels.</li>
-
-      <li>Cut, copy, paste, undo, redo buttons.</li>
-
-    </ul>
-    <hr />
-    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
-<!-- Created: Sun Aug  3 16:55:08 EEST 2003 -->
-<!-- hhmts start --> Last modified: Sun Feb  1 13:16:10 EET 2004 <!-- hhmts end -->
-<!-- doc-lang: English -->
-  </body>
-</html>
-
-
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/nl.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/nl.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/nl.js	(nonexistent)
@@ -1,66 +0,0 @@
-// I18N constants
-
-// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
-// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
-
-// 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.)
-
-ContextMenu.I18N = {
-	// Items that appear in menu.  Please note that an underscore (_)
-	// character in the translation (right column) will cause the following
-	// letter to become underlined and be shortcut for that menu option.
-
-	"Cut"                                                   : "Knippen",
-	"Copy"                                                  : "Kopiren",
-	"Paste"                                                 : "Plakken",
-	"Image Properties"                                      : "Eigenschappen afbeelding...",
-	"Modify Link"                                           : "Hyperlin_k aanpassen...",
-	"Check Link"                                            : "Controleer hyperlin_k...",
-	"Remove Link"                                           : "Ve_rwijder hyperlink...",
-	"Cell Properties"                                       : "C_eleigenschappen...",
-	"Row Properties"                                        : "Rijeigenscha_ppen...",
-	"Insert Row Before"                                     : "Rij invoegen boven",
-	"Insert Row After"                                      : "Rij invoegen onder",
-	"Delete Row"                                            : "Rij _verwijderen",
-	"Table Properties"                                      : "_Tabeleigenschappen...",
-	"Insert Column Before"                                  : "Kolom invoegen voor",
-	"Insert Column After"                                   : "Kolom invoegen na",
-	"Delete Column"                                         : "Kolom verwijderen",
-	"Justify Left"                                          : "Links uitlijnen",
-	"Justify Center"                                        : "Centreren",
-	"Justify Right"                                         : "Rechts uitlijnen",
-	"Justify Full"                                          : "Uitvullen",
-	"Make link"                                             : "Maak hyperlin_k...",
-	"Remove the"                                            : "Verwijder het",
-	"Element"                                               : "element...",
-
-	// Other labels (tooltips and alert/confirm box messages)
-
-	"Please confirm that you want to remove this element:"  : "Is het werkelijk de bedoeling dit element te verwijderen:",
-	"Remove this node from the document"                    : "Verwijder dit punt van het document",
-	"How did you get here? (Please report!)"                : "Hoe kwam je hier? (A.U.B. doorgeven!)",
-	"Show the image properties dialog"                      : "Laat het afbeeldingseigenschappen dialog zien",
-	"Modify URL"                                            : "Aanpassen URL",
-	"Current URL is"                                        : "Huidig URL is",
-	"Opens this link in a new window"                       : "Opend deze hyperlink in een nieuw venster",
-	"Please confirm that you want to unlink this element."  : "Is het werkelijk de bedoeling dit element te unlinken.",
-	"Link points to:"                                       : "Hyperlink verwijst naar:",
-	"Unlink the current element"                            : "Unlink het huidige element",
-	"Show the Table Cell Properties dialog"                 : "Laat de tabel celeigenschappen dialog zien",
-	"Show the Table Row Properties dialog"                  : "Laat de tabel rijeigenschappen dialog zien",
-	"Insert a new row before the current one"               : "Voeg een nieuwe rij in boven de huidige",
-	"Insert a new row after the current one"                : "Voeg een nieuwe rij in onder de huidige",
-	"Delete the current row"                                : "Verwijder de huidige rij",
-	"Show the Table Properties dialog"                      : "Laat de tabel eigenschappen dialog zien",
-	"Insert a new column before the current one"            : "Voeg een nieuwe kolom in voor de huidige",
-	"Insert a new column after the current one"             : "Voeg een nieuwe kolom in na de huidige",
-	"Delete the current column"                             : "Verwijder de huidige kolom",
-	"Create a link"                                         : "Maak een hyperlink"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/de.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/de.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/de.js	(nonexistent)
@@ -1,59 +0,0 @@
-﻿// I18N constants
-
-// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
-
-// translated: <]{MJ}[>  i@student.ethz.ch
-
-
-ContextMenu.I18N = {
-	// Items that appear in menu.  Please note that an underscore (_)
-	// character in the translation (right column) will cause the following
-	// letter to become underlined and be shortcut for that menu option.
-
-	"Cut"                                                   : "Ausschneiden",
-	"Copy"                                                  : "Kopieren",
-	"Paste"                                                 : "Einfügen",
-	"Image Properties"                                      : "_Bild Einstellungen...",
-	"Modify Link"                                           : "_Link ändern...",
-	"Check Link"                                            : "Link testen...",
-	"Remove Link"                                           : "Link entfernen...",
-	"Cell Properties"                                       : "Z_ellen Einstellungen...",
-	"Row Properties"                                        : "Ze_ilen Einstellungen...",
-	"Insert Row Before"                                     : "Zeile einfügen v_or Position",
-	"Insert Row After"                                      : "Zeile einfügen n_ach Position",
-	"Delete Row"                                            : "Zeile löschen",
-	"Table Properties"                                      : "_Tabellen Einstellungen...",
-	"Insert Column Before"                                  : "Spalte einfügen vo_r Position",
-	"Insert Column After"                                   : "Spalte einfügen na_ch Position",
-	"Delete Column"                                         : "Spalte löschen",
-	"Justify Left"                                          : "Links ausrichten",
-	"Justify Center"                                        : "Zentriert",
-	"Justify Right"                                         : "Rechts ausrichten",
-	"Justify Full"                                          : "Blocksatz",
-	"Make link"                                             : "Lin_k erstellen...",
-	"Remove the"                                            : "",
-	"Element"                                               : "Element entfernen...",
-
-	// Other labels (tooltips and alert/confirm box messages)
-
-	"Please confirm that you want to remove this element:"  : "Wollen sie dieses Element wirklich entfernen ?",
-	"Remove this node from the document"                    : "Dieses Element aus dem Dokument entfernen",
-	"How did you get here? (Please report!)"                : "How did you get here? (Please report!)",
-	"Show the image properties dialog"                      : "Fenster für die Bild-Einstellungen anzeigen",
-	"Modify URL"                                            : "URL ändern",
-	"Current URL is"                                        : "Aktuelle URL ist",
-	"Opens this link in a new window"                       : "Diesen Link in neuem Fenster öffnen",
-	"Please confirm that you want to unlink this element."  : "Wollen sie diesen Link wirklich entfernen ?",
-	"Link points to:"                                       : "Link zeigt auf:",
-	"Unlink the current element"                            : "Link auf Element entfernen",
-	"Show the Table Cell Properties dialog"                 : "Zellen-Einstellungen anzeigen",
-	"Show the Table Row Properties dialog"                  : "Zeilen-Einstellungen anzeigen",
-	"Insert a new row before the current one"               : "Zeile einfügen vor der aktuellen Position",
-	"Insert a new row after the current one"                : "Zeile einfügen nach der aktuellen Position",
-	"Delete the current row"                                : "Zeile löschen",
-	"Show the Table Properties dialog"                      : "Show the Table Properties dialog",
-	"Insert a new column before the current one"            : "Spalte einfügen vor der aktuellen Position",
-	"Insert a new column after the current one"             : "Spalte einfügen nach der aktuellen Position",
-	"Delete the current column"                             : "Spalte löschen",
-	"Create a link"                                         : "Link erstellen"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/el.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/el.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/el.js	(nonexistent)
@@ -1,57 +0,0 @@
-// I18N constants
-
-// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
-// Author: Dimitris Glezos, dimitris@glezos.com
-
-ContextMenu.I18N = {
-	// Items that appear in menu.  Please note that an underscore (_)
-	// character in the translation (right column) will cause the following
-	// letter to become underlined and be shortcut for that menu option.
-
-	"Cut"                                                   : "Αποκοπή",
-	"Copy"                                                  : "Αντιγραφή",
-	"Paste"                                                 : "Επικόλληση",
-	"Image Properties"                                      : "Ιδιότητες Εικόνας...",
-	"Modify Link"                                           : "Τροποποίηση συνδέσμου...",
-	"Check Link"                                            : "Έλεγχος συνδέσμων...",
-	"Remove Link"                                           : "Διαγραφή συνδέσμου...",
-	"Cell Properties"                                       : "Ιδιότητες κελιού...",
-	"Row Properties"                                        : "Ιδιότητες γραμμής...",
-	"Insert Row Before"                                     : "Εισαγωγή γραμμής πριν",
-	"Insert Row After"                                      : "Εισαγωγή γραμμής μετά",
-	"Delete Row"                                            : "Διαγραφή γραμμής",
-	"Table Properties"                                      : "Ιδιότητες πίνακα...",
-	"Insert Column Before"                                  : "Εισαγωγή στήλης πριν",
-	"Insert Column After"                                   : "Εισαγωγή στήλης μετά",
-	"Delete Column"                                         : "Διαγραφή στήλης",
-	"Justify Left"                                          : "Στοίχηση Αριστερά",
-	"Justify Center"                                        : "Στοίχηση Κέντρο",
-	"Justify Right"                                         : "Στοίχηση Δεξιά",
-	"Justify Full"                                          : "Πλήρης Στοίχηση",
-	"Make link"                                             : "Δημιουργία συνδέσμου...",
-	"Remove the"                                            : "Αφαίρεση",
-	"Element"                                               : "στοιχείου...",
-
-	// Other labels (tooltips and alert/confirm box messages)
-
-	"Please confirm that you want to remove this element:"  : "Είστε βέβαιος πως θέλετε να αφαιρέσετε το στοιχείο ",
-	"Remove this node from the document"                    : "Αφαίρεση αυτού του κόμβου από το έγγραφο",
-	"How did you get here? (Please report!)"                : "Πώς ήρθατε μέχρι εδώ; (Παρακαλούμε αναφέρετε το!)",
-	"Show the image properties dialog"                      : "Εμφάνιση διαλόγου με τις Ιδιότητες εικόνας",
-	"Modify URL"                                            : "Τροποποίηση URL",
-	"Current URL is"                                        : "Το τρέχων URL είναι",
-	"Opens this link in a new window"                       : "Ανοίγει αυτό τον σύνδεσμο σε ένα νέο παράθυρο",
-	"Please confirm that you want to unlink this element."  : "Είστε βέβαιος πως θέλετε να αφαιρέσετε τον σύνδεσμο από αυτό το στοιχείο:",
-	"Link points to:"                                       : "Ο σύνδεμος οδηγεί εδώ:",
-	"Unlink the current element"                            : "Αφαίρεση συνδέσμου από το παρών στοιχείο",
-	"Show the Table Cell Properties dialog"                 : "Εμφάνιση διαλόγου με τις Ιδιότητες κελιού Πίνακα",
-	"Show the Table Row Properties dialog"                  : "Εμφάνιση διαλόγου με τις Ιδιότητες γραμμής Πίνακα",
-	"Insert a new row before the current one"               : "Εισαγωγή μιας νέας γραμμής πριν την επιλεγμένη",
-	"Insert a new row after the current one"                : "Εισαγωγή μιας νέας γραμμής μετά την επιλεγμένη",
-	"Delete the current row"                                : "Διαγραφή επιλεγμένης γραμμής",
-	"Show the Table Properties dialog"                      : "Εμφάνιση διαλόγου με τις Ιδιότητες Πίνακα",
-	"Insert a new column before the current one"            : "Εισαγωγή νέας στήλης πριν την επιλεγμένη",
-	"Insert a new column after the current one"             : "Εισαγωγή νέας στήλης μετά την επιλεγμένη",
-	"Delete the current column"                             : "Διαγραφή επιλεγμένης στήλης",
-	"Create a link"                                         : "Δημιουργία συνδέσμου"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/en.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/en.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/en.js	(nonexistent)
@@ -1,66 +0,0 @@
-// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-ContextMenu.I18N = {
-	// Items that appear in menu.  Please note that an underscore (_)
-	// character in the translation (right column) will cause the following
-	// letter to become underlined and be shortcut for that menu option.
-
-	"Cut"                                                   : "Cut",
-	"Copy"                                                  : "Copy",
-	"Paste"                                                 : "Paste",
-	"Image Properties"                                      : "_Image Properties...",
-	"Modify Link"                                           : "_Modify Link...",
-	"Check Link"                                            : "Chec_k Link...",
-	"Remove Link"                                           : "_Remove Link...",
-	"Cell Properties"                                       : "C_ell Properties...",
-	"Row Properties"                                        : "Ro_w Properties...",
-	"Insert Row Before"                                     : "I_nsert Row Before",
-	"Insert Row After"                                      : "In_sert Row After",
-	"Delete Row"                                            : "_Delete Row",
-	"Table Properties"                                      : "_Table Properties...",
-	"Insert Column Before"                                  : "Insert _Column Before",
-	"Insert Column After"                                   : "Insert C_olumn After",
-	"Delete Column"                                         : "De_lete Column",
-	"Justify Left"                                          : "Justify Left",
-	"Justify Center"                                        : "Justify Center",
-	"Justify Right"                                         : "Justify Right",
-	"Justify Full"                                          : "Justify Full",
-	"Make link"                                             : "Make lin_k...",
-	"Remove the"                                            : "Remove the",
-	"Element"                                               : "Element...",
-
-	// Other labels (tooltips and alert/confirm box messages)
-
-	"Please confirm that you want to remove this element:"  : "Please confirm that you want to remove this element:",
-	"Remove this node from the document"                    : "Remove this node from the document",
-	"How did you get here? (Please report!)"                : "How did you get here? (Please report!)",
-	"Show the image properties dialog"                      : "Show the image properties dialog",
-	"Modify URL"                                            : "Modify URL",
-	"Current URL is"                                        : "Current URL is",
-	"Opens this link in a new window"                       : "Opens this link in a new window",
-	"Please confirm that you want to unlink this element."  : "Please confirm that you want to unlink this element.",
-	"Link points to:"                                       : "Link points to:",
-	"Unlink the current element"                            : "Unlink the current element",
-	"Show the Table Cell Properties dialog"                 : "Show the Table Cell Properties dialog",
-	"Show the Table Row Properties dialog"                  : "Show the Table Row Properties dialog",
-	"Insert a new row before the current one"               : "Insert a new row before the current one",
-	"Insert a new row after the current one"                : "Insert a new row after the current one",
-	"Delete the current row"                                : "Delete the current row",
-	"Show the Table Properties dialog"                      : "Show the Table Properties dialog",
-	"Insert a new column before the current one"            : "Insert a new column before the current one",
-	"Insert a new column after the current one"             : "Insert a new column after the current one",
-	"Delete the current column"                             : "Delete the current column",
-	"Create a link"                                         : "Create a link"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/context-menu.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/context-menu.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/context-menu.js	(nonexistent)
@@ -1,416 +0,0 @@
-// Context Menu Plugin for HTMLArea-3.0
-// Sponsored by www.americanbible.org
-// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
-//
-// (c) dynarch.com 2003.
-// Distributed under the same terms as HTMLArea itself.
-// This notice MUST stay intact for use (see license.txt).
-//
-// $Id: context-menu.js,v 1.1.1.1 2005/01/30 10:31:40 rdjurovich Exp $
-
-HTMLArea.loadStyle("menu.css", "ContextMenu");
-
-function ContextMenu(editor) {
-	this.editor = editor;
-};
-
-ContextMenu._pluginInfo = {
-	name          : "ContextMenu",
-	version       : "1.0",
-	developer     : "Mihai Bazon",
-	developer_url : "http://dynarch.com/mishoo/",
-	c_owner       : "dynarch.com",
-	sponsor       : "American Bible Society",
-	sponsor_url   : "http://www.americanbible.org",
-	license       : "htmlArea"
-};
-
-ContextMenu.prototype.onGenerate = function() {
-	var self = this;
-	var doc = this.editordoc = this.editor._iframe.contentWindow.document;
-	HTMLArea._addEvents(doc, ["contextmenu"],
-			    function (event) {
-				    return self.popupMenu(HTMLArea.is_ie ? self.editor._iframe.contentWindow.event : event);
-			    });
-	this.currentMenu = null;
-};
-
-ContextMenu.prototype.getContextMenu = function(target) {
-	var self = this;
-	var editor = this.editor;
-	var config = editor.config;
-	var menu = [];
-	var tbo = this.editor.plugins.TableOperations;
-	if (tbo) tbo = tbo.instance;
-	var i18n = ContextMenu.I18N;
-
-	var selection = editor.hasSelectedText();
-	if (selection)
-		menu.push([ i18n["Cut"], function() { editor.execCommand("cut"); }, null, config.btnList["cut"][1] ],
-			  [ i18n["Copy"], function() { editor.execCommand("copy"); }, null, config.btnList["copy"][1] ]);
-	menu.push([ i18n["Paste"], function() { editor.execCommand("paste"); }, null, config.btnList["paste"][1] ]);
-
-	var currentTarget = target;
-	var elmenus = [];
-
-	var link = null;
-	var table = null;
-	var tr = null;
-	var td = null;
-	var img = null;
-
-	function tableOperation(opcode) {
-		tbo.buttonPress(editor, opcode);
-	};
-
-	for (; target; target = target.parentNode) {
-		var tag = target.tagName;
-		if (!tag)
-			continue;
-		tag = tag.toLowerCase();
-		switch (tag) {
-		    case "img":
-			img = target;
-			elmenus.push(null,
-				     [ i18n["Image Properties"],
-				       function() {
-					       editor._insertImage(img);
-				       },
-				       i18n["Show the image properties dialog"],
-				       config.btnList["insertimage"][1] ]
-				);
-			break;
-		    case "a":
-			link = target;
-			elmenus.push(null,
-				     [ i18n["Modify Link"],
-				       function() { editor.execCommand("createlink", true); },
-				       i18n["Current URL is"] + ': ' + link.href,
-				       config.btnList["createlink"][1] ],
-
-				     [ i18n["Check Link"],
-				       function() { window.open(link.href); },
-				       i18n["Opens this link in a new window"] ],
-
-				     [ i18n["Remove Link"],
-				       function() {
-					       if (confirm(i18n["Please confirm that you want to unlink this element."] + "\n" +
-							   i18n["Link points to:"] + " " + link.href)) {
-						       while (link.firstChild)
-							       link.parentNode.insertBefore(link.firstChild, link);
-						       link.parentNode.removeChild(link);
-					       }
-				       },
-				       i18n["Unlink the current element"] ]
-				);
-			break;
-		    case "td":
-			td = target;
-			if (!tbo) break;
-			elmenus.push(null,
-				     [ i18n["Cell Properties"],
-				       function() { tableOperation("TO-cell-prop"); },
-				       i18n["Show the Table Cell Properties dialog"],
-				       config.btnList["TO-cell-prop"][1] ]
-				);
-			break;
-		    case "tr":
-			tr = target;
-			if (!tbo) break;
-			elmenus.push(null,
-				     [ i18n["Row Properties"],
-				       function() { tableOperation("TO-row-prop"); },
-				       i18n["Show the Table Row Properties dialog"],
-				       config.btnList["TO-row-prop"][1] ],
-
-				     [ i18n["Insert Row Before"],
-				       function() { tableOperation("TO-row-insert-above"); },
-				       i18n["Insert a new row before the current one"],
-				       config.btnList["TO-row-insert-above"][1] ],
-
-				     [ i18n["Insert Row After"],
-				       function() { tableOperation("TO-row-insert-under"); },
-				       i18n["Insert a new row after the current one"],
-				       config.btnList["TO-row-insert-under"][1] ],
-
-				     [ i18n["Delete Row"],
-				       function() { tableOperation("TO-row-delete"); },
-				       i18n["Delete the current row"],
-				       config.btnList["TO-row-delete"][1] ]
-				);
-			break;
-		    case "table":
-			table = target;
-			if (!tbo) break;
-			elmenus.push(null,
-				     [ i18n["Table Properties"],
-				       function() { tableOperation("TO-table-prop"); },
-				       i18n["Show the Table Properties dialog"],
-				       config.btnList["TO-table-prop"][1] ],
-
-				     [ i18n["Insert Column Before"],
-				       function() { tableOperation("TO-col-insert-before"); },
-				       i18n["Insert a new column before the current one"],
-				       config.btnList["TO-col-insert-before"][1] ],
-
-				     [ i18n["Insert Column After"],
-				       function() { tableOperation("TO-col-insert-after"); },
-				       i18n["Insert a new column after the current one"],
-				       config.btnList["TO-col-insert-after"][1] ],
-
-				     [ i18n["Delete Column"],
-				       function() { tableOperation("TO-col-delete"); },
-				       i18n["Delete the current column"],
-				       config.btnList["TO-col-delete"][1] ]
-				);
-			break;
-		    case "body":
-			elmenus.push(null,
-				     [ i18n["Justify Left"],
-				       function() { editor.execCommand("justifyleft"); }, null,
-				       config.btnList["justifyleft"][1] ],
-				     [ i18n["Justify Center"],
-				       function() { editor.execCommand("justifycenter"); }, null,
-				       config.btnList["justifycenter"][1] ],
-				     [ i18n["Justify Right"],
-				       function() { editor.execCommand("justifyright"); }, null,
-				       config.btnList["justifyright"][1] ],
-				     [ i18n["Justify Full"],
-				       function() { editor.execCommand("justifyfull"); }, null,
-				       config.btnList["justifyfull"][1] ]
-				);
-			break;
-		}
-	}
-
-	if (selection && !link)
-		menu.push(null, [ i18n["Make link"],
-				  function() { editor.execCommand("createlink", true); },
-				  i18n["Create a link"],
-				  config.btnList["createlink"][1] ]);
-
-	for (var i in elmenus)
-		menu.push(elmenus[i]);
-
-	menu.push(null,
-		  [ i18n["Remove the"] + " &lt;" + currentTarget.tagName + "&gt; " + i18n["Element"],
-		    function() {
-			    if (confirm(i18n["Please confirm that you want to remove this element:"] + " " + currentTarget.tagName)) {
-				    var el = currentTarget;
-				    var p = el.parentNode;
-				    p.removeChild(el);
-				    if (HTMLArea.is_gecko) {
-					    if (p.tagName.toLowerCase() == "td" && !p.hasChildNodes())
-						    p.appendChild(editor._doc.createElement("br"));
-					    editor.forceRedraw();
-					    editor.focusEditor();
-					    editor.updateToolbar();
-					    if (table) {
-						    var save_collapse = table.style.borderCollapse;
-						    table.style.borderCollapse = "collapse";
-						    table.style.borderCollapse = "separate";
-						    table.style.borderCollapse = save_collapse;
-					    }
-				    }
-			    }
-		    },
-		    i18n["Remove this node from the document"] ]);
-	return menu;
-};
-
-ContextMenu.prototype.popupMenu = function(ev) {
-	var self = this;
-	var i18n = ContextMenu.I18N;
-	if (this.currentMenu)
-		this.currentMenu.parentNode.removeChild(this.currentMenu);
-	function getPos(el) {
-		var r = { x: el.offsetLeft, y: el.offsetTop };
-		if (el.offsetParent) {
-			var tmp = getPos(el.offsetParent);
-			r.x += tmp.x;
-			r.y += tmp.y;
-		}
-		return r;
-	};
-	function documentClick(ev) {
-		ev || (ev = window.event);
-		if (!self.currentMenu) {
-			alert(i18n["How did you get here? (Please report!)"]);
-			return false;
-		}
-		var el = HTMLArea.is_ie ? ev.srcElement : ev.target;
-		for (; el != null && el != self.currentMenu; el = el.parentNode);
-		if (el == null)
-			self.closeMenu();
-		//HTMLArea._stopEvent(ev);
-		//return false;
-	};
-	var keys = [];
-	function keyPress(ev) {
-		ev || (ev = window.event);
-		HTMLArea._stopEvent(ev);
-		if (ev.keyCode == 27) {
-			self.closeMenu();
-			return false;
-		}
-		var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase();
-		for (var i = keys.length; --i >= 0;) {
-			var k = keys[i];
-			if (k[0].toLowerCase() == key)
-				k[1].__msh.activate();
-		}
-	};
-	self.closeMenu = function() {
-		self.currentMenu.parentNode.removeChild(self.currentMenu);
-		self.currentMenu = null;
-		HTMLArea._removeEvent(document, "mousedown", documentClick);
-		HTMLArea._removeEvent(self.editordoc, "mousedown", documentClick);
-		if (keys.length > 0)
-			HTMLArea._removeEvent(self.editordoc, "keypress", keyPress);
-		if (HTMLArea.is_ie)
-			self.iePopup.hide();
-	};
-	var target = HTMLArea.is_ie ? ev.srcElement : ev.target;
-	var ifpos = getPos(self.editor._iframe);
-	var x = ev.clientX + ifpos.x;
-	var y = ev.clientY + ifpos.y;
-
-	var div;
-	var doc;
-	if (!HTMLArea.is_ie) {
-		doc = document;
-	} else {
-		// IE stinks
-		var popup = this.iePopup = window.createPopup();
-		doc = popup.document;
-		doc.open();
-		doc.write("<html><head><style type='text/css'>@import url(" + _editor_url + "plugins/ContextMenu/menu.css); html, body { padding: 0px; margin: 0px; overflow: hidden; border: 0px; }</style></head><body unselectable='yes'></body></html>");
-		doc.close();
-	}
-	div = doc.createElement("div");
-	if (HTMLArea.is_ie)
-		div.unselectable = "on";
-	div.oncontextmenu = function() { return false; };
-	div.className = "htmlarea-context-menu";
-	if (!HTMLArea.is_ie)
-		div.style.left = div.style.top = "0px";
-	doc.body.appendChild(div);
-
-	var table = doc.createElement("table");
-	div.appendChild(table);
-	table.cellSpacing = 0;
-	table.cellPadding = 0;
-	var parent = doc.createElement("tbody");
-	table.appendChild(parent);
-
-	var options = this.getContextMenu(target);
-	for (var i = 0; i < options.length; ++i) {
-		var option = options[i];
-		var item = doc.createElement("tr");
-		parent.appendChild(item);
-		if (HTMLArea.is_ie)
-			item.unselectable = "on";
-		else item.onmousedown = function(ev) {
-			HTMLArea._stopEvent(ev);
-			return false;
-		};
-		if (!option) {
-			item.className = "separator";
-			var td = doc.createElement("td");
-			td.className = "icon";
-			var IE_IS_A_FUCKING_SHIT = '>';
-			if (HTMLArea.is_ie) {
-				td.unselectable = "on";
-				IE_IS_A_FUCKING_SHIT = " unselectable='on' style='height=1px'>&nbsp;";
-			}
-			td.innerHTML = "<div" + IE_IS_A_FUCKING_SHIT + "</div>";
-			var td1 = td.cloneNode(true);
-			td1.className = "label";
-			item.appendChild(td);
-			item.appendChild(td1);
-		} else {
-			var label = option[0];
-			item.className = "item";
-			item.__msh = {
-				item: item,
-				label: label,
-				action: option[1],
-				tooltip: option[2] || null,
-				icon: option[3] || null,
-				activate: function() {
-					self.closeMenu();
-					self.editor.focusEditor();
-					this.action();
-				}
-			};
-			label = label.replace(/_([a-zA-Z0-9])/, "<u>$1</u>");
-			if (label != option[0])
-				keys.push([ RegExp.$1, item ]);
-			label = label.replace(/__/, "_");
-			var td1 = doc.createElement("td");
-			if (HTMLArea.is_ie)
-				td1.unselectable = "on";
-			item.appendChild(td1);
-			td1.className = "icon";
-			if (item.__msh.icon)
-				td1.innerHTML = "<img align='middle' src='" + item.__msh.icon + "' />";
-			var td2 = doc.createElement("td");
-			if (HTMLArea.is_ie)
-				td2.unselectable = "on";
-			item.appendChild(td2);
-			td2.className = "label";
-			td2.innerHTML = label;
-			item.onmouseover = function() {
-				this.className += " hover";
-				self.editor._statusBarTree.innerHTML = this.__msh.tooltip || '&nbsp;';
-			};
-			item.onmouseout = function() { this.className = "item"; };
-			item.oncontextmenu = function(ev) {
-				this.__msh.activate();
-				if (!HTMLArea.is_ie)
-					HTMLArea._stopEvent(ev);
-				return false;
-			};
-			item.onmouseup = function(ev) {
-				var timeStamp = (new Date()).getTime();
-				if (timeStamp - self.timeStamp > 500)
-					this.__msh.activate();
-				if (!HTMLArea.is_ie)
-					HTMLArea._stopEvent(ev);
-				return false;
-			};
-			//if (typeof option[2] == "string")
-			//item.title = option[2];
-		}
-	}
-
-	if (!HTMLArea.is_ie) {
-		var dx = x + div.offsetWidth - window.innerWidth + 4;
-		var dy = y + div.offsetHeight - window.innerHeight + 4;
-		if (dx > 0) x -= dx;
-		if (dy > 0) y -= dy;
-		div.style.left = x + "px";
-		div.style.top = y + "px";
-	} else {
-		// determine the size (did I mention that IE stinks?)
-		var foobar = document.createElement("div");
-		foobar.className = "htmlarea-context-menu";
-		foobar.innerHTML = div.innerHTML;
-		document.body.appendChild(foobar);
-		var w = foobar.offsetWidth;
-		var h = foobar.offsetHeight;
-		document.body.removeChild(foobar);
-		this.iePopup.show(ev.screenX, ev.screenY, w, h);
-	}
-
-	this.currentMenu = div;
-	this.timeStamp = (new Date()).getTime();
-
-	HTMLArea._addEvent(document, "mousedown", documentClick);
-	HTMLArea._addEvent(this.editordoc, "mousedown", documentClick);
-	if (keys.length > 0)
-		HTMLArea._addEvent(this.editordoc, "keypress", keyPress);
-
-	HTMLArea._stopEvent(ev);
-	return false;
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/menu.css
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/menu.css	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/ContextMenu/menu.css	(nonexistent)
@@ -1,64 +0,0 @@
-/* styles for the ContextMenu /HTMLArea */
-/* The ContextMenu plugin is (c) dynarch.com 2003. */
-/* Distributed under the same terms as HTMLArea itself */
-
-div.htmlarea-context-menu {
-  position: absolute;
-  border: 1px solid #aca899;
-  padding: 2px;
-  background-color: #fff;
-  cursor: default;
-  z-index: 1000;
-}
-
-div.htmlarea-context-menu table {
-  font: 11px tahoma,verdana,sans-serif;
-  border-collapse: collapse;
-}
-
-div.htmlarea-context-menu tr.item td.icon img {
-  width: 18px;
-  height: 18px;
-}
-
-div.htmlarea-context-menu tr.item td.icon {
-  padding: 0px 3px;
-  height: 18px;
-  background-color: #cdf;
-}
-
-div.htmlarea-context-menu tr.item td.label {
-  padding: 1px 10px 1px 3px;
-}
-
-div.htmlarea-context-menu tr.separator td {
-  padding: 2px 0px;
-}
-
-div.htmlarea-context-menu tr.separator td div {
-  border-top: 1px solid #aca899;
-  overflow: hidden;
-  position: relative;
-}
-
-div.htmlarea-context-menu tr.separator td.icon {
-  background-color: #cdf;
-}
-
-div.htmlarea-context-menu tr.separator td.icon div {
-/*  margin-left: 3px; */
-  border-color: #fff;
-}
-
-div.htmlarea-context-menu tr.separator td.label div {
-  margin-right: 3px;
-}
-
-div.htmlarea-context-menu tr.item.hover {
-  background-color: #316ac5;
-  color: #fff;
-}
-
-div.htmlarea-context-menu tr.item.hover td.icon {
-  background-color: #619af5;
-}
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/CSS/lang/en.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/CSS/lang/en.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/CSS/lang/en.js	(nonexistent)
@@ -1,2 +0,0 @@
-// none yet; this file is a stub.
-CSS.I18N = {};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/CSS/css.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/CSS/css.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/CSS/css.js	(nonexistent)
@@ -1,116 +0,0 @@
-// Simple CSS (className) plugin for the editor
-// Sponsored by http://www.miro.com.au
-// Implementation by Mihai Bazon, http://dynarch.com/mishoo.
-//
-// (c) dynarch.com 2003
-// Distributed under the same terms as HTMLArea itself.
-// This notice MUST stay intact for use (see license.txt).
-//
-// $Id: css.js,v 1.1.1.1 2005/01/30 10:31:22 rdjurovich Exp $
-
-function CSS(editor, params) {
-	this.editor = editor;
-	var cfg = editor.config;
-	var toolbar = cfg.toolbar;
-	var self = this;
-	var i18n = CSS.I18N;
-	var plugin_config = params[0];
-	var combos = plugin_config.combos;
-
-	var first = true;
-	for (var i = combos.length; --i >= 0;) {
-		var combo = combos[i];
-		var id = "CSS-class" + i;
-		var css_class = {
-			id         : id,
-			options    : combo.options,
-			action     : function(editor) { self.onSelect(editor, this, combo.context, combo.updatecontextclass); },
-			refresh    : function(editor) { self.updateValue(editor, this); },
-			context    : combo.context
-		};
-		cfg.registerDropdown(css_class);
-
-		// prepend to the toolbar
-		toolbar[1].splice(0, 0, first ? "separator" : "space");
-		toolbar[1].splice(0, 0, id);
-		if (combo.label)
-			toolbar[1].splice(0, 0, "T[" + combo.label + "]");
-		first = false;
-	}
-};
-
-CSS._pluginInfo = {
-	name          : "CSS",
-	version       : "1.0",
-	developer     : "Mihai Bazon",
-	developer_url : "http://dynarch.com/mishoo/",
-	c_owner       : "Mihai Bazon",
-	sponsor       : "Miro International",
-	sponsor_url   : "http://www.miro.com.au",
-	license       : "htmlArea"
-};
-
-CSS.prototype.onSelect = function(editor, obj, context, updatecontextclass) {
-	var tbobj = editor._toolbarObjects[obj.id];
-	var index = tbobj.element.selectedIndex;
-	var className = tbobj.element.value;
-
-	// retrieve parent element of the selection
-	var parent = editor.getParentElement();
-	var surround = true;
-
-	var is_span = (parent && parent.tagName.toLowerCase() == "span");
-	var update_parent = (context && updatecontextclass && parent && parent.tagName.toLowerCase() == context);
-
-	if (update_parent) {
-		parent.className = className;
-		editor.updateToolbar();
-		return;
-	}
-
-	if (is_span && index == 0 && !/\S/.test(parent.style.cssText)) {
-		while (parent.firstChild) {
-			parent.parentNode.insertBefore(parent.firstChild, parent);
-		}
-		parent.parentNode.removeChild(parent);
-		editor.updateToolbar();
-		return;
-	}
-
-	if (is_span) {
-		// maybe we could simply change the class of the parent node?
-		if (parent.childNodes.length == 1) {
-			parent.className = className;
-			surround = false;
-			// in this case we should handle the toolbar updation
-			// ourselves.
-			editor.updateToolbar();
-		}
-	}
-
-	// Other possibilities could be checked but require a lot of code.  We
-	// can't afford to do that now.
-	if (surround) {
-		// shit happens ;-) most of the time.  this method works, but
-		// it's dangerous when selection spans multiple block-level
-		// elements.
-		editor.surroundHTML("<span class='" + className + "'>", "</span>");
-	}
-};
-
-CSS.prototype.updateValue = function(editor, obj) {
-	var select = editor._toolbarObjects[obj.id].element;
-	var parent = editor.getParentElement();
-	if (typeof parent.className != "undefined" && /\S/.test(parent.className)) {
-		var options = select.options;
-		var value = parent.className;
-		for (var i = options.length; --i >= 0;) {
-			var option = options[i];
-			if (value == option.value) {
-				select.selectedIndex = i;
-				return;
-			}
-		}
-	}
-	select.selectedIndex = 0;
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/hu.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/hu.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/hu.js	(nonexistent)
@@ -1,37 +0,0 @@
-// I18N constants
-
-// LANG: "hu", ENCODING: UTF-8
-// Author: Miklós Somogyi, <somogyine@vnet.hu>
-
-// 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.)
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Megerősítés",
-	"Cancel"                                : "Mégsem",
-	"Dictionary"                            : "Szótár",
-	"Finished list of mispelled words"      : "A tévesztett szavak listájának vége",
-	"I will open it in a new page."         : "Megnyitás új lapon",
-	"Ignore all"                            : "Minden elvetése",
-	"Ignore"                                : "Elvetés",
-	"NO_ERRORS"                             : "A választott szótár szerint nincs tévesztett szó.",
-	"NO_ERRORS_CLOSING"                     : "A helyesírásellenőrzés kész, tévesztett szó nem fordult elő. Bezárás...",
-	"OK"                                    : "Rendben",
-	"Original word"                         : "Eredeti szó",
-	"Please wait.  Calling spell checker."  : "Kis türelmet, a helyesírásellenőrző hívása folyamatban.",
-	"Please wait: changing dictionary to"   : "Kis türelmet, szótár cseréje",
-	"QUIT_CONFIRMATION"                     : "Kilépés a változások eldobásával. Jóváhagyja?",
-	"Re-check"                              : "Újraellenőrzés",
-	"Replace all"                           : "Mind cseréje",
-	"Replace with"                          : "Csere a következőre:",
-	"Replace"                               : "Csere",
-	"SC-spell-check"                        : "Helyesírásellenőrzés",
-	"Suggestions"                           : "Tippek",
-	"pliz weit ;-)"                         : "Kis türelmet ;-)"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/it.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/it.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/it.js	(nonexistent)
@@ -1,28 +0,0 @@
-// I18N constants
-
-// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
-// Author: Fabio Rotondo, <fabio@rotondo.it>
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Devi confermare l'apertura di questo link",
-	"Cancel"                                : "Annulla",
-	"Dictionary"                            : "Dizionario",
-	"Finished list of mispelled words"      : "La lista delle parole scritte male è terminata",
-	"I will open it in a new page."         : "Lo aprirò in una nuova pagina.",
-	"Ignore all"                            : "Ignora sempre",
-	"Ignore"                                : "Ignora",
-	"NO_ERRORS"                             : "Non sono state trovate parole scritte male con il dizionario selezionato.",
-	"NO_ERRORS_CLOSING"                     : "Controllo completato, non sono state trovate parole scritte male. Sto chiudendo...",
-	"OK"                                    : "OK",
-	"Original word"                         : "Parola originale",
-	"Please wait.  Calling spell checker."  : "Attendere.  Sto invocando lo Spell Checker.",
-	"Please wait: changing dictionary to"   : "Attendere. Cambio il dizionario in",
-	"QUIT_CONFIRMATION"                     : "Questo annullerà le modifiche e chiuderà lo Spell Checker. Conferma.",
-	"Re-check"                              : "Ricontrolla",
-	"Replace all"                           : "Sostituisci sempre",
-	"Replace with"                          : "Stostituisci con",
-	"Replace"                               : "Sostituisci",
-	"SC-spell-check"                        : "Spell-check",
-	"Suggestions"                           : "Suggerimenti",
-	"pliz weit ;-)"                         : "Attendere Prego ;-)"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/ro.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/ro.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/ro.js	(nonexistent)
@@ -1,37 +0,0 @@
-// I18N constants
-
-// LANG: "ro", ENCODING: UTF-8
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Vă rog confirmaţi că vreţi să deschideţi acest link",
-	"Cancel"                                : "Anulează",
-	"Dictionary"                            : "Dicţionar",
-	"Finished list of mispelled words"      : "Am terminat lista de cuvinte greşite",
-	"I will open it in a new page."         : "O voi deschide într-o altă fereastră.",
-	"Ignore all"                            : "Ignoră toate",
-	"Ignore"                                : "Ignoră",
-	"NO_ERRORS"                             : "Nu am găsit nici un cuvânt greşit cu acest dicţionar.",
-	"NO_ERRORS_CLOSING"                     : "Am terminat, nu am detectat nici o greşeală.  Acum închid fereastra...",
-	"OK"                                    : "OK",
-	"Original word"                         : "Cuvântul original",
-	"Please wait.  Calling spell checker."  : "Vă rog aşteptaţi.  Apelez spell-checker-ul.",
-	"Please wait: changing dictionary to"   : "Vă rog aşteptaţi.  Schimb dicţionarul cu",
-	"QUIT_CONFIRMATION"                     : "Doriţi să renunţaţi la modificări şi să închid spell-checker-ul?",
-	"Re-check"                              : "Scanează",
-	"Replace all"                           : "Înlocuieşte toate",
-	"Replace with"                          : "Înlocuieşte cu",
-	"Replace"                               : "Înlocuieşte",
-	"SC-spell-check"                        : "Detectează greşeli",
-	"Suggestions"                           : "Sugestii",
-	"pliz weit ;-)"                         : "va rog ashteptatzi ;-)"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/cz.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/cz.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/cz.js	(nonexistent)
@@ -1,37 +0,0 @@
-﻿// I18N constants
-
-// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
-// Author: Jiri Löw, <jirilow@jirilow.com>
-
-// 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.)
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Prosím potvrďte otevření tohoto odkazu",
-	"Cancel"                                : "Zrušit",
-	"Dictionary"                            : "Slovník",
-	"Finished list of mispelled words"      : "Dokončen seznam chybných slov",
-	"I will open it in a new page."         : "Bude otevřen jej v nové stránce.",
-	"Ignore all"                            : "Ignorovat vše",
-	"Ignore"                                : "Ignorovat",
-	"NO_ERRORS"                             : "Podle zvoleného slovníku nebyla nalezena žádná chybná slova.",
-	"NO_ERRORS_CLOSING"                     : "Kontrola správnosti slov dokončena, nebyla nalezena žádná chybná slova. Ukončování ...",
-	"OK"                                    : "OK",
-	"Original word"                         : "Původní slovo",
-	"Please wait.  Calling spell checker."  : "Prosím čekejte. Komunikuace s kontrolou správnosti slov.",
-	"Please wait: changing dictionary to"   : "Prosím čekejte: změna adresáře na",
-	"QUIT_CONFIRMATION"                     : "Změny budou zrušeny a kontrola správnosti slov ukončena. Prosím potvrďte.",
-	"Re-check"                              : "Překontrolovat",
-	"Replace all"                           : "Zaměnit všechno",
-	"Replace with"                          : "Zaměnit za",
-	"Replace"                               : "Zaměnit",
-	"SC-spell-check"                        : "Kontrola správnosti slov",
-	"Suggestions"                           : "Doporučení",
-	"pliz weit ;-)"                         : "strpení prosím ;-)"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/da.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/da.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/da.js	(nonexistent)
@@ -1,37 +0,0 @@
-﻿// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Steen Sønderup, <steen@soenderup.com>
-
-// 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.)
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Vil du følge dette link?",
-	"Cancel"                                : "Anuler",
-	"Dictionary"                            : "Ordbog",
-	"Finished list of mispelled words"      : "Listen med stavefejl er gennemgået",
-	"I will open it in a new page."         : "Jeg vil åbne det i en ny side.",
-	"Ignore all"                            : "Ignorer alle",
-	"Ignore"                                : "Ignorer",
-	"NO_ERRORS"                             : "Der blev ikke fundet nogle stavefejl med den valgte ordbog.",
-	"NO_ERRORS_CLOSING"                     : "Stavekontrollen er gennemført, der blev ikke fundet nogle stavefejl.  Lukker...",
-	"OK"                                    : "OK",
-	"Original word"                         : "Oprindeligt ord",
-	"Please wait.  Calling spell checker."  : "Vent venligst.  Henter stavekontrol.",
-	"Please wait: changing dictionary to"   : "Vent venligst: skifter ordbog til",
-	"QUIT_CONFIRMATION"                     : "Alle dine ændringer vil gå tabt, vil du fortsætte?",
-	"Re-check"                              : "Tjek igen",
-	"Replace all"                           : "Erstat alle",
-	"Replace with"                          : "Erstat med",
-	"Replace"                               : "Erstat",
-	"SC-spell-check"                        : "Stavekontrol",
-	"Suggestions"                           : "Forslag",
-	"pliz weit ;-)"                         : "Vent venligst"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/de.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/de.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/de.js	(nonexistent)
@@ -1,28 +0,0 @@
-// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Broxx, <broxx@broxx.com>
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Wollen Sie diesen Link oeffnen",
-	"Cancel"                                : "Abbrechen",
-	"Dictionary"                            : "Woerterbuch",
-	"Finished list of mispelled words"      : "Liste der nicht bekannten Woerter",
-	"I will open it in a new page."         : "Wird auf neuer Seite geoeffnet",
-	"Ignore all"                            : "Alle ignorieren",
-	"Ignore"                                : "Ignorieren",
-	"NO_ERRORS"                             : "Keine falschen Woerter mit gewaehlten Woerterbuch gefunden",
-	"NO_ERRORS_CLOSING"                     : "Rechtsschreibpruefung wurde ohne Fehler fertiggestellt.  Wird nun geschlossen...",
-	"OK"                                    : "OK",
-	"Original word"                         : "Original Wort",
-	"Please wait.  Calling spell checker."  : "Bitte warten.  Woerterbuch wird durchsucht.",
-	"Please wait: changing dictionary to"   : "Bitte warten: Woerterbuch wechseln zu",
-	"QUIT_CONFIRMATION"                     : "Aenderungen werden nicht uebernommen.  Bitte bestaettigen.",
-	"Re-check"                              : "Neuueberpruefung",
-	"Replace all"                           : "Alle ersetzen",
-	"Replace with"                          : "Ersetzen mit",
-	"Replace"                               : "Ersetzen",
-	"SC-spell-check"                        : "Ueberpruefung",
-	"Suggestions"                           : "Vorschlag",
-	"pliz weit ;-)"                         : "bittsche wartn ;-)"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/en.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/en.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/en.js	(nonexistent)
@@ -1,38 +0,0 @@
-// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-SpellChecker.I18N = {
-	"CONFIRM_LINK_CLICK"                    : "Please confirm that you want to open this link",
-	"Cancel"                                : "Cancel",
-	"Dictionary"                            : "Dictionary",
-	"Finished list of mispelled words"      : "Finished list of mispelled words",
-	"I will open it in a new page."         : "I will open it in a new page.",
-	"Ignore all"                            : "Ignore all",
-	"Ignore"                                : "Ignore",
-	"NO_ERRORS"                             : "No mispelled words found with the selected dictionary.",
-	"NO_ERRORS_CLOSING"                     : "Spell check complete, didn't find any mispelled words.  Closing now...",
-	"OK"                                    : "OK",
-	"Original word"                         : "Original word",
-	"Please wait.  Calling spell checker."  : "Please wait.  Calling spell checker.",
-	"Please wait: changing dictionary to"   : "Please wait: changing dictionary to",
-	"QUIT_CONFIRMATION"                     : "This will drop changes and quit spell checker.  Please confirm.",
-	"Re-check"                              : "Re-check",
-	"Replace all"                           : "Replace all",
-	"Replace with"                          : "Replace with",
-	"Replace"                               : "Replace",
-	"Revert"                                : "Revert",
-	"SC-spell-check"                        : "Spell-check",
-	"Suggestions"                           : "Suggestions",
-	"pliz weit ;-)"                         : "pliz weit ;-)"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-checker.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-checker.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-checker.js	(nonexistent)
@@ -1,79 +0,0 @@
-// Spell Checker Plugin for HTMLArea-3.0
-// Sponsored by www.americanbible.org
-// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
-//
-// (c) dynarch.com 2003.
-// Distributed under the same terms as HTMLArea itself.
-// This notice MUST stay intact for use (see license.txt).
-//
-// $Id: spell-checker.js,v 1.1.1.1 2005/01/30 10:31:42 rdjurovich Exp $
-
-function SpellChecker(editor) {
-	this.editor = editor;
-
-	var cfg = editor.config;
-	var tt = SpellChecker.I18N;
-	var bl = SpellChecker.btnList;
-	var self = this;
-
-	// register the toolbar buttons provided by this plugin
-	var toolbar = [];
-	for (var i in bl) {
-		var btn = bl[i];
-		if (!btn) {
-			toolbar.push("separator");
-		} else {
-			var id = "SC-" + btn[0];
-			cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "SpellChecker"), false,
-					   function(editor, id) {
-						   // dispatch button press event
-						   self.buttonPress(editor, id);
-					   }, btn[1]);
-			toolbar.push(id);
-		}
-	}
-
-	for (var i in toolbar) {
-		cfg.toolbar[0].push(toolbar[i]);
-	}
-};
-
-SpellChecker._pluginInfo = {
-	name          : "SpellChecker",
-	version       : "1.0",
-	developer     : "Mihai Bazon",
-	developer_url : "http://dynarch.com/mishoo/",
-	c_owner       : "Mihai Bazon",
-	sponsor       : "American Bible Society",
-	sponsor_url   : "http://www.americanbible.org",
-	license       : "htmlArea"
-};
-
-SpellChecker.btnList = [
-	null, // separator
-	["spell-check"]
-	];
-
-SpellChecker.prototype.buttonPress = function(editor, id) {
-	switch (id) {
-	    case "SC-spell-check":
-		SpellChecker.editor = editor;
-		SpellChecker.init = true;
-		var uiurl = _editor_url + "plugins/SpellChecker/spell-check-ui.html";
-		var win;
-		if (HTMLArea.is_ie) {
-			win = window.open(uiurl, "SC_spell_checker",
-					  "toolbar=no,location=no,directories=no,status=no,menubar=no," +
-					  "scrollbars=no,resizable=yes,width=600,height=450");
-		} else {
-			win = window.open(uiurl, "SC_spell_checker",
-					  "toolbar=no,menubar=no,personalbar=no,width=600,height=450," +
-					  "scrollbars=no,resizable=yes");
-		}
-		win.focus();
-		break;
-	}
-};
-
-// this needs to be global, it's accessed from spell-check-ui.html
-SpellChecker.editor = null;
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-style.css
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-style.css	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-style.css	(nonexistent)
@@ -1,10 +0,0 @@
-.HA-spellcheck-error { border-bottom: 1px dashed #f00; cursor: default; }
-.HA-spellcheck-same { background-color: #cef; color: #000; }
-.HA-spellcheck-hover { background-color: #433; color: white; }
-.HA-spellcheck-fixed { border-bottom: 1px dashed #0b8; }
-.HA-spellcheck-current { background-color: #9be; color: #000; }
-.HA-spellcheck-suggestions { display: none; }
-
-#HA-spellcheck-dictionaries { display: none; }
-
-a:link, a:visited { color: #55e; }
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.html	(nonexistent)
@@ -1,122 +0,0 @@
-<!--
-
-  Strangely, IE sucks with or without the DOCTYPE switch.
-  I thought it would only suck without it.
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-
-   Spell Checker Plugin for HTMLArea-3.0
-   Sponsored by www.americanbible.org
-   Implementation by Mihai Bazon, http://dynarch.com/mishoo/
-  
-   (c) dynarch.com 2003.
-   Distributed under the same terms as HTMLArea itself.
-   This notice MUST stay intact for use (see license.txt).
-
-   $Id: spell-check-ui.html,v 1.1.1.1 2005/01/30 10:31:42 rdjurovich Exp $
-
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-  <head>
-    <title>Spell Checker</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <script type="text/javascript" src="spell-check-ui.js"></script>
-
-    <style type="text/css">
-      html, body { height: 100%; margin: 0px; padding: 0px; background-color: #fff;
-      color: #000; }
-      a:link, a:visited { color: #00f; text-decoration: none; }
-      a:hover { color: #f00; text-decoration: underline; }
-
-      table { background-color: ButtonFace; color: ButtonText;
-      font-family: tahoma,verdana,sans-serif; font-size: 11px; }
-
-      iframe { background-color: #fff; color: #000; height: 100%; width: 100%; }
-
-      .controls { width: 13em; }
-      .controls .sectitle { /* background-color: #736c6c; color: #fff;
-      border-top: 1px solid #000; border-bottom: 1px solid #fff; */
-      text-align: center;
-      font-weight: bold; padding: 2px 4px; }
-      .controls .secbody { margin-bottom: 10px; }
-
-      button, select { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
-      button { width: 6em; padding: 0px; }
-
-      input, select { font-family: fixed,"andale mono",monospace; }
-
-      #v_currentWord { color: #f00; font-weight: bold; }
-      #statusbar { padding: 7px 0px 0px 5px; }
-      #status { font-weight: bold; }
-    </style>
-
-  </head>
-
-  <body onload="initDocument()">
-
-    <form style="display: none;" action="spell-check-logic.cgi"
-          method="post" target="framecontent"
-          accept-charset="UTF-8"
-          ><input type="hidden" name="content" id="f_content"
-          /><input type="hidden" name="dictionary" id="f_dictionary"
-          /><input type="hidden" name="init" id="f_init" value="1"
-    /></form>
-
-    <table style="height: 100%; width: 100%; border-collapse: collapse;" cellspacing="0" cellpadding="0">
-      <tr>
-        <td colspan="2" style="height: 1em; padding: 2px;">
-          <div style="float: right; padding: 2px;"><span>Dictionary</span>
-            <select id="v_dictionaries" style="width: 10em"></select>
-            <button id="b_recheck">Re-check</button>
-          </div>
-          <span id="status">Please wait.  Calling spell checker.</span>
-        </td>
-      </tr>
-      <tr>
-        <td valign="top" class="controls">
-          <div class="secbody" style="text-align: center">
-            <button id="b_info">Info</button>
-          </div>
-          <div class="sectitle">Original word</div>
-          <div class="secbody" id="v_currentWord" style="text-align:
-          center; margin-bottom: 0px;">pliz weit ;-)</div>
-          <div class="secbody" style="text-align: center">
-            <button id="b_revert">Revert</button>
-          </div>
-          <div class="sectitle">Replace with</div>
-          <div class="secbody">
-            <input type="text" id="v_replacement" style="width: 94%; margin-left: 3%;" /><br />
-            <div style="text-align: center; margin-top: 2px;">
-              <button id="b_replace">Replace</button><button
-                id="b_replall">Replace all</button><br /><button
-                id="b_ignore">Ignore</button><button
-                id="b_ignall">Ignore all</button>
-            </div>
-          </div>
-          <div class="sectitle">Suggestions</div>
-          <div class="secbody">
-            <select size="11" style="width: 94%; margin-left: 3%;" id="v_suggestions"></select>
-          </div>
-        </td>
-
-        <td>
-          <iframe src="about:blank" width="100%" height="100%"
-            id="i_framecontent" name="framecontent"></iframe>
-        </td>
-      </tr>
-      <tr>
-        <td style="height: 1em;" colspan="2">
-          <div style="padding: 4px 2px 2px 2px; float: right;">
-            <button id="b_ok">OK</button>
-            <button id="b_cancel">Cancel</button>
-          </div>
-          <div id="statusbar"></div>
-        </td>
-      </tr>
-    </table>
-
-  </body>
-
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.cgi
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.cgi	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.cgi	(nonexistent)
@@ -1,210 +0,0 @@
-#! /usr/bin/perl -w
-
-# Spell Checker Plugin for HTMLArea-3.0
-# Sponsored by www.americanbible.org
-# Implementation by Mihai Bazon, http://dynarch.com/mishoo/
-#
-# (c) dynarch.com 2003.
-# Distributed under the same terms as HTMLArea itself.
-# This notice MUST stay intact for use (see license.txt).
-#
-# $Id: spell-check-logic.cgi,v 1.1.1.1 2005/01/30 10:31:43 rdjurovich Exp $
-
-use strict;
-use utf8;
-use Encode;
-use Text::Aspell;
-use XML::DOM;
-use CGI;
-
-my $TIMER_start = undef;
-eval {
-    use Time::HiRes qw( gettimeofday tv_interval );
-    $TIMER_start = [gettimeofday()];
-};
-# use POSIX qw( locale_h );
-
-binmode STDIN, ':utf8';
-binmode STDOUT, ':utf8';
-
-my $debug = 0;
-
-my $speller = new Text::Aspell;
-my $cgi = new CGI;
-
-my $total_words = 0;
-my $total_mispelled = 0;
-my $total_suggestions = 0;
-my $total_words_suggested = 0;
-
-# FIXME: report a nice error...
-die "Can't create speller!" unless $speller;
-
-my $dict = $cgi->param('dictionary') || $cgi->cookie('dictionary') || 'en';
-
-# add configurable option for this
-$speller->set_option('lang', $dict);
-$speller->set_option('encoding', 'UTF-8');
-#setlocale(LC_CTYPE, $dict);
-
-# ultra, fast, normal, bad-spellers
-# bad-spellers seems to cause segmentation fault
-$speller->set_option('sug-mode', 'normal');
-
-my %suggested_words = ();
-keys %suggested_words = 128;
-
-my $file_content = decode('UTF-8', $cgi->param('content'));
-$file_content = parse_with_dom($file_content);
-
-my $ck_dictionary = $cgi->cookie(-name     => 'dictionary',
-                                 -value    => $dict,
-                                 -expires  => '+30d');
-
-print $cgi->header(-type    => 'text/html; charset: utf-8',
-                   -cookie  => $ck_dictionary);
-
-my $js_suggested_words = make_js_hash(\%suggested_words);
-my $js_spellcheck_info = make_js_hash_from_array
-  ([
-    [ 'Total words'           , $total_words ],
-    [ 'Mispelled words'       , $total_mispelled . ' in dictionary \"'.$dict.'\"' ],
-    [ 'Total suggestions'     , $total_suggestions ],
-    [ 'Total words suggested' , $total_words_suggested ],
-    [ 'Spell-checked in'      , defined $TIMER_start ? (tv_interval($TIMER_start) . ' seconds') : 'n/a' ]
-   ]);
-
-print qq^<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<link rel="stylesheet" type="text/css" media="all" href="spell-check-style.css" />
-<script type="text/javascript">
-  var suggested_words = { $js_suggested_words };
-  var spellcheck_info = { $js_spellcheck_info }; </script>
-</head>
-<body onload="window.parent.finishedSpellChecking();">^;
-
-print $file_content;
-if ($cgi->param('init') eq '1') {
-    my @dicts = $speller->dictionary_info();
-    my $dictionaries = '';
-    foreach my $i (@dicts) {
-        next if $i->{jargon};
-        my $name = $i->{name};
-        if ($name eq $dict) {
-            $name = '@'.$name;
-        }
-        $dictionaries .= ',' . $name;
-    }
-    $dictionaries =~ s/^,//;
-    print qq^<div id="HA-spellcheck-dictionaries">$dictionaries</div>^;
-}
-
-print '</body></html>';
-
-# Perl is beautiful.
-sub spellcheck {
-    my $node = shift;
-    my $doc = $node->getOwnerDocument;
-    my $check = sub {                 # called for each word in the text
-        # input is in UTF-8
-        my $word = shift;
-        my $already_suggested = defined $suggested_words{$word};
-        ++$total_words;
-        if (!$already_suggested && $speller->check($word)) {
-            return undef;
-        } else {
-            # we should have suggestions; give them back to browser in UTF-8
-            ++$total_mispelled;
-            if (!$already_suggested) {
-                # compute suggestions for this word
-                my @suggestions = $speller->suggest($word);
-                my $suggestions = decode($speller->get_option('encoding'), join(',', @suggestions));
-                $suggested_words{$word} = $suggestions;
-                ++$total_suggestions;
-                $total_words_suggested += scalar @suggestions;
-            }
-            # HA-spellcheck-error
-            my $err = $doc->createElement('span');
-            $err->setAttribute('class', 'HA-spellcheck-error');
-            my $tmp = $doc->createTextNode;
-            $tmp->setNodeValue($word);
-            $err->appendChild($tmp);
-            return $err;
-        }
-    };
-    while ($node->getNodeValue =~ /([\p{IsWord}']+)/) {
-        my $word = $1;
-        my $before = $`;
-        my $after = $';
-        my $df = &$check($word);
-        if (!$df) {
-            $before .= $word;
-        }
-        {
-            my $parent = $node->getParentNode;
-            my $n1 = $doc->createTextNode;
-            $n1->setNodeValue($before);
-            $parent->insertBefore($n1, $node);
-            $parent->insertBefore($df, $node) if $df;
-            $node->setNodeValue($after);
-        }
-    }
-};
-
-sub check_inner_text {
-    my $node = shift;
-    my $text = '';
-    for (my $i = $node->getFirstChild; defined $i; $i = $i->getNextSibling) {
-        if ($i->getNodeType == TEXT_NODE) {
-            spellcheck($i);
-        }
-    }
-};
-
-sub parse_with_dom {
-    my ($text) = @_;
-    $text = '<spellchecker>'.$text.'</spellchecker>';
-
-    my $parser = new XML::DOM::Parser;
-    if ($debug) {
-        open(FOO, '>:utf8', '/tmp/foo');
-        print FOO $text;
-        close FOO;
-    }
-    my $doc = $parser->parse($text);
-    my $nodes = $doc->getElementsByTagName('*');
-    my $n = $nodes->getLength;
-
-    for (my $i = 0; $i < $n; ++$i) {
-        my $node = $nodes->item($i);
-        if ($node->getNodeType == ELEMENT_NODE) {
-            check_inner_text($node);
-        }
-    }
-
-    my $ret = $doc->toString;
-    $ret =~ s{<spellchecker>(.*)</spellchecker>}{$1}sg;
-    return $ret;
-};
-
-sub make_js_hash {
-    my ($hash) = @_;
-    my $js_hash = '';
-    while (my ($key, $val) = each %$hash) {
-        $js_hash .= ',' if $js_hash;
-        $js_hash .= '"'.$key.'":"'.$val.'"';
-    }
-    return $js_hash;
-};
-
-sub make_js_hash_from_array {
-    my ($array) = @_;
-    my $js_hash = '';
-    foreach my $i (@$array) {
-        $js_hash .= ',' if $js_hash;
-        $js_hash .= '"'.$i->[0].'":"'.$i->[1].'"';
-    }
-    return $js_hash;
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js	(nonexistent)
@@ -1,397 +0,0 @@
-// Spell Checker Plugin for HTMLArea-3.0
-// Sponsored by www.americanbible.org
-// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
-//
-// (c) dynarch.com 2003.
-// Distributed under the same terms as HTMLArea itself.
-// This notice MUST stay intact for use (see license.txt).
-//
-// $Id: spell-check-ui.js,v 1.1.1.1 2005/01/30 10:31:43 rdjurovich Exp $
-
-// internationalization file was already loaded in parent ;-)
-var SpellChecker = window.opener.SpellChecker;
-var i18n = SpellChecker.I18N;
-
-var HTMLArea = window.opener.HTMLArea;
-var is_ie = HTMLArea.is_ie;
-var editor = SpellChecker.editor;
-var frame = null;
-var currentElement = null;
-var wrongWords = null;
-var modified = false;
-var allWords = {};
-var fixedWords = [];
-var suggested_words = {};
-
-function makeCleanDoc(leaveFixed) {
-	// document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML';
-	var words = wrongWords.concat(fixedWords);
-	for (var i = words.length; --i >= 0;) {
-		var el = words[i];
-		if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) {
-			el.parentNode.insertBefore(el.firstChild, el);
-			el.parentNode.removeChild(el);
-		} else
-			el.className = "HA-spellcheck-fixed";
-	}
-	// we should use innerHTML here, but IE6's implementation fucks up the
-	// HTML to such extent that our poor Perl parser doesn't understand it
-	// anymore.
-	return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, false, editor);
-};
-
-function recheckClicked() {
-	document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".';
-	var field = document.getElementById("f_content");
-	field.value = makeCleanDoc(true);
-	field.form.submit();
-};
-
-function saveClicked() {
-	if (modified) {
-		editor.setHTML(makeCleanDoc(false));
-	}
-	window.close();
-	return false;
-};
-
-function cancelClicked() {
-	var ok = true;
-	if (modified) {
-		ok = confirm(i18n["QUIT_CONFIRMATION"]);
-	}
-	if (ok) {
-		window.close();
-	}
-	return false;
-};
-
-function replaceWord(el) {
-	var replacement = document.getElementById("v_replacement").value;
-	var this_word_modified = (el.innerHTML != replacement);
-	if (this_word_modified)
-		modified = true;
-	if (el) {
-		el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
-	}
-	el.className += " HA-spellcheck-fixed";
-	el.__msh_fixed = true;
-	if (!this_word_modified) {
-		return false;
-	}
-	el.innerHTML = replacement;
-};
-
-function replaceClicked() {
-	replaceWord(currentElement);
-	var start = currentElement.__msh_id;
-	var index = start;
-	do {
-		++index;
-		if (index == wrongWords.length) {
-			index = 0;
-		}
-	} while ((index != start) && wrongWords[index].__msh_fixed);
-	if (index == start) {
-		index = 0;
-		alert(i18n["Finished list of mispelled words"]);
-	}
-	wrongWords[index].__msh_wordClicked(true);
-	return false;
-};
-
-function revertClicked() {
-	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
-	replaceWord(currentElement);
-	currentElement.className = "HA-spellcheck-error HA-spellcheck-current";
-	return false;
-};
-
-function replaceAllClicked() {
-	var replacement = document.getElementById("v_replacement").value;
-	var ok = true;
-	var spans = allWords[currentElement.__msh_origWord];
-	if (spans.length == 0) {
-		alert("An impossible condition just happened.  Call FBI.  ;-)");
-	} else if (spans.length == 1) {
-		replaceClicked();
-		return false;
-	}
-	/*
-	var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n";
-	if (replacement == currentElement.__msh_origWord) {
-		ok = confirm(message + "Ignore all occurrences?");
-	} else {
-		ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?");
-	}
-	*/
-	if (ok) {
-		for (var i in spans) {
-			if (spans[i] != currentElement) {
-				replaceWord(spans[i]);
-			}
-		}
-		// replace current element the last, so that we jump to the next word ;-)
-		replaceClicked();
-	}
-	return false;
-};
-
-function ignoreClicked() {
-	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
-	replaceClicked();
-	return false;
-};
-
-function ignoreAllClicked() {
-	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
-	replaceAllClicked();
-	return false;
-};
-
-function learnClicked() {
-	alert("Not [yet] implemented");
-	return false;
-};
-
-function internationalizeWindow() {
-	var types = ["div", "span", "button"];
-	for (var i in types) {
-		var tag = types[i];
-		var els = document.getElementsByTagName(tag);
-		for (var j = els.length; --j >= 0;) {
-			var el = els[j];
-			if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) {
-				var txt = el.innerHTML;
-				if (typeof i18n[txt] != "undefined") {
-					el.innerHTML = i18n[txt];
-				}
-			}
-		}
-	}
-};
-
-function initDocument() {
-	internationalizeWindow();
-	modified = false;
-	frame = document.getElementById("i_framecontent");
-	var field = document.getElementById("f_content");
-	field.value = HTMLArea.getHTML(editor._doc.body, false, editor);
-	field.form.submit();
-	document.getElementById("f_init").value = "0";
-
-	// assign some global event handlers
-
-	var select = document.getElementById("v_suggestions");
-	select.onchange = function() {
-		document.getElementById("v_replacement").value = this.value;
-	};
-	if (is_ie) {
-		select.attachEvent("ondblclick", replaceClicked);
-	} else {
-		select.addEventListener("dblclick", replaceClicked, true);
-	}
-
-	document.getElementById("b_replace").onclick = replaceClicked;
-	// document.getElementById("b_learn").onclick = learnClicked;
-	document.getElementById("b_replall").onclick = replaceAllClicked;
-	document.getElementById("b_ignore").onclick = ignoreClicked;
-	document.getElementById("b_ignall").onclick = ignoreAllClicked;
-	document.getElementById("b_recheck").onclick = recheckClicked;
-	document.getElementById("b_revert").onclick = revertClicked;
-	document.getElementById("b_info").onclick = displayInfo;
-
-	document.getElementById("b_ok").onclick = saveClicked;
-	document.getElementById("b_cancel").onclick = cancelClicked;
-
-	select = document.getElementById("v_dictionaries");
-	select.onchange = function() {
-		document.getElementById("f_dictionary").value = this.value;
-	};
-};
-
-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 wordClicked(scroll) {
-	var self = this;
-	if (scroll) (function() {
-		var pos = getAbsolutePos(self);
-		var ws = { x: frame.offsetWidth - 4,
-			   y: frame.offsetHeight - 4 };
-		var wp = { x: frame.contentWindow.document.body.scrollLeft,
-			   y: frame.contentWindow.document.body.scrollTop };
-		pos.x -= Math.round(ws.x/2);
-		if (pos.x < 0) pos.x = 0;
-		pos.y -= Math.round(ws.y/2);
-		if (pos.y < 0) pos.y = 0;
-		frame.contentWindow.scrollTo(pos.x, pos.y);
-	})();
-	if (currentElement) {
-		var a = allWords[currentElement.__msh_origWord];
-		currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " ");
-		for (var i in a) {
-			var el = a[i];
-			if (el != currentElement) {
-				el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " ");
-			}
-		}
-	}
-	currentElement = this;
-	this.className += " HA-spellcheck-current";
-	var a = allWords[currentElement.__msh_origWord];
-	for (var i in a) {
-		var el = a[i];
-		if (el != currentElement) {
-			el.className += " HA-spellcheck-same";
-		}
-	}
-	// document.getElementById("b_replall").disabled = (a.length <= 1);
-	// document.getElementById("b_ignall").disabled = (a.length <= 1);
-	var txt;
-	if (a.length == 1) {
-		txt = "one occurrence";
-	} else if (a.length == 2) {
-		txt = "two occurrences";
-	} else {
-		txt = a.length + " occurrences";
-	}
-	var suggestions = suggested_words[this.__msh_origWord];
-	if (suggestions)
-		suggestions = suggestions.split(/,/);
-	else
-		suggestions = [];
-	var select = document.getElementById("v_suggestions");
-	document.getElementById("statusbar").innerHTML = "Found " + txt +
-		' for word "<b>' + currentElement.__msh_origWord + '</b>"';
-	for (var i = select.length; --i >= 0;) {
-		select.remove(i);
-	}
-	for (var i = 0; i < suggestions.length; ++i) {
-		var txt = suggestions[i];
-		var option = document.createElement("option");
-		option.value = txt;
-		option.appendChild(document.createTextNode(txt));
-		select.appendChild(option);
-	}
-	document.getElementById("v_currentWord").innerHTML = this.__msh_origWord;
-	if (suggestions.length > 0) {
-		select.selectedIndex = 0;
-		select.onchange();
-	} else {
-		document.getElementById("v_replacement").value = this.innerHTML;
-	}
-	select.style.display = "none";
-	select.style.display = "block";
-	return false;
-};
-
-function wordMouseOver() {
-	this.className += " HA-spellcheck-hover";
-};
-
-function wordMouseOut() {
-	this.className = this.className.replace(/\s*HA-spellcheck-hover\s*/g, " ");
-};
-
-function displayInfo() {
-	var info = frame.contentWindow.spellcheck_info;
-	if (!info)
-		alert("No information available");
-	else {
-		var txt = "** Document information **";
-		for (var i in info) {
-			txt += "\n" + i + " : " + info[i];
-		}
-		alert(txt);
-	}
-	return false;
-};
-
-function finishedSpellChecking() {
-	// initialization of global variables
-	currentElement = null;
-	wrongWords = null;
-	allWords = {};
-	fixedWords = [];
-	suggested_words = frame.contentWindow.suggested_words;
-
-	document.getElementById("status").innerHTML = "HTMLArea Spell Checker (<a href='readme-tech.html' target='_blank' title='Technical information'>info</a>)";
-	var doc = frame.contentWindow.document;
-        var spans = doc.getElementsByTagName("span");
-        var sps = [];
-	var id = 0;
-        for (var i = 0; i < spans.length; ++i) {
-                var el = spans[i];
-                if (/HA-spellcheck-error/.test(el.className)) {
-                        sps.push(el);
-			el.__msh_wordClicked = wordClicked;
-			el.onclick = function(ev) {
-				ev || (ev = window.event);
-				ev && HTMLArea._stopEvent(ev);
-				return this.__msh_wordClicked(false);
-			};
-			el.onmouseover = wordMouseOver;
-			el.onmouseout = wordMouseOut;
-			el.__msh_id = id++;
-			var txt = (el.__msh_origWord = el.firstChild.data);
-			el.__msh_fixed = false;
-			if (typeof allWords[txt] == "undefined") {
-				allWords[txt] = [el];
-			} else {
-				allWords[txt].push(el);
-			}
-                } else if (/HA-spellcheck-fixed/.test(el.className)) {
-			fixedWords.push(el);
-		}
-        }
-	wrongWords = sps;
-	if (sps.length == 0) {
-		if (!modified) {
-			alert(i18n["NO_ERRORS_CLOSING"]);
-			window.close();
-		} else {
-			alert(i18n["NO_ERRORS"]);
-		}
-		return false;
-	}
-	(currentElement = sps[0]).__msh_wordClicked(true);
-	var as = doc.getElementsByTagName("a");
-	for (var i = as.length; --i >= 0;) {
-		var a = as[i];
-		a.onclick = function() {
-			if (confirm(i18n["CONFIRM_LINK_CLICK"] + ":\n" +
-				    this.href + "\n" + i18n["I will open it in a new page."])) {
-				window.open(this.href);
-			}
-			return false;
-		};
-	}
-	var dicts = doc.getElementById("HA-spellcheck-dictionaries");
-	if (dicts) {
-		dicts.parentNode.removeChild(dicts);
-		dicts = dicts.innerHTML.split(/,/);
-		var select = document.getElementById("v_dictionaries");
-		for (var i = select.length; --i >= 0;) {
-			select.remove(i);
-		}
-		for (var i = 0; i < dicts.length; ++i) {
-			var txt = dicts[i];
-			var option = document.createElement("option");
-			if (/^@(.*)$/.test(txt)) {
-				txt = RegExp.$1;
-				option.selected = true;
-			}
-			option.value = txt;
-			option.appendChild(document.createTextNode(txt));
-			select.appendChild(option);
-		}
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/readme-tech.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/readme-tech.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/readme-tech.html	(nonexistent)
@@ -1,114 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
-<html>
-  <head>
-    <title>HTMLArea Spell Checker</title>
-  </head>
-
-  <body>
-    <h1>HTMLArea Spell Checker</h1>
-
-    <p>The HTMLArea Spell Checker subsystem consists of the following
-      files:</p>
-
-    <ul>
-
-      <li>spell-checker.js &mdash; the spell checker plugin interface for
-        HTMLArea</li>
-
-      <li>spell-checker-ui.html &mdash; the HTML code for the user
-        interface</li>
-
-      <li>spell-checker-ui.js &mdash; functionality of the user
-        interface</li>
-
-      <li>spell-checker-logic.cgi &mdash; Perl CGI script that checks a text
-        given through POST for spelling errors</li>
-
-      <li>spell-checker-style.css &mdash; style for mispelled words</li>
-
-      <li>lang/en.js &mdash; main language file (English).</li>
-
-    </ul>
-
-    <h2>Process overview</h2>
-
-    <p>
-      When an end-user clicks the "spell-check" button in the HTMLArea
-      editor, a new window is opened with the URL of "spell-check-ui.html".
-      This window initializes itself with the text found in the editor (uses
-      <tt>window.opener.SpellChecker.editor</tt> global variable) and it
-      submits the text to the server-side script "spell-check-logic.cgi".
-      The target of the FORM is an inline frame which is used both to
-      display the text and correcting.
-    </p>
-
-    <p>
-      Further, spell-check-logic.cgi calls Aspell for each portion of plain
-      text found in the given HTML.  It rebuilds an HTML file that contains
-      clear marks of which words are incorrect, along with suggestions for
-      each of them.  This file is then loaded in the inline frame.  Upon
-      loading, a JavaScript function from "spell-check-ui.js" is called.
-      This function will retrieve all mispelled words from the HTML of the
-      iframe and will setup the user interface so that it allows correction.
-    </p>
-
-    <h2>The server-side script (spell-check-logic.cgi)</h2>
-
-    <p>
-      <strong>Unicode safety</strong> &mdash; the program <em>is</em>
-      Unicode safe.  HTML entities are expanded into their corresponding
-      Unicode characters.  These characters will be matched as part of the
-      word passed to Aspell.  All texts passed to Aspell are in Unicode
-      (when appropriate).  <strike>However, Aspell seems to not support Unicode
-      yet (<a
-        href="http://mail.gnu.org/archive/html/aspell-user/2000-11/msg00007.html">thread concerning Aspell and Unicode</a>).
-      This mean that words containing Unicode
-      characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell.</strike>
-    </p>
-
-    <p>
-      <strong style="font-variant: small-caps; color:
-      red;">Update:</strong> though I've never seen it mentioned
-      anywhere, it looks that Aspell <em>does</em>, in fact, speak
-      Unicode.  Or else, maybe <code>Text::Aspell</code> does
-      transparent conversion; anyway, this new version of our
-      SpellChecker plugin is, as tests show so far, fully
-      Unicode-safe... well, probably the <em>only</em> freeware
-      Web-based spell-checker which happens to have Unicode support.
-    </p>
-
-    <p>
-      The Perl Unicode manual (man perluniintro) states:
-    </p>
-
-    <blockquote>
-      <em>
-        Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode
-        natively.  Perl 5.8.0, however, is the first recommended release for
-        serious Unicode work.  The maintenance release 5.6.1 fixed many of the
-        problems of the initial Unicode implementation, but for example regular
-        expressions still do not work with Unicode in 5.6.1.
-      </em>
-    </blockquote>
-
-    <p>In other words, do <em>not</em> assume that this script is
-      Unicode-safe on Perl interpreters older than 5.8.0.</p>
-
-    <p>The following Perl modules are required:</p>
-
-    <ul>
-      <li><a href="http://search.cpan.org/search?query=Text%3A%3AAspell&mode=all" target="_blank">Text::Aspell</a></li>
-      <li><a href="http://search.cpan.org/search?query=XML%3A%3ADOM&mode=all" target="_blank">XML::DOM</a></li>
-      <li><a href="http://search.cpan.org/search?query=CGI&mode=all" target="_blank">CGI</a></li>
-    </ul>
-
-    <p>Of these, only Text::Aspell might need to be installed manually.  The
-      others are likely to be available by default in most Perl distributions.</p>
-
-    <hr />
-    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
-<!-- Created: Thu Jul 17 13:22:27 EEST 2003 -->
-<!-- hhmts start --> Last modified: Fri Jan 30 19:14:11 EET 2004 <!-- hhmts end -->
-<!-- doc-lang: English -->
-  </body>
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/img/spell-check.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/SpellChecker/img/spell-check.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/table-operations.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/table-operations.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/table-operations.js	(nonexistent)
@@ -1,1160 +0,0 @@
-// Table Operations Plugin for HTMLArea-3.0
-// Implementation by Mihai Bazon.  Sponsored by http://www.bloki.com
-//
-// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
-// This notice MUST stay intact for use (see license.txt).
-//
-// 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 for InteractiveTools.
-//   http://dynarch.com/mishoo
-//
-// $Id: table-operations.js,v 1.1.1.1 2005/01/30 10:31:35 rdjurovich Exp $
-
-// Object that will encapsulate all the table operations provided by
-// HTMLArea-3.0 (except "insert table" which is included in the main file)
-function TableOperations(editor) {
-	this.editor = editor;
-
-	var cfg = editor.config;
-	var tt = TableOperations.I18N;
-	var bl = TableOperations.btnList;
-	var self = this;
-
-	// register the toolbar buttons provided by this plugin
-	var toolbar = ["linebreak"];
-	for (var i in bl) {
-		var btn = bl[i];
-		if (!btn) {
-			toolbar.push("separator");
-		} else {
-			var id = "TO-" + btn[0];
-			cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "TableOperations"), false,
-					   function(editor, id) {
-						   // dispatch button press event
-						   self.buttonPress(editor, id);
-					   }, btn[1]);
-			toolbar.push(id);
-		}
-	}
-
-	// add a new line in the toolbar
-	cfg.toolbar.push(toolbar);
-};
-
-TableOperations._pluginInfo = {
-	name          : "TableOperations",
-	version       : "1.0",
-	developer     : "Mihai Bazon",
-	developer_url : "http://dynarch.com/mishoo/",
-	c_owner       : "Mihai Bazon",
-	sponsor       : "Zapatec Inc.",
-	sponsor_url   : "http://www.bloki.com",
-	license       : "htmlArea"
-};
-
-/************************
- * UTILITIES
- ************************/
-
-// retrieves the closest element having the specified tagName in the list of
-// ancestors of the current selection/caret.
-TableOperations.prototype.getClosest = function(tagName) {
-	var editor = this.editor;
-	var ancestors = editor.getAllAncestors();
-	var ret = null;
-	tagName = ("" + tagName).toLowerCase();
-	for (var i in ancestors) {
-		var el = ancestors[i];
-		if (el.tagName.toLowerCase() == tagName) {
-			ret = el;
-			break;
-		}
-	}
-	return ret;
-};
-
-// this function requires the file PopupDiv/PopupWin to be loaded from browser
-TableOperations.prototype.dialogTableProperties = function() {
-	var i18n = TableOperations.I18N;
-	// retrieve existing values
-	var table = this.getClosest("table");
-	// this.editor.selectNodeContents(table);
-	// this.editor.updateToolbar();
-
-	var dialog = new PopupWin(this.editor, i18n["Table Properties"], function(dialog, params) {
-		TableOperations.processStyle(params, table);
-		for (var i in params) {
-			var val = params[i];
-			switch (i) {
-			    case "f_caption":
-				if (/\S/.test(val)) {
-					// contains non white-space characters
-					var caption = table.getElementsByTagName("caption")[0];
-					if (!caption) {
-						caption = dialog.editor._doc.createElement("caption");
-						table.insertBefore(caption, table.firstChild);
-					}
-					caption.innerHTML = val;
-				} else {
-					// search for caption and delete it if found
-					var caption = table.getElementsByTagName("caption")[0];
-					if (caption) {
-						caption.parentNode.removeChild(caption);
-					}
-				}
-				break;
-			    case "f_summary":
-				table.summary = val;
-				break;
-			    case "f_width":
-				table.style.width = ("" + val) + params.f_unit;
-				break;
-			    case "f_align":
-				table.align = val;
-				break;
-			    case "f_spacing":
-				table.cellSpacing = val;
-				break;
-			    case "f_padding":
-				table.cellPadding = val;
-				break;
-			    case "f_borders":
-				table.border = val;
-				break;
-			    case "f_frames":
-				table.frame = val;
-				break;
-			    case "f_rules":
-				table.rules = val;
-				break;
-			}
-		}
-		// various workarounds to refresh the table display (Gecko,
-		// what's going on?! do not disappoint me!)
-		dialog.editor.forceRedraw();
-		dialog.editor.focusEditor();
-		dialog.editor.updateToolbar();
-		var save_collapse = table.style.borderCollapse;
-		table.style.borderCollapse = "collapse";
-		table.style.borderCollapse = "separate";
-		table.style.borderCollapse = save_collapse;
-	},
-
-	// this function gets called when the dialog needs to be initialized
-	function (dialog) {
-
-		var f_caption = "";
-		var capel = table.getElementsByTagName("caption")[0];
-		if (capel) {
-			f_caption = capel.innerHTML;
-		}
-		var f_summary = table.summary;
-		var f_width = parseInt(table.style.width);
-		isNaN(f_width) && (f_width = "");
-		var f_unit = /%/.test(table.style.width) ? 'percent' : 'pixels';
-		var f_align = table.align;
-		var f_spacing = table.cellSpacing;
-		var f_padding = table.cellPadding;
-		var f_borders = table.border;
-		var f_frames = table.frame;
-		var f_rules = table.rules;
-
-		function selected(val) {
-			return val ? " selected" : "";
-		};
-
-		// dialog contents
-		dialog.content.style.width = "400px";
-		dialog.content.innerHTML = " \
-<div class='title'\
- style='background: url(" + dialog.baseURL + dialog.editor.imgURL("table-prop.gif", "TableOperations") + ") #fff 98% 50% no-repeat'>" + i18n["Table Properties"] + "\
-</div> \
-<table style='width:100%'> \
-  <tr> \
-    <td> \
-      <fieldset><legend>" + i18n["Description"] + "</legend> \
-       <table style='width:100%'> \
-        <tr> \
-          <td class='label'>" + i18n["Caption"] + ":</td> \
-          <td class='value'><input type='text' name='f_caption' value='" + f_caption + "'/></td> \
-        </tr><tr> \
-          <td class='label'>" + i18n["Summary"] + ":</td> \
-          <td class='value'><input type='text' name='f_summary' value='" + f_summary + "'/></td> \
-        </tr> \
-       </table> \
-      </fieldset> \
-    </td> \
-  </tr> \
-  <tr><td id='--HA-layout'></td></tr> \
-  <tr> \
-    <td> \
-      <fieldset><legend>" + i18n["Spacing and padding"] + "</legend> \
-       <table style='width:100%'> \
-"+//        <tr> \
-//           <td class='label'>" + i18n["Width"] + ":</td> \
-//           <td><input type='text' name='f_width' value='" + f_width + "' size='5' /> \
-//             <select name='f_unit'> \
-//               <option value='%'" + selected(f_unit == "percent") + ">" + i18n["percent"] + "</option> \
-//               <option value='px'" + selected(f_unit == "pixels") + ">" + i18n["pixels"] + "</option> \
-//             </select> &nbsp;&nbsp;" + i18n["Align"] + ": \
-//             <select name='f_align'> \
-//               <option value='left'" + selected(f_align == "left") + ">" + i18n["Left"] + "</option> \
-//               <option value='center'" + selected(f_align == "center") + ">" + i18n["Center"] + "</option> \
-//               <option value='right'" + selected(f_align == "right") + ">" + i18n["Right"] + "</option> \
-//             </select> \
-//           </td> \
-//         </tr> \
-"        <tr> \
-          <td class='label'>" + i18n["Spacing"] + ":</td> \
-          <td><input type='text' name='f_spacing' size='5' value='" + f_spacing + "' /> &nbsp;" + i18n["Padding"] + ":\
-            <input type='text' name='f_padding' size='5' value='" + f_padding + "' /> &nbsp;&nbsp;" + i18n["pixels"] + "\
-          </td> \
-        </tr> \
-       </table> \
-      </fieldset> \
-    </td> \
-  </tr> \
-  <tr> \
-    <td> \
-      <fieldset><legend>Frame and borders</legend> \
-        <table width='100%'> \
-          <tr> \
-            <td class='label'>" + i18n["Borders"] + ":</td> \
-            <td><input name='f_borders' type='text' size='5' value='" + f_borders + "' /> &nbsp;&nbsp;" + i18n["pixels"] + "</td> \
-          </tr> \
-          <tr> \
-            <td class='label'>" + i18n["Frames"] + ":</td> \
-            <td> \
-              <select name='f_frames'> \
-                <option value='void'" + selected(f_frames == "void") + ">" + i18n["No sides"] + "</option> \
-                <option value='above'" + selected(f_frames == "above") + ">" + i18n["The top side only"] + "</option> \
-                <option value='below'" + selected(f_frames == "below") + ">" + i18n["The bottom side only"] + "</option> \
-                <option value='hsides'" + selected(f_frames == "hsides") + ">" + i18n["The top and bottom sides only"] + "</option> \
-                <option value='vsides'" + selected(f_frames == "vsides") + ">" + i18n["The right and left sides only"] + "</option> \
-                <option value='lhs'" + selected(f_frames == "lhs") + ">" + i18n["The left-hand side only"] + "</option> \
-                <option value='rhs'" + selected(f_frames == "rhs") + ">" + i18n["The right-hand side only"] + "</option> \
-                <option value='box'" + selected(f_frames == "box") + ">" + i18n["All four sides"] + "</option> \
-              </select> \
-            </td> \
-          </tr> \
-          <tr> \
-            <td class='label'>" + i18n["Rules"] + ":</td> \
-            <td> \
-              <select name='f_rules'> \
-                <option value='none'" + selected(f_rules == "none") + ">" + i18n["No rules"] + "</option> \
-                <option value='rows'" + selected(f_rules == "rows") + ">" + i18n["Rules will appear between rows only"] + "</option> \
-                <option value='cols'" + selected(f_rules == "cols") + ">" + i18n["Rules will appear between columns only"] + "</option> \
-                <option value='all'" + selected(f_rules == "all") + ">" + i18n["Rules will appear between all rows and columns"] + "</option> \
-              </select> \
-            </td> \
-          </tr> \
-        </table> \
-      </fieldset> \
-    </td> \
-  </tr> \
-  <tr> \
-    <td id='--HA-style'></td> \
-  </tr> \
-</table> \
-";
-		var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, table);
-		var p = dialog.doc.getElementById("--HA-style");
-		p.appendChild(st_prop);
-		var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, table);
-		p = dialog.doc.getElementById("--HA-layout");
-		p.appendChild(st_layout);
-		dialog.modal = true;
-		dialog.addButtons("ok", "cancel");
-		dialog.showAtElement(dialog.editor._iframe, "c");
-	});
-};
-
-// this function requires the file PopupDiv/PopupWin to be loaded from browser
-TableOperations.prototype.dialogRowCellProperties = function(cell) {
-	var i18n = TableOperations.I18N;
-	// retrieve existing values
-	var element = this.getClosest(cell ? "td" : "tr");
-	var table = this.getClosest("table");
-	// this.editor.selectNodeContents(element);
-	// this.editor.updateToolbar();
-
-	var dialog = new PopupWin(this.editor, i18n[cell ? "Cell Properties" : "Row Properties"], function(dialog, params) {
-		TableOperations.processStyle(params, element);
-		for (var i in params) {
-			var val = params[i];
-			switch (i) {
-			    case "f_align":
-				element.align = val;
-				break;
-			    case "f_char":
-				element.ch = val;
-				break;
-			    case "f_valign":
-				element.vAlign = val;
-				break;
-			}
-		}
-		// various workarounds to refresh the table display (Gecko,
-		// what's going on?! do not disappoint me!)
-		dialog.editor.forceRedraw();
-		dialog.editor.focusEditor();
-		dialog.editor.updateToolbar();
-		var save_collapse = table.style.borderCollapse;
-		table.style.borderCollapse = "collapse";
-		table.style.borderCollapse = "separate";
-		table.style.borderCollapse = save_collapse;
-	},
-
-	// this function gets called when the dialog needs to be initialized
-	function (dialog) {
-
-		var f_align = element.align;
-		var f_valign = element.vAlign;
-		var f_char = element.ch;
-
-		function selected(val) {
-			return val ? " selected" : "";
-		};
-
-		// dialog contents
-		dialog.content.style.width = "400px";
-		dialog.content.innerHTML = " \
-<div class='title'\
- style='background: url(" + dialog.baseURL + dialog.editor.imgURL(cell ? "cell-prop.gif" : "row-prop.gif", "TableOperations") + ") #fff 98% 50% no-repeat'>" + i18n[cell ? "Cell Properties" : "Row Properties"] + "</div> \
-<table style='width:100%'> \
-  <tr> \
-    <td id='--HA-layout'> \
-"+//      <fieldset><legend>" + i18n["Layout"] + "</legend> \
-//        <table style='width:100%'> \
-//         <tr> \
-//           <td class='label'>" + i18n["Align"] + ":</td> \
-//           <td> \
-//             <select name='f_align'> \
-//               <option value='left'" + selected(f_align == "left") + ">" + i18n["Left"] + "</option> \
-//               <option value='center'" + selected(f_align == "center") + ">" + i18n["Center"] + "</option> \
-//               <option value='right'" + selected(f_align == "right") + ">" + i18n["Right"] + "</option> \
-//               <option value='char'" + selected(f_align == "char") + ">" + i18n["Char"] + "</option> \
-//             </select> \
-//             &nbsp;&nbsp;" + i18n["Char"] + ": \
-//             <input type='text' style='font-family: monospace; text-align: center' name='f_char' size='1' value='" + f_char + "' /> \
-//           </td> \
-//         </tr><tr> \
-//           <td class='label'>" + i18n["Vertical align"] + ":</td> \
-//           <td> \
-//             <select name='f_valign'> \
-//               <option value='top'" + selected(f_valign == "top") + ">" + i18n["Top"] + "</option> \
-//               <option value='middle'" + selected(f_valign == "middle") + ">" + i18n["Middle"] + "</option> \
-//               <option value='bottom'" + selected(f_valign == "bottom") + ">" + i18n["Bottom"] + "</option> \
-//               <option value='baseline'" + selected(f_valign == "baseline") + ">" + i18n["Baseline"] + "</option> \
-//             </select> \
-//           </td> \
-//         </tr> \
-//        </table> \
-//       </fieldset> \
-"    </td> \
-  </tr> \
-  <tr> \
-    <td id='--HA-style'></td> \
-  </tr> \
-</table> \
-";
-		var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, element);
-		var p = dialog.doc.getElementById("--HA-style");
-		p.appendChild(st_prop);
-		var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, element);
-		p = dialog.doc.getElementById("--HA-layout");
-		p.appendChild(st_layout);
-		dialog.modal = true;
-		dialog.addButtons("ok", "cancel");
-		dialog.showAtElement(dialog.editor._iframe, "c");
-	});
-};
-
-// this function gets called when some button from the TableOperations toolbar
-// was pressed.
-TableOperations.prototype.buttonPress = function(editor, button_id) {
-	this.editor = editor;
-	var mozbr = HTMLArea.is_gecko ? "<br />" : "";
-	var i18n = TableOperations.I18N;
-
-	// helper function that clears the content in a table row
-	function clearRow(tr) {
-		var tds = tr.getElementsByTagName("td");
-		for (var i = tds.length; --i >= 0;) {
-			var td = tds[i];
-			td.rowSpan = 1;
-			td.innerHTML = mozbr;
-		}
-	};
-
-	function splitRow(td) {
-		var n = parseInt("" + td.rowSpan);
-		var nc = parseInt("" + td.colSpan);
-		td.rowSpan = 1;
-		tr = td.parentNode;
-		var itr = tr.rowIndex;
-		var trs = tr.parentNode.rows;
-		var index = td.cellIndex;
-		while (--n > 0) {
-			tr = trs[++itr];
-			var otd = editor._doc.createElement("td");
-			otd.colSpan = td.colSpan;
-			otd.innerHTML = mozbr;
-			tr.insertBefore(otd, tr.cells[index]);
-		}
-		editor.forceRedraw();
-		editor.updateToolbar();
-	};
-
-	function splitCol(td) {
-		var nc = parseInt("" + td.colSpan);
-		td.colSpan = 1;
-		tr = td.parentNode;
-		var ref = td.nextSibling;
-		while (--nc > 0) {
-			var otd = editor._doc.createElement("td");
-			otd.rowSpan = td.rowSpan;
-			otd.innerHTML = mozbr;
-			tr.insertBefore(otd, ref);
-		}
-		editor.forceRedraw();
-		editor.updateToolbar();
-	};
-
-	function splitCell(td) {
-		var nc = parseInt("" + td.colSpan);
-		splitCol(td);
-		var items = td.parentNode.cells;
-		var index = td.cellIndex;
-		while (nc-- > 0) {
-			splitRow(items[index++]);
-		}
-	};
-
-	function selectNextNode(el) {
-		var node = el.nextSibling;
-		while (node && node.nodeType != 1) {
-			node = node.nextSibling;
-		}
-		if (!node) {
-			node = el.previousSibling;
-			while (node && node.nodeType != 1) {
-				node = node.previousSibling;
-			}
-		}
-		if (!node) {
-			node = el.parentNode;
-		}
-		editor.selectNodeContents(node);
-	};
-
-	switch (button_id) {
-		// ROWS
-
-	    case "TO-row-insert-above":
-	    case "TO-row-insert-under":
-		var tr = this.getClosest("tr");
-		if (!tr) {
-			break;
-		}
-		var otr = tr.cloneNode(true);
-		clearRow(otr);
-		tr.parentNode.insertBefore(otr, /under/.test(button_id) ? tr.nextSibling : tr);
-		editor.forceRedraw();
-		editor.focusEditor();
-		break;
-	    case "TO-row-delete":
-		var tr = this.getClosest("tr");
-		if (!tr) {
-			break;
-		}
-		var par = tr.parentNode;
-		if (par.rows.length == 1) {
-			alert(i18n["not-del-last-row"]);
-			break;
-		}
-		// set the caret first to a position that doesn't
-		// disappear.
-		selectNextNode(tr);
-		par.removeChild(tr);
-		editor.forceRedraw();
-		editor.focusEditor();
-		editor.updateToolbar();
-		break;
-	    case "TO-row-split":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		splitRow(td);
-		break;
-
-		// COLUMNS
-
-	    case "TO-col-insert-before":
-	    case "TO-col-insert-after":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		var rows = td.parentNode.parentNode.rows;
-		var index = td.cellIndex;
-		for (var i = rows.length; --i >= 0;) {
-			var tr = rows[i];
-			var ref = tr.cells[index + (/after/.test(button_id) ? 1 : 0)];
-			var otd = editor._doc.createElement("td");
-			otd.innerHTML = mozbr;
-			tr.insertBefore(otd, ref);
-		}
-		editor.focusEditor();
-		break;
-	    case "TO-col-split":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		splitCol(td);
-		break;
-	    case "TO-col-delete":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		var index = td.cellIndex;
-		if (td.parentNode.cells.length == 1) {
-			alert(i18n["not-del-last-col"]);
-			break;
-		}
-		// set the caret first to a position that doesn't disappear
-		selectNextNode(td);
-		var rows = td.parentNode.parentNode.rows;
-		for (var i = rows.length; --i >= 0;) {
-			var tr = rows[i];
-			tr.removeChild(tr.cells[index]);
-		}
-		editor.forceRedraw();
-		editor.focusEditor();
-		editor.updateToolbar();
-		break;
-
-		// CELLS
-
-	    case "TO-cell-split":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		splitCell(td);
-		break;
-	    case "TO-cell-insert-before":
-	    case "TO-cell-insert-after":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		var tr = td.parentNode;
-		var otd = editor._doc.createElement("td");
-		otd.innerHTML = mozbr;
-		tr.insertBefore(otd, /after/.test(button_id) ? td.nextSibling : td);
-		editor.forceRedraw();
-		editor.focusEditor();
-		break;
-	    case "TO-cell-delete":
-		var td = this.getClosest("td");
-		if (!td) {
-			break;
-		}
-		if (td.parentNode.cells.length == 1) {
-			alert(i18n["not-del-last-cell"]);
-			break;
-		}
-		// set the caret first to a position that doesn't disappear
-		selectNextNode(td);
-		td.parentNode.removeChild(td);
-		editor.forceRedraw();
-		editor.updateToolbar();
-		break;
-	    case "TO-cell-merge":
-		// !! FIXME: Mozilla specific !!
-		var sel = editor._getSelection();
-		var range, i = 0;
-		var rows = [];
-		var row = null;
-		var cells = null;
-		if (!HTMLArea.is_ie) {
-			try {
-				while (range = sel.getRangeAt(i++)) {
-					var td = range.startContainer.childNodes[range.startOffset];
-					if (td.parentNode != row) {
-						row = td.parentNode;
-						(cells) && rows.push(cells);
-						cells = [];
-					}
-					cells.push(td);
-				}
-			} catch(e) {/* finished walking through selection */}
-			rows.push(cells);
-		} else {
-			// Internet Explorer "browser"
-			var td = this.getClosest("td");
-			if (!td) {
-				alert(i18n["Please click into some cell"]);
-				break;
-			}
-			var tr = td.parentElement;
-			var no_cols = prompt(i18n["How many columns would you like to merge?"], 2);
-			if (!no_cols) {
-				// cancelled
-				break;
-			}
-			var no_rows = prompt(i18n["How many rows would you like to merge?"], 2);
-			if (!no_rows) {
-				// cancelled
-				break;
-			}
-			var cell_index = td.cellIndex;
-			while (no_rows-- > 0) {
-				td = tr.cells[cell_index];
-				cells = [td];
-				for (var i = 1; i < no_cols; ++i) {
-					td = td.nextSibling;
-					if (!td) {
-						break;
-					}
-					cells.push(td);
-				}
-				rows.push(cells);
-				tr = tr.nextSibling;
-				if (!tr) {
-					break;
-				}
-			}
-		}
-		var HTML = "";
-		for (i = 0; i < rows.length; ++i) {
-			// i && (HTML += "<br />");
-			var cells = rows[i];
-			for (var j = 0; j < cells.length; ++j) {
-				// j && (HTML += "&nbsp;");
-				var cell = cells[j];
-				HTML += cell.innerHTML;
-				(i || j) && (cell.parentNode.removeChild(cell));
-			}
-		}
-		var td = rows[0][0];
-		td.innerHTML = HTML;
-		td.rowSpan = rows.length;
-		td.colSpan = rows[0].length;
-		editor.selectNodeContents(td);
-		editor.forceRedraw();
-		editor.focusEditor();
-		break;
-
-		// PROPERTIES
-
-	    case "TO-table-prop":
-		this.dialogTableProperties();
-		break;
-
-	    case "TO-row-prop":
-		this.dialogRowCellProperties(false);
-		break;
-
-	    case "TO-cell-prop":
-		this.dialogRowCellProperties(true);
-		break;
-
-	    default:
-		alert("Button [" + button_id + "] not yet implemented");
-	}
-};
-
-// the list of buttons added by this plugin
-TableOperations.btnList = [
-	// table properties button
-	["table-prop",       "table"],
-	null,			// separator
-
-	// ROWS
-	["row-prop",         "tr"],
-	["row-insert-above", "tr"],
-	["row-insert-under", "tr"],
-	["row-delete",       "tr"],
-	["row-split",        "td[rowSpan!=1]"],
-	null,
-
-	// COLS
-	["col-insert-before", "td"],
-	["col-insert-after",  "td"],
-	["col-delete",        "td"],
-	["col-split",         "td[colSpan!=1]"],
-	null,
-
-	// CELLS
-	["cell-prop",          "td"],
-	["cell-insert-before", "td"],
-	["cell-insert-after",  "td"],
-	["cell-delete",        "td"],
-	["cell-merge",         "tr"],
-	["cell-split",         "td[colSpan!=1,rowSpan!=1]"]
-	];
-
-
-
-//// GENERIC CODE [style of any element; this should be moved into a separate
-//// file as it'll be very useful]
-//// BEGIN GENERIC CODE -----------------------------------------------------
-
-TableOperations.getLength = function(value) {
-	var len = parseInt(value);
-	if (isNaN(len)) {
-		len = "";
-	}
-	return len;
-};
-
-// Applies the style found in "params" to the given element.
-TableOperations.processStyle = function(params, element) {
-	var style = element.style;
-	for (var i in params) {
-		var val = params[i];
-		switch (i) {
-		    case "f_st_backgroundColor":
-			style.backgroundColor = val;
-			break;
-		    case "f_st_color":
-			style.color = val;
-			break;
-		    case "f_st_backgroundImage":
-			if (/\S/.test(val)) {
-				style.backgroundImage = "url(" + val + ")";
-			} else {
-				style.backgroundImage = "none";
-			}
-			break;
-		    case "f_st_borderWidth":
-			style.borderWidth = val;
-			break;
-		    case "f_st_borderStyle":
-			style.borderStyle = val;
-			break;
-		    case "f_st_borderColor":
-			style.borderColor = val;
-			break;
-		    case "f_st_borderCollapse":
-			style.borderCollapse = val ? "collapse" : "";
-			break;
-		    case "f_st_width":
-			if (/\S/.test(val)) {
-				style.width = val + params["f_st_widthUnit"];
-			} else {
-				style.width = "";
-			}
-			break;
-		    case "f_st_height":
-			if (/\S/.test(val)) {
-				style.height = val + params["f_st_heightUnit"];
-			} else {
-				style.height = "";
-			}
-			break;
-		    case "f_st_textAlign":
-			if (val == "char") {
-				var ch = params["f_st_textAlignChar"];
-				if (ch == '"') {
-					ch = '\\"';
-				}
-				style.textAlign = '"' + ch + '"';
-			} else {
-				style.textAlign = val;
-			}
-			break;
-		    case "f_st_verticalAlign":
-			style.verticalAlign = val;
-			break;
-		    case "f_st_float":
-			style.cssFloat = val;
-			break;
-// 		    case "f_st_margin":
-// 			style.margin = val + "px";
-// 			break;
-// 		    case "f_st_padding":
-// 			style.padding = val + "px";
-// 			break;
-		}
-	}
-};
-
-// Returns an HTML element for a widget that allows color selection.  That is,
-// a button that contains the given color, if any, and when pressed will popup
-// the sooner-or-later-to-be-rewritten select_color.html dialog allowing user
-// to select some color.  If a color is selected, an input field with the name
-// "f_st_"+name will be updated with the color value in #123456 format.
-TableOperations.createColorButton = function(doc, editor, color, name) {
-	if (!color) {
-		color = "";
-	} else if (!/#/.test(color)) {
-		color = HTMLArea._colorToRgb(color);
-	}
-
-	var df = doc.createElement("span");
- 	var field = doc.createElement("input");
-	field.type = "hidden";
-	df.appendChild(field);
- 	field.name = "f_st_" + name;
-	field.value = color;
-	var button = doc.createElement("span");
-	button.className = "buttonColor";
-	df.appendChild(button);
-	var span = doc.createElement("span");
-	span.className = "chooser";
-	// span.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
-	span.style.backgroundColor = color;
-	button.appendChild(span);
-	button.onmouseover = function() { if (!this.disabled) { this.className += " buttonColor-hilite"; }};
-	button.onmouseout = function() { if (!this.disabled) { this.className = "buttonColor"; }};
-	span.onclick = function() {
-		if (this.parentNode.disabled) {
-			return false;
-		}
-		editor._popupDialog("select_color.html", function(color) {
-			if (color) {
-				span.style.backgroundColor = "#" + color;
-				field.value = "#" + color;
-			}
-		}, color);
-	};
-	var span2 = doc.createElement("span");
-	span2.innerHTML = "&#x00d7;";
-	span2.className = "nocolor";
-	span2.title = TableOperations.I18N["Unset color"];
-	button.appendChild(span2);
-	span2.onmouseover = function() { if (!this.parentNode.disabled) { this.className += " nocolor-hilite"; }};
-	span2.onmouseout = function() { if (!this.parentNode.disabled) { this.className = "nocolor"; }};
-	span2.onclick = function() {
-		span.style.backgroundColor = "";
-		field.value = "";
-	};
-	return df;
-};
-
-TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
-	var i18n = TableOperations.I18N;
-	var fieldset = doc.createElement("fieldset");
-	var legend = doc.createElement("legend");
-	fieldset.appendChild(legend);
-	legend.innerHTML = i18n["Layout"];
-	var table = doc.createElement("table");
-	fieldset.appendChild(table);
-	table.style.width = "100%";
-	var tbody = doc.createElement("tbody");
-	table.appendChild(tbody);
-
-	var tagname = el.tagName.toLowerCase();
-	var tr, td, input, select, option, options, i;
-
-	if (tagname != "td" && tagname != "tr" && tagname != "th") {
-		tr = doc.createElement("tr");
-		tbody.appendChild(tr);
-		td = doc.createElement("td");
-		td.className = "label";
-		tr.appendChild(td);
-		td.innerHTML = i18n["Float"] + ":";
-		td = doc.createElement("td");
-		tr.appendChild(td);
-		select = doc.createElement("select");
-		td.appendChild(select);
-		select.name = "f_st_float";
-		options = ["None", "Left", "Right"];
-		for (i in options) {
-			var Val = options[i];
-			var val = options[i].toLowerCase();
-			option = doc.createElement("option");
-			option.innerHTML = i18n[Val];
-			option.value = val;
-			option.selected = (("" + el.style.cssFloat).toLowerCase() == val);
-			select.appendChild(option);
-		}
-	}
-
-	tr = doc.createElement("tr");
-	tbody.appendChild(tr);
-	td = doc.createElement("td");
-	td.className = "label";
-	tr.appendChild(td);
-	td.innerHTML = i18n["Width"] + ":";
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	input = doc.createElement("input");
-	input.type = "text";
-	input.value = TableOperations.getLength(el.style.width);
-	input.size = "5";
-	input.name = "f_st_width";
-	input.style.marginRight = "0.5em";
-	td.appendChild(input);
-	select = doc.createElement("select");
-	select.name = "f_st_widthUnit";
-	option = doc.createElement("option");
-	option.innerHTML = i18n["percent"];
-	option.value = "%";
-	option.selected = /%/.test(el.style.width);
-	select.appendChild(option);
-	option = doc.createElement("option");
-	option.innerHTML = i18n["pixels"];
-	option.value = "px";
-	option.selected = /px/.test(el.style.width);
-	select.appendChild(option);
-	td.appendChild(select);
-
-	select.style.marginRight = "0.5em";
-	td.appendChild(doc.createTextNode(i18n["Text align"] + ":"));
-	select = doc.createElement("select");
-	select.style.marginLeft = select.style.marginRight = "0.5em";
-	td.appendChild(select);
-	select.name = "f_st_textAlign";
-	options = ["Left", "Center", "Right", "Justify"];
-	if (tagname == "td") {
-		options.push("Char");
-	}
-	input = doc.createElement("input");
-	input.name = "f_st_textAlignChar";
-	input.size = "1";
-	input.style.fontFamily = "monospace";
-	td.appendChild(input);
-	for (i in options) {
-		var Val = options[i];
-		var val = Val.toLowerCase();
-		option = doc.createElement("option");
-		option.value = val;
-		option.innerHTML = i18n[Val];
-		option.selected = (el.style.textAlign.toLowerCase() == val);
-		select.appendChild(option);
-	}
-	function setCharVisibility(value) {
-		input.style.visibility = value ? "visible" : "hidden";
-		if (value) {
-			input.focus();
-			input.select();
-		}
-	};
-	select.onchange = function() { setCharVisibility(this.value == "char"); };
-	setCharVisibility(select.value == "char");
-
-	tr = doc.createElement("tr");
-	tbody.appendChild(tr);
-	td = doc.createElement("td");
-	td.className = "label";
-	tr.appendChild(td);
-	td.innerHTML = i18n["Height"] + ":";
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	input = doc.createElement("input");
-	input.type = "text";
-	input.value = TableOperations.getLength(el.style.height);
-	input.size = "5";
-	input.name = "f_st_height";
-	input.style.marginRight = "0.5em";
-	td.appendChild(input);
-	select = doc.createElement("select");
-	select.name = "f_st_heightUnit";
-	option = doc.createElement("option");
-	option.innerHTML = i18n["percent"];
-	option.value = "%";
-	option.selected = /%/.test(el.style.height);
-	select.appendChild(option);
-	option = doc.createElement("option");
-	option.innerHTML = i18n["pixels"];
-	option.value = "px";
-	option.selected = /px/.test(el.style.height);
-	select.appendChild(option);
-	td.appendChild(select);
-
-	select.style.marginRight = "0.5em";
-	td.appendChild(doc.createTextNode(i18n["Vertical align"] + ":"));
-	select = doc.createElement("select");
-	select.name = "f_st_verticalAlign";
-	select.style.marginLeft = "0.5em";
-	td.appendChild(select);
-	options = ["Top", "Middle", "Bottom", "Baseline"];
-	for (i in options) {
-		var Val = options[i];
-		var val = Val.toLowerCase();
-		option = doc.createElement("option");
-		option.value = val;
-		option.innerHTML = i18n[Val];
-		option.selected = (el.style.verticalAlign.toLowerCase() == val);
-		select.appendChild(option);
-	}
-
-	return fieldset;
-};
-
-// Returns an HTML element containing the style attributes for the given
-// element.  This can be easily embedded into any dialog; the functionality is
-// also provided.
-TableOperations.createStyleFieldset = function(doc, editor, el) {
-	var i18n = TableOperations.I18N;
-	var fieldset = doc.createElement("fieldset");
-	var legend = doc.createElement("legend");
-	fieldset.appendChild(legend);
-	legend.innerHTML = i18n["CSS Style"];
-	var table = doc.createElement("table");
-	fieldset.appendChild(table);
-	table.style.width = "100%";
-	var tbody = doc.createElement("tbody");
-	table.appendChild(tbody);
-
-	var tr, td, input, select, option, options, i;
-
-	tr = doc.createElement("tr");
-	tbody.appendChild(tr);
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	td.className = "label";
-	td.innerHTML = i18n["Background"] + ":";
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	var df = TableOperations.createColorButton(doc, editor, el.style.backgroundColor, "backgroundColor");
-	df.firstChild.nextSibling.style.marginRight = "0.5em";
-	td.appendChild(df);
-	td.appendChild(doc.createTextNode(i18n["Image URL"] + ": "));
-	input = doc.createElement("input");
-	input.type = "text";
-	input.name = "f_st_backgroundImage";
-	if (el.style.backgroundImage.match(/url\(\s*(.*?)\s*\)/)) {
-		input.value = RegExp.$1;
-	}
-	// input.style.width = "100%";
-	td.appendChild(input);
-
-	tr = doc.createElement("tr");
-	tbody.appendChild(tr);
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	td.className = "label";
-	td.innerHTML = i18n["FG Color"] + ":";
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	td.appendChild(TableOperations.createColorButton(doc, editor, el.style.color, "color"));
-
-	// for better alignment we include an invisible field.
-	input = doc.createElement("input");
-	input.style.visibility = "hidden";
-	input.type = "text";
-	td.appendChild(input);
-
-	tr = doc.createElement("tr");
-	tbody.appendChild(tr);
-	td = doc.createElement("td");
-	tr.appendChild(td);
-	td.className = "label";
-	td.innerHTML = i18n["Border"] + ":";
-	td = doc.createElement("td");
-	tr.appendChild(td);
-
-	var colorButton = TableOperations.createColorButton(doc, editor, el.style.borderColor, "borderColor");
-	var btn = colorButton.firstChild.nextSibling;
-	td.appendChild(colorButton);
-	// borderFields.push(btn);
-	btn.style.marginRight = "0.5em";
-
-	select = doc.createElement("select");
-	var borderFields = [];
-	td.appendChild(select);
-	select.name = "f_st_borderStyle";
-	options = ["none", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"];
-	var currentBorderStyle = el.style.borderStyle;
-	// Gecko reports "solid solid solid solid" for "border-style: solid".
-	// That is, "top right bottom left" -- we only consider the first
-	// value.
-	(currentBorderStyle.match(/([^\s]*)\s/)) && (currentBorderStyle = RegExp.$1);
-	for (i in options) {
-		var val = options[i];
-		option = doc.createElement("option");
-		option.value = val;
-		option.innerHTML = val;
-		(val == currentBorderStyle) && (option.selected = true);
-		select.appendChild(option);
-	}
-	select.style.marginRight = "0.5em";
-	function setBorderFieldsStatus(value) {
-		for (i in borderFields) {
-			var el = borderFields[i];
-			el.style.visibility = value ? "hidden" : "visible";
-			if (!value && (el.tagName.toLowerCase() == "input")) {
-				el.focus();
-				el.select();
-			}
-		}
-	};
-	select.onchange = function() { setBorderFieldsStatus(this.value == "none"); };
-
-	input = doc.createElement("input");
-	borderFields.push(input);
-	input.type = "text";
-	input.name = "f_st_borderWidth";
-	input.value = TableOperations.getLength(el.style.borderWidth);
-	input.size = "5";
-	td.appendChild(input);
-	input.style.marginRight = "0.5em";
-	var span = doc.createElement("span");
-	span.innerHTML = i18n["pixels"];
-	td.appendChild(span);
-	borderFields.push(span);
-
-	setBorderFieldsStatus(select.value == "none");
-
-	if (el.tagName.toLowerCase() == "table") {
-		// the border-collapse style is only for tables
-		tr = doc.createElement("tr");
-		tbody.appendChild(tr);
-		td = doc.createElement("td");
-		td.className = "label";
-		tr.appendChild(td);
-		input = doc.createElement("input");
-		input.type = "checkbox";
-		input.name = "f_st_borderCollapse";
-		input.id = "f_st_borderCollapse";
-		var val = (/collapse/i.test(el.style.borderCollapse));
-		input.checked = val ? 1 : 0;
-		td.appendChild(input);
-
-		td = doc.createElement("td");
-		tr.appendChild(td);
-		var label = doc.createElement("label");
-		label.htmlFor = "f_st_borderCollapse";
-		label.innerHTML = i18n["Collapsed borders"];
-		td.appendChild(label);
-	}
-
-// 	tr = doc.createElement("tr");
-// 	tbody.appendChild(tr);
-// 	td = doc.createElement("td");
-// 	td.className = "label";
-// 	tr.appendChild(td);
-// 	td.innerHTML = i18n["Margin"] + ":";
-// 	td = doc.createElement("td");
-// 	tr.appendChild(td);
-// 	input = doc.createElement("input");
-// 	input.type = "text";
-// 	input.size = "5";
-// 	input.name = "f_st_margin";
-// 	td.appendChild(input);
-// 	input.style.marginRight = "0.5em";
-// 	td.appendChild(doc.createTextNode(i18n["Padding"] + ":"));
-
-// 	input = doc.createElement("input");
-// 	input.type = "text";
-// 	input.size = "5";
-// 	input.name = "f_st_padding";
-// 	td.appendChild(input);
-// 	input.style.marginLeft = "0.5em";
-// 	input.style.marginRight = "0.5em";
-// 	td.appendChild(doc.createTextNode(i18n["pixels"]));
-
-	return fieldset;
-};
-
-//// END GENERIC CODE -------------------------------------------------------
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/fi.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/fi.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/fi.js	(nonexistent)
@@ -1,66 +0,0 @@
-TableOperations.I18N = {
-	"Align":					  "Kohdistus",
-	"All four sides":				  "Kaikki nelj sivua",
-	"Background":					  "Tausta",
-	"Baseline":                                       "Takaraja",
-	"Border":					  "Reuna",
-	"Borders":					  "Reunat",
-	"Bottom":                                         "Alle",
-	"CSS Style":					  "Tyyli [CSS]",
-	"Caption":					  "Otsikko",
-	"Cell Properties":                                "Solun asetukset",
-	"Center":					  "Keskelle",
-	"Char":                                           "Merkki",
-	"Collapsed borders":                              "Luhistetut reunat",
-	"Color":					  "Vri",
-	"Description":					  "Kuvaus",
-	"FG Color":					  "FG Vri",
-	"Frames":					  "Kehykset",
-	"Image URL":					  "Kuvan osoite",
-	"Layout":					  "Sommittelu",
-	"Left":						  "Vasen",
-	"Margin":                                         "Marginaali",
-	"Middle":                                         "Keskelle",
-	"No rules":					  "Ei viivoja",
-	"No sides":					  "Ei sivuja",
-	"Padding":					  "Palstantyte",
-	"Right":					  "Oikea",
-	"Row Properties":                                 "Rivin asetukset",
-	"Rules will appear between all rows and columns": "Viivat jokaisen rivin ja sarakkeen vlill",
-	"Rules will appear between columns only":	  "Viivat ainoastaan sarakkeiden vlill",
-	"Rules will appear between rows only":		  "Viivat ainoastaan rivien vlill",
-	"Rules":					  "Viivat",
-	"Spacing":					  "Palstatila",
-	"Summary":					  "Yhteenveto",
-	"TO-cell-delete":				  "Poista solu",
-	"TO-cell-insert-after":				  "Lis solu pern",
-	"TO-cell-insert-before":			  "Lis solu ennen",
-	"TO-cell-merge":				  "Yhdist solut",
-	"TO-cell-prop":					  "Solun asetukset",
-	"TO-cell-split":				  "Jaa solu",
-	"TO-col-delete":				  "Poista sarake",
-	"TO-col-insert-after":				  "Lis sarake pern",
-	"TO-col-insert-before":				  "Lis sarake ennen",
-	"TO-col-split":					  "Jaa sarake",
-	"TO-row-delete":				  "Poista rivi",
-	"TO-row-insert-above":				  "Lis rivi ylpuolelle",
-	"TO-row-insert-under":				  "Lis rivi alapuolelle",
-	"TO-row-prop":					  "Rivin asetukset",
-	"TO-row-split":					  "Jaa rivi",
-	"TO-table-prop":				  "Taulukon asetukset",
-	"Top":                                            "Yls",	
-	"Table Properties":				  "Taulukon asetukset",
-	"The bottom side only":				  "Ainoastaan alapuolelle",
-	"The left-hand side only":			  "Ainoastaan vasenreuna",
-	"The right and left sides only":		  "Oikea- ja vasenreuna",
-	"The right-hand side only":			  "Ainoastaan oikeareuna",
-	"The top and bottom sides only":		  "Yl- ja alapuoli.",
-	"The top side only":				  "Ainoastaan ylpuoli",
-	"Vertical align":                                 "Vertikaali kohdistus",
-	"Width":					  "Leveys",
-	"not-del-last-cell":				  "Ei voida poistaa viimeist solua rivist.",
-	"not-del-last-col":				  "Ei voida poistaa viimeist saraketta taulusta.",
-	"not-del-last-row":				  "Ei voida poistaa viimeist rivi taulusta.",
-	"percent":					  "prosenttia",
-	"pixels":					  "pikseli"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/hu.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/hu.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/hu.js	(nonexistent)
@@ -1,63 +0,0 @@
-// I18N constants
-
-// LANG: "hu", ENCODING: UTF-8
-// Author: Miklós Somogyi, <somogyine@vnet.hu>
-
-// 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.)
-
-HTMLArea.I18N = {
-
-	// the following should be the filename without .js extension
-	// it will be used for automatically load plugin language.
-	lang: "hu",
-
-	tooltips: {
-		bold:           "Félkövér",
-		italic:         "Dőlt",
-		underline:      "Aláhúzott",
-		strikethrough:  "Áthúzott",
-		subscript:      "Alsó index",
-		superscript:    "Felső index",
-		justifyleft:    "Balra zárt",
-		justifycenter:  "Középre zárt",
-		justifyright:   "Jobbra zárt",
-		justifyfull:    "Sorkizárt",
-		orderedlist:    "Számozott lista",
-		unorderedlist:  "Számozatlan lista",
-		outdent:        "Behúzás csökkentése",
-		indent:         "Behúzás növelése",
-		forecolor:      "Karakterszín",
-		hilitecolor:    "Háttérszín",
-		horizontalrule: "Elválasztó vonal",
-		createlink:     "Hiperhivatkozás beszúrása",
-		insertimage:    "Kép beszúrása",
-		inserttable:    "Táblázat beszúrása",
-		htmlmode:       "HTML forrás be/ki",
-		popupeditor:    "Szerkesztő külön ablakban",
-		about:          "Névjegy",
-		showhelp:       "Súgó",
-		textindicator:  "Aktuális stílus",
-		undo:           "Visszavonás",
-		redo:           "Újra végrehajtás",
-		cut:            "Kivágás",
-		copy:           "Másolás",
-		paste:          "Beillesztés"
-	},
-
-	buttons: {
-		"ok":           "Rendben",
-		"cancel":       "Mégsem"
-	},
-
-	msg: {
-		"Path":         "Hierarchia",
-		"TEXT_MODE":    "Forrás mód. Visszaváltás [<>] gomb"
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/it.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/it.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/it.js	(nonexistent)
@@ -1,81 +0,0 @@
-// I18N constants
-
-// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
-// Author: Fabio Rotondo <fabio@rotondo.it>
-
-TableOperations.I18N = {
-	"Align":					  "Allinea",
-	"All four sides":				  "Tutti e quattro i lati",
-	"Background":					  "Sfondo",
-	"Baseline":                                       "Allineamento",
-	"Border":					  "Bordo",
-	"Borders":					  "Bordi",
-	"Bottom":                                         "Basso",
-	"CSS Style":					  "Stile [CSS]",
-	"Caption":					  "Titolo",
-	"Cell Properties":                                "Proprietà della Cella",
-	"Center":					  "Centra",
-	"Char":                                           "Carattere",
-	"Collapsed borders":                              "Bordi chiusi",
-	"Color":					  "Colore",
-	"Description":					  "Descrizione",
-	"FG Color":					  "Colore Principale",
-	"Float":                                          "Fluttuante",
-	"Frames":					  "Frames",
-	"Height":                                         "Altezza",
-	"How many columns would you like to merge?":      "Quante colonne vuoi unire?",
-	"How many rows would you like to merge?":         "Quante righe vuoi unire?",
-	"Image URL":					  "URL dell'Immagine",
-	"Justify":                                        "Justifica",
-	"Layout":					  "Layout",
-	"Left":						  "Sinistra",
-	"Margin":                                         "Margine",
-	"Middle":                                         "Centrale",
-	"No rules":					  "Nessun righello",
-	"No sides":					  "Nessun lato",
-	"None":                                           "Nulla",
-	"Padding":					  "Padding",
-	"Please click into some cell":                    "Per favore, clicca in una cella",
-	"Right":					  "Destra",
-	"Row Properties":                                 "Proprietà della Riga",
-	"Rules will appear between all rows and columns": "Le linee appariranno tra tutte le righe e colonne",
-	"Rules will appear between columns only":	  "Le linee appariranno solo tra le colonne",
-	"Rules will appear between rows only":		  "Le linee appariranno solo tra le righe",
-	"Rules":					  "Linee",
-	"Spacing and padding":                            "Spaziatura e Padding",
-	"Spacing":					  "Spaziatura",
-	"Summary":					  "Sommario",
-	"TO-cell-delete":				  "Cancella cella",
-	"TO-cell-insert-after":				  "Inserisci cella dopo",
-	"TO-cell-insert-before":			  "Inserisci cella prima",
-	"TO-cell-merge":				  "Unisci celle",
-	"TO-cell-prop":					  "Proprietà della cella",
-	"TO-cell-split":				  "Dividi cella",
-	"TO-col-delete":				  "Cancella colonna",
-	"TO-col-insert-after":				  "Inserisci colonna dopo",
-	"TO-col-insert-before":				  "Inserisci colonna prima",
-	"TO-col-split":					  "Dividi colonna",
-	"TO-row-delete":				  "Cancella riga",
-	"TO-row-insert-above":				  "Inserisci riga prima",
-	"TO-row-insert-under":				  "Inserisci riga dopo",
-	"TO-row-prop":					  "Proprietà della riga",
-	"TO-row-split":					  "Dividi riga",
-	"TO-table-prop":				  "Proprietà della Tabella",
-	"Table Properties":				  "Proprietà della Tabella",
-	"Text align":                                     "Allineamento del Testo",
-	"The bottom side only":				  "Solo la parte inferiore",
-	"The left-hand side only":			  "Solo la parte sinistra",
-	"The right and left sides only":		  "Solo destra e sinistra",
-	"The right-hand side only":			  "Solo la parte destra",
-	"The top and bottom sides only":		  "Solo sopra e sotto",
-	"The top side only":				  "Solo la parte sopra",
-	"Top":                                            "Alto",	
-	"Unset color":                                    "Rimuovi colore",
-	"Vertical align":                                 "Allineamento verticale",
-	"Width":					  "Larghezza",
-	"not-del-last-cell":				  "HTMLArea si rifiuta codardamente di cancellare l'ultima cella nella riga.",
-	"not-del-last-col":				  "HTMLArea si rifiuta codardamente di cancellare l'ultima colonna nella tabella.",
-	"not-del-last-row":				  "HTMLArea si rifiuta codardamente di cancellare l'ultima riga nella tabella.",
-	"percent":					  "percento",
-	"pixels":					  "pixels"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/nl.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/nl.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/nl.js	(nonexistent)
@@ -1,90 +0,0 @@
-// I18N constants
-
-// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
-// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
-
-// 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.)
-
-TableOperations.I18N = {
-	"Align":											"Uitlijning",
-	"All four sides":									"Alle 4 zijden",
-	"Background":										"Achtergrond",
-	"Baseline":											"Basis",
-	"Border":											"Rand",
-	"Borders":											"Randen",
-	"Bottom":											"Onder",
-	"CSS Style":										"CSS Style",
-	"Caption":											"Opmerking",
-	"Cell Properties":									"Celeigenschappen",
-	"Center":											"Centreren",
-	"Char":												"Karakter",
-	"Collapsed borders":								"Geen randen",
-	"Color":											"Kleur",
-	"Description":										"Omschrijving",
-	"FG Color":											"Voorgrond",
-	"Float":											"Zwevend",
-	"Frames":											"Frames",
-	"Height":											"Hoogte",
-	"How many columns would you like to merge?":		"Hoeveel kolommen wilt u samenvoegen?",
-	"How many rows would you like to merge?":			"Hoeveel rijen wilt u samenvoegen?",
-	"Image URL":										"Afbeelding URL",
-	"Justify":											"Uitvullen",
-	"Layout":											"Opmaak",
-	"Left":												"Links",
-	"Margin":											"Marge",
-	"Middle":											"Midden",
-	"No rules":											"Geen regels",
-	"No sides":											"Geen zijlijnen",
-	"None":												"Geen",
-	"Padding":											"Celmarge",
-	"Please click into some cell":						"Klik in een cel a.u.b.",
-	"Right":											"Rechts",
-	"Row Properties":									"Rijeigenschappen",
-	"Rules will appear between all rows and columns":	"Regels verschijnen tussen alle rijen en kolommen",
-	"Rules will appear between columns only":	  		"Regels verschijnen enkel tussen de kolommen",
-	"Rules will appear between rows only":				"Regels verschijnen enkel tussen de rijen",
-	"Rules":					  						"Regels",
-	"Spacing and padding":                           	"Celmarge en afstand tussen cellen",
-	"Spacing":											"marge",
-	"Summary":											"Overzicht",
-	"TO-cell-delete":				  					"Cel verwijderen",
-	"TO-cell-insert-after":				  				"Voeg cel toe achter",
-	"TO-cell-insert-before":			  				"Voeg cel toe voor",
-	"TO-cell-merge":									"Cellen samenvoegen",
-	"TO-cell-prop":										"Celeigenschappen",
-	"TO-cell-split":									"Cel splitsen",
-	"TO-col-delete":									"Kolom verwijderen",
-	"TO-col-insert-after":								"Kolom invoegen achter",
-	"TO-col-insert-before":								"Kolom invoegen voor",
-	"TO-col-split":										"Kolom splitsen",
-	"TO-row-delete":									"Rij verwijderen",
-	"TO-row-insert-above":								"Rij invoegen boven",
-	"TO-row-insert-under":								"Rij invoegen onder",
-	"TO-row-prop":										"Rij eigenschappen",
-	"TO-row-split":										"Rij splitsen",
-	"TO-table-prop":				  					"Tabel eigenschappen",
-	"Table Properties":				  					"Tabel eigenschappen",
-	"Text align":                                     	"Text uitlijning",
-	"The bottom side only":				  				"Enkel aan de onderkant",
-	"The left-hand side only":			 				"Enkel aan de linkerkant",
-	"The right and left sides only":		 			"Enkel aan de linker en rechterkant",
-	"The right-hand side only":							"Enkel aan de rechterkant",
-	"The top and bottom sides only":					"Enkel aan de bovenen onderkant",
-	"The top side only":								"Enkel aan de bovenkant",
-	"Top":												"Boven",
-	"Unset color":										"Wis kleur",
-	"Vertical align":									"Vertikale uitlijning",
-	"Width":					 						"Breedte",
-	"not-del-last-cell":								"HTMLArea kan de laatste cel in deze tabel niet verwijderen.",
-	"not-del-last-col":									"HTMLArea kan de laatste kolom in deze tabel niet verwijderen.",
-	"not-del-last-row":									"HTMLArea kan de laatste rij in deze tabel niet verwijderen.",
-	"percent":											"procent",
-	"pixels":											"pixels"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/no.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/no.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/no.js	(nonexistent)
@@ -1,91 +0,0 @@
-// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, <mishoo@infoiasi.ro>
-// translated into Norwegia: ses@online.no  11.11.03
-
-// 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.)
-
-TableOperations.I18N = {
-	"Align":					  	"Juster",
-	"All four sides":			  	"Alle fire sider",
-	"Background":					"Bakgrund",
-	"Baseline":                   	"Grunnlinje",
-	"Border":					  	"Kantlinje",
-	"Borders":					  	"Kantlinjer",
-	"Bottom":                     	"Bunn",
-	"CSS Style":					"Stil [CSS]",
-	"Caption":					  	"Overskrift",
-	"Cell Properties":              "Celleegenskaper",
-	"Center":					  	"Sentrer",
-	"Char":                         "Tegn",
-	"Collapsed borders":            "Fjern kantlinjer",
-	"Color":					  	"Farge",
-	"Description":					"Beskrivelse",
-	"FG Color":					  	"FG farge",
-	"Float":                        "Flytende",
-	"Frames":					  	"rammer",
-	"Height":                       "Hyde",
-	"How many columns would you like to merge?":      "Hvor mange kolonner vil du sl sammen?",
-	"How many rows would you like to merge?":         "Hvor mange rader vil du sl sammen?",
-	"Image URL":					"Bildets URL",
-	"Justify":                      "Juster",
-	"Layout":					  	"Layout",
-	"Left":						  	"Venstre",
-	"Margin":                       "Marg",
-	"Middle":                       "Midten",
-	"No rules":					  	"Ingen linjal",
-	"No sides":					  	"Ingen sider",
-	"None":                         "Ingen",
-	"Padding":					  	"Luft",
-	"Please click into some cell":  "Klikk i en eller annen celle",
-	"Right":					  	"Hyre",
-	"Row Properties":               "Egenskaper for rad",
-	"Rules will appear between all rows and columns": "Linjer vil synes mellom alle rader og kolonner",
-	"Rules will appear between columns only":	  "Linjer vil synes kun mellom kolonner",
-	"Rules will appear between rows only":		  "Linjer vil synes kun mellom rader",
-	"Rules":					  	"Linjer",
-	"Spacing and padding":          "Luft",
-	"Spacing":					  	"Luft",
-	"Summary":					  	"Sammendrag",
-	"TO-cell-delete":				"Slett celle",
-	"TO-cell-insert-after":			"Sett inn celle etter",
-	"TO-cell-insert-before":		"Sett inn celle foran",
-	"TO-cell-merge":				"Sl sammen celler",
-	"TO-cell-prop":					"Egenskaper for celle",
-	"TO-cell-split":				"Del celle",
-	"TO-col-delete":				"Slett kolonne",
-	"TO-col-insert-after":			"Skyt inn kolonne etter",
-	"TO-col-insert-before":			"Skyt inn kolonne fr",
-	"TO-col-split":					"Del kolonne",
-	"TO-row-delete":				"Slett rad",
-	"TO-row-insert-above":			"Skyt inn rad foran",
-	"TO-row-insert-under":			"Skyt inn rad etter",
-	"TO-row-prop":					"Egenskaper for rad",
-	"TO-row-split":					"Del rad",
-	"TO-table-prop":				"Tabellegenskaper",
-	"Table Properties":				"Tabellegenskaper",
-	"Text align":                   "Juster tekst",
-	"The bottom side only":			"Bunnen kun",
-	"The left-hand side only":		"Venstresiden kun",
-	"The right and left sides only":	"Hyre- og venstresiden kun",
-	"The right-hand side only":			"Hyresiden kun",
-	"The top and bottom sides only":	"The top and bottom sides only",
-	"The top side only":				"Overkanten kun",
-	"Top":                          "Overkant",	
-	"Unset color":                  "Ikke-bestemt farge",
-	"Vertical align":               "Vertikal justering",
-	"Width":					  	"Bredde",
-	"not-del-last-cell":			"HTMLArea nekter  slette siste cellen i tabellen.",
-	"not-del-last-col":				"HTMLArea nekter  slette siste kolonnen i tabellen.",
-	"not-del-last-row":				"HTMLArea nekter  slette siste raden i tabellen.",
-	"percent":					  	"prosent",
-	"pixels":					  	"billedpunkter"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/ro.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/ro.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/ro.js	(nonexistent)
@@ -1,90 +0,0 @@
-// I18N constants
-
-// LANG: "ro", ENCODING: UTF-8
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-TableOperations.I18N = {
-	"Align":					  "Aliniere",
-	"All four sides":				  "Toate părţile",
-	"Background":					  "Fundal",
-	"Baseline":                                       "Baseline",
-	"Border":					  "Chenar",
-	"Borders":					  "Chenare",
-	"Bottom":                                         "Jos",
-	"CSS Style":					  "Stil [CSS]",
-	"Caption":					  "Titlu de tabel",
-	"Cell Properties":                                "Proprietăţile celulei",
-	"Center":					  "Centru",
-	"Char":                                           "Caracter",
-	"Collapsed borders":                              "Chenare asimilate",
-	"Color":					  "Culoare",
-	"Description":					  "Descriere",
-	"FG Color":					  "Culoare text",
-	"Float":                                          "Poziţie",
-	"Frames":					  "Chenare",
-	"Height":                                         "Înălţimea",
-	"How many columns would you like to merge?":      "Câte coloane vrei să uneşti?",
-	"How many rows would you like to merge?":         "Câte linii vrei să uneşti?",
-	"Image URL":					  "URL-ul imaginii",
-	"Justify":                                        "Justify",
-	"Layout":					  "Aranjament",
-	"Left":						  "Stânga",
-	"Margin":                                         "Margine",
-	"Middle":                                         "Mijloc",
-	"No rules":					  "Fără linii",
-	"No sides":					  "Fără părţi",
-	"None":                                           "Nimic",
-	"Padding":					  "Spaţiere",
-	"Please click into some cell":                    "Vă rog să daţi click într-o celulă",
-	"Right":					  "Dreapta",
-	"Row Properties":                                 "Proprietăţile liniei",
-	"Rules will appear between all rows and columns": "Vor apărea linii între toate rândurile şi coloanele",
-	"Rules will appear between columns only":	  "Vor apărea doar linii verticale",
-	"Rules will appear between rows only":		  "Vor apărea doar linii orizontale",
-	"Rules":					  "Linii",
-	"Spacing and padding":                            "Spaţierea",
-	"Spacing":					  "Între celule",
-	"Summary":					  "Sumar",
-	"TO-cell-delete":				  "Şterge celula",
-	"TO-cell-insert-after":				  "Inserează o celulă la dreapta",
-	"TO-cell-insert-before":			  "Inserează o celulă la stânga",
-	"TO-cell-merge":				  "Uneşte celulele",
-	"TO-cell-prop":					  "Proprietăţile celulei",
-	"TO-cell-split":				  "Împarte celula",
-	"TO-col-delete":				  "Şterge coloana",
-	"TO-col-insert-after":				  "Inserează o coloană la dreapta",
-	"TO-col-insert-before":				  "Inserează o coloană la stânga",
-	"TO-col-split":					  "Împarte coloana",
-	"TO-row-delete":				  "Şterge rândul",
-	"TO-row-insert-above":				  "Inserează un rând înainte",
-	"TO-row-insert-under":				  "Inserează un rând după",
-	"TO-row-prop":					  "Proprietăţile rândului",
-	"TO-row-split":					  "Împarte rândul",
-	"TO-table-prop":				  "Proprietăţile tabelei",
-	"Table Properties":				  "Proprietăţile tabelei",
-	"Text align":                                     "Aliniere",
-	"The bottom side only":				  "Doar partea de jos",
-	"The left-hand side only":			  "Doar partea din stânga",
-	"The right and left sides only":		  "Partea din stânga şi cea din dreapta",
-	"The right-hand side only":			  "Doar partea din dreapta",
-	"The top and bottom sides only":		  "Partea de sus si cea de jos",
-	"The top side only":				  "Doar partea de sus",
-	"Top":                                            "Sus",	
-	"Unset color":                                    "Dezactivează culoarea",
-	"Vertical align":                                 "Aliniere pe verticală",
-	"Width":					  "Lăţime",
-	"not-del-last-cell":				  "HTMLArea refuză cu laşitate să şteargă ultima celulă din rând.",
-	"not-del-last-col":				  "HTMLArea refuză cu laşitate să şteargă ultima coloamă din tabela.",
-	"not-del-last-row":				  "HTMLArea refuză cu laşitate să şteargă ultimul rând din tabela.",
-	"percent":					  "procente",
-	"pixels":					  "pixeli"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/cz.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/cz.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/cz.js	(nonexistent)
@@ -1,90 +0,0 @@
-﻿// I18N constants
-
-// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
-// Author: Jiri Löw, <jirilow@jirilow.com>
-
-// 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.)
-
-TableOperations.I18N = {
-	"Align":					  "Zarovnání",
-	"All four sides":				  "Všechny čtyři strany",
-	"Background":					  "Pozadí",
-	"Baseline":                                       "Základní linka",
-	"Border":					  "Obrys",
-	"Borders":					  "Obrysy",
-	"Bottom":                                         "Dolů",
-	"CSS Style":					  "Kaskádové styly (CSS)",
-	"Caption":					  "Titulek",
-	"Cell Properties":                                "Vlastnosti buňky",
-	"Center":					  "Na střed",
-	"Char":                                           "Znak",
-	"Collapsed borders":                              "Stlačené okraje",
-	"Color":					  "Barva",
-	"Description":					  "Popis",
-	"FG Color":					  "Barva popředí",
-	"Float":                                          "Obtékání",
-	"Frames":					  "Rámečky",
-	"Height":                                         "Výška",
-	"How many columns would you like to merge?":      "Kolik sloupců si přejete spojit?",
-	"How many rows would you like to merge?":         "Kolik řádků si přejete spojit?",
-	"Image URL":					  "Adresa obrázku",
-	"Justify":                                        "Do stran",
-	"Layout":					  "Rozložení",
-	"Left":						  "Vlevo",
-	"Margin":                                         "Okraj",
-	"Middle":                                         "Na střed",
-	"No rules":					  "Žádné čáry",
-	"No sides":					  "Žádné strany",
-	"None":                                           "Žádné",
-	"Padding":					  "Odsazování",
-	"Please click into some cell":                    "Prosím klikněte do některé buňky",
-	"Right":					  "Vpravo",
-	"Row Properties":                                 "Vlastnosti řádku",
-	"Rules will appear between all rows and columns": "Čáry mezi všemi řádky i sloupci",
-	"Rules will appear between columns only":	  "Čáry pouze mezi sloupci",
-	"Rules will appear between rows only":		  "Čáry pouze mezi řádky",
-	"Rules":					  "Čáry",
-	"Spacing and padding":                            "Mezery a odsazování",
-	"Spacing":					  "Mezery",
-	"Summary":					  "Shrnutí",
-	"TO-cell-delete":				  "Smazat buňku",
-	"TO-cell-insert-after":				  "Vložit buňku za",
-	"TO-cell-insert-before":			  "Vložit buňku před",
-	"TO-cell-merge":				  "Spojit buňky",
-	"TO-cell-prop":					  "Vlastnosti buňky",
-	"TO-cell-split":				  "Rozdělit buňku",
-	"TO-col-delete":				  "Smazat sloupec",
-	"TO-col-insert-after":				  "Vložit sloupec za",
-	"TO-col-insert-before":				  "Vložit sloupec před",
-	"TO-col-split":					  "Rozdělit sloupec",
-	"TO-row-delete":				  "Smazat řádek",
-	"TO-row-insert-above":				  "Smazat řádek nad",
-	"TO-row-insert-under":				  "Smazat řádek pod",
-	"TO-row-prop":					  "Vlastnosti řádku",
-	"TO-row-split":					  "Rozdělit řádek",
-	"TO-table-prop":				  "Vlastnosti tabulky",
-	"Table Properties":				  "Vlastnosti tabulky",
-	"Text align":                                     "Zarovnání textu",
-	"The bottom side only":				  "Pouze spodní strana",
-	"The left-hand side only":			  "Pouze levá strana",
-	"The right and left sides only":		  "Pouze levá a pravá strana",
-	"The right-hand side only":			  "Pouze pravá strana",
-	"The top and bottom sides only":		  "Pouze horní a dolní strana",
-	"The top side only":				  "Pouze horní strana",
-	"Top":                                            "Nahoru",	
-	"Unset color":                                    "Zrušit barvu",
-	"Vertical align":                                 "Svislé zarovnání",
-	"Width":					  "Šířka",
-	"not-del-last-cell":				  "HTMLArea zbaběle odmítá smazat poslední buňku v řádku.",
-	"not-del-last-col":				  "HTMLArea zbaběle odmítá smazat poslední sloupec v tabulce.",
-	"not-del-last-row":				  "HTMLArea zbaběle odmítá smazat poslední řádek v tabulce.",
-	"percent":					  "procent",
-	"pixels":					  "pixelů"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/da.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/da.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/da.js	(nonexistent)
@@ -1,90 +0,0 @@
-﻿// I18N constants
-
-// LANG: "da", ENCODING: UTF-8 | ISO-8859-1
-// Author: Steen Sønderup, <steen@soenderup.com>
-
-// 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.)
-
-TableOperations.I18N = {
-	"Align":											"Placer",
-	"All four sides":									"Alle fire sider",
-	"Background":										"Baggrund",
-	"Baseline":											"Bundlinie",
-	"Border":											"Kant",
-	"Borders":											"Kanter",
-	"Bottom":											"Bund",
-	"CSS Style":										"Stil [CSS]",
-	"Caption":											"Titel",
-	"Cell Properties":									"Celle egenskaber",
-	"Center":											"Centrer",
-	"Char":												"Plads",
-	"Collapsed borders":								"Sammensmelt rammer",
-	"Color":											"Farve",
-	"Description":										"Beskrivelse",
-	"FG Color":											"Font farve",
-	"Float":											"Justering",
-	"Frames":											"Udvendig",
-	"Height":											"Højde",
-	"How many columns would you like to merge?":		"Hvor mange kollonner vil du samle?",
-	"How many rows would you like to merge?":			"Hvor mange rækker vil du samle?",
-	"Image URL":										"Billede URL",
-	"Justify":											"Lige margener",
-	"Layout":											"Opsætning",
-	"Left":												"Venstre",
-	"Margin":											"Margen",
-	"Middle":											"Centrer",
-	"No rules":											"Ingen rammer",
-	"No sides":											"Ingen sider",
-	"None":												"Ingen",
-	"Padding":											"Margen",
-	"Please click into some cell":						"Klik på en celle",
-	"Right":											"Højre",
-	"Row Properties":									"Række egenskaber",
-	"Rules will appear between all rows and columns":	"Rammer mellem rækker og kolonner",
-	"Rules will appear between columns only":			"Kun rammer mellem kolonner",
-	"Rules will appear between rows only":				"Kun rammer mellem rækker",
-	"Rules":											"Invendig",
-	"Spacing and padding":								"Afstand og margen",
-	"Spacing":											"Afstand",
-	"Summary":											"Beskrivelse",
-	"TO-cell-delete":									"Slet celle",
-	"TO-cell-insert-after":								"Indsæt celle efter",
-	"TO-cell-insert-before":							"Indsæt celle før",
-	"TO-cell-merge":									"Sammensæt celler",
-	"TO-cell-prop":										"Celle egenskaber",
-	"TO-cell-split":									"Opdel celle",
-	"TO-col-delete":									"Slet kollonne",
-	"TO-col-insert-after":								"Indsæt kolonne efter",
-	"TO-col-insert-before":								"Indsæt kolonne før",
-	"TO-col-split":										"Opdel kolonne",
-	"TO-row-delete":									"Slet række",
-	"TO-row-insert-above":								"Indsæt række før",
-	"TO-row-insert-under":								"Indsæt række efter",
-	"TO-row-prop":										"Række egenskaber",
-	"TO-row-split":										"Opdel række",
-	"TO-table-prop":									"Tabel egenskaber",
-	"Table Properties":									"Tabel egenskaber",
-	"Text align":										"Tekst",
-	"The bottom side only":								"Kun i bunden",
-	"The left-hand side only":							"Kun i højre side",
-	"The right and left sides only":					"Kun i siderne",
-	"The right-hand side only":							"Kun i venstre side",
-	"The top and bottom sides only":					"Kun i top og bund",
-	"The top side only":								"Kun i toppen",
-	"Top":												"Top",	
-	"Unset color":										"Farve ikke valgt",
-	"Vertical align":									"Vertikal placering",
-	"Width":											"Bredde",
-	"not-del-last-cell":								"Du kan ikke slette den sidste celle i en række.",
-	"not-del-last-col":									"Du kan ikke slette den sidste kolonne i en tabel.",
-	"not-del-last-row":									"Du kan ikke slette den sidste række i en tabel.",
-	"percent":											"procent",
-	"pixels":											"pixel"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/de.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/de.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/de.js	(nonexistent)
@@ -1,81 +0,0 @@
-// I18N constants
-
-// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
-// Author: broxx, <broxx@broxx.com>
-
-TableOperations.I18N = {
-	"Align":					  "Ausrichten",
-	"All four sides":				  "Alle 4 Seiten",
-	"Background":					  "Hintergrund",
-	"Baseline":                                       "Basislinie",
-	"Border":					  "Rand",
-	"Borders":					  "Raender",
-	"Bottom":                                         "Unten",
-	"CSS Style":					  "Style [CSS]",
-	"Caption":					  "Ueberschrift",
-	"Cell Properties":                                "Zellen",
-	"Center":					  "Zentrieren",
-	"Char":                                           "Zeichen",
-	"Collapsed borders":                              "Collapsed borders",
-	"Color":					  "Farbe",
-	"Description":					  "Beschreibung",
-	"FG Color":					  "FG Farbe",
-	"Float":                                          "Ausrichtung",
-	"Frames":					  "Rahmen",
-	"Height":                                         "Hoehe",
-	"How many columns would you like to merge?":      "Wieviele Spalten willst du verbinden?",
-	"How many rows would you like to merge?":         "Wieviele Zeilen willst du verbinden?",
-	"Image URL":					  "Bild URL",
-	"Justify":                                        "Justieren",
-	"Layout":					  "Layout",
-	"Left":						  "Links",
-	"Margin":                                         "Rand",
-	"Middle":                                         "Mitte",
-	"No rules":					  "Keine Balken",
-	"No sides":					  "Keine Seiten",
-	"None":                                           "Keine",
-	"Padding":					  "Auffuellung",
-	"Please click into some cell":                    "Waehle eine Zelle",
-	"Right":					  "Rechts",
-	"Row Properties":                                 "Reihen",
-	"Rules will appear between all rows and columns": "Balken zwischen Reihen und Spalten",
-	"Rules will appear between columns only":	  "Balken zwischen Spalten",
-	"Rules will appear between rows only":		  "Balken zwischen Reihen",
-	"Rules":					  "Balken",
-	"Spacing and padding":                            "Abstaende",
-	"Spacing":					  "Abstand",
-	"Summary":					  "Zusammenfassung",
-	"TO-cell-delete":				  "Zelle loeschen",
-	"TO-cell-insert-after":				  "Zelle einfuegen nach",
-	"TO-cell-insert-before":			  "Zelle einfuegen bevor",
-	"TO-cell-merge":				  "Zellen zusammenfuegen",
-	"TO-cell-prop":					  "Zelleinstellungen",
-	"TO-cell-split":				  "Zellen aufteilen",
-	"TO-col-delete":				  "Spalte loeschen",
-	"TO-col-insert-after":				  "Spalte einfuegen nach",
-	"TO-col-insert-before":				  "Spalte einfuegen bevor",
-	"TO-col-split":					  "Spalte aufteilen",
-	"TO-row-delete":				  "Reihe loeschen",
-	"TO-row-insert-above":				  "Reihe einfuegen vor",
-	"TO-row-insert-under":				  "Reihe einfuegen nach",
-	"TO-row-prop":					  "Reiheneinstellungen",
-	"TO-row-split":					  "Reihen aufteilen",
-	"TO-table-prop":				  "Tabelle",
-	"Table Properties":				  "Tabelle",
-	"Text align":                                     "Ausrichtung",
-	"The bottom side only":				  "Nur untere Seite",
-	"The left-hand side only":			  "Nur linke Seite",
-	"The right and left sides only":		  "Nur linke und rechte Seite",
-	"The right-hand side only":			  "Nur rechte Seite",
-	"The top and bottom sides only":		  "Nur obere und untere Seite",
-	"The top side only":				  "Nur obere Seite",
-	"Top":                                            "Oben",	
-	"Unset color":                                    "Farbe",
-	"Vertical align":                                 "Ausrichtung",
-	"Width":					  "Breite",
-	"not-del-last-cell":				  "Letzte Zelle in dieser Reihe!",
-	"not-del-last-col":				  "Letzte Spalte in dieser Tabelle!",
-	"not-del-last-row":				  "Letzte Reihe in dieser Tabelle",
-	"percent":					  "%",
-	"pixels":					  "pixels"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/el.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/el.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/el.js	(nonexistent)
@@ -1,81 +0,0 @@
-// I18N constants
-
-// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
-// Author: Dimitris Glezos, dimitris@glezos.com
-
-TableOperations.I18N = {
-	"Align":					  "Στοίχηση",
-	"All four sides":				  "Και οι 4 πλευρές",
-	"Background":					  "Φόντο",
-	"Baseline":                                       "Baseline",
-	"Border":					  "Περίγραμμα",
-	"Borders":					  "Περιγράμματα",
-	"Bottom":                                         "Κάτω μέρος",
-	"CSS Style":					  "Στυλ [CSS]",
-	"Caption":					  "Λεζάντα",
-	"Cell Properties":                                "Ιδιότητες Κελιού",
-	"Center":					  "Κέντρο",
-	"Char":                                           "Χαρακτήρας",
-	"Collapsed borders":                              "Συμπτυγμένα περιγράμματα",
-	"Color":					  "Χρώμα",
-	"Description":					  "Περιγραφή",
-	"FG Color":					  "Χρώμα αντικειμένων",
-	"Float":                                          "Float",
-	"Frames":					  "Frames",
-	"Height":                                         "Ύψος",
-	"How many columns would you like to merge?":      "Πόσες στήλες θέλετε να ενώσετε;",
-	"How many rows would you like to merge?":         "Πόσες γραμμές θέλετε να ενώσετε;",
-	"Image URL":					  "URL εικόνας",
-	"Justify":                                        "Πλήρης στοίχηση",
-	"Layout":					  "Διάταξη",
-	"Left":						  "Αριστερά",
-	"Margin":                                         "Περιθώριο",
-	"Middle":                                         "Κέντρο",
-	"No rules":					  "Χωρίς Γραμμές",
-	"No sides":					  "No sides",
-	"None":                                           "Τίποτα",
-	"Padding":					  "Εσοχή",
-	"Please click into some cell":                    "Κάντε κλικ μέσα σε κάποιο κελί",
-	"Right":					  "Δεξιά",
-	"Row Properties":                                 "Ιδιότητες Γραμμής",
-	"Rules will appear between all rows and columns": "Γραμμές θα εμφανίζονται μεταξύ όλων των γραμμών και στηλών",
-	"Rules will appear between columns only":	  "Γραμμές θα εμφανίζονται μόνο μεταξύ στηλών",
-	"Rules will appear between rows only":		  "Γραμμές θα εμφανίζονται μόνο μεταξύ γραμμών",
-	"Rules":					  "Γραμμές",
-	"Spacing and padding":                            "Αποστάσεις και εσοχές",
-	"Spacing":					  "Αποστάσεις",
-	"Summary":					  "Σύνοψη",
-	"TO-cell-delete":				  "Διαγραφή κελιού",
-	"TO-cell-insert-after":				  "Εισαγωγή κελιού μετά",
-	"TO-cell-insert-before":			  "Εισαγωγή κελιού πριν",
-	"TO-cell-merge":				  "Συγχώνευση κελιών",
-	"TO-cell-prop":					  "Ιδιότητες κελιού",
-	"TO-cell-split":				  "Διαίρεση κελιού",
-	"TO-col-delete":				  "Διαγραφή στήλης",
-	"TO-col-insert-after":				  "Εισαγωγή στήλης μετά",
-	"TO-col-insert-before":				  "Εισαγωγή στήλης πριν",
-	"TO-col-split":					  "Διαίρεση στήλης",
-	"TO-row-delete":				  "Διαγραφή γραμμής",
-	"TO-row-insert-above":				  "Εισαγωγή γραμμής μετά",
-	"TO-row-insert-under":				  "Εισαγωγή γραμμής πριν",
-	"TO-row-prop":					  "Ιδιότητες γραμμής",
-	"TO-row-split":					  "Διαίρεση γραμμής",
-	"TO-table-prop":				  "Ιδιότητες πίνακα",
-	"Table Properties":				  "Ιδιότητες πίνακα",
-	"Text align":                                     "Στοίχηση κειμένου",
-	"The bottom side only":				  "Η κάτω πλευρά μόνο",
-	"The left-hand side only":			  "Η αριστερή πλευρά μόνο",
-	"The right and left sides only":		  "Οι δεξιές και αριστερές πλευρές μόνο",
-	"The right-hand side only":			  "Η δεξιά πλευρά μόνο",
-	"The top and bottom sides only":		  "Οι πάνω και κάτω πλευρές μόνο",
-	"The top side only":				  "Η πάνω πλευρά μόνο",
-	"Top":                                            "Πάνω",	
-	"Unset color":                                    "Αναίρεση χρώματος",
-	"Vertical align":                                 "Κατακόρυφη στοίχηση",
-	"Width":					  "Πλάτος",
-	"not-del-last-cell":				  "Δεν μπορεί να διαγραφεί το τελευταίο κελί σε μια γραμμή.",
-	"not-del-last-col":				  "Δεν μπορεί να διαγραφεί η τελευταία στήλη σε ένα πίνακα.",
-	"not-del-last-row":				  "Δεν μπορεί να διαγραφεί η τελευταία γραμμή σε ένα πίνακα.",
-	"percent":					  "τοις εκατόν",
-	"pixels":					  "pixels"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/en.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/en.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/lang/en.js	(nonexistent)
@@ -1,90 +0,0 @@
-// I18N constants
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-TableOperations.I18N = {
-	"Align":					  "Align",
-	"All four sides":				  "All four sides",
-	"Background":					  "Background",
-	"Baseline":                                       "Baseline",
-	"Border":					  "Border",
-	"Borders":					  "Borders",
-	"Bottom":                                         "Bottom",
-	"CSS Style":					  "Style [CSS]",
-	"Caption":					  "Caption",
-	"Cell Properties":                                "Cell Properties",
-	"Center":					  "Center",
-	"Char":                                           "Char",
-	"Collapsed borders":                              "Collapsed borders",
-	"Color":					  "Color",
-	"Description":					  "Description",
-	"FG Color":					  "FG Color",
-	"Float":                                          "Float",
-	"Frames":					  "Frames",
-	"Height":                                         "Height",
-	"How many columns would you like to merge?":      "How many columns would you like to merge?",
-	"How many rows would you like to merge?":         "How many rows would you like to merge?",
-	"Image URL":					  "Image URL",
-	"Justify":                                        "Justify",
-	"Layout":					  "Layout",
-	"Left":						  "Left",
-	"Margin":                                         "Margin",
-	"Middle":                                         "Middle",
-	"No rules":					  "No rules",
-	"No sides":					  "No sides",
-	"None":                                           "None",
-	"Padding":					  "Padding",
-	"Please click into some cell":                    "Please click into some cell",
-	"Right":					  "Right",
-	"Row Properties":                                 "Row Properties",
-	"Rules will appear between all rows and columns": "Rules will appear between all rows and columns",
-	"Rules will appear between columns only":	  "Rules will appear between columns only",
-	"Rules will appear between rows only":		  "Rules will appear between rows only",
-	"Rules":					  "Rules",
-	"Spacing and padding":                            "Spacing and padding",
-	"Spacing":					  "Spacing",
-	"Summary":					  "Summary",
-	"TO-cell-delete":				  "Delete cell",
-	"TO-cell-insert-after":				  "Insert cell after",
-	"TO-cell-insert-before":			  "Insert cell before",
-	"TO-cell-merge":				  "Merge cells",
-	"TO-cell-prop":					  "Cell properties",
-	"TO-cell-split":				  "Split cell",
-	"TO-col-delete":				  "Delete column",
-	"TO-col-insert-after":				  "Insert column after",
-	"TO-col-insert-before":				  "Insert column before",
-	"TO-col-split":					  "Split column",
-	"TO-row-delete":				  "Delete row",
-	"TO-row-insert-above":				  "Insert row before",
-	"TO-row-insert-under":				  "Insert row after",
-	"TO-row-prop":					  "Row properties",
-	"TO-row-split":					  "Split row",
-	"TO-table-prop":				  "Table properties",
-	"Table Properties":				  "Table Properties",
-	"Text align":                                     "Text align",
-	"The bottom side only":				  "The bottom side only",
-	"The left-hand side only":			  "The left-hand side only",
-	"The right and left sides only":		  "The right and left sides only",
-	"The right-hand side only":			  "The right-hand side only",
-	"The top and bottom sides only":		  "The top and bottom sides only",
-	"The top side only":				  "The top side only",
-	"Top":                                            "Top",	
-	"Unset color":                                    "Unset color",
-	"Vertical align":                                 "Vertical align",
-	"Width":					  "Width",
-	"not-del-last-cell":				  "HTMLArea cowardly refuses to delete the last cell in row.",
-	"not-del-last-col":				  "HTMLArea cowardly refuses to delete the last column in table.",
-	"not-del-last-row":				  "HTMLArea cowardly refuses to delete the last row in table.",
-	"percent":					  "percent",
-	"pixels":					  "pixels"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-delete.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-after.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-after.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-split.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-split.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-delete.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-merge.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-merge.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-prop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-prop.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-before.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-before.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-split.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-split.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-delete.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-split.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-split.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-above.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-above.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-prop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-prop.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/table-prop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/table-prop.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-under.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-under.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-after.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-after.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-before.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-before.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/test.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/test.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/test.html	(nonexistent)
@@ -1,89 +0,0 @@
-<html>
-  <head>
-    <title>Test of FullPage plugin</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <script type="text/javascript">
-      _editor_url = "../../";
-    </script>
-
-    <!-- load the main HTMLArea files -->
-    <script type="text/javascript" src="../../htmlarea.js"></script>
-    <script type="text/javascript" src="../../lang/en.js"></script>
-    <script type="text/javascript" src="../../dialog.js"></script>
-
-    <!-- <script type="text/javascript" src="popupdiv.js"></script> -->
-    <script type="text/javascript" src="../../popupwin.js"></script>
-
-    <script type="text/javascript">
-      HTMLArea.loadPlugin("TableOperations");
-      HTMLArea.loadPlugin("SpellChecker");
-      HTMLArea.loadPlugin("FullPage");
-
-      function initDocument() {
-        var editor = new HTMLArea("editor");
-        editor.registerPlugin(TableOperations);
-        editor.registerPlugin(SpellChecker);
-        editor.registerPlugin(FullPage);
-        editor.generate();
-      }
-    </script>
-
-    <style type="text/css">
-      @import url(../../htmlarea.css);
-    </style>
-
-  </head>
-
-  <body onload="initDocument()">
-    <h1>Test of FullPage plugin</h1>
-
-    <textarea id="editor" style="height: 30em; width: 100%;">
-      &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;
-      &lt;html&gt;
-        &lt;head&gt;
-          &lt;title&gt;FullPage plugin for HTMLArea&lt;/title&gt;
-          &lt;link rel="alternate stylesheet" href="http://dynarch.com/mishoo/css/dark.css" /&gt;
-          &lt;link rel="stylesheet" href="http://dynarch.com/mishoo/css/cool-light.css" /&gt;
-        &lt;/head&gt;
-        &lt;body style="background-color: #ddddee; color: #000077;"&gt;
-          &lt;table style="width:60%; height: 90%; margin: 2% auto 1% auto;" align="center" border="0" cellpadding="0" cellspacing="0"&gt;
-            &lt;tr&gt;
-              &lt;td style="background-color: #ddeedd; border: 2px solid #002; height: 1.5em; padding: 2px; font: bold 24px Verdana;"&gt;
-                FullPage plugin
-              &lt;/td&gt;
-            &lt;/tr&gt;
-            &lt;tr&gt;
-              &lt;td style="background-color: #fff; border: 1px solid #aab; padding: 1em 3em; font: 12px Verdana;"&gt;
-                &lt;p&gt;
-                  This plugin enables one to edit a full HTML file in &lt;a
-                    href="http://dynarch.com/htmlarea/"&gt;HTMLArea&lt;/a&gt;.  This is not
-                  normally possible with just the core editor since it only
-                  retrieves the HTML inside the &lt;code&gt;body&lt;/code&gt; tag.
-                &lt;/p&gt;
-                &lt;p&gt;
-                  It provides the ability to change the &lt;code&gt;DOCTYPE&lt;/code&gt; of
-                  the document, &lt;code&gt;body&lt;/code&gt; &lt;code&gt;bgcolor&lt;/code&gt; and
-                  &lt;code&gt;fgcolor&lt;/code&gt; attributes as well as to add additional
-                  &lt;code&gt;link&lt;/code&gt;-ed stylesheets.  Cool, eh?
-                &lt;/p&gt;
-                &lt;p&gt;
-                  The development of this plugin was initiated and sponsored by
-                  &lt;a href="http://thycotic.com"&gt;Thycotic Software Ltd.&lt;/a&gt;.
-                  That's also cool, isn't it? ;-)
-                &lt;/p&gt;
-              &lt;/td&gt;
-            &lt;/tr&gt;
-          &lt;/table&gt;
-        &lt;/body&gt;
-      &lt;/html&gt;
-    </textarea>
-
-    <hr />
-    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
-<!-- Created: Wed Oct  1 19:55:37 EEST 2003 -->
-<!-- hhmts start -->
-Last modified on Sat Oct 25 01:06:59 2003
-<!-- hhmts end -->
-<!-- doc-lang: English -->
-  </body>
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/full-page.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/full-page.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/full-page.js	(nonexistent)
@@ -1,143 +0,0 @@
-// FullPage Plugin for HTMLArea-3.0
-// Implementation by Mihai Bazon.  Sponsored by http://thycotic.com
-//
-// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
-// This notice MUST stay intact for use (see license.txt).
-//
-// 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 for InteractiveTools.
-//   http://dynarch.com/mishoo
-//
-// $Id: full-page.js,v 1.1.1.1 2005/01/30 10:31:38 rdjurovich Exp $
-
-function FullPage(editor) {
-	this.editor = editor;
-
-	var cfg = editor.config;
-	cfg.fullPage = true;
-	var tt = FullPage.I18N;
-	var self = this;
-
-	cfg.registerButton("FP-docprop", tt["Document properties"], editor.imgURL("docprop.gif", "FullPage"), false,
-			   function(editor, id) {
-				   self.buttonPress(editor, id);
-			   });
-
-	// add a new line in the toolbar
-	cfg.toolbar[0].splice(0, 0, "separator");
-	cfg.toolbar[0].splice(0, 0, "FP-docprop");
-};
-
-FullPage._pluginInfo = {
-	name          : "FullPage",
-	version       : "1.0",
-	developer     : "Mihai Bazon",
-	developer_url : "http://dynarch.com/mishoo/",
-	c_owner       : "Mihai Bazon",
-	sponsor       : "Thycotic Software Ltd.",
-	sponsor_url   : "http://thycotic.com",
-	license       : "htmlArea"
-};
-
-FullPage.prototype.buttonPress = function(editor, id) {
-	var self = this;
-	switch (id) {
-	    case "FP-docprop":
-		var doc = editor._doc;
-		var links = doc.getElementsByTagName("link");
-		var style1 = '';
-		var style2 = '';
-		for (var i = links.length; --i >= 0;) {
-			var link = links[i];
-			if (/stylesheet/i.test(link.rel)) {
-				if (/alternate/i.test(link.rel))
-					style2 = link.href;
-				else
-					style1 = link.href;
-			}
-		}
-		var title = doc.getElementsByTagName("title")[0];
-		title = title ? title.innerHTML : '';
-		var init = {
-			f_doctype      : editor.doctype,
-			f_title        : title,
-			f_body_bgcolor : HTMLArea._colorToRgb(doc.body.style.backgroundColor),
-			f_body_fgcolor : HTMLArea._colorToRgb(doc.body.style.color),
-			f_base_style   : style1,
-			f_alt_style    : style2,
-
-			editor         : editor
-		};
-		editor._popupDialog("plugin://FullPage/docprop", function(params) {
-			self.setDocProp(params);
-		}, init);
-		break;
-	}
-};
-
-FullPage.prototype.setDocProp = function(params) {
-	var txt = "";
-	var doc = this.editor._doc;
-	var head = doc.getElementsByTagName("head")[0];
-	var links = doc.getElementsByTagName("link");
-	var style1 = null;
-	var style2 = null;
-	for (var i = links.length; --i >= 0;) {
-		var link = links[i];
-		if (/stylesheet/i.test(link.rel)) {
-			if (/alternate/i.test(link.rel))
-				style2 = link;
-			else
-				style1 = link;
-		}
-	}
-	function createLink(alt) {
-		var link = doc.createElement("link");
-		link.rel = alt ? "alternate stylesheet" : "stylesheet";
-		head.appendChild(link);
-		return link;
-	};
-
-	if (!style1 && params.f_base_style)
-		style1 = createLink(false);
-	if (params.f_base_style)
-		style1.href = params.f_base_style;
-	else if (style1)
-		head.removeChild(style1);
-
-	if (!style2 && params.f_alt_style)
-		style2 = createLink(true);
-	if (params.f_alt_style)
-		style2.href = params.f_alt_style;
-	else if (style2)
-		head.removeChild(style2);
-
-	for (var i in params) {
-		var val = params[i];
-		switch (i) {
-		    case "f_title":
-			var title = doc.getElementsByTagName("title")[0];
-			if (!title) {
-				title = doc.createElement("title");
-				head.appendChild(title);
-			} else while (node = title.lastChild)
-				title.removeChild(node);
-			if (!HTMLArea.is_ie)
-				title.appendChild(doc.createTextNode(val));
-			else
-				doc.title = val;
-			break;
-		    case "f_doctype":
-			this.editor.setDoctype(val);
-			break;
-		    case "f_body_bgcolor":
-			doc.body.style.backgroundColor = val;
-			break;
-		    case "f_body_fgcolor":
-			doc.body.style.color = val;
-			break;
-		}
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/lang/ro.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/lang/ro.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/lang/ro.js	(nonexistent)
@@ -1,25 +0,0 @@
-// I18N for the FullPage plugin
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-FullPage.I18N = {
-	"Alternate style-sheet:":		"Template CSS alternativ:",
-	"Background color:":			"Culoare de fundal:",
-	"Cancel":				"Renunţă",
-	"DOCTYPE:":				"DOCTYPE:",
-	"Document properties":			"Proprietăţile documentului",
-	"Document title:":			"Titlul documentului:",
-	"OK":					"Acceptă",
-	"Primary style-sheet:":			"Template CSS principal:",
-	"Text color:":				"Culoare text:"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/lang/en.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/lang/en.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/lang/en.js	(nonexistent)
@@ -1,25 +0,0 @@
-// I18N for the FullPage plugin
-
-// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
-// Author: Mihai Bazon, http://dynarch.com/mishoo
-
-// 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.)
-
-FullPage.I18N = {
-	"Alternate style-sheet:":		"Alternate style-sheet:",
-	"Background color:":			"Background color:",
-	"Cancel":				"Cancel",
-	"DOCTYPE:":				"DOCTYPE:",
-	"Document properties":			"Document properties",
-	"Document title:":			"Document title:",
-	"OK":					"OK",
-	"Primary style-sheet:":			"Primary style-sheet:",
-	"Text color:":				"Text color:"
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/popups/docprop.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/popups/docprop.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/popups/docprop.html	(nonexistent)
@@ -1,131 +0,0 @@
-<html>
-
-<head>
-  <title>Document properties</title>
-
-<script type="text/javascript" src="../../../popups/popup.js"></script>
-
-<script type="text/javascript">
-
-FullPage = window.opener.FullPage; // load the FullPage plugin and lang file ;-)
-window.resizeTo(400, 100);
-
-  var accepted = {
-      f_doctype       : true,
-      f_title         : true,
-      f_body_bgcolor  : true,
-      f_body_fgcolor  : true,
-      f_base_style    : true,
-      f_alt_style     : true
-  };
-
-var editor = null;
-function Init() {
-  __dlg_translate(FullPage.I18N);
-  __dlg_init();
-  var params = window.dialogArguments;
-  for (var i in params) {
-      if (i in accepted) {
-        var el = document.getElementById(i);
-        el.value = params[i];
-      }
-  }
-  editor = params.editor;
-  document.getElementById("f_title").focus();
-  document.getElementById("f_title").select();
-};
-
-function onOK() {
-  var required = {
-  };
-  for (var i in required) {
-    var el = document.getElementById(i);
-    if (!el.value) {
-      alert(required[i]);
-      el.focus();
-      return false;
-    }
-  }
-
-  var param = {};
-  for (var i in accepted) {
-    var el = document.getElementById(i);
-    param[i] = el.value;
-  }
-  __dlg_close(param);
-  return false;
-};
-
-function onCancel() {
-  __dlg_close(null);
-  return false;
-};
-
-</script>
-
-<style type="text/css">
-html, body {
-  background: ButtonFace;
-  color: ButtonText;
-  font: 11px Tahoma,Verdana,sans-serif;
-  margin: 0px;
-  padding: 0px;
-}
-body { padding: 5px; }
-table {
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
-button { width: 70px; }
-table .label { text-align: right; width: 12em; }
-
-.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;
-}
-
-#buttons {
-      margin-top: 1em; border-top: 1px solid #999;
-      padding: 2px; text-align: right;
-}
-</style>
-
-  </head>
-
-  <body onload="Init()">
-
-    <div class="title"><span>Document properties</span></div>
-
-    <table style="width: 100%">
-      <tr>
-        <td class="label"><span>Document title:</span></td>
-        <td><input type="text" id="f_title" style="width: 100%" /></td>
-      </tr>
-      <tr>
-        <td class="label"><span>DOCTYPE:</span></td>
-        <td><input type="text" id="f_doctype" style="width: 100%" /></td>
-      </tr>
-      <tr>
-        <td class="label"><span>Primary style-sheet:</span></td>
-        <td><input type="text" id="f_base_style" style="width: 100%" /></td>
-      </tr>
-      <tr>
-        <td class="label"><span>Alternate style-sheet:</span></td>
-        <td><input type="text" id="f_alt_style" style="width: 100%" /></td>
-      </tr>
-      <tr>
-        <td class="label"><span>Background color:</span></td>
-        <td><input type="text" id="f_body_bgcolor" size="7" /></td>
-      </tr>
-      <tr>
-        <td class="label"><span>Text color:</span></td>
-        <td><input type="text" id="f_body_fgcolor" size="7" /></td>
-      </tr>
-    </table>
-
-    <div id="buttons">
-      <button type="button" name="ok" onclick="return onOK();"><span>OK</span></button>
-      <button type="button" name="cancel" onclick="return onCancel();"><span>Cancel</span></button>
-    </div>
-
-  </body>
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/img/docprop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/modules/htmlarea/htmlarea/plugins/FullPage/img/docprop.gif
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popupdiv.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popupdiv.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popupdiv.js	(nonexistent)
@@ -1,369 +0,0 @@
-/** This file is derived from PopupDiv, developed by Mihai Bazon for
- * SamWare.net.  Modifications were needed to make it usable in HTMLArea.
- * HTMLArea is a free WYSIWYG online HTML editor from InteractiveTools.com.
- *
- * This file does not function standalone.  It is dependent of global functions
- * defined in HTMLArea-3.0 (htmlarea.js).
- *
- * Please see file htmlarea.js for further details.
- **/
-
-var is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) &&
-	      (navigator.userAgent.toLowerCase().indexOf("opera") == -1) );
-var is_compat = (document.compatMode == "BackCompat");
-
-function PopupDiv(editor, titleText, handler, initFunction) {
-	var self = this;
-
-	this.editor = editor;
-	this.doc = editor._mdoc;
-	this.handler = handler;
-
-	var el = this.doc.createElement("div");
-	el.className = "content";
-
-	var popup = this.doc.createElement("div");
-	popup.className = "dialog popupdiv";
-	this.element = popup;
-	var s = popup.style;
-	s.position = "absolute";
-	s.left = "0px";
-	s.top = "0px";
-
-	var title = this.doc.createElement("div");
-	title.className = "title";
-	this.title = title;
-	popup.appendChild(title);
-
-	HTMLArea._addEvent(title, "mousedown", function(ev) {
-		self._dragStart(is_ie ? window.event : ev);
-	});
-
-	var button = this.doc.createElement("div");
-	button.className = "button";
-	title.appendChild(button);
-	button.innerHTML = "&#x00d7;";
-	title.appendChild(this.doc.createTextNode(titleText));
-	this.titleText = titleText;
-
-	button.onmouseover = function() {
-		this.className += " button-hilite";
-	};
-	button.onmouseout = function() {
-		this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
-	};
-	button.onclick = function() {
-		this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
-		self.close();
-	};
-
-	popup.appendChild(el);
-	this.content = el;
-
-	this.doc.body.appendChild(popup);
-
-	this.dragging = false;
-	this.onShow = null;
-	this.onClose = null;
-	this.modal = false;
-
-	initFunction(this);
-};
-
-PopupDiv.currentPopup = null;
-
-PopupDiv.prototype.showAtElement = function(el, mode) {
-	this.defaultSize();
-	var pos, ew, eh;
-	var popup = this.element;
-	popup.style.display = "block";
-	var w = popup.offsetWidth;
-	var h = popup.offsetHeight;
-	popup.style.display = "none";
-	if (el != window) {
-		pos = PopupDiv.getAbsolutePos(el);
-		ew = el.offsetWidth;
-		eh = el.offsetHeight;
-	} else {
-		pos = {x:0, y:0};
-		var size = PopupDiv.getWindowSize();
-		ew = size.x;
-		eh = size.y;
-	}
-	var FX = false, FY = false;
-	if (mode.indexOf("l") != -1) {
-		pos.x -= w;
-		FX = true;
-	}
-	if (mode.indexOf("r") != -1) {
-		pos.x += ew;
-		FX = true;
-	}
-	if (mode.indexOf("t") != -1) {
-		pos.y -= h;
-		FY = true;
-	}
-	if (mode.indexOf("b") != -1) {
-		pos.y += eh;
-		FY = true;
-	}
-	if (mode.indexOf("c") != -1) {
-		FX || (pos.x += Math.round((ew - w) / 2));
-		FY || (pos.y += Math.round((eh - h) / 2));
-	}
-	this.showAt(pos.x, pos.y);
-};
-
-PopupDiv.prototype.defaultSize = function() {
-	var s = this.element.style;
-	var cs = this.element.currentStyle;
-	var addX = (is_ie && is_compat) ? (parseInt(cs.borderLeftWidth) +
-					   parseInt(cs.borderRightWidth) +
-					   parseInt(cs.paddingLeft) +
-					   parseInt(cs.paddingRight)) : 0;
-	var addY = (is_ie && is_compat) ? (parseInt(cs.borderTopWidth) +
-					   parseInt(cs.borderBottomWidth) +
-					   parseInt(cs.paddingTop) +
-					   parseInt(cs.paddingBottom)) : 0;
-	s.display = "block";
-	s.width = (this.content.offsetWidth + addX) + "px";
-	s.height = (this.content.offsetHeight + this.title.offsetHeight) + "px";
-	s.display = "none";
-};
-
-PopupDiv.prototype.showAt = function(x, y) {
-	this.defaultSize();
-	var s = this.element.style;
-	s.display = "block";
-	s.left = x + "px";
-	s.top = y + "px";
-	this.hideShowCovered();
-
-	PopupDiv.currentPopup = this;
-	HTMLArea._addEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
-	HTMLArea._addEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
-	if (is_ie && this.modal) {
-		this.doc.body.setCapture(false);
-		this.doc.body.onlosecapture = function() {
-			(PopupDiv.currentPopup) && (this.doc.body.setCapture(false));
-		};
-	}
-	window.event && HTMLArea._stopEvent(window.event);
-
-	if (typeof this.onShow == "function") {
-		this.onShow();
-	} else if (typeof this.onShow == "string") {
-		eval(this.onShow);
-	}
-
-	var field = this.element.getElementsByTagName("input")[0];
-	if (!field) {
-		field = this.element.getElementsByTagName("select")[0];
-	}
-	if (!field) {
-		field = this.element.getElementsByTagName("textarea")[0];
-	}
-	if (field) {
-		field.focus();
-	}
-};
-
-PopupDiv.prototype.close = function() {
-	this.element.style.display = "none";
-	PopupDiv.currentPopup = null;
-	this.hideShowCovered();
-	HTMLArea._removeEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
-	HTMLArea._removeEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
-	is_ie && this.modal && this.doc.body.releaseCapture();
-	if (typeof this.onClose == "function") {
-		this.onClose();
-	} else if (typeof this.onClose == "string") {
-		eval(this.onClose);
-	}
-	this.element.parentNode.removeChild(this.element);
-};
-
-PopupDiv.prototype.getForm = function() {
-	var forms = this.content.getElementsByTagName("form");
-	return (forms.length > 0) ? forms[0] : null;
-};
-
-PopupDiv.prototype.callHandler = function() {
-	var tags = ["input", "textarea", "select"];
-	var params = new Object();
-	for (var ti in tags) {
-		var tag = tags[ti];
-		var els = this.content.getElementsByTagName(tag);
-		for (var j = 0; j < els.length; ++j) {
-			var el = els[j];
-			params[el.name] = el.value;
-		}
-	}
-	this.handler(this, params);
-	return false;
-};
-
-PopupDiv.getAbsolutePos = function(el) {
-	var r = { x: el.offsetLeft, y: el.offsetTop };
-	if (el.offsetParent) {
-		var tmp = PopupDiv.getAbsolutePos(el.offsetParent);
-		r.x += tmp.x;
-		r.y += tmp.y;
-	}
-	return r;
-};
-
-PopupDiv.getWindowSize = function() {
-	if (window.innerHeight) {
-		return { y: window.innerHeight, x: window.innerWidth };
-	}
-	if (this.doc.body.clientHeight) {
-		return { y: this.doc.body.clientHeight, x: this.doc.body.clientWidth };
-	}
-	return { y: this.doc.documentElement.clientHeight, x: this.doc.documentElement.clientWidth };
-};
-
-PopupDiv.prototype.hideShowCovered = function () {
-	var self = this;
-	function isContained(el) {
-		while (el) {
-			if (el == self.element) {
-				return true;
-			}
-			el = el.parentNode;
-		}
-		return false;
-	};
-	var tags = new Array("applet", "select");
-	var el = this.element;
-
-	var p = PopupDiv.getAbsolutePos(el);
-	var EX1 = p.x;
-	var EX2 = el.offsetWidth + EX1;
-	var EY1 = p.y;
-	var EY2 = el.offsetHeight + EY1;
-
-	if (el.style.display == "none") {
-		EX1 = EX2 = EY1 = EY2 = 0;
-	}
-
-	for (var k = tags.length; k > 0; ) {
-		var ar = this.doc.getElementsByTagName(tags[--k]);
-		var cc = null;
-
-		for (var i = ar.length; i > 0;) {
-			cc = ar[--i];
-			if (isContained(cc)) {
-				cc.style.visibility = "visible";
-				continue;
-			}
-
-			p = PopupDiv.getAbsolutePos(cc);
-			var CX1 = p.x;
-			var CX2 = cc.offsetWidth + CX1;
-			var CY1 = p.y;
-			var CY2 = cc.offsetHeight + CY1;
-
-			if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
-				cc.style.visibility = "visible";
-			} else {
-				cc.style.visibility = "hidden";
-			}
-		}
-	}
-};
-
-PopupDiv.prototype._dragStart = function (ev) {
-	if (this.dragging) {
-		return false;
-	}
-	this.dragging = true;
-	PopupDiv.currentPopup = this;
-	var posX = ev.clientX;
-	var posY = ev.clientY;
-	if (is_ie) {
-		posY += this.doc.body.scrollTop;
-		posX += this.doc.body.scrollLeft;
-	} else {
-		posY += window.scrollY;
-		posX += window.scrollX;
-	}
-	var st = this.element.style;
-	this.xOffs = posX - parseInt(st.left);
-	this.yOffs = posY - parseInt(st.top);
-	HTMLArea._addEvent(this.doc, "mousemove", PopupDiv.dragIt);
-	HTMLArea._addEvent(this.doc, "mouseover", HTMLArea._stopEvent);
-	HTMLArea._addEvent(this.doc, "mouseup", PopupDiv.dragEnd);
-	HTMLArea._stopEvent(ev);
-};
-
-PopupDiv.dragIt = function (ev) {
-	var popup = PopupDiv.currentPopup;
-	if (!(popup && popup.dragging)) {
-		return false;
-	}
-	is_ie && (ev = window.event);
-	var posX = ev.clientX;
-	var posY = ev.clientY;
-	if (is_ie) {
-		posY += this.doc.body.scrollTop;
-		posX += this.doc.body.scrollLeft;
-	} else {
-		posY += window.scrollY;
-		posX += window.scrollX;
-	}
-	popup.hideShowCovered();
-	var st = popup.element.style;
-	st.left = (posX - popup.xOffs) + "px";
-	st.top = (posY - popup.yOffs) + "px";
-	HTMLArea._stopEvent(ev);
-};
-
-PopupDiv.dragEnd = function () {
-	var popup = PopupDiv.currentPopup;
-	if (!popup) {
-		return false;
-	}
-	popup.dragging = false;
-	HTMLArea._removeEvent(popup.doc, "mouseup", PopupDiv.dragEnd);
-	HTMLArea._removeEvent(popup.doc, "mouseover", HTMLArea._stopEvent);
-	HTMLArea._removeEvent(popup.doc, "mousemove", PopupDiv.dragIt);
-	popup.hideShowCovered();
-};
-
-PopupDiv.checkPopup = function (ev) {
-	is_ie && (ev = window.event);
-	var el = is_ie ? ev.srcElement : ev.target;
-	var cp = PopupDiv.currentPopup;
-	for (; (el != null) && (el != cp.element); el = el.parentNode);
-	if (el == null) {
-		cp.modal || ev.type == "mouseover" || cp.close();
-		HTMLArea._stopEvent(ev);
-	}
-};
-
-PopupDiv.prototype.addButtons = function() {
-	var self = this;
-	var div = this.doc.createElement("div");
-	this.content.appendChild(div);
-	div.className = "buttons";
-	for (var i = 0; i < arguments.length; ++i) {
-		var btn = arguments[i];
-		var button = this.doc.createElement("button");
-		div.appendChild(button);
-		button.innerHTML = HTMLArea.I18N.buttons[btn];
-		switch (btn) {
-		    case "ok":
-			button.onclick = function() {
-				self.callHandler();
-				self.close();
-			};
-			break;
-		    case "cancel":
-			button.onclick = function() {
-				self.close();
-			};
-			break;
-		}
-	}
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popupwin.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popupwin.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popupwin.js	(nonexistent)
@@ -1,139 +0,0 @@
-// (c) dynarch.com 2003-2004
-// Distributed under the same terms as HTMLArea itself.
-
-function PopupWin(editor, title, handler, initFunction) {
-	this.editor = editor;
-	this.handler = handler;
-	var dlg = window.open("", "__ha_dialog",
-			      "toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
-			      "scrollbars=no,resizable=no");
-	this.window = dlg;
-	var doc = dlg.document;
-	this.doc = doc;
-	var self = this;
-
-	var base = document.baseURI || document.URL;
-	if (base && base.match(/(.*)\/([^\/]+)/)) {
-		base = RegExp.$1 + "/";
-	}
-	if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
-		// _editor_url doesn't start with '/' which means it's relative
-		// FIXME: there's a problem here, it could be http:// which
-		// doesn't start with slash but it's not relative either.
-		base += _editor_url;
-	} else
-		base = _editor_url;
-	if (!/\/$/.test(base)) {
-		// base does not end in slash, add it now
-		base += '/';
-	}
-	this.baseURL = base;
-
-	doc.open();
-	var html = "<html><head><title>" + title + "</title>\n";
-	// html += "<base href='" + base + "htmlarea.js' />\n";
-	html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
-	html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
-	doc.write(html);
-	doc.close();
-
-	// sometimes I Hate Mozilla... ;-(
-	function init2() {
-		var body = doc.body;
-		if (!body) {
-			setTimeout(init2, 25);
-			return false;
-		}
-		dlg.title = title;
-		doc.documentElement.style.padding = "0px";
-		doc.documentElement.style.margin = "0px";
-		var content = doc.createElement("div");
-		content.className = "content";
-		self.content = content;
-		body.appendChild(content);
-		self.element = body;
-		initFunction(self);
-		dlg.focus();
-	};
-	init2();
-};
-
-PopupWin.prototype.callHandler = function() {
-	var tags = ["input", "textarea", "select"];
-	var params = new Object();
-	for (var ti in tags) {
-		var tag = tags[ti];
-		var els = this.content.getElementsByTagName(tag);
-		for (var j = 0; j < els.length; ++j) {
-			var el = els[j];
-			var val = el.value;
-			if (el.tagName.toLowerCase() == "input") {
-				if (el.type == "checkbox") {
-					val = el.checked;
-				}
-			}
-			params[el.name] = val;
-		}
-	}
-	this.handler(this, params);
-	return false;
-};
-
-PopupWin.prototype.close = function() {
-	this.window.close();
-};
-
-PopupWin.prototype.addButtons = function() {
-	var self = this;
-	var div = this.doc.createElement("div");
-	this.content.appendChild(div);
-	div.className = "buttons";
-	for (var i = 0; i < arguments.length; ++i) {
-		var btn = arguments[i];
-		var button = this.doc.createElement("button");
-		div.appendChild(button);
-		button.innerHTML = HTMLArea.I18N.buttons[btn];
-		switch (btn) {
-		    case "ok":
-			button.onclick = function() {
-				self.callHandler();
-				self.close();
-				return false;
-			};
-			break;
-		    case "cancel":
-			button.onclick = function() {
-				self.close();
-				return false;
-			};
-			break;
-		}
-	}
-};
-
-PopupWin.prototype.showAtElement = function() {
-	var self = this;
-	// Mozilla needs some time to realize what's goin' on..
-	setTimeout(function() {
-		var w = self.content.offsetWidth + 4;
-		var h = self.content.offsetHeight + 4;
-		// size to content -- that's fuckin' buggy in all fuckin' browsers!!!
-		// so that we set a larger size for the dialog window and then center
-		// the element inside... phuck!
-
-		// center...
-		var el = self.content;
-		var s = el.style;
-		// s.width = el.offsetWidth + "px";
-		// s.height = el.offsetHeight + "px";
-		s.position = "absolute";
-		s.left = (w - el.offsetWidth) / 2 + "px";
-		s.top = (h - el.offsetHeight) / 2 + "px";
-		if (HTMLArea.is_gecko) {
-			self.window.innerWidth = w;
-			self.window.innerHeight = h;
-		} else {
-			self.window.resizeTo(w + 8, h + 35);
-		}
-	}, 25);
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/htmlarea.css
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/htmlarea.css	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/htmlarea.css	(nonexistent)
@@ -1,180 +0,0 @@
-.htmlarea { background: #fff; }
-
-.htmlarea .toolbar {
-  cursor: default;
-  background: ButtonFace;
-  padding: 1px 1px 2px 1px;
-  border: 1px solid;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-}
-.htmlarea .toolbar table { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
-.htmlarea .toolbar img { border: none; }
-.htmlarea .toolbar .label { padding: 0px 3px; }
-
-.htmlarea .toolbar .button {
-  background: ButtonFace;
-  color: ButtonText;
-  border: 1px solid ButtonFace;
-  padding: 1px;
-  margin: 0px;
-  width: 18px;
-  height: 18px;
-}
-.htmlarea .toolbar .buttonHover {
-  border: 1px solid;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-}
-.htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed {
-  padding: 2px 0px 0px 2px;
-  border: 1px solid;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-}
-.htmlarea .toolbar .buttonPressed {
-  background: ButtonHighlight;
-}
-.htmlarea .toolbar .indicator {
-  padding: 0px 3px;
-  overflow: hidden;
-  width: 20px;
-  text-align: center;
-  cursor: default;
-  border: 1px solid ButtonShadow;
-}
-
-.htmlarea .toolbar .buttonDisabled img {
-  filter: alpha(opacity = 25);
-  -moz-opacity: 0.25;
-}
-
-.htmlarea .toolbar .separator {
-  position: relative;
-  margin: 3px;
-  border-left: 1px solid ButtonShadow;
-  border-right: 1px solid ButtonHighlight;
-  width: 0px;
-  height: 16px;
-  padding: 0px;
-}
-
-.htmlarea .toolbar .space { width: 5px; }
-
-.htmlarea .toolbar select { font: 11px Tahoma,Verdana,sans-serif; }
-
-.htmlarea .toolbar select,
-.htmlarea .toolbar select:hover,
-.htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; }
-
-.htmlarea .statusBar {
-  border: 1px solid;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-  padding: 2px 4px;
-  background-color: ButtonFace;
-  color: ButtonText;
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-
-.htmlarea .statusBar .statusBarTree a {
-  padding: 2px 5px;
-  color: #00f;
-}
-
-.htmlarea .statusBar .statusBarTree a:visited { color: #00f; }
-.htmlarea .statusBar .statusBarTree a:hover {
-  background-color: Highlight;
-  color: HighlightText;
-  padding: 1px 4px;
-  border: 1px solid HighlightText;
-}
-
-
-/* Hidden DIV popup dialogs (PopupDiv) */
-
-.dialog {
-  color: ButtonText;
-  background: ButtonFace;
-}
-
-.dialog .content { padding: 2px; }
-
-.dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table {
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-
-.dialog table { border-collapse: collapse; }
-
-.dialog .title {
-  background: #008;
-  color: #ff8;
-  border-bottom: 1px solid #000;
-  padding: 1px 0px 2px 5px;
-  font-size: 12px;
-  font-weight: bold;
-  cursor: default;
-}
-
-.dialog .title .button {
-  float: right;
-  border: 1px solid #66a;
-  padding: 0px 1px 0px 2px;
-  margin-right: 1px;
-  color: #fff;
-  text-align: center;
-}
-
-.dialog .title .button-hilite { border-color: #88f; background: #44c; }
-
-.dialog button {
-  width: 5em;
-  padding: 0px;
-}
-
-.dialog .buttonColor {
-  padding: 1px;
-  cursor: default;
-  border: 1px solid;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-}
-
-.dialog .buttonColor-hilite {
-  border-color: #000;
-}
-
-.dialog .buttonColor .chooser, .dialog .buttonColor .nocolor {
-  height: 0.6em;
-  border: 1px solid;
-  padding: 0px 1em;
-  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
-}
-
-.dialog .buttonColor .nocolor { padding: 0px; }
-.dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; }
-
-.dialog .label { text-align: right; width: 6em; }
-.dialog .value input { width: 100%; }
-.dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; }
-
-.dialog legend { font-weight: bold; }
-.dialog fieldset table { margin: 2px 0px; }
-
-.popupdiv {
-  border: 2px solid;
-  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
-}
-
-.popupwin {
-  padding: 0px;
-  margin: 0px;
-}
-
-.popupwin .title {
-  background: #fff;
-  color: #000;
-  font-weight: bold;
-  font-size: 120%;
-  padding: 3px 10px;
-  margin-bottom: 10px;
-  border-bottom: 1px solid black;
-  letter-spacing: 2px;
-}
-
-form { margin: 0px; border: none; }
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/custom2.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/custom2.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/custom2.html	(nonexistent)
@@ -1,35 +0,0 @@
-<html style="width:300px; Height: 60px;">
- <head>
-  <title>Select Phrase</title>
-<script language="javascript">
-
-var myTitle = window.dialogArguments;
-document.title = myTitle;
-
-
-function returnSelected() {
-  var idx  = document.all.textPulldown.selectedIndex;
-  var text = document.all.textPulldown[idx].text;
-
-  window.returnValue = text;          // set return value
-  window.close();                     // close dialog
-}
-
-</script>
-</head>
-<body bgcolor="#FFFFFF" topmargin=15 leftmargin=0>
-
-<form method=get onSubmit="Set(document.all.ColorHex.value); return false;">
-<div align=center>
-
-<select name="textPulldown">
-<option>The quick brown</option>
-<option>fox jumps over</option>
-<option>the lazy dog.</option>
-</select>
-
-<input type="button" value=" Go " onClick="returnSelected()">
-
-</div>
-</form>
-</body></html>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_image.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_image.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_image.php	(nonexistent)
@@ -1,77 +0,0 @@
-<?php
-
-// $Id: insert_image.php,v 1.3 2005/04/02 06:25:54 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Include the config file
-require('../../../../config.php');
-
-// Create new admin object
-require(WB_PATH.'/framework/class.admin.php');
-$admin = new admin('Pages', 'pages_modify', false);
-
-// Setup the template
-$template = new Template(WB_PATH.'/modules/htmlarea/htmlarea/popups');
-$template->set_file('page', 'insert_image.html');
-$template->set_block('page', 'main_block', 'main');
-
-// Get the directory to browse
-$directory = $admin->get_post('folder');
-if($directory == '') {
-	$directory = '/media';
-}
-// If the directory contains ../ then set it to /media
-if(strstr($directory, '../')) {
-	$directory = '/media';
-}
-
-// Include the WB functions file
-require_once(WB_PATH.'/framework/functions.php');
-
-// Insert values into template
-$template->set_var('WB_URL', WB_URL);
-$template->set_var('POPUP', 'image');
-$template->set_var('DIRECTORY', str_replace(WB_URL, '', $directory));
-
-// Get home folder not to show
-$home_folders = get_home_folders();
-
-// Insert dirs into the dir list
-$template->set_block('main_block', 'dir_list_block', 'dir_list');
-foreach(directory_list(WB_PATH.MEDIA_DIRECTORY) AS $name) {
-	$template->set_var('NAME', str_replace(WB_PATH, '', $name));
-	if(!isset($home_folders[str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name)])) {
-		if($directory == str_replace(WB_PATH, '', $name)) {
-			$template->set_var('SELECTED', ' selected');
-		} else {
-			$template->set_var('SELECTED', '');
-		}
-		$template->parse('dir_list', 'dir_list_block', true);
-	}
-}
-
-// Parse the template object
-$template->parse('main', 'main_block', false);
-$template->pparse('output', 'page');
-
-?>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/link.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/link.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/link.php	(nonexistent)
@@ -1,118 +0,0 @@
-<?php
-
-// $Id: link.php 66 2005-09-11 10:19:10Z stefan $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Include the config file
-require('../../../../config.php');
-
-// Create new admin object
-require(WB_PATH.'/framework/class.admin.php');
-$admin = new admin('Pages', 'pages_modify', false);
-
-// Setup the template
-$template = new Template(WB_PATH.'/modules/htmlarea/htmlarea/popups');
-$template->set_file('page', 'link.html');
-$template->set_block('page', 'main_block', 'main');
-
-// Get the directory to browse
-$directory = $admin->get_post('folder');
-if($directory == '') {
-	$directory = '/media';
-}
-// If the directory contains ../ then set it to /media
-if(strstr($directory, '../')) {
-	$directory = '/media';
-}
-
-// Include the WB functions file
-require_once(WB_PATH.'/framework/functions.php');
-
-// Insert values into template
-$template->set_var('WB_URL', WB_URL);
-$template->set_var('POPUP', 'link');
-$template->set_var('DIRECTORY', $directory);
-
-// Get home folder not to show
-$home_folders = get_home_folders();
-
-// Insert dirs into the dir list
-$template->set_block('main_block', 'dir_list_block', 'dir_list');
-foreach(directory_list(WB_PATH.MEDIA_DIRECTORY) AS $name) {
-	$template->set_var('NAME', str_replace(WB_PATH, '', $name));
-	if(!isset($home_folders[str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name)])) {
-		if($directory == str_replace(WB_PATH, '', $name)) {
-			$template->set_var('SELECTED', ' selected');
-		} else {
-			$template->set_var('SELECTED', '');
-		}
-		$template->parse('dir_list', 'dir_list_block', true);
-	}
-}
-
-// Function to generate page list
-function gen_page_list($parent) {
-	global $template, $database;
-	$get_pages = $database->query("SELECT page_id,menu_title,link,level FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' AND visibility!='deleted' ORDER BY position ASC");
-	while($page = $get_pages->fetchRow()) {
-		$title = $page['menu_title'];
-		// Add leading -'s so we can tell what level a page is at
-		$leading_dashes = '';
-		for($i = 0; $i < $page['level']; $i++) {
-			$leading_dashes .= '- ';
-		}
-		$template->set_var('TITLE', $leading_dashes.' '.$title);
-		$template->set_var('LINK', '[wblink'.$page['page_id'].']');
-		$template->parse('page_list', 'page_list_block', true);
-		gen_page_list($page['page_id']);
-	}
-}
-
-// Get pages and put them into the pages list
-$template->set_block('main_block', 'page_list_block', 'page_list');
-$database = new database();
-$get_pages = $database->query("SELECT page_id,menu_title,link FROM ".TABLE_PREFIX."pages WHERE parent = '0' AND visibility!='deleted' ORDER BY position ASC");
-if($get_pages > 0) {
-	// Add 'Please select...'
-	$template->set_var('TITLE', 'Please select...');
-	$template->set_var('LINK', '');
-	$template->parse('page_list', 'page_list_block', true);
-	// Loop through pages
-	while($page = $get_pages->fetchRow()) {
-		$title = $page['menu_title'];
-		$template->set_var('TITLE', $title);
-		$template->set_var('LINK', '[wblink'.$page['page_id'].']');
-		$template->parse('page_list', 'page_list_block', true);
-		gen_page_list($page['page_id']);
-	}
-} else {
-	$template->set_var('TITLE', 'None found');
-	$template->set_var('LINK', 'None found');
-	$template->parse('page_list', 'page_list_block', false);
-}
-
-// Parse the template object
-$template->parse('main', 'main_block', false);
-$template->pparse('output', 'page');
-
-?>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/blank.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/blank.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/blank.html	(nonexistent)
@@ -1,2 +0,0 @@
-<html>
-</html>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/popup.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/popup.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/popup.js	(nonexistent)
@@ -1,109 +0,0 @@
-// 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.1.1 2005/01/30 10:31:16 rdjurovich Exp $
-
-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() {
-	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;
-	}
-	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;
-		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"];
-	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;
-			}
-		}
-	}
-	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;
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_table.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_table.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_table.html	(nonexistent)
@@ -1,174 +0,0 @@
-<html>
-
-<head>
-  <title>Insert Table</title>
-
-<script type="text/javascript" src="popup.js"></script>
-
-<script type="text/javascript">
-
-window.resizeTo(400, 100);
-
-function Init() {
-  __dlg_init();
-  document.getElementById("f_rows").focus();
-};
-
-function onOK() {
-  var required = {
-    "f_rows": "You must enter a number of rows",
-    "f_cols": "You must enter a number of columns"
-  };
-  for (var i in required) {
-    var el = document.getElementById(i);
-    if (!el.value) {
-      alert(required[i]);
-      el.focus();
-      return false;
-    }
-  }
-  var fields = ["f_rows", "f_cols", "f_width", "f_unit",
-                "f_align", "f_border", "f_spacing", "f_padding"];
-  var param = new Object();
-  for (var i in fields) {
-    var id = fields[i];
-    var el = document.getElementById(id);
-    param[id] = el.value;
-  }
-  __dlg_close(param);
-  return false;
-};
-
-function onCancel() {
-  __dlg_close(null);
-  return false;
-};
-
-</script>
-
-<style type="text/css">
-html, body {
-  background: #EEEEEE;
-  color: #000000;
-  font: 11px Tahoma,Verdana,sans-serif;
-  margin: 0px;
-  padding: 0px;
-}
-body { padding: 0; }
-table {
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-form p {
-  margin-top: 5px;
-  margin-bottom: 5px;
-}
-.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
-.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
-fieldset { padding: 0px 10px 5px 5px; }
-select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
-button { width: 70px; }
-.space { padding: 2px; }
-
-.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
-letter-spacing: 2px;
-}
-form { padding: 0px; margin: 0px; }
-</style>
-
-</head>
-
-<body onload="Init()">
-
-<div class="title">Insert Table</div>
-
-<form action="" method="get">
-<table border="0" style="padding: 0px; margin: 0px">
-  <tbody>
-
-  <tr>
-    <td style="width: 4em; text-align: right">Rows:</td>
-    <td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
-    <td></td>
-    <td></td>
-    <td></td>
-  </tr>
-  <tr>
-    <td style="width: 4em; text-align: right">Cols:</td>
-    <td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
-    <td style="width: 4em; text-align: right">Width:</td>
-    <td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
-    <td><select size="1" name="unit" id="f_unit" title="Width unit">
-      <option value="%" selected="1">Percent</option>
-      <option value="px">Pixels</option>
-      <option value="em">Em</option>
-    </select></td>
-  </tr>
-
-  </tbody>
-</table>
-
-<p />
-
-<fieldset style="float: left; margin-left: 5px;">
-<legend>Layout</legend>
-
-<div class="space"></div>
-
-<div class="fl">Alignment:</div>
-<select size="1" name="align" id="f_align"
-  title="Positioning of this image">
-  <option value="" selected="1">Not set</option>
-  <option value="left">Left</option>
-  <option value="right">Right</option>
-  <option value="texttop">Texttop</option>
-  <option value="absmiddle">Absmiddle</option>
-  <option value="baseline">Baseline</option>
-  <option value="absbottom">Absbottom</option>
-  <option value="bottom">Bottom</option>
-  <option value="middle">Middle</option>
-  <option value="top">Top</option>
-</select>
-
-<p />
-
-<div class="fl">Border thickness:</div>
-<input type="text" name="border" id="f_border" size="5" value="1"
-title="Leave empty for no border" />
-<!--
-<p />
-
-<div class="fl">Collapse borders:</div>
-<input type="checkbox" name="collapse" id="f_collapse" />
--->
-<div class="space"></div>
-
-</fieldset>
-
-<fieldset style="float:right; margin-right: 5px;">
-<legend>Spacing</legend>
-
-<div class="space"></div>
-
-<div class="fr">Cell spacing:</div>
-<input type="text" name="spacing" id="f_spacing" size="5" value="1"
-title="Space between adjacent cells" />
-
-<p />
-
-<div class="fr">Cell padding:</div>
-<input type="text" name="padding" id="f_padding" size="5" value="1"
-title="Space between content and border in cell" />
-
-<div class="space"></div>
-
-</fieldset>
-
-<div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;">
-<button type="button" name="ok" onclick="return onOK();">OK</button>
-<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
-</div>
-
-</form>
-
-</body>
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/list_media.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/list_media.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/list_media.php	(nonexistent)
@@ -1,114 +0,0 @@
-<?php
-
-// $Id: list_media.php 10 2005-09-04 08:59:31Z ryan $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Include the config file
-require('../../../../config.php');
-
-// Create new admin object
-require(WB_PATH.'/framework/class.admin.php');
-$admin = new admin('Pages', 'pages_modify', false);
-
-// Include the WB functions file
-require_once(WB_PATH.'/framework/functions.php');
-
-// Get popup type
-$popup = $admin->get_get('popup');
-if($popup == 'image') {
-	$popup = 'insert_image';
-} elseif($popup != 'link') {
-	$popup = 'link';
-}
-
-// Get the directory to browse
-$directory = $admin->get_get('folder');
-if($directory == '') {
-	$directory = '/media';
-}
-// If the directory contains ../ then set it to /media
-if(strstr($directory, '../')) {
-	$directory = '/media';
-}
-
-// Insert files into the file list
-$file_list = array();
-foreach(file_list(WB_PATH.$directory, array('index.php')) AS $name) {
-	$filename = str_replace(WB_PATH.$directory.'/', '', $name);
-	$file_list[] = array('name' => basename($name), 'url' => WB_URL.$directory.'/'.$filename);
-}
-
-?>
-<!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" xml:lang="en" lang="en">
-<head>
-<title>Browse Media</title>
-<style type="text/css">
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-	padding: 10px;
-}
-body {
-	background-color: #FFFFFF;
-	margin: 0px;
-}
-a:link, a:visited, a:active {
-	color: #0000FF;
-	text-decoration: none;
-}
-a:hover {
-	text-decoration: underline;
-	color: #0000FF;
-}
-ul, li {
-	margin: 0;
-	padding: 0;
-	display: block;
-	list-style-type: none;
-}
-li {
-	padding: 5px 0px 5px 0px;
-}
-</style>
-</head>
-<body>
-<?php
-
-// If list is an empty array, then say that no files are in the current dir
-if($file_list == array()) {
-	echo 'The selected folder is empty';
-} else {
-	echo '<ul>';
-	foreach($file_list AS $file) {
-		?>
-			<li><a href="#" onclick="javascript: window.parent.document.<?php echo $popup; ?>.url.value = '<?php echo $file['url']; ?>';"><?php echo $file['name']; ?></a></li>
-		<?php
-	}
-	echo '</ul>';
-}
-
-?>
-</body>
-</html>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/fullscreen.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/fullscreen.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/fullscreen.html	(nonexistent)
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html>
-  <head>
-    <title>Fullscreen HTMLArea</title>
-    <script type="text/javascript">
-      _editor_url = window.opener._editor_url;
-      _editor_lang = window.opener._editor_lang;
-      var BASE = window.opener.document.baseURI || window.opener.document.URL;
-      var head = document.getElementsByTagName("head")[0];
-      var base = document.createElement("base");
-      base.href = BASE;
-      head.appendChild(base);
-    </script>
-
-    <script type="text/javascript" src="../htmlarea.js"></script>
-
-    <script type="text/javascript">
-	// load HTMLArea scripts that are present in the opener frame
-	var scripts = window.opener.HTMLArea._scripts;
-	for (var i = 4; i < scripts.length; ++i) {
-           document.write("<scr" + "ipt type='text/javascript' src='" + scripts[i] + "'></scr" + "ipt>");
-        }
-    </script>
-
-    <!-- browser takes a coffee break here -->
-    <script type="text/javascript">
-var parent_object  = null;
-var editor	   = null;	// to be initialized later [ function init() ]
-
-/* ---------------------------------------------------------------------- *\
-   Function    : 
-   Description : 
-\* ---------------------------------------------------------------------- */
-
-function _CloseOnEsc(ev) {
-	ev || (ev = window.event);
-	if (ev.keyCode == 27) {
-		// update_parent();
-		window.close();
-		return;
-	}
-}
-
-/* ---------------------------------------------------------------------- *\
-   Function    : resize_editor
-   Description : resize the editor when the user resizes the popup
-\* ---------------------------------------------------------------------- */
-
-function resize_editor() {  // resize editor to fix window
-	var newHeight;
-	if (document.all) {
-		// IE
-		newHeight = document.body.offsetHeight - editor._toolbar.offsetHeight;
-		if (newHeight < 0) { newHeight = 0; }
-	} else {
-		// Gecko
-		newHeight = window.innerHeight - editor._toolbar.offsetHeight;
-	}
-	if (editor.config.statusBar) {
-		newHeight -= editor._statusBar.offsetHeight;
-	}
-	editor._textArea.style.height = editor._iframe.style.height = newHeight + "px";
-}
-
-/* ---------------------------------------------------------------------- *\
-   Function    : init
-   Description : run this code on page load
-\* ---------------------------------------------------------------------- */
-
-function init() {
-	parent_object	   = opener.HTMLArea._object;
-	var config	   = HTMLArea.cloneObject( parent_object.config );
-	config.width	   = "100%";
-	config.height	   = "auto";
-
-	// change maximize button to minimize button
-	config.btnList["popupeditor"] = [ 'Minimize Editor', _editor_url + 'images/fullscreen_minimize.gif', true,
-					  function() { window.close(); } ];
-
-	// generate editor and resize it
-	editor = new HTMLArea("editor", config);
-
-	// register the plugins, if any
-	for (var i in parent_object.plugins) {
-		var plugin = parent_object.plugins[i];
-		editor.registerPlugin2(plugin.name, plugin.args);
-	}
-	// and restore the original toolbar
-        config.toolbar = parent_object.config.toolbar;
-	editor.generate();
-	editor._iframe.style.width = "100%";
-	editor._textArea.style.width = "100%";
-	resize_editor();
-
-	editor.doctype = parent_object.doctype;
-
-	// set child window contents and event handlers, after a small delay
-	setTimeout(function() {
-			   editor.setHTML(parent_object.getInnerHTML());
-
-			   // switch mode if needed
-			   if (parent_object._mode == "textmode") { editor.setMode("textmode"); }
-
-			   // continuously update parent editor window
-			   setInterval(update_parent, 500);
-
-			   // setup event handlers
-			   document.body.onkeypress = _CloseOnEsc;
-			   editor._doc.body.onkeypress = _CloseOnEsc;
-			   editor._textArea.onkeypress = _CloseOnEsc;
-			   window.onresize = resize_editor;
-		   }, 333);			 // give it some time to meet the new frame
-}
-
-/* ---------------------------------------------------------------------- *\
-   Function    : update_parent
-   Description : update parent window editor field with contents from child window
-   \* ---------------------------------------------------------------------- */
-
-function update_parent() {
-	// use the fast version
-	parent_object.setHTML(editor.getInnerHTML());
-}
-
-    </script>
-    <style type="text/css"> html, body { height: 100%; margin: 0px; border: 0px; background-color: buttonface; } </style>
-  </head>
-  <body scroll="no" onload="setTimeout(function(){init();}, 500)" onunload="update_parent()">
-    <form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;">
-      <textarea name="editor" id="editor" style="width:100%; height:300px">&nbsp;</textarea>
-    </form>
-  </body>
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/editor_help.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/editor_help.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/editor_help.html	(nonexistent)
@@ -1,16 +0,0 @@
-<html>
- <head>
-  <title>Editor Help</title>
-  <style>
-    body, td, p, div { font-family: arial; font-size: x-small; }
-  </style>
- </head>
-<body>
-
-<h2>Editor Help<hr></h2>
-
-Todo...
-
-
-</body>
-</html>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/old-fullscreen.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/old-fullscreen.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/old-fullscreen.html	(nonexistent)
@@ -1,131 +0,0 @@
-<html>
-<head><title>Fullscreen Editor</title>
-<style type="text/css"> body {	margin: 0px; border: 0px; background-color: buttonface; } </style>
-
-<script>
-
-// if we pass the "window" object as a argument and then set opener to
-// equal that we can refer to dialogWindows and popupWindows the same way
-if (window.dialogArguments) { opener = window.dialogArguments; }
-
-var _editor_url = "../";
-document.write('<scr'+'ipt src="' +_editor_url+ 'editor.js" language="Javascript1.2"></scr'+'ipt>');
-
-var parent_objname = location.search.substring(1,location.search.length);  // parent editor objname
-var parent_config  = opener.document.all[parent_objname].config;
-
-var config         = cloneObject( parent_config );
-var objname        = 'editor'; // name of this editor
-
-//  DOMViewerObj = config;
-//  DOMViewerName = 'config';
-//  window.open('/innerHTML/domviewer.htm');  
-
-/* ---------------------------------------------------------------------- *\
-  Function    : 
-  Description : 
-\* ---------------------------------------------------------------------- */
-
-function _CloseOnEsc() {
-  if (event.keyCode == 27) {
-    update_parent();
-    window.close();
-    return;
-  }
-}
-
-/* ---------------------------------------------------------------------- *\
-  Function    : cloneObject
-  Description : copy an object by value instead of by reference
-  Usage       : var newObj = cloneObject(oldObj);
-\* ---------------------------------------------------------------------- */
-
-function cloneObject(obj) {
-  var newObj          = new Object; 
-
-  // check for array objects
-  if (obj.constructor.toString().indexOf('function Array(') == 1) {
-    newObj = obj.constructor();
-  }
-
-  for (var n in obj) {
-    var node = obj[n];
-    if (typeof node == 'object') { newObj[n] = cloneObject(node); }
-    else                         { newObj[n] = node; }
-  }
-  
-  return newObj;
-}
-
-/* ---------------------------------------------------------------------- *\
-  Function    : resize_editor
-  Description : resize the editor when the user resizes the popup
-\* ---------------------------------------------------------------------- */
-
-function resize_editor() {  // resize editor to fix window
-  var editor = document.all['_editor_editor'];
-
-  newWidth  = document.body.offsetWidth;
-  newHeight = document.body.offsetHeight - editor.offsetTop;
-
-  if (newWidth < 0) { newWidth = 0; }
-  if (newHeight < 0) { newHeight = 0; }
-
-  editor.style.width  = newWidth;
-  editor.style.height = newHeight;
-}
-
-/* ---------------------------------------------------------------------- *\
-  Function    : init
-  Description : run this code on page load
-\* ---------------------------------------------------------------------- */
-
-function init() {
-  // change maximize button to minimize button
-  config.btnList["popupeditor"] = ['popupeditor', 'Minimize Editor',  'update_parent(); window.close();', 'fullscreen_minimize.gif'];
-
-  // set htmlmode button to refer to THIS editor
-  config.btnList["htmlmode"]    = ['HtmlMode',    'View HTML Source', 'editor_setmode(\'editor\')',  'ed_html.gif'];
-
-  // change image url to be relative to current path
-  config.imgURL = "../images/";
-  
-  // generate editor and resize it
-  editor_generate('editor', config);
-  resize_editor();
-
-  // switch mode if needed
-  if (parent_config.mode == 'textedit') { editor_setmode(objname, 'textedit'); }
-
-  // set child window contents
-  var parentHTML = opener.editor_getHTML(parent_objname);
-  editor_setHTML(objname, parentHTML);
-
-  // continuously update parent editor window
-  window.setInterval(update_parent, 333);
-
-  // setup event handlers
-  document.body.onkeypress = _CloseOnEsc;
-  window.onresize = resize_editor;
-}
-
-/* ---------------------------------------------------------------------- *\
-  Function    : update_parent
-  Description : update parent window editor field with contents from child window
-\* ---------------------------------------------------------------------- */
-
-function update_parent() {
-  var childHTML = editor_getHTML(objname);
-  opener.editor_setHTML(parent_objname, childHTML);
-}
-
-
-</script>
-</head>
-<body scroll="no" onload="init()" onunload="update_parent()">
-
-<div style="margin: 0 0 0 0; border-width: 1; border-style: solid; border-color: threedshadow threedhighlight threedhighlight threedshadow; "></div>
-
-<textarea name="editor" style="width:100%; height:300px"></textarea><br>
-
-</body></html>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/select_color.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/select_color.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/select_color.html	(nonexistent)
@@ -1,347 +0,0 @@
-<!-- note: this version of the color picker is optimized for IE 5.5+ only -->
-
-<html><head><title>Select Color</title>
-
-<script type="text/javascript" src="popup.js"></script>
-
-<script type="text/javascript">
-
-window.resizeTo(240, 182);
-function _CloseOnEsc() {
-  if (event.keyCode == 27) { window.close(); return; }
-}
-
-function Init() {                                                       // run on page load
-  __dlg_init();    // <!-- this can be found in popup.js -->
-  document.body.onkeypress = _CloseOnEsc;
-
-  var color = window.dialogArguments;
-  color = ValidateColor(color) || '000000';
-  View(color);                                                          // set default color
-}
-
-function View(color) {                  // preview color
-  document.getElementById("ColorPreview").style.backgroundColor = '#' + color;
-  document.getElementById("ColorHex").value = '#' + color;
-}
-
-function Set(string) {                   // select color
-  var color = ValidateColor(string);
-  if (color == null) { alert("Invalid color code: " + string); }        // invalid color
-  else {                                                                // valid color
-    View(color);                          // show selected color
-    __dlg_close(color);
-  }
-}
-
-function ValidateColor(string) {                // return valid color code
-  string = string || '';
-  string = string + "";
-  string = string.toUpperCase();
-  var chars = '0123456789ABCDEF';
-  var out   = '';
-
-  for (var i=0; i<string.length; i++) {             // remove invalid color chars
-    var schar = string.charAt(i);
-    if (chars.indexOf(schar) != -1) { out += schar; }
-  }
-
-  if (out.length != 6) { return null; }            // check length
-  return out;
-}
-
-</script>
-</head>
-<body style="background:ButtonFace; margin:0px; padding:0px" onload="Init()">
-
-<form method="get" style="margin:0px; padding:0px" onSubmit="Set(document.getElementById('ColorHex').value); return false;">
-<table border="0px" cellspacing="0px" cellpadding="4" width="100%">
- <tr>
-  <td style="background:buttonface" valign=center><div style="background-color: #000000; padding: 1; height: 21px; width: 50px"><div id="ColorPreview" style="height: 100%; width: 100%"></div></div></td>
-  <td style="background:buttonface" valign=center><input type="text" name="ColorHex"
-    id="ColorHex" value="" size=15 style="font-size: 12px"></td>
-  <td style="background:buttonface" width=100%></td>
- </tr>
-</table>
-</form>
-
-<table border="0" cellspacing="1px" cellpadding="0px" width="100%" bgcolor="#000000" style="cursor: hand;">
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#003300 onMouseOver=View('003300') onClick=Set('003300') height="10px" width="10px"></td>
-<td bgcolor=#006600 onMouseOver=View('006600') onClick=Set('006600') height="10px" width="10px"></td>
-<td bgcolor=#009900 onMouseOver=View('009900') onClick=Set('009900') height="10px" width="10px"></td>
-<td bgcolor=#00CC00 onMouseOver=View('00CC00') onClick=Set('00CC00') height="10px" width="10px"></td>
-<td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td>
-<td bgcolor=#330000 onMouseOver=View('330000') onClick=Set('330000') height="10px" width="10px"></td>
-<td bgcolor=#333300 onMouseOver=View('333300') onClick=Set('333300') height="10px" width="10px"></td>
-<td bgcolor=#336600 onMouseOver=View('336600') onClick=Set('336600') height="10px" width="10px"></td>
-<td bgcolor=#339900 onMouseOver=View('339900') onClick=Set('339900') height="10px" width="10px"></td>
-<td bgcolor=#33CC00 onMouseOver=View('33CC00') onClick=Set('33CC00') height="10px" width="10px"></td>
-<td bgcolor=#33FF00 onMouseOver=View('33FF00') onClick=Set('33FF00') height="10px" width="10px"></td>
-<td bgcolor=#660000 onMouseOver=View('660000') onClick=Set('660000') height="10px" width="10px"></td>
-<td bgcolor=#663300 onMouseOver=View('663300') onClick=Set('663300') height="10px" width="10px"></td>
-<td bgcolor=#666600 onMouseOver=View('666600') onClick=Set('666600') height="10px" width="10px"></td>
-<td bgcolor=#669900 onMouseOver=View('669900') onClick=Set('669900') height="10px" width="10px"></td>
-<td bgcolor=#66CC00 onMouseOver=View('66CC00') onClick=Set('66CC00') height="10px" width="10px"></td>
-<td bgcolor=#66FF00 onMouseOver=View('66FF00') onClick=Set('66FF00') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#000033 onMouseOver=View('000033') onClick=Set('000033') height="10px" width="10px"></td>
-<td bgcolor=#003333 onMouseOver=View('003333') onClick=Set('003333') height="10px" width="10px"></td>
-<td bgcolor=#006633 onMouseOver=View('006633') onClick=Set('006633') height="10px" width="10px"></td>
-<td bgcolor=#009933 onMouseOver=View('009933') onClick=Set('009933') height="10px" width="10px"></td>
-<td bgcolor=#00CC33 onMouseOver=View('00CC33') onClick=Set('00CC33') height="10px" width="10px"></td>
-<td bgcolor=#00FF33 onMouseOver=View('00FF33') onClick=Set('00FF33') height="10px" width="10px"></td>
-<td bgcolor=#330033 onMouseOver=View('330033') onClick=Set('330033') height="10px" width="10px"></td>
-<td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td>
-<td bgcolor=#336633 onMouseOver=View('336633') onClick=Set('336633') height="10px" width="10px"></td>
-<td bgcolor=#339933 onMouseOver=View('339933') onClick=Set('339933') height="10px" width="10px"></td>
-<td bgcolor=#33CC33 onMouseOver=View('33CC33') onClick=Set('33CC33') height="10px" width="10px"></td>
-<td bgcolor=#33FF33 onMouseOver=View('33FF33') onClick=Set('33FF33') height="10px" width="10px"></td>
-<td bgcolor=#660033 onMouseOver=View('660033') onClick=Set('660033') height="10px" width="10px"></td>
-<td bgcolor=#663333 onMouseOver=View('663333') onClick=Set('663333') height="10px" width="10px"></td>
-<td bgcolor=#666633 onMouseOver=View('666633') onClick=Set('666633') height="10px" width="10px"></td>
-<td bgcolor=#669933 onMouseOver=View('669933') onClick=Set('669933') height="10px" width="10px"></td>
-<td bgcolor=#66CC33 onMouseOver=View('66CC33') onClick=Set('66CC33') height="10px" width="10px"></td>
-<td bgcolor=#66FF33 onMouseOver=View('66FF33') onClick=Set('66FF33') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#000066 onMouseOver=View('000066') onClick=Set('000066') height="10px" width="10px"></td>
-<td bgcolor=#003366 onMouseOver=View('003366') onClick=Set('003366') height="10px" width="10px"></td>
-<td bgcolor=#006666 onMouseOver=View('006666') onClick=Set('006666') height="10px" width="10px"></td>
-<td bgcolor=#009966 onMouseOver=View('009966') onClick=Set('009966') height="10px" width="10px"></td>
-<td bgcolor=#00CC66 onMouseOver=View('00CC66') onClick=Set('00CC66') height="10px" width="10px"></td>
-<td bgcolor=#00FF66 onMouseOver=View('00FF66') onClick=Set('00FF66') height="10px" width="10px"></td>
-<td bgcolor=#330066 onMouseOver=View('330066') onClick=Set('330066') height="10px" width="10px"></td>
-<td bgcolor=#333366 onMouseOver=View('333366') onClick=Set('333366') height="10px" width="10px"></td>
-<td bgcolor=#336666 onMouseOver=View('336666') onClick=Set('336666') height="10px" width="10px"></td>
-<td bgcolor=#339966 onMouseOver=View('339966') onClick=Set('339966') height="10px" width="10px"></td>
-<td bgcolor=#33CC66 onMouseOver=View('33CC66') onClick=Set('33CC66') height="10px" width="10px"></td>
-<td bgcolor=#33FF66 onMouseOver=View('33FF66') onClick=Set('33FF66') height="10px" width="10px"></td>
-<td bgcolor=#660066 onMouseOver=View('660066') onClick=Set('660066') height="10px" width="10px"></td>
-<td bgcolor=#663366 onMouseOver=View('663366') onClick=Set('663366') height="10px" width="10px"></td>
-<td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td>
-<td bgcolor=#669966 onMouseOver=View('669966') onClick=Set('669966') height="10px" width="10px"></td>
-<td bgcolor=#66CC66 onMouseOver=View('66CC66') onClick=Set('66CC66') height="10px" width="10px"></td>
-<td bgcolor=#66FF66 onMouseOver=View('66FF66') onClick=Set('66FF66') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#000099 onMouseOver=View('000099') onClick=Set('000099') height="10px" width="10px"></td>
-<td bgcolor=#003399 onMouseOver=View('003399') onClick=Set('003399') height="10px" width="10px"></td>
-<td bgcolor=#006699 onMouseOver=View('006699') onClick=Set('006699') height="10px" width="10px"></td>
-<td bgcolor=#009999 onMouseOver=View('009999') onClick=Set('009999') height="10px" width="10px"></td>
-<td bgcolor=#00CC99 onMouseOver=View('00CC99') onClick=Set('00CC99') height="10px" width="10px"></td>
-<td bgcolor=#00FF99 onMouseOver=View('00FF99') onClick=Set('00FF99') height="10px" width="10px"></td>
-<td bgcolor=#330099 onMouseOver=View('330099') onClick=Set('330099') height="10px" width="10px"></td>
-<td bgcolor=#333399 onMouseOver=View('333399') onClick=Set('333399') height="10px" width="10px"></td>
-<td bgcolor=#336699 onMouseOver=View('336699') onClick=Set('336699') height="10px" width="10px"></td>
-<td bgcolor=#339999 onMouseOver=View('339999') onClick=Set('339999') height="10px" width="10px"></td>
-<td bgcolor=#33CC99 onMouseOver=View('33CC99') onClick=Set('33CC99') height="10px" width="10px"></td>
-<td bgcolor=#33FF99 onMouseOver=View('33FF99') onClick=Set('33FF99') height="10px" width="10px"></td>
-<td bgcolor=#660099 onMouseOver=View('660099') onClick=Set('660099') height="10px" width="10px"></td>
-<td bgcolor=#663399 onMouseOver=View('663399') onClick=Set('663399') height="10px" width="10px"></td>
-<td bgcolor=#666699 onMouseOver=View('666699') onClick=Set('666699') height="10px" width="10px"></td>
-<td bgcolor=#669999 onMouseOver=View('669999') onClick=Set('669999') height="10px" width="10px"></td>
-<td bgcolor=#66CC99 onMouseOver=View('66CC99') onClick=Set('66CC99') height="10px" width="10px"></td>
-<td bgcolor=#66FF99 onMouseOver=View('66FF99') onClick=Set('66FF99') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#0000CC onMouseOver=View('0000CC') onClick=Set('0000CC') height="10px" width="10px"></td>
-<td bgcolor=#0033CC onMouseOver=View('0033CC') onClick=Set('0033CC') height="10px" width="10px"></td>
-<td bgcolor=#0066CC onMouseOver=View('0066CC') onClick=Set('0066CC') height="10px" width="10px"></td>
-<td bgcolor=#0099CC onMouseOver=View('0099CC') onClick=Set('0099CC') height="10px" width="10px"></td>
-<td bgcolor=#00CCCC onMouseOver=View('00CCCC') onClick=Set('00CCCC') height="10px" width="10px"></td>
-<td bgcolor=#00FFCC onMouseOver=View('00FFCC') onClick=Set('00FFCC') height="10px" width="10px"></td>
-<td bgcolor=#3300CC onMouseOver=View('3300CC') onClick=Set('3300CC') height="10px" width="10px"></td>
-<td bgcolor=#3333CC onMouseOver=View('3333CC') onClick=Set('3333CC') height="10px" width="10px"></td>
-<td bgcolor=#3366CC onMouseOver=View('3366CC') onClick=Set('3366CC') height="10px" width="10px"></td>
-<td bgcolor=#3399CC onMouseOver=View('3399CC') onClick=Set('3399CC') height="10px" width="10px"></td>
-<td bgcolor=#33CCCC onMouseOver=View('33CCCC') onClick=Set('33CCCC') height="10px" width="10px"></td>
-<td bgcolor=#33FFCC onMouseOver=View('33FFCC') onClick=Set('33FFCC') height="10px" width="10px"></td>
-<td bgcolor=#6600CC onMouseOver=View('6600CC') onClick=Set('6600CC') height="10px" width="10px"></td>
-<td bgcolor=#6633CC onMouseOver=View('6633CC') onClick=Set('6633CC') height="10px" width="10px"></td>
-<td bgcolor=#6666CC onMouseOver=View('6666CC') onClick=Set('6666CC') height="10px" width="10px"></td>
-<td bgcolor=#6699CC onMouseOver=View('6699CC') onClick=Set('6699CC') height="10px" width="10px"></td>
-<td bgcolor=#66CCCC onMouseOver=View('66CCCC') onClick=Set('66CCCC') height="10px" width="10px"></td>
-<td bgcolor=#66FFCC onMouseOver=View('66FFCC') onClick=Set('66FFCC') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td>
-<td bgcolor=#0033FF onMouseOver=View('0033FF') onClick=Set('0033FF') height="10px" width="10px"></td>
-<td bgcolor=#0066FF onMouseOver=View('0066FF') onClick=Set('0066FF') height="10px" width="10px"></td>
-<td bgcolor=#0099FF onMouseOver=View('0099FF') onClick=Set('0099FF') height="10px" width="10px"></td>
-<td bgcolor=#00CCFF onMouseOver=View('00CCFF') onClick=Set('00CCFF') height="10px" width="10px"></td>
-<td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td>
-<td bgcolor=#3300FF onMouseOver=View('3300FF') onClick=Set('3300FF') height="10px" width="10px"></td>
-<td bgcolor=#3333FF onMouseOver=View('3333FF') onClick=Set('3333FF') height="10px" width="10px"></td>
-<td bgcolor=#3366FF onMouseOver=View('3366FF') onClick=Set('3366FF') height="10px" width="10px"></td>
-<td bgcolor=#3399FF onMouseOver=View('3399FF') onClick=Set('3399FF') height="10px" width="10px"></td>
-<td bgcolor=#33CCFF onMouseOver=View('33CCFF') onClick=Set('33CCFF') height="10px" width="10px"></td>
-<td bgcolor=#33FFFF onMouseOver=View('33FFFF') onClick=Set('33FFFF') height="10px" width="10px"></td>
-<td bgcolor=#6600FF onMouseOver=View('6600FF') onClick=Set('6600FF') height="10px" width="10px"></td>
-<td bgcolor=#6633FF onMouseOver=View('6633FF') onClick=Set('6633FF') height="10px" width="10px"></td>
-<td bgcolor=#6666FF onMouseOver=View('6666FF') onClick=Set('6666FF') height="10px" width="10px"></td>
-<td bgcolor=#6699FF onMouseOver=View('6699FF') onClick=Set('6699FF') height="10px" width="10px"></td>
-<td bgcolor=#66CCFF onMouseOver=View('66CCFF') onClick=Set('66CCFF') height="10px" width="10px"></td>
-<td bgcolor=#66FFFF onMouseOver=View('66FFFF') onClick=Set('66FFFF') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#990000 onMouseOver=View('990000') onClick=Set('990000') height="10px" width="10px"></td>
-<td bgcolor=#993300 onMouseOver=View('993300') onClick=Set('993300') height="10px" width="10px"></td>
-<td bgcolor=#996600 onMouseOver=View('996600') onClick=Set('996600') height="10px" width="10px"></td>
-<td bgcolor=#999900 onMouseOver=View('999900') onClick=Set('999900') height="10px" width="10px"></td>
-<td bgcolor=#99CC00 onMouseOver=View('99CC00') onClick=Set('99CC00') height="10px" width="10px"></td>
-<td bgcolor=#99FF00 onMouseOver=View('99FF00') onClick=Set('99FF00') height="10px" width="10px"></td>
-<td bgcolor=#CC0000 onMouseOver=View('CC0000') onClick=Set('CC0000') height="10px" width="10px"></td>
-<td bgcolor=#CC3300 onMouseOver=View('CC3300') onClick=Set('CC3300') height="10px" width="10px"></td>
-<td bgcolor=#CC6600 onMouseOver=View('CC6600') onClick=Set('CC6600') height="10px" width="10px"></td>
-<td bgcolor=#CC9900 onMouseOver=View('CC9900') onClick=Set('CC9900') height="10px" width="10px"></td>
-<td bgcolor=#CCCC00 onMouseOver=View('CCCC00') onClick=Set('CCCC00') height="10px" width="10px"></td>
-<td bgcolor=#CCFF00 onMouseOver=View('CCFF00') onClick=Set('CCFF00') height="10px" width="10px"></td>
-<td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td>
-<td bgcolor=#FF3300 onMouseOver=View('FF3300') onClick=Set('FF3300') height="10px" width="10px"></td>
-<td bgcolor=#FF6600 onMouseOver=View('FF6600') onClick=Set('FF6600') height="10px" width="10px"></td>
-<td bgcolor=#FF9900 onMouseOver=View('FF9900') onClick=Set('FF9900') height="10px" width="10px"></td>
-<td bgcolor=#FFCC00 onMouseOver=View('FFCC00') onClick=Set('FFCC00') height="10px" width="10px"></td>
-<td bgcolor=#FFFF00 onMouseOver=View('FFFF00') onClick=Set('FFFF00') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#990033 onMouseOver=View('990033') onClick=Set('990033') height="10px" width="10px"></td>
-<td bgcolor=#993333 onMouseOver=View('993333') onClick=Set('993333') height="10px" width="10px"></td>
-<td bgcolor=#996633 onMouseOver=View('996633') onClick=Set('996633') height="10px" width="10px"></td>
-<td bgcolor=#999933 onMouseOver=View('999933') onClick=Set('999933') height="10px" width="10px"></td>
-<td bgcolor=#99CC33 onMouseOver=View('99CC33') onClick=Set('99CC33') height="10px" width="10px"></td>
-<td bgcolor=#99FF33 onMouseOver=View('99FF33') onClick=Set('99FF33') height="10px" width="10px"></td>
-<td bgcolor=#CC0033 onMouseOver=View('CC0033') onClick=Set('CC0033') height="10px" width="10px"></td>
-<td bgcolor=#CC3333 onMouseOver=View('CC3333') onClick=Set('CC3333') height="10px" width="10px"></td>
-<td bgcolor=#CC6633 onMouseOver=View('CC6633') onClick=Set('CC6633') height="10px" width="10px"></td>
-<td bgcolor=#CC9933 onMouseOver=View('CC9933') onClick=Set('CC9933') height="10px" width="10px"></td>
-<td bgcolor=#CCCC33 onMouseOver=View('CCCC33') onClick=Set('CCCC33') height="10px" width="10px"></td>
-<td bgcolor=#CCFF33 onMouseOver=View('CCFF33') onClick=Set('CCFF33') height="10px" width="10px"></td>
-<td bgcolor=#FF0033 onMouseOver=View('FF0033') onClick=Set('FF0033') height="10px" width="10px"></td>
-<td bgcolor=#FF3333 onMouseOver=View('FF3333') onClick=Set('FF3333') height="10px" width="10px"></td>
-<td bgcolor=#FF6633 onMouseOver=View('FF6633') onClick=Set('FF6633') height="10px" width="10px"></td>
-<td bgcolor=#FF9933 onMouseOver=View('FF9933') onClick=Set('FF9933') height="10px" width="10px"></td>
-<td bgcolor=#FFCC33 onMouseOver=View('FFCC33') onClick=Set('FFCC33') height="10px" width="10px"></td>
-<td bgcolor=#FFFF33 onMouseOver=View('FFFF33') onClick=Set('FFFF33') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#990066 onMouseOver=View('990066') onClick=Set('990066') height="10px" width="10px"></td>
-<td bgcolor=#993366 onMouseOver=View('993366') onClick=Set('993366') height="10px" width="10px"></td>
-<td bgcolor=#996666 onMouseOver=View('996666') onClick=Set('996666') height="10px" width="10px"></td>
-<td bgcolor=#999966 onMouseOver=View('999966') onClick=Set('999966') height="10px" width="10px"></td>
-<td bgcolor=#99CC66 onMouseOver=View('99CC66') onClick=Set('99CC66') height="10px" width="10px"></td>
-<td bgcolor=#99FF66 onMouseOver=View('99FF66') onClick=Set('99FF66') height="10px" width="10px"></td>
-<td bgcolor=#CC0066 onMouseOver=View('CC0066') onClick=Set('CC0066') height="10px" width="10px"></td>
-<td bgcolor=#CC3366 onMouseOver=View('CC3366') onClick=Set('CC3366') height="10px" width="10px"></td>
-<td bgcolor=#CC6666 onMouseOver=View('CC6666') onClick=Set('CC6666') height="10px" width="10px"></td>
-<td bgcolor=#CC9966 onMouseOver=View('CC9966') onClick=Set('CC9966') height="10px" width="10px"></td>
-<td bgcolor=#CCCC66 onMouseOver=View('CCCC66') onClick=Set('CCCC66') height="10px" width="10px"></td>
-<td bgcolor=#CCFF66 onMouseOver=View('CCFF66') onClick=Set('CCFF66') height="10px" width="10px"></td>
-<td bgcolor=#FF0066 onMouseOver=View('FF0066') onClick=Set('FF0066') height="10px" width="10px"></td>
-<td bgcolor=#FF3366 onMouseOver=View('FF3366') onClick=Set('FF3366') height="10px" width="10px"></td>
-<td bgcolor=#FF6666 onMouseOver=View('FF6666') onClick=Set('FF6666') height="10px" width="10px"></td>
-<td bgcolor=#FF9966 onMouseOver=View('FF9966') onClick=Set('FF9966') height="10px" width="10px"></td>
-<td bgcolor=#FFCC66 onMouseOver=View('FFCC66') onClick=Set('FFCC66') height="10px" width="10px"></td>
-<td bgcolor=#FFFF66 onMouseOver=View('FFFF66') onClick=Set('FFFF66') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#FFFF00 onMouseOver=View('FFFF00') onClick=Set('FFFF00') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#990099 onMouseOver=View('990099') onClick=Set('990099') height="10px" width="10px"></td>
-<td bgcolor=#993399 onMouseOver=View('993399') onClick=Set('993399') height="10px" width="10px"></td>
-<td bgcolor=#996699 onMouseOver=View('996699') onClick=Set('996699') height="10px" width="10px"></td>
-<td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td>
-<td bgcolor=#99CC99 onMouseOver=View('99CC99') onClick=Set('99CC99') height="10px" width="10px"></td>
-<td bgcolor=#99FF99 onMouseOver=View('99FF99') onClick=Set('99FF99') height="10px" width="10px"></td>
-<td bgcolor=#CC0099 onMouseOver=View('CC0099') onClick=Set('CC0099') height="10px" width="10px"></td>
-<td bgcolor=#CC3399 onMouseOver=View('CC3399') onClick=Set('CC3399') height="10px" width="10px"></td>
-<td bgcolor=#CC6699 onMouseOver=View('CC6699') onClick=Set('CC6699') height="10px" width="10px"></td>
-<td bgcolor=#CC9999 onMouseOver=View('CC9999') onClick=Set('CC9999') height="10px" width="10px"></td>
-<td bgcolor=#CCCC99 onMouseOver=View('CCCC99') onClick=Set('CCCC99') height="10px" width="10px"></td>
-<td bgcolor=#CCFF99 onMouseOver=View('CCFF99') onClick=Set('CCFF99') height="10px" width="10px"></td>
-<td bgcolor=#FF0099 onMouseOver=View('FF0099') onClick=Set('FF0099') height="10px" width="10px"></td>
-<td bgcolor=#FF3399 onMouseOver=View('FF3399') onClick=Set('FF3399') height="10px" width="10px"></td>
-<td bgcolor=#FF6699 onMouseOver=View('FF6699') onClick=Set('FF6699') height="10px" width="10px"></td>
-<td bgcolor=#FF9999 onMouseOver=View('FF9999') onClick=Set('FF9999') height="10px" width="10px"></td>
-<td bgcolor=#FFCC99 onMouseOver=View('FFCC99') onClick=Set('FFCC99') height="10px" width="10px"></td>
-<td bgcolor=#FFFF99 onMouseOver=View('FFFF99') onClick=Set('FFFF99') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#9900CC onMouseOver=View('9900CC') onClick=Set('9900CC') height="10px" width="10px"></td>
-<td bgcolor=#9933CC onMouseOver=View('9933CC') onClick=Set('9933CC') height="10px" width="10px"></td>
-<td bgcolor=#9966CC onMouseOver=View('9966CC') onClick=Set('9966CC') height="10px" width="10px"></td>
-<td bgcolor=#9999CC onMouseOver=View('9999CC') onClick=Set('9999CC') height="10px" width="10px"></td>
-<td bgcolor=#99CCCC onMouseOver=View('99CCCC') onClick=Set('99CCCC') height="10px" width="10px"></td>
-<td bgcolor=#99FFCC onMouseOver=View('99FFCC') onClick=Set('99FFCC') height="10px" width="10px"></td>
-<td bgcolor=#CC00CC onMouseOver=View('CC00CC') onClick=Set('CC00CC') height="10px" width="10px"></td>
-<td bgcolor=#CC33CC onMouseOver=View('CC33CC') onClick=Set('CC33CC') height="10px" width="10px"></td>
-<td bgcolor=#CC66CC onMouseOver=View('CC66CC') onClick=Set('CC66CC') height="10px" width="10px"></td>
-<td bgcolor=#CC99CC onMouseOver=View('CC99CC') onClick=Set('CC99CC') height="10px" width="10px"></td>
-<td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td>
-<td bgcolor=#CCFFCC onMouseOver=View('CCFFCC') onClick=Set('CCFFCC') height="10px" width="10px"></td>
-<td bgcolor=#FF00CC onMouseOver=View('FF00CC') onClick=Set('FF00CC') height="10px" width="10px"></td>
-<td bgcolor=#FF33CC onMouseOver=View('FF33CC') onClick=Set('FF33CC') height="10px" width="10px"></td>
-<td bgcolor=#FF66CC onMouseOver=View('FF66CC') onClick=Set('FF66CC') height="10px" width="10px"></td>
-<td bgcolor=#FF99CC onMouseOver=View('FF99CC') onClick=Set('FF99CC') height="10px" width="10px"></td>
-<td bgcolor=#FFCCCC onMouseOver=View('FFCCCC') onClick=Set('FFCCCC') height="10px" width="10px"></td>
-<td bgcolor=#FFFFCC onMouseOver=View('FFFFCC') onClick=Set('FFFFCC') height="10px" width="10px"></td>
-</tr>
-<tr>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#FF00FF onMouseOver=View('FF00FF') onClick=Set('FF00FF') height="10px" width="10px"></td>
-<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
-<td bgcolor=#9900FF onMouseOver=View('9900FF') onClick=Set('9900FF') height="10px" width="10px"></td>
-<td bgcolor=#9933FF onMouseOver=View('9933FF') onClick=Set('9933FF') height="10px" width="10px"></td>
-<td bgcolor=#9966FF onMouseOver=View('9966FF') onClick=Set('9966FF') height="10px" width="10px"></td>
-<td bgcolor=#9999FF onMouseOver=View('9999FF') onClick=Set('9999FF') height="10px" width="10px"></td>
-<td bgcolor=#99CCFF onMouseOver=View('99CCFF') onClick=Set('99CCFF') height="10px" width="10px"></td>
-<td bgcolor=#99FFFF onMouseOver=View('99FFFF') onClick=Set('99FFFF') height="10px" width="10px"></td>
-<td bgcolor=#CC00FF onMouseOver=View('CC00FF') onClick=Set('CC00FF') height="10px" width="10px"></td>
-<td bgcolor=#CC33FF onMouseOver=View('CC33FF') onClick=Set('CC33FF') height="10px" width="10px"></td>
-<td bgcolor=#CC66FF onMouseOver=View('CC66FF') onClick=Set('CC66FF') height="10px" width="10px"></td>
-<td bgcolor=#CC99FF onMouseOver=View('CC99FF') onClick=Set('CC99FF') height="10px" width="10px"></td>
-<td bgcolor=#CCCCFF onMouseOver=View('CCCCFF') onClick=Set('CCCCFF') height="10px" width="10px"></td>
-<td bgcolor=#CCFFFF onMouseOver=View('CCFFFF') onClick=Set('CCFFFF') height="10px" width="10px"></td>
-<td bgcolor=#FF00FF onMouseOver=View('FF00FF') onClick=Set('FF00FF') height="10px" width="10px"></td>
-<td bgcolor=#FF33FF onMouseOver=View('FF33FF') onClick=Set('FF33FF') height="10px" width="10px"></td>
-<td bgcolor=#FF66FF onMouseOver=View('FF66FF') onClick=Set('FF66FF') height="10px" width="10px"></td>
-<td bgcolor=#FF99FF onMouseOver=View('FF99FF') onClick=Set('FF99FF') height="10px" width="10px"></td>
-<td bgcolor=#FFCCFF onMouseOver=View('FFCCFF') onClick=Set('FFCCFF') height="10px" width="10px"></td>
-<td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td>
-</tr>
-</table>
-
-</body></html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_image.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_image.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_image.html	(nonexistent)
@@ -1,246 +0,0 @@
-<!-- BEGIN main_block -->
-<html>
-
-<head>
-  <title>Insert Image</title>
-
-<script type="text/javascript" src="popup.js"></script>
-
-<script type="text/javascript">
-
-window.resizeTo(700, 100);
-
-function Init() {
-  __dlg_init();
-  var param = window.dialogArguments;
-  if (param) {
-      document.getElementById("f_url").value = param["f_url"];
-      document.getElementById("f_alt").value = param["f_alt"];
-      document.getElementById("f_border").value = param["f_border"];
-      document.getElementById("f_align").value = param["f_align"];
-      document.getElementById("f_vert").value = param["f_vert"];
-      document.getElementById("f_horiz").value = param["f_horiz"];
-      window.ipreview.location.replace(param.f_url);
-  }
-  document.getElementById("f_url").focus();
-};
-
-function onOK() {
-  var required = {
-    "f_url": "You must enter the URL"
-  };
-  for (var i in required) {
-    var el = document.getElementById(i);
-    if (!el.value) {
-      alert(required[i]);
-      el.focus();
-      return false;
-    }
-  }
-  // pass data back to the calling window
-  var fields = ["f_url", "f_alt", "f_align", "f_border",
-                "f_horiz", "f_vert"];
-  var param = new Object();
-  for (var i in fields) {
-    var id = fields[i];
-    var el = document.getElementById(id);
-    param[id] = el.value;
-  }
-  __dlg_close(param);
-  return false;
-};
-
-function onCancel() {
-  __dlg_close(null);
-  return false;
-};
-
-function onPreview() {
-  var f_url = document.getElementById("f_url");
-  var url = f_url.value;
-  if (!url) {
-    alert("You have to enter an URL first");
-    f_url.focus();
-    return false;
-  }
-  window.ipreview.location.replace(url);
-  return false;
-};
-</script>
-
-<style type="text/css">
-html, body {
-  background: #EEEEEE;
-  color: #000000;
-  font: 11px Tahoma,Verdana,sans-serif;
-  margin: 0px;
-  padding: 0px;
-}
-body { padding: 0px; }
-table {
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-form p {
-  margin-top: 5px;
-  margin-bottom: 5px;
-}
-.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
-.fr { width: 6em; float: left; padding: 2px 5px; text-align: right; }
-fieldset { padding: 0px 10px 5px 5px; }
-select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
-button { width: 70px; }
-.space { padding: 2px; }
-
-.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
- letter-spacing: 2px;
-}
-form { padding: 0px; margin: 0px; }
-</style>
-
-</head>
-
-<body onload="Init()">
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #FFFFFF;" valign="top">
-	
-		<div class="title" style="background: #003366;">Browse Media</div>
-	
-		<form name="browser" action="insert_image.php" method="post" class="browser">
-			<select name="folder" style="width: 250px; font-family: Arial;">
-				<option value="/media">/media</option>
-				<!-- BEGIN dir_list_block -->
-				<option value="{NAME}"{SELECTED}>{NAME}</option>
-				<!-- END dir_list_block -->
-			</select>
-			<input type="submit" name="submit" value="Browse Selected Folder" style="width: 250px;" />
-			
-			<br />
-			
-			<style type="text/css">
-			.browser {
-				padding: 5px;
-				padding-top: 0;
-			}
-			.browser ul, .browser li {
-				margin: 0;
-				padding: 0;
-				display: block;
-				list-style-type: none;
-			}
-			.browser li {
-				padding: 5px 0px 5px 0px;
-			}
-			</style>
-			
-			<iframe src="{WB_URL}/modules/htmlarea/htmlarea/popups/list_media.php?folder={DIRECTORY}&popup={POPUP}" style="width: 245px; height: 320px;"></iframe>
-			
-		</form>
-		
-	</td>
-	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
-	<td width="420" valign="top">
-
-		<div class="title">Insert Image</div>
-		<!--- new stuff --->
-		<form name="insert_image" action="" method="get" style="padding: 5px;">
-		<table border="0" width="100%" style="padding: 0px; margin: 0px">
-		  <tbody>
-		
-		  <tr>
-		    <td style="width: 7em; text-align: right">Image URL:</td>
-		    <td><input type="text" name="url" id="f_url" style="width:74%"
-		      title="Enter the image URL here" />
-		      <button name="preview" onclick="return onPreview();"
-		      title="Preview the image in a new window">Preview</button>
-		    </td>
-		  </tr>
-		  <tr>
-		    <td style="width: 80px; text-align: right">Alternate text:</td>
-		    <td><input type="text" name="alt" id="f_alt" style="width:74%"
-		      title="For browsers that don't support images" /></td>
-		  </tr>
-		
-		  </tbody>
-		</table>
-		
-		<p />
-		
-		<fieldset style="float: left; margin-left: 5px;">
-		<legend>Layout</legend>
-		
-		<div class="space"></div>
-		
-		<div class="fl">Alignment:</div>
-		<select size="1" name="align" id="f_align"
-		  title="Positioning of this image">
-		  <option value=""                             >Not set</option>
-		  <option value="left"                         >Left</option>
-		  <option value="right"                        >Right</option>
-		  <option value="texttop"                      >Texttop</option>
-		  <option value="absmiddle"                    >Absmiddle</option>
-		  <option value="baseline" selected="1"        >Baseline</option>
-		  <option value="absbottom"                    >Absbottom</option>
-		  <option value="bottom"                       >Bottom</option>
-		  <option value="middle"                       >Middle</option>
-		  <option value="top"                          >Top</option>
-		</select>
-		
-		<p />
-		
-		<div class="fl">Border thickness:</div>
-		<input type="text" name="border" id="f_border" size="5"
-		title="Leave empty for no border" />
-		
-		<div class="space"></div>
-		
-		</fieldset>
-		
-		<fieldset style="float:right; margin-right: 5px;">
-		<legend>Spacing</legend>
-		
-		<div class="space"></div>
-		
-		<div class="fr">Horizontal:</div>
-		<input type="text" name="horiz" id="f_horiz" size="5"
-		title="Horizontal padding" />
-		
-		<p />
-		
-		<div class="fr">Vertical:</div>
-		<input type="text" name="vert" id="f_vert" size="5"
-		title="Vertical padding" />
-		
-		<div class="space"></div>
-		
-		</fieldset>
-		<br clear="all" />
-		<table width="100%" style="margin-bottom: 0.2em">
-		 <tr>
-		  <td valign="bottom">
-		    Image Preview:<br />
-		    <iframe name="ipreview" id="ipreview" frameborder="0" style="border : 1px solid gray;" height="200" width="300" src=""></iframe>
-		  </td>
-		  <td valign="bottom" style="text-align: left; padding-right: 5px;">
-		    <button type="button" name="ok" onclick="return onOK();">OK</button><br>
-		    <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
-		  </td>
-		 </tr>
-		</table>
-		</form>
-
-	</td>
-	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
-</tr>
-<tr height="8">
-	<td colspan="3" style="background-color: #003366;"></td>
-	<td colspan="3" style="background-color: #336699;"></td>
-</tr>
-</table>
-
-</body>
-</html>
-<!-- END main_block -->
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/link.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/link.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/link.html	(nonexistent)
@@ -1,223 +0,0 @@
-<!-- BEGIN main_block -->
-<html>
-
-<head>
-  <title>Insert/Modify Link</title>
-  <script type="text/javascript" src="popup.js"></script>
-  <script type="text/javascript">
-    window.resizeTo(700, 400);
-
-I18N = window.opener.HTMLArea.I18N.dialogs;
-
-function i18n(str) {
-  return (I18N[str] || str);
-};
-
-function onTargetChanged() {
-  var f = document.getElementById("f_other_target");
-  if (this.value == "_other") {
-    f.style.visibility = "visible";
-    f.select();
-    f.focus();
-  } else f.style.visibility = "hidden";
-};
-
-function Init() {
-  __dlg_translate(I18N);
-  __dlg_init();
-  var param = window.dialogArguments;
-  var target_select = document.getElementById("f_target");
-  if (param) {
-      document.getElementById("f_href").value = param["f_href"];
-      document.getElementById("f_title").value = param["f_title"];
-      comboSelectValue(target_select, param["f_target"]);
-      if (target_select.value != param.f_target) {
-        var opt = document.createElement("option");
-        opt.value = param.f_target;
-        opt.innerHTML = opt.value;
-        target_select.appendChild(opt);
-        opt.selected = true;
-      }
-  }
-  var opt = document.createElement("option");
-  opt.value = "_other";
-  opt.innerHTML = i18n("Other");
-  target_select.appendChild(opt);
-  target_select.onchange = onTargetChanged;
-  document.getElementById("f_href").focus();
-  document.getElementById("f_href").select();
-};
-
-function onOK() {
-  var required = {
-    "f_href": i18n("You must enter the URL where this link points to")
-  };
-  for (var i in required) {
-    var el = document.getElementById(i);
-    if (!el.value) {
-      alert(required[i]);
-      el.focus();
-      return false;
-    }
-  }
-  // pass data back to the calling window
-  var fields = ["f_href", "f_title", "f_target" ];
-  var param = new Object();
-  for (var i in fields) {
-    var id = fields[i];
-    var el = document.getElementById(id);
-    param[id] = el.value;
-  }
-  if (param.f_target == "_other")
-    param.f_target = document.getElementById("f_other_target").value;
-  __dlg_close(param);
-  return false;
-};
-
-function onCancel() {
-  __dlg_close(null);
-  return false;
-};
-
-</script>
-
-<style type="text/css">
-html, body {
-  background: #EEEEEE;
-  color: #000000;
-  font: 11px Tahoma,Verdana,sans-serif;
-  margin: 0px;
-  padding: 0px;
-}
-body { padding-bottom: 15px; }
-table {
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
-button { width: 70px; }
-table .label { text-align: right; width: 8em; }
-
-.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
-letter-spacing: 2px;
-}
-
-#buttons {
-      margin-top: 1em; border-top: 1px solid #999;
-      padding: 2px; text-align: right;
-}
-</style>
-
-</head>
-
-<body onload="Init()">
-
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%" height="400">
-<tr>
-	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #FFFFFF;" valign="top" height="40">
-	
-		<div class="title" style="background: #003366;">Select Page</div>
-	
-		<form name="select_page" class="browser" onsubmit="javascript: document.link.url.value = document.select_page.pages.value; return false">
-			<select name="pages" style="width: 250px; font-family: Arial;">
-				<!-- BEGIN page_list_block -->
-				<option value="{LINK}"{SELECTED}>{TITLE}</option>
-				<!-- END page_list_block -->
-			</select>
-			<input type="submit" name="submit" value="Paste Page Link" style="width: 250px;" />
-			
-		</form>
-		
-	</td>
-	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
-	<td width="420" valign="top" rowspan="2">
-		
-		<div class="title">Insert/Modify Link</div>
-		
-		<form name="link" style="margin: 5px;">
-			
-			<table border="0" style="width: 97%;">
-			  <tr>
-			    <td class="label">URL:</td>
-			    <td><input type="text" name="url" id="f_href" style="width: 100%" /></td>
-			  </tr>
-			  <tr>
-			    <td class="label">Title (tooltip):</td>
-			    <td><input type="text" id="f_title" style="width: 100%" /></td>
-			  </tr>
-			  <tr>
-			    <td class="label">Target:</td>
-			    <td><select id="f_target">
-			      <option value="">None (use implicit)</option>
-			      <option value="_blank">New window (_blank)</option>
-			      <option value="_self">Same frame (_self)</option>
-			      <option value="_top">Top frame (_top)</option>
-			    </select>
-			    <input type="text" name="f_other_target" id="f_other_target" size="10" style="visibility: hidden" />
-			    </td>
-			  </tr>
-			</table>
-			
-			<div id="buttons">
-			  <button type="button" name="ok" onclick="return onOK();">OK</button>
-			  <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
-			</div>
-		
-		</form>
-		
-	</td>
-	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
-</tr>
-<tr>
-	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #FFFFFF;" valign="top">
-	
-		<div class="title" style="background: #003366;">Browse Media</div>
-	
-		<form name="browser" action="link.php" method="post" class="browser">
-			<select name="folder" style="width: 250px; font-family: Arial;">
-				<option value="/media">/media</option>
-				<!-- BEGIN dir_list_block -->
-				<option value="{NAME}"{SELECTED}>{NAME}</option>
-				<!-- END dir_list_block -->
-			</select>
-			<input type="submit" name="submit" value="Browse Selected Folder" style="width: 250px;" />
-			
-			<br />
-			
-			<style type="text/css">
-			.browser {
-				padding: 5px;
-				padding-top: 0;
-			}
-			.browser ul, .browser li {
-				margin: 0;
-				padding: 0;
-				display: block;
-				list-style-type: none;
-			}
-			.browser li {
-				padding: 5px 0px 5px 0px;
-			}
-			</style>
-			
-			<iframe src="{WB_URL}/modules/htmlarea/htmlarea/popups/list_media.php?folder={DIRECTORY}&popup={POPUP}" style="width: 245px; height: 320px;"></iframe>
-			
-		</form>
-		
-	</td>
-	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
-	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
-</tr>
-<tr height="8">
-	<td colspan="3" style="background-color: #003366;"></td>
-	<td colspan="3" style="background-color: #336699;"></td>
-</tr>
-</table>
-
-</body>
-</html>
-<!-- END main_block -->
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/old_insert_image.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/old_insert_image.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/old_insert_image.html	(nonexistent)
@@ -1,206 +0,0 @@
-<!-- based on insimage.dlg -->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN">
-<HTML  id=dlgImage STYLE="width: 432px; height: 194px; ">
-<HEAD>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<meta http-equiv="MSThemeCompatible" content="Yes">
-<TITLE>Insert Image</TITLE>
-<style>
-  html, body, button, div, input, select, fieldset { font-family: MS Shell Dlg; font-size: 8pt; position: absolute; };
-</style>
-<SCRIPT defer>
-
-function _CloseOnEsc() {
-  if (event.keyCode == 27) { window.close(); return; }
-}
-
-function _getTextRange(elm) {
-  var r = elm.parentTextEdit.createTextRange();
-  r.moveToElementText(elm);
-  return r;
-}
-
-window.onerror = HandleError
-
-function HandleError(message, url, line) {
-  var str = "An error has occurred in this dialog." + "\n\n"
-  + "Error: " + line + "\n" + message;
-  alert(str);
-  window.close();
-  return true;
-}
-
-function Init() {
-  var elmSelectedImage;
-  var htmlSelectionControl = "Control";
-  var globalDoc = window.dialogArguments;
-  var grngMaster = globalDoc.selection.createRange();
-  
-  // event handlers  
-  document.body.onkeypress = _CloseOnEsc;
-  btnOK.onclick = new Function("btnOKClick()");
-
-  txtFileName.fImageLoaded = false;
-  txtFileName.intImageWidth = 0;
-  txtFileName.intImageHeight = 0;
-
-  if (globalDoc.selection.type == htmlSelectionControl) {
-    if (grngMaster.length == 1) {
-      elmSelectedImage = grngMaster.item(0);
-      if (elmSelectedImage.tagName == "IMG") {
-        txtFileName.fImageLoaded = true;
-        if (elmSelectedImage.src) {
-          txtFileName.value          = elmSelectedImage.src.replace(/^[^*]*(\*\*\*)/, "$1");  // fix placeholder src values that editor converted to abs paths
-          txtFileName.intImageHeight = elmSelectedImage.height;
-          txtFileName.intImageWidth  = elmSelectedImage.width;
-          txtVertical.value          = elmSelectedImage.vspace;
-          txtHorizontal.value        = elmSelectedImage.hspace;
-          txtBorder.value            = elmSelectedImage.border;
-          txtAltText.value           = elmSelectedImage.alt;
-          selAlignment.value         = elmSelectedImage.align;
-        }
-      }
-    }
-  }
-  txtFileName.value = txtFileName.value || "http://";
-  txtFileName.focus();
-}
-
-function _isValidNumber(txtBox) {
-  var val = parseInt(txtBox);
-  if (isNaN(val) || val < 0 || val > 999) { return false; }
-  return true;
-}
-
-function btnOKClick() {
-  var elmImage;
-  var intAlignment;
-  var htmlSelectionControl = "Control";
-  var globalDoc = window.dialogArguments;
-  var grngMaster = globalDoc.selection.createRange();
-  
-  // error checking
-
-  if (!txtFileName.value || txtFileName.value == "http://") { 
-    alert("Image URL must be specified.");
-    txtFileName.focus();
-    return;
-  }
-  if (txtHorizontal.value && !_isValidNumber(txtHorizontal.value)) {
-    alert("Horizontal spacing must be a number between 0 and 999.");
-    txtHorizontal.focus();
-    return;
-  }
-  if (txtBorder.value && !_isValidNumber(txtBorder.value)) {
-    alert("Border thickness must be a number between 0 and 999.");
-    txtBorder.focus();
-    return;
-  }
-  if (txtVertical.value && !_isValidNumber(txtVertical.value)) {
-    alert("Vertical spacing must be a number between 0 and 999.");
-    txtVertical.focus();
-    return;
-  }
-
-  // delete selected content and replace with image
-  if (globalDoc.selection.type == htmlSelectionControl && !txtFileName.fImageLoaded) {
-    grngMaster.execCommand('Delete');
-    grngMaster = globalDoc.selection.createRange();
-  }
-    
-  idstr = "\" id=\"556e697175657e537472696e67";     // new image creation ID
-  if (!txtFileName.fImageLoaded) {
-    grngMaster.execCommand("InsertImage", false, idstr);
-    elmImage = globalDoc.all['556e697175657e537472696e67'];
-    elmImage.removeAttribute("id");
-    elmImage.removeAttribute("src");
-    grngMaster.moveStart("character", -1);
-  } else {
-    elmImage = grngMaster.item(0);
-    if (elmImage.src != txtFileName.value) {
-      grngMaster.execCommand('Delete');
-      grngMaster = globalDoc.selection.createRange();
-      grngMaster.execCommand("InsertImage", false, idstr);
-      elmImage = globalDoc.all['556e697175657e537472696e67'];
-      elmImage.removeAttribute("id");
-      elmImage.removeAttribute("src");
-      grngMaster.moveStart("character", -1);
-      txtFileName.fImageLoaded = false;
-    }
-    grngMaster = _getTextRange(elmImage);
-  }
-
-  if (txtFileName.fImageLoaded) {
-    elmImage.style.width = txtFileName.intImageWidth;
-    elmImage.style.height = txtFileName.intImageHeight;
-  }
-
-  if (txtFileName.value.length > 2040) {
-    txtFileName.value = txtFileName.value.substring(0,2040);
-  }
-  
-  elmImage.src = txtFileName.value;
-  
-  if (txtHorizontal.value != "") { elmImage.hspace = parseInt(txtHorizontal.value); }
-  else                           { elmImage.hspace = 0; }
-
-  if (txtVertical.value != "") { elmImage.vspace = parseInt(txtVertical.value); }
-  else                         { elmImage.vspace = 0; }
-  
-  elmImage.alt = txtAltText.value;
-
-  if (txtBorder.value != "") { elmImage.border = parseInt(txtBorder.value); }
-  else                       { elmImage.border = 0; }
-
-  elmImage.align = selAlignment.value;
-  grngMaster.collapse(false);
-  grngMaster.select();
-  window.close();
-}
-</SCRIPT>
-</HEAD>
-<BODY id=bdy onload="Init()" style="background: threedface; color: windowtext;" scroll=no>
-
-<DIV id=divFileName style="left: 0.98em; top: 1.2168em; width: 7em; height: 1.2168em; ">Image URL:</DIV>
-<INPUT ID=txtFileName type=text style="left: 8.54em; top: 1.0647em; width: 21.5em;height: 2.1294em; " tabIndex=10 onfocus="select()">
-
-<DIV id=divAltText style="left: 0.98em; top: 4.1067em; width: 6.58em; height: 1.2168em; ">Alternate Text:</DIV>
-<INPUT type=text ID=txtAltText tabIndex=15 style="left: 8.54em; top: 3.8025em; width: 21.5em; height: 2.1294em; " onfocus="select()">
-
-<FIELDSET id=fldLayout style="left: .9em; top: 7.1em; width: 17.08em; height: 7.6em;">
-<LEGEND id=lgdLayout>Layout</LEGEND>
-</FIELDSET>
-
-<FIELDSET id=fldSpacing style="left: 18.9em; top: 7.1em; width: 11em; height: 7.6em;">
-<LEGEND id=lgdSpacing>Spacing</LEGEND>
-</FIELDSET>
-
-<DIV id=divAlign style="left: 1.82em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Alignment:</DIV>
-<SELECT size=1 ID=selAlignment tabIndex=20 style="left: 10.36em; top: 8.8218em; width: 6.72em; height: 1.2168em; ">
-<OPTION id=optNotSet value=""> Not set </OPTION>
-<OPTION id=optLeft value=left> Left </OPTION>
-<OPTION id=optRight value=right> Right </OPTION>
-<OPTION id=optTexttop value=textTop> Texttop </OPTION>
-<OPTION id=optAbsMiddle value=absMiddle> Absmiddle </OPTION>
-<OPTION id=optBaseline value=baseline SELECTED> Baseline </OPTION>
-<OPTION id=optAbsBottom value=absBottom> Absbottom </OPTION>
-<OPTION id=optBottom value=bottom> Bottom </OPTION>
-<OPTION id=optMiddle value=middle> Middle </OPTION>
-<OPTION id=optTop value=top> Top </OPTION>
-</SELECT>
-
-<DIV id=divHoriz style="left: 19.88em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Horizontal:</DIV>
-<INPUT ID=txtHorizontal style="left: 24.92em; top: 8.8218em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=25 onfocus="select()">
-
-<DIV id=divBorder style="left: 1.82em; top: 12.0159em; width: 8.12em; height: 1.2168em; ">Border Thickness:</DIV>
-<INPUT ID=txtBorder style="left: 10.36em; top: 11.5596em; width: 6.72em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=21 onfocus="select()">
-
-<DIV id=divVert style="left: 19.88em; top: 12.0159em; width: 3.64em; height: 1.2168em; ">Vertical:</DIV>
-<INPUT ID=txtVertical style="left: 24.92em; top: 11.5596em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=30 onfocus="select()">
-
-<BUTTON ID=btnOK style="left: 31.36em; top: 1.0647em; width: 7em; height: 2.2em; " type=submit tabIndex=40>OK</BUTTON>
-<BUTTON ID=btnCancel style="left: 31.36em; top: 3.6504em; width: 7em; height: 2.2em; " type=reset tabIndex=45 onClick="window.close();">Cancel</BUTTON>
-
-</BODY>
-</HTML>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/about.html
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/about.html	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/about.html	(nonexistent)
@@ -1,378 +0,0 @@
-<!--
-
-(c) dynarch.com, 2003-2004
-Author: Mihai Bazon, http://dynarch.com/mishoo
-Distributed as part of HTMLArea 3.0
-
-"You are not expected to understand this...  I don't neither."
-
-                      (from The Linux Kernel Source Code,
-                            ./arch/x86_64/ia32/ptrace.c:90)
-
-;-)
-
--->
-
-<html style="height: 100%">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>About HTMLArea</title>
-<script type="text/javascript" src="popup.js"></script>
-<script type="text/javascript">
-window.resizeTo(450, 250);
-var TABS = [];
-var CURRENT_TAB = 0;
-var CONTENT_HEIGHT_DIFF = 0;
-var CONTENT_WIDTH_DIFF = 0;
-function selectTab(idx) {
-  var ct = TABS[CURRENT_TAB];
-  ct.className = ct.className.replace(/\s*tab-current\s*/, ' ');
-  ct = TABS[CURRENT_TAB = idx];
-  ct.className += ' tab-current';
-  for (var i = TABS.length; --i >= 0;) {
-    var area = document.getElementById("tab-area-" + i);
-    if (CURRENT_TAB == i) {
-      area.style.display = "block";
-    } else {
-      area.style.display = "none";
-    }
-  }
-  document.body.style.visibility = "hidden";
-  document.body.style.visibility = "visible";
-  document.cookie = "HTMLAREA-ABOUT-TAB=" + idx;
-}
-var editor = null;
-function initDocument() {
-  editor = window.dialogArguments;
-  HTMLArea = window.opener.HTMLArea;
-
-  var plugins = document.getElementById("plugins");
-  var j = 0;
-  var html = "<table width='99%' cellpadding='0' style='margin-top: 1em; collapse-borders: collapse; border: 1px solid #8b8;'>" +
-	  "<thead><tr>" +
-	  "<td>Name</td>" +
-	  "<td>Developer</td>" +
-	  "<td>Sponsored by</td>" +
-	  "<td>License<sup>*</sup></td>" +
-	  "</tr></thead><tbody>";
-  for (var i in editor.plugins) {
-    var info = editor.plugins[i];
-    html += "<tr><td>" + info.name + " v" + info.version + "</td>" + 
-            "<td><a href='" + info.developer_url + "' target='_blank' title='Visit developer website'>" +
-	    info.developer + "</a></td>" +
-	    "<td><a href='" + info.sponsor_url + "' target='_blank' title='Visit sponsor website'>" +
-	    info.sponsor + "</a></td>" +
-	    "<td>" + info.license + "</td></tr>";
-    ++j;
-  }
-
-  if (j) {
-          html += "</tbody></table>" +
-		  "<p><sup>*</sup> License \"htmlArea\" means that the plugin is distributed under the same terms " +
-		  "as HTMLArea itself.  Such plugins are likely to be those included in the official " +
-		  "HTMLArea distribution</p>";
-	  plugins.innerHTML = "<p>The following plugins have been loaded.</p>" + html;
-  } else {
-	  plugins.innerHTML = "<p>No plugins have been loaded</p>";
-  }
-
-  plugins.innerHTML += "<p>User agent reports:<br/>" + navigator.userAgent + "</p>";
-
-  var content = document.getElementById("content");
-  if (window.innerHeight) {
-    CONTENT_HEIGHT_DIFF = window.innerHeight - 250;
-    CONTENT_WIDTH_DIFF = window.innerWidth - content.offsetWidth;
-  } else {
-    CONTENT_HEIGHT_DIFF = document.body.offsetHeight - 250;
-    CONTENT_WIDTH_DIFF = document.body.offsetWidth - 400;
-  }
-  window.onresize();
-  var bar = document.getElementById("tabbar");
-  j = 0;
-  for (var i = bar.firstChild; i; i = i.nextSibling) {
-    TABS.push(i);
-    i.__msh_tab = j;
-    i.onmousedown = function(ev) { selectTab(this.__msh_tab); HTMLArea._stopEvent(ev || window.event); };
-    var area = document.getElementById("tab-area-" + j);
-    if (/tab-current/.test(i.className)) {
-      CURRENT_TAB = j;
-      area.style.display = "block";
-    } else {
-      area.style.display = "none";
-    }
-    ++j;
-  }
-  if (document.cookie.match(/HTMLAREA-ABOUT-TAB=([0-9]+)/))
-    selectTab(RegExp.$1);
-}
-window.onresize = function() {
-  var content = document.getElementById("content");
-  if (window.innerHeight) {
-    content.style.height = (window.innerHeight - CONTENT_HEIGHT_DIFF) + "px";
-    content.style.width = (window.innerWidth - CONTENT_WIDTH_DIFF) + "px";
-  } else {
-    content.style.height = (document.body.offsetHeight - CONTENT_HEIGHT_DIFF) + "px";
-    //content.style.width = (document.body.offsetWidth - CONTENT_WIDTH_DIFF) + "px";
-  }
-}
-</script>
-<style>
-  html,body,textarea,table { font-family: tahoma,verdana,arial; font-size: 11px;
-padding: 0px; margin: 0px; }
-  tt { font-size: 120%; }
-  body { padding: 0px; background: #cea; color: 000; }
-  a:link, a:visited { color: #00f; }
-  a:hover { color: #f00; }
-  a:active { color: #f80; }
-  button { font: 11px tahoma,verdana,sans-serif; background-color: #cea;
-      border-width: 1px; }
-
-  p { margin: 0.5em 0px; }
-
-  h1 { font: bold 130% georgia,"times new roman",serif; margin: 0px; border-bottom: 1px solid #6a6; }
-  h2 { font: bold 110% georgia,"times new roman",serif; margin: 0.7em 0px; }
-
-  thead {
-    font-weight: bold;
-    background-color: #dfb;
-  }
-
-  .logo, .logo-hover {
-    white-space: nowrap;
-    background-color: #8f4; color: #040; padding: 3px; border-bottom: 1px solid #555;
-    height: 5em;
-  }
-  .logo .brand, .logo-hover .brand {
-    margin-left: 0.5em; margin-right: 0.5em; padding-bottom: 0.1em;
-    font-family: impact,'arial black',arial,sans-serif; font-size: 28px;
-    border-bottom: 1px solid #595; text-align: center;
-    cursor: pointer;
-  }
-  .logo-hover {
-    background-color: #fff;
-  }
-  .logo-hover .brand {
-    color: #800;
-    border-color: #04f;
-  }
-  .logo .letter, .logo-hover .letter { position: relative; font-family: monospace; }
-  .logo .letter1 { top: 0.1em; }
-  .logo .letter2 { top: 0.05em; }
-  .logo .letter3 { top: -0.05em; }
-  .logo .letter4 { top: -0.1em; }
-
-  .logo-hover .letter1 { top: -0.1em; }
-  .logo-hover .letter2 { top: -0.05em; }
-  .logo-hover .letter3 { top: 0.05em; }
-  .logo-hover .letter4 { top: 0.1em; }
-  .logo .version, .logo-hover .version { font-family: georgia,"times new roman",serif; }
-  .logo .release {
-    font-size: 90%; margin-bottom: 1em;
-    text-align: center; color: #484;
-  }
-  .logo .visit { display: none; }
-  .logo-hover .release { display: none; }
-  .logo-hover .visit {
-    font-size: 90%; margin-bottom: 1em;
-    text-align: center; color: #448;
-  }
-  .buttons {
-    text-align: right; padding: 3px; background-color: #8f4;
-    border-top: 1px solid #555;
-  }
-  #tabbar {
-    position: relative;
-    left: 10px;
-  }
-  .tab {
-    color: #454;
-    cursor: pointer;
-    margin-left: -5px;
-    float: left; position: relative;
-    border: 1px solid #555;
-    top: -3px; left: -2px;
-    padding: 2px 10px 3px 10px;
-    border-top: none; background-color: #9b7;
-    -moz-border-radius: 0px 0px 4px 4px;
-    z-index: 0;
-  }
-  .tab-current {
-    color: #000;
-    top: -4px;
-    background-color: #cea;
-    padding: 3px 10px 4px 10px;
-    z-index: 10;
-  }
-  table.sponsors { border-top: 1px solid #aca; }
-  table.sponsors td {
-    border-bottom: 1px solid #aca; vertical-align: top;
-  }
-  table.sponsors tr td { padding: 2px 0px; }
-  table.sponsors tr td.sponsor { text-align: right; padding-right: 0.3em; white-space: nowrap; }
-  li, ol, ul { margin-top: 0px; margin-bottom: 0px; }
-</style></head>
-<body onload="__dlg_init(); initDocument();"
-><table cellspacing="0" cellpadding="0" style="border-collapse: collapse;
-      width: 100%; height: 100%;">
-
-<tr style="height: 1em"><td id="tdheader">
-
-<div class="logo">
-<div class="brand"
-onmouseover="this.parentNode.className='logo-hover';"
-onmouseout="this.parentNode.className='logo';"
-onclick="window.open('http://dynarch.com/htmlarea/');">
-<span class="letter letter1">&lt;H</span><span
-class="letter letter2">T</span><span
-class="letter letter3">M</span><span
-class="letter letter4">L</span>Area <span class="letter">/&gt;</span>
-<span class="version">3.0 <span style="position: relative; top: -0.6em; font-size: 50%; font-weight: normal">[ rev. rc1 ]</span></span></div>
-<div class="release">Compiled on Mar  1, 2004 19:37 GMT</div>
-<div class="visit">Go to http://dynarch.com/htmlarea/ [latest milestone release]</div>
-</div>
-
-</td></tr>
-<tr><td id="tdcontent" style="padding: 0.5em;">
-
-<div style="overflow: auto; height: 250px;" id="content">
-<div id="tab-areas">
-
-<div id="tab-area-0">
-
-  <h1>HTMLArea</h1>
-  
-  <p>A free WYSIWYG editor replacement for <tt>&lt;textarea&gt;</tt> fields.<br />
-  For Mozilla 1.3+ (any platform) or Internet Explorer 5.5+ (Windows).
-  </p>
-
-  <p style="text-align: center"
-  >&copy; 2002-2004 <a href="http://interactivetools.com" target="_blank">interactivetools.com</a>, inc.<br />
-  &copy; 2003-2004 <a href="http://dynarch.com" target="_blank">dynarch.com</a> LLC.<br />
-  All Rights Reserved.</p>
-
-  <h2>Project resources</h2>
-
-  <ul>
-  <li><a href="http://sourceforge.net/projects/itools-htmlarea/" target="_blank"
-  >Project page</a> (@ sourceforge.net)</li>
-  <li><a href="http://sourceforge.net/cvs/?group_id=69750" target="_blank"
-  >Anonymous CVS access</a> (@ sourceforge.net)</li>
-  <li><a href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse" target="_blank"
-  >Bug system</a> (@ sourceforge.net)</li>
-  <li><a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;" target="_blank"
-  >Forum</a> (@ interactivetools.com)</li>
-  <li><a href="http://www.dynarch.com/htmlarea/" target="_blank"
-  >Last public release</a> (@ dynarch.com)</li>
-  </ul>
-
-  <p>
-  For download section please see the <a href="http://sourceforge.net/projects/itools-htmlarea/" target="_blank"
-  >project page @ SourceForge</a>.
-  </p>
-
-<p style="margin-top: 1em; text-align: center;">Version 3.0 developed and maintained by <a
-href="http://dynarch.com/mishoo/" title="http://dynarch.com/mishoo/" target="_blank">Mihai Bazon</a> / <a
-href="http://dynarch.com" title="http://dynarch.com/" target="_blank">dynarch.com</a></p>
-
-</div>
-
-<div id="tab-area-1">
-<h1>Thank you</h1>
-
-  <p>
-  <a href="http://dynarch.com" target="_blank">dynarch.com</a> would like to thank the following
-  companies/persons for their <em>donations</em> to support development of HTMLArea (listed alphabetically):
-  </p>
-
-  <ul>
-    <li><a href="http://www.neomedia.ro">Neomedia</a> (Romania)</li>
-    <li><a href="http://www.os3.it" target="_blank">OS3</a> (Italy)</li>
-    <li><a href="http://www.softwerk.net">SoftWerk</a> (Italy)</li>
-  </ul>
-
-  <p>Also many thanks to all people at InteractiveTools.com
-  <a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">HTMLArea forums</a> for
-  contributing translations, feedback, bug reports and fixes.</p>
-
-  <p>
-  Last but not least, this project wouldn't have existed without
-  <a href="http://interactivetools.com" target="_blank">InteractiveTools.com</a>.
-  </p>
-
-</div>
-
-<div id="tab-area-2">
-<h1>htmlArea License (based on BSD license)</h1>
-
-<p style="text-align: center">© 2002-2004, interactivetools.com, inc.<br />
-  © 2003-2004 dynarch.com LLC<br />
-  All rights reserved.</p>
-
-<p>
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-</p>
-
-<ol>
-<li>
-Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-</li>
-
-<li>
-Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-</li>
-
-<li>
-Neither the name of interactivetools.com, inc. nor the names of its
-contributors may be used to endorse or promote products derived from this
-software without specific prior written permission.
-</li>
-</ol>
-
-<p>
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-</p>
-
-</div>
-
-<div id="tab-area-3">
-<h1>Plugins</h1>
-<div id="plugins">
-</div>
-</div>
-
-</div></div>
-
-
-</tr></td>
-<tr style="height: 1em"><td id="tdfooter">
-
-
-<div class="buttons">
-<div id="tabbar"
-><div class="tab tab-current"
->About</div><div class="tab"
->Thanks</div><div class="tab"
->License</div><div class="tab"
->Plugins</div></div>
-<button type="button" onclick="__dlg_close(null);">I agree it's cool</button>
-</div>
-
-</td></tr></table>
-
-</body></html>
-
-
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_table.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_table.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/popups/insert_table.php	(nonexistent)
@@ -1,174 +0,0 @@
-<html>
-
-<head>
-  <title>Insert Table</title>
-
-<script type="text/javascript" src="popup.js"></script>
-
-<script type="text/javascript">
-
-window.resizeTo(400, 100);
-
-function Init() {
-  __dlg_init();
-  document.getElementById("f_rows").focus();
-};
-
-function onOK() {
-  var required = {
-    "f_rows": "You must enter a number of rows",
-    "f_cols": "You must enter a number of columns"
-  };
-  for (var i in required) {
-    var el = document.getElementById(i);
-    if (!el.value) {
-      alert(required[i]);
-      el.focus();
-      return false;
-    }
-  }
-  var fields = ["f_rows", "f_cols", "f_width", "f_unit",
-                "f_align", "f_border", "f_spacing", "f_padding"];
-  var param = new Object();
-  for (var i in fields) {
-    var id = fields[i];
-    var el = document.getElementById(id);
-    param[id] = el.value;
-  }
-  __dlg_close(param);
-  return false;
-};
-
-function onCancel() {
-  __dlg_close(null);
-  return false;
-};
-
-</script>
-
-<style type="text/css">
-html, body {
-  background: #EEEEEE;
-  color: #000000;
-  font: 11px Tahoma,Verdana,sans-serif;
-  margin: 0px;
-  padding: 0px;
-}
-body { padding: 0; }
-table {
-  font: 11px Tahoma,Verdana,sans-serif;
-}
-form p {
-  margin-top: 5px;
-  margin-bottom: 5px;
-}
-.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
-.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
-fieldset { padding: 0px 10px 5px 5px; }
-select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
-button { width: 70px; }
-.space { padding: 2px; }
-
-.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
-letter-spacing: 2px;
-}
-form { padding: 0px; margin: 0px; }
-</style>
-
-</head>
-
-<body onload="Init()">
-
-<div class="title">Insert Table</div>
-
-<form action="" method="get">
-<table border="0" style="padding: 0px; margin: 0px">
-  <tbody>
-
-  <tr>
-    <td style="width: 4em; text-align: right">Rows:</td>
-    <td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
-    <td></td>
-    <td></td>
-    <td></td>
-  </tr>
-  <tr>
-    <td style="width: 4em; text-align: right">Cols:</td>
-    <td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
-    <td style="width: 4em; text-align: right">Width:</td>
-    <td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
-    <td><select size="1" name="unit" id="f_unit" title="Width unit">
-      <option value="%" selected="1"  >Percent</option>
-      <option value="px"              >Pixels</option>
-      <option value="em"              >Em</option>
-    </select></td>
-  </tr>
-
-  </tbody>
-</table>
-
-<p />
-
-<fieldset style="float: left; margin-left: 5px;">
-<legend>Layout</legend>
-
-<div class="space"></div>
-
-<div class="fl">Alignment:</div>
-<select size="1" name="align" id="f_align"
-  title="Positioning of this image">
-  <option value="" selected="1"                >Not set</option>
-  <option value="left"                         >Left</option>
-  <option value="right"                        >Right</option>
-  <option value="texttop"                      >Texttop</option>
-  <option value="absmiddle"                    >Absmiddle</option>
-  <option value="baseline"                     >Baseline</option>
-  <option value="absbottom"                    >Absbottom</option>
-  <option value="bottom"                       >Bottom</option>
-  <option value="middle"                       >Middle</option>
-  <option value="top"                          >Top</option>
-</select>
-
-<p />
-
-<div class="fl">Border thickness:</div>
-<input type="text" name="border" id="f_border" size="5" value="1"
-title="Leave empty for no border" />
-<!--
-<p />
-
-<div class="fl">Collapse borders:</div>
-<input type="checkbox" name="collapse" id="f_collapse" />
--->
-<div class="space"></div>
-
-</fieldset>
-
-<fieldset style="float:right; margin-right: 5px;">
-<legend>Spacing</legend>
-
-<div class="space"></div>
-
-<div class="fr">Cell spacing:</div>
-<input type="text" name="spacing" id="f_spacing" size="5" value="1"
-title="Space between adjacent cells" />
-
-<p />
-
-<div class="fr">Cell padding:</div>
-<input type="text" name="padding" id="f_padding" size="5" value="1"
-title="Space between content and border in cell" />
-
-<div class="space"></div>
-
-</fieldset>
-
-<div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;">
-<button type="button" name="ok" onclick="return onOK();">OK</button>
-<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
-</div>
-
-</form>
-
-</body>
-</html>
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/htmlarea.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/htmlarea.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/htmlarea.js	(nonexistent)
@@ -1,2175 +0,0 @@
-// htmlArea v3.0 - Copyright (c) 2002-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: htmlarea.js,v 1.1.1.1 2005/01/30 10:30:55 rdjurovich Exp $
-
-if (typeof _editor_url == "string") {
-	// Leave exactly one backslash at the end of _editor_url
-	_editor_url = _editor_url.replace(/\x2f*$/, '/');
-} else {
-	alert("WARNING: _editor_url is not set!  You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea', but it can be relative if you prefer.  Further we will try to load the editor files correctly but we'll probably fail.");
-	_editor_url = '';
-}
-
-// make sure we have a language
-if (typeof _editor_lang == "string") {
-	_editor_lang = _editor_lang.toLowerCase();
-} else {
-	_editor_lang = "en";
-}
-
-// Creates a new HTMLArea object.  Tries to replace the textarea with the given
-// ID with it.
-function HTMLArea(textarea, config) {
-	if (HTMLArea.checkSupportedBrowser()) {
-		if (typeof config == "undefined") {
-			this.config = new HTMLArea.Config();
-		} else {
-			this.config = config;
-		}
-		this._htmlArea = null;
-		this._textArea = textarea;
-		this._editMode = "wysiwyg";
-		this.plugins = {};
-		this._timerToolbar = null;
-		this._timerUndo = null;
-		this._undoQueue = new Array(this.config.undoSteps);
-		this._undoPos = -1;
-		this._customUndo = false;
-		this._mdoc = document; // cache the document, we need it in plugins
-		this.doctype = '';
-	}
-};
-
-// load some scripts
-(function() {
-	var scripts = HTMLArea._scripts = [ _editor_url + "htmlarea.js",
-					    _editor_url + "dialog.js",
-					    _editor_url + "popupwin.js",
-					    _editor_url + "lang/" + _editor_lang + ".js" ];
-	var head = document.getElementsByTagName("head")[0];
-	// start from 1, htmlarea.js is already loaded
-	for (var i = 1; i < scripts.length; ++i) {
-		var script = document.createElement("script");
-		script.src = scripts[i];
-		head.appendChild(script);
-	}
-})();
-
-// cache some regexps
-HTMLArea.RE_tagName = /(<\/|<)\s*([^ \t\n>]+)/ig;
-HTMLArea.RE_doctype = /(<!doctype((.|\n)*?)>)\n?/i;
-HTMLArea.RE_head    = /<head>((.|\n)*?)<\/head>/i;
-HTMLArea.RE_body    = /<body>((.|\n)*?)<\/body>/i;
-
-HTMLArea.Config = function () {
-	this.version = "3.0";
-
-	this.width = "auto";
-	this.height = "auto";
-
-	// enable creation of a status bar?
-	this.statusBar = true;
-
-	// maximum size of the undo queue
-	this.undoSteps = 20;
-
-	// the time interval at which undo samples are taken
-	this.undoTimeout = 500;	// 1/2 sec.
-
-	// the next parameter specifies whether the toolbar should be included
-	// in the size or not.
-	this.sizeIncludesToolbar = true;
-
-	// if true then HTMLArea will retrieve the full HTML, starting with the
-	// <HTML> tag.
-	this.fullPage = false;
-
-	// style included in the iframe document
-	this.pageStyle = "";
-
-	// set to true if you want Word code to be cleaned upon Paste
-	this.killWordOnPaste = false;
-
-	// BaseURL included in the iframe document
-	this.baseURL = document.baseURI || document.URL;
-	if (this.baseURL && this.baseURL.match(/(.*)\/([^\/]+)/))
-		this.baseURL = RegExp.$1 + "/";
-
-	// URL-s
-	this.imgURL = "images/";
-	this.popupURL = "popups/";
-
-	/** CUSTOMIZING THE TOOLBAR
-	 * -------------------------
-	 *
-	 * It is recommended that you customize the toolbar contents in an
-	 * external file (i.e. the one calling HTMLArea) and leave this one
-	 * unchanged.  That's because when we (InteractiveTools.com) release a
-	 * new official version, it's less likely that you will have problems
-	 * upgrading HTMLArea.
-	 */
-	this.toolbar = [
-		[ "fontname", "space",
-		  "fontsize", "space",
-		  "formatblock", "space",
-		  "bold", "italic", "underline", "strikethrough", "separator",
-		  "subscript", "superscript", "separator",
-		  "copy", "cut", "paste", "space", "undo", "redo" ],
-
-		[ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
-		  "lefttoright", "righttoleft", "separator",
-		  "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator",
-		  "forecolor", "hilitecolor", "separator",
-		  "inserthorizontalrule", "createlink", "insertimage", "inserttable", "htmlmode", "separator",
-		  "popupeditor", "separator", "showhelp", "about" ]
-	];
-
-	this.fontname = {
-		"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'
-	};
-
-	this.fontsize = {
-		"1 (8 pt)":  "1",
-		"2 (10 pt)": "2",
-		"3 (12 pt)": "3",
-		"4 (14 pt)": "4",
-		"5 (18 pt)": "5",
-		"6 (24 pt)": "6",
-		"7 (36 pt)": "7"
-	};
-
-	this.formatblock = {
-		"Heading 1": "h1",
-		"Heading 2": "h2",
-		"Heading 3": "h3",
-		"Heading 4": "h4",
-		"Heading 5": "h5",
-		"Heading 6": "h6",
-		"Normal": "p",
-		"Address": "address",
-		"Formatted": "pre"
-	};
-
-	this.customSelects = {};
-
-	function cut_copy_paste(e, cmd, obj) {
-		e.execCommand(cmd);
-	};
-
-	// ADDING CUSTOM BUTTONS: please read below!
-	// format of the btnList elements is "ID: [ ToolTip, Icon, Enabled in text mode?, ACTION ]"
-	//    - ID: unique ID for the button.  If the button calls document.execCommand
-	//	    it's wise to give it the same name as the called command.
-	//    - ACTION: function that gets called when the button is clicked.
-	//              it has the following prototype:
-	//                 function(editor, buttonName)
-	//              - editor is the HTMLArea object that triggered the call
-	//              - buttonName is the ID of the clicked button
-	//              These 2 parameters makes it possible for you to use the same
-	//              handler for more HTMLArea objects or for more different buttons.
-	//    - ToolTip: default tooltip, for cases when it is not defined in the -lang- file (HTMLArea.I18N)
-	//    - Icon: path to an icon image file for the button (TODO: use one image for all buttons!)
-	//    - Enabled in text mode: if false the button gets disabled for text-only mode; otherwise enabled all the time.
-	this.btnList = {
-		bold: [ "Bold", "ed_format_bold.gif", false, function(e) {e.execCommand("bold");} ],
-		italic: [ "Italic", "ed_format_italic.gif", false, function(e) {e.execCommand("italic");} ],
-		underline: [ "Underline", "ed_format_underline.gif", false, function(e) {e.execCommand("underline");} ],
-		strikethrough: [ "Strikethrough", "ed_format_strike.gif", false, function(e) {e.execCommand("strikethrough");} ],
-		subscript: [ "Subscript", "ed_format_sub.gif", false, function(e) {e.execCommand("subscript");} ],
-		superscript: [ "Superscript", "ed_format_sup.gif", false, function(e) {e.execCommand("superscript");} ],
-		justifyleft: [ "Justify Left", "ed_align_left.gif", false, function(e) {e.execCommand("justifyleft");} ],
-		justifycenter: [ "Justify Center", "ed_align_center.gif", false, function(e) {e.execCommand("justifycenter");} ],
-		justifyright: [ "Justify Right", "ed_align_right.gif", false, function(e) {e.execCommand("justifyright");} ],
-		justifyfull: [ "Justify Full", "ed_align_justify.gif", false, function(e) {e.execCommand("justifyfull");} ],
-		insertorderedlist: [ "Ordered List", "ed_list_num.gif", false, function(e) {e.execCommand("insertorderedlist");} ],
-		insertunorderedlist: [ "Bulleted List", "ed_list_bullet.gif", false, function(e) {e.execCommand("insertunorderedlist");} ],
-		outdent: [ "Decrease Indent", "ed_indent_less.gif", false, function(e) {e.execCommand("outdent");} ],
-		indent: [ "Increase Indent", "ed_indent_more.gif", false, function(e) {e.execCommand("indent");} ],
-		forecolor: [ "Font Color", "ed_color_fg.gif", false, function(e) {e.execCommand("forecolor");} ],
-		hilitecolor: [ "Background Color", "ed_color_bg.gif", false, function(e) {e.execCommand("hilitecolor");} ],
-		inserthorizontalrule: [ "Horizontal Rule", "ed_hr.gif", false, function(e) {e.execCommand("inserthorizontalrule");} ],
-		createlink: [ "Insert Web Link", "ed_link.gif", false, function(e) {e.execCommand("createlink", true);} ],
-		insertimage: [ "Insert/Modify Image", "ed_image.gif", false, function(e) {e.execCommand("insertimage");} ],
-		inserttable: [ "Insert Table", "insert_table.gif", false, function(e) {e.execCommand("inserttable");} ],
-		htmlmode: [ "Toggle HTML Source", "ed_html.gif", true, function(e) {e.execCommand("htmlmode");} ],
-		popupeditor: [ "Enlarge Editor", "fullscreen_maximize.gif", true, function(e) {e.execCommand("popupeditor");} ],
-		about: [ "About this editor", "ed_about.gif", true, function(e) {e.execCommand("about");} ],
-		showhelp: [ "Help using editor", "ed_help.gif", true, function(e) {e.execCommand("showhelp");} ],
-		undo: [ "Undoes your last action", "ed_undo.gif", false, function(e) {e.execCommand("undo");} ],
-		redo: [ "Redoes your last action", "ed_redo.gif", false, function(e) {e.execCommand("redo");} ],
-		cut: [ "Cut selection", "ed_cut.gif", false, cut_copy_paste ],
-		copy: [ "Copy selection", "ed_copy.gif", false, cut_copy_paste ],
-		paste: [ "Paste from clipboard", "ed_paste.gif", false, cut_copy_paste ],
-		lefttoright: [ "Direction left to right", "ed_left_to_right.gif", false, function(e) {e.execCommand("lefttoright");} ],
-		righttoleft: [ "Direction right to left", "ed_right_to_left.gif", false, function(e) {e.execCommand("righttoleft");} ]
-	};
-	/* ADDING CUSTOM BUTTONS
-	 * ---------------------
-	 *
-	 * It is recommended that you add the custom buttons in an external
-	 * file and leave this one unchanged.  That's because when we
-	 * (InteractiveTools.com) release a new official version, it's less
-	 * likely that you will have problems upgrading HTMLArea.
-	 *
-	 * Example on how to add a custom button when you construct the HTMLArea:
-	 *
-	 *   var editor = new HTMLArea("your_text_area_id");
-	 *   var cfg = editor.config; // this is the default configuration
-	 *   cfg.btnList["my-hilite"] =
-	 *	[ function(editor) { editor.surroundHTML('<span style="background:yellow">', '</span>'); }, // action
-	 *	  "Highlight selection", // tooltip
-	 *	  "my_hilite.gif", // image
-	 *	  false // disabled in text mode
-	 *	];
-	 *   cfg.toolbar.push(["linebreak", "my-hilite"]); // add the new button to the toolbar
-	 *
-	 * An alternate (also more convenient and recommended) way to
-	 * accomplish this is to use the registerButton function below.
-	 */
-	// initialize tooltips from the I18N module and generate correct image path
-	for (var i in this.btnList) {
-		var btn = this.btnList[i];
-		btn[1] = _editor_url + this.imgURL + btn[1];
-		if (typeof HTMLArea.I18N.tooltips[i] != "undefined") {
-			btn[0] = HTMLArea.I18N.tooltips[i];
-		}
-	}
-};
-
-/** Helper function: register a new button with the configuration.  It can be
- * called with all 5 arguments, or with only one (first one).  When called with
- * only one argument it must be an object with the following properties: id,
- * tooltip, image, textMode, action.  Examples:
- *
- * 1. config.registerButton("my-hilite", "Hilite text", "my-hilite.gif", false, function(editor) {...});
- * 2. config.registerButton({
- *      id       : "my-hilite",      // the ID of your button
- *      tooltip  : "Hilite text",    // the tooltip
- *      image    : "my-hilite.gif",  // image to be displayed in the toolbar
- *      textMode : false,            // disabled in text mode
- *      action   : function(editor) { // called when the button is clicked
- *                   editor.surroundHTML('<span class="hilite">', '</span>');
- *                 },
- *      context  : "p"               // will be disabled if outside a <p> element
- *    });
- */
-HTMLArea.Config.prototype.registerButton = function(id, tooltip, image, textMode, action, context) {
-	var the_id;
-	if (typeof id == "string") {
-		the_id = id;
-	} else if (typeof id == "object") {
-		the_id = id.id;
-	} else {
-		alert("ERROR [HTMLArea.Config::registerButton]:\ninvalid arguments");
-		return false;
-	}
-	// check for existing id
-	if (typeof this.customSelects[the_id] != "undefined") {
-		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists.");
-	}
-	if (typeof this.btnList[the_id] != "undefined") {
-		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists.");
-	}
-	switch (typeof id) {
-	    case "string": this.btnList[id] = [ tooltip, image, textMode, action, context ]; break;
-	    case "object": this.btnList[id.id] = [ id.tooltip, id.image, id.textMode, id.action, id.context ]; break;
-	}
-};
-
-/** The following helper function registers a dropdown box with the editor
- * configuration.  You still have to add it to the toolbar, same as with the
- * buttons.  Call it like this:
- *
- * FIXME: add example
- */
-HTMLArea.Config.prototype.registerDropdown = function(object) {
-	// check for existing id
-	if (typeof this.customSelects[object.id] != "undefined") {
-		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists.");
-	}
-	if (typeof this.btnList[object.id] != "undefined") {
-		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists.");
-	}
-	this.customSelects[object.id] = object;
-};
-
-/** Call this function to remove some buttons/drop-down boxes from the toolbar.
- * Pass as the only parameter a string containing button/drop-down names
- * delimited by spaces.  Note that the string should also begin with a space
- * and end with a space.  Example:
- *
- *   config.hideSomeButtons(" fontname fontsize textindicator ");
- *
- * It's useful because it's easier to remove stuff from the defaul toolbar than
- * create a brand new toolbar ;-)
- */
-HTMLArea.Config.prototype.hideSomeButtons = function(remove) {
-	var toolbar = this.toolbar;
-	for (var i in toolbar) {
-		var line = toolbar[i];
-		for (var j = line.length; --j >= 0; ) {
-			if (remove.indexOf(" " + line[j] + " ") >= 0) {
-				var len = 1;
-				if (/separator|space/.test(line[j + 1])) {
-					len = 2;
-				}
-				line.splice(j, len);
-			}
-		}
-	}
-};
-
-/** Helper function: replace all TEXTAREA-s in the document with HTMLArea-s. */
-HTMLArea.replaceAll = function(config) {
-	var tas = document.getElementsByTagName("textarea");
-	for (var i = tas.length; i > 0; (new HTMLArea(tas[--i], config)).generate());
-};
-
-/** Helper function: replaces the TEXTAREA with the given ID with HTMLArea. */
-HTMLArea.replace = function(id, config) {
-	var ta = HTMLArea.getElementById("textarea", id);
-	return ta ? (new HTMLArea(ta, config)).generate() : null;
-};
-
-// Creates the toolbar and appends it to the _htmlarea
-HTMLArea.prototype._createToolbar = function () {
-	var editor = this;	// to access this in nested functions
-
-	var toolbar = document.createElement("div");
-	this._toolbar = toolbar;
-	toolbar.className = "toolbar";
-	toolbar.unselectable = "1";
-	var tb_row = null;
-	var tb_objects = new Object();
-	this._toolbarObjects = tb_objects;
-
-	// creates a new line in the toolbar
-	function newLine() {
-		var table = document.createElement("table");
-		table.border = "0px";
-		table.cellSpacing = "0px";
-		table.cellPadding = "0px";
-		toolbar.appendChild(table);
-		// TBODY is required for IE, otherwise you don't see anything
-		// in the TABLE.
-		var tb_body = document.createElement("tbody");
-		table.appendChild(tb_body);
-		tb_row = document.createElement("tr");
-		tb_body.appendChild(tb_row);
-	}; // END of function: newLine
-	// init first line
-	newLine();
-
-	// updates the state of a toolbar element.  This function is member of
-	// a toolbar element object (unnamed objects created by createButton or
-	// createSelect functions below).
-	function setButtonStatus(id, newval) {
-		var oldval = this[id];
-		var el = this.element;
-		if (oldval != newval) {
-			switch (id) {
-			    case "enabled":
-				if (newval) {
-					HTMLArea._removeClass(el, "buttonDisabled");
-					el.disabled = false;
-				} else {
-					HTMLArea._addClass(el, "buttonDisabled");
-					el.disabled = true;
-				}
-				break;
-			    case "active":
-				if (newval) {
-					HTMLArea._addClass(el, "buttonPressed");
-				} else {
-					HTMLArea._removeClass(el, "buttonPressed");
-				}
-				break;
-			}
-			this[id] = newval;
-		}
-	}; // END of function: setButtonStatus
-
-	// this function will handle creation of combo boxes.  Receives as
-	// parameter the name of a button as defined in the toolBar config.
-	// This function is called from createButton, above, if the given "txt"
-	// doesn't match a button.
-	function createSelect(txt) {
-		var options = null;
-		var el = null;
-		var cmd = null;
-		var customSelects = editor.config.customSelects;
-		var context = null;
-		switch (txt) {
-		    case "fontsize":
-		    case "fontname":
-		    case "formatblock":
-			// the following line retrieves the correct
-			// configuration option because the variable name
-			// inside the Config object is named the same as the
-			// button/select in the toolbar.  For instance, if txt
-			// == "formatblock" we retrieve config.formatblock (or
-			// a different way to write it in JS is
-			// config["formatblock"].
-			options = editor.config[txt];
-			cmd = txt;
-			break;
-		    default:
-			// try to fetch it from the list of registered selects
-			cmd = txt;
-			var dropdown = customSelects[cmd];
-			if (typeof dropdown != "undefined") {
-				options = dropdown.options;
-				context = dropdown.context;
-			} else {
-				alert("ERROR [createSelect]:\nCan't find the requested dropdown definition");
-			}
-			break;
-		}
-		if (options) {
-			el = document.createElement("select");
-			var obj = {
-				name	: txt, // field name
-				element : el,	// the UI element (SELECT)
-				enabled : true, // is it enabled?
-				text	: false, // enabled in text mode?
-				cmd	: cmd, // command ID
-				state	: setButtonStatus, // for changing state
-				context : context
-			};
-			tb_objects[txt] = obj;
-			for (var i in options) {
-				var op = document.createElement("option");
-				op.appendChild(document.createTextNode(i));
-				op.value = options[i];
-				el.appendChild(op);
-			}
-			HTMLArea._addEvent(el, "change", function () {
-				editor._comboSelected(el, txt);
-			});
-		}
-		return el;
-	}; // END of function: createSelect
-
-	// appends a new button to toolbar
-	function createButton(txt) {
-		// the element that will be created
-		var el = null;
-		var btn = null;
-		switch (txt) {
-		    case "separator":
-			el = document.createElement("div");
-			el.className = "separator";
-			break;
-		    case "space":
-			el = document.createElement("div");
-			el.className = "space";
-			break;
-		    case "linebreak":
-			newLine();
-			return false;
-		    case "textindicator":
-			el = document.createElement("div");
-			el.appendChild(document.createTextNode("A"));
-			el.className = "indicator";
-			el.title = HTMLArea.I18N.tooltips.textindicator;
-			var obj = {
-				name	: txt, // the button name (i.e. 'bold')
-				element : el, // the UI element (DIV)
-				enabled : true, // is it enabled?
-				active	: false, // is it pressed?
-				text	: false, // enabled in text mode?
-				cmd	: "textindicator", // the command ID
-				state	: setButtonStatus // for changing state
-			};
-			tb_objects[txt] = obj;
-			break;
-		    default:
-			btn = editor.config.btnList[txt];
-		}
-		if (!el && btn) {
-			el = document.createElement("div");
-			el.title = btn[0];
-			el.className = "button";
-			// let's just pretend we have a button object, and
-			// assign all the needed information to it.
-			var obj = {
-				name	: txt, // the button name (i.e. 'bold')
-				element : el, // the UI element (DIV)
-				enabled : true, // is it enabled?
-				active	: false, // is it pressed?
-				text	: btn[2], // enabled in text mode?
-				cmd	: btn[3], // the command ID
-				state	: setButtonStatus, // for changing state
-				context : btn[4] || null // enabled in a certain context?
-			};
-			tb_objects[txt] = obj;
-			// handlers to emulate nice flat toolbar buttons
-			HTMLArea._addEvent(el, "mouseover", function () {
-				if (obj.enabled) {
-					HTMLArea._addClass(el, "buttonHover");
-				}
-			});
-			HTMLArea._addEvent(el, "mouseout", function () {
-				if (obj.enabled) with (HTMLArea) {
-					_removeClass(el, "buttonHover");
-					_removeClass(el, "buttonActive");
-					(obj.active) && _addClass(el, "buttonPressed");
-				}
-			});
-			HTMLArea._addEvent(el, "mousedown", function (ev) {
-				if (obj.enabled) with (HTMLArea) {
-					_addClass(el, "buttonActive");
-					_removeClass(el, "buttonPressed");
-					_stopEvent(is_ie ? window.event : ev);
-				}
-			});
-			// when clicked, do the following:
-			HTMLArea._addEvent(el, "click", function (ev) {
-				if (obj.enabled) with (HTMLArea) {
-					_removeClass(el, "buttonActive");
-					_removeClass(el, "buttonHover");
-					obj.cmd(editor, obj.name, obj);
-					_stopEvent(is_ie ? window.event : ev);
-				}
-			});
-			var img = document.createElement("img");
-			img.src = btn[1];
-			img.style.width = "18px";
-			img.style.height = "18px";
-			el.appendChild(img);
-		} else if (!el) {
-			el = createSelect(txt);
-		}
-		if (el) {
-			var tb_cell = document.createElement("td");
-			tb_row.appendChild(tb_cell);
-			tb_cell.appendChild(el);
-		} else {
-			alert("FIXME: Unknown toolbar item: " + txt);
-		}
-		return el;
-	};
-
-	var first = true;
-	for (var i in this.config.toolbar) {
-		if (!first) {
-			createButton("linebreak");
-		} else {
-			first = false;
-		}
-		var group = this.config.toolbar[i];
-		for (var j in group) {
-			var code = group[j];
-			if (/^([IT])\[(.*?)\]/.test(code)) {
-				// special case, create text label
-				var l7ed = RegExp.$1 == "I"; // localized?
-				var label = RegExp.$2;
-				if (l7ed) {
-					label = HTMLArea.I18N.custom[label];
-				}
-				var tb_cell = document.createElement("td");
-				tb_row.appendChild(tb_cell);
-				tb_cell.className = "label";
-				tb_cell.innerHTML = label;
-			} else {
-				createButton(code);
-			}
-		}
-	}
-
-	this._htmlArea.appendChild(toolbar);
-};
-
-HTMLArea.prototype._createStatusBar = function() {
-	var statusbar = document.createElement("div");
-	statusbar.className = "statusBar";
-	this._htmlArea.appendChild(statusbar);
-	this._statusBar = statusbar;
-	// statusbar.appendChild(document.createTextNode(HTMLArea.I18N.msg["Path"] + ": "));
-	// creates a holder for the path view
-	div = document.createElement("span");
-	div.className = "statusBarTree";
-	div.innerHTML = HTMLArea.I18N.msg["Path"] + ": ";
-	this._statusBarTree = div;
-	this._statusBar.appendChild(div);
-	if (!this.config.statusBar) {
-		// disable it...
-		statusbar.style.display = "none";
-	}
-};
-
-// Creates the HTMLArea object and replaces the textarea with it.
-HTMLArea.prototype.generate = function () {
-	var editor = this;	// we'll need "this" in some nested functions
-	// get the textarea
-	var textarea = this._textArea;
-	if (typeof textarea == "string") {
-		// it's not element but ID
-		this._textArea = textarea = HTMLArea.getElementById("textarea", textarea);
-	}
-	this._ta_size = {
-		w: textarea.offsetWidth,
-		h: textarea.offsetHeight
-	};
-	textarea.style.display = "none";
-
-	// create the editor framework
-	var htmlarea = document.createElement("div");
-	htmlarea.className = "htmlarea";
-	this._htmlArea = htmlarea;
-
-	// insert the editor before the textarea.
-	textarea.parentNode.insertBefore(htmlarea, textarea);
-
-	if (textarea.form) {
-		// we have a form, on submit get the HTMLArea content and
-		// update original textarea.
-		var f = textarea.form;
-		if (typeof f.onsubmit == "function") {
-			var funcref = f.onsubmit;
-			if (typeof f.__msh_prevOnSubmit == "undefined") {
-				f.__msh_prevOnSubmit = [];
-			}
-			f.__msh_prevOnSubmit.push(funcref);
-		}
-		f.onsubmit = function() {
-			editor._textArea.value = editor.getHTML();
-			var a = this.__msh_prevOnSubmit;
-			// call previous submit methods if they were there.
-			if (typeof a != "undefined") {
-				for (var i in a) {
-					a[i]();
-				}
-			}
-		};
-	}
-
-	// add a handler for the "back/forward" case -- on body.unload we save
-	// the HTML content into the original textarea.
-	window.onunload = function() {
-		editor._textArea.value = editor.getHTML();
-	};
-
-	// creates & appends the toolbar
-	this._createToolbar();
-
-	// create the IFRAME
-	var iframe = document.createElement("iframe");
-	htmlarea.appendChild(iframe);
-
-	this._iframe = iframe;
-
-	// creates & appends the status bar, if the case
-	this._createStatusBar();
-
-	// remove the default border as it keeps us from computing correctly
-	// the sizes.  (somebody tell me why doesn't this work in IE)
-
-	if (!HTMLArea.is_ie) {
-		iframe.style.borderWidth = "1px";
-	// iframe.frameBorder = "1";
-	// iframe.marginHeight = "0";
-	// iframe.marginWidth = "0";
-	}
-
-	// size the IFRAME according to user's prefs or initial textarea
-	var height = (this.config.height == "auto" ? (this._ta_size.h + "px") : this.config.height);
-	height = parseInt(height);
-	var width = (this.config.width == "auto" ? (this._ta_size.w + "px") : this.config.width);
-	width = parseInt(width);
-
-	if (!HTMLArea.is_ie) {
-		height -= 2;
-		width -= 2;
-	}
-
-	iframe.style.width = width + "px";
-	if (this.config.sizeIncludesToolbar) {
-		// substract toolbar height
-		height -= this._toolbar.offsetHeight;
-		height -= this._statusBar.offsetHeight;
-	}
-	if (height < 0) {
-		height = 0;
-	}
-	iframe.style.height = height + "px";
-
-	// the editor including the toolbar now have the same size as the
-	// original textarea.. which means that we need to reduce that a bit.
-	textarea.style.width = iframe.style.width;
- 	textarea.style.height = iframe.style.height;
-
-	// IMPORTANT: we have to allow Mozilla a short time to recognize the
-	// new frame.  Otherwise we get a stupid exception.
-	function initIframe() {
-		var doc = editor._iframe.contentWindow.document;
-		if (!doc) {
-			// Try again..
-			// FIXME: don't know what else to do here.  Normally
-			// we'll never reach this point.
-			if (HTMLArea.is_gecko) {
-				setTimeout(initIframe, 100);
-				return false;
-			} else {
-				alert("ERROR: IFRAME can't be initialized.");
-			}
-		}
-		if (HTMLArea.is_gecko) {
-			// enable editable mode for Mozilla
-			doc.designMode = "on";
-		}
-		editor._doc = doc;
-		if (!editor.config.fullPage) {
-			doc.open();
-			var html = "<html>\n";
-			html += "<head>\n";
-			if (editor.config.baseURL)
-				html += '<base href="' + editor.config.baseURL + '" />';
-			html += "<style> html,body { border: 0px; } " +
-				editor.config.pageStyle + "</style>\n";
-			html += "</head>\n";
-			html += "<body>\n";
-			html += editor._textArea.value;
-			html += "</body>\n";
-			html += "</html>";
-			doc.write(html);
-			doc.close();
-		} else {
-			var html = editor._textArea.value;
-			if (html.match(HTMLArea.RE_doctype)) {
-				editor.setDoctype(RegExp.$1);
-				html = html.replace(HTMLArea.RE_doctype, "");
-			}
-			doc.open();
-			doc.write(html);
-			doc.close();
-		}
-
-		if (HTMLArea.is_ie) {
-			// enable editable mode for IE.	 For some reason this
-			// doesn't work if done in the same place as for Gecko
-			// (above).
-			doc.body.contentEditable = true;
-		}
-
-		editor.focusEditor();
-		// intercept some events; for updating the toolbar & keyboard handlers
-		HTMLArea._addEvents
-			(doc, ["keydown", "keypress", "mousedown", "mouseup", "drag"],
-			 function (event) {
-				 return editor._editorEvent(HTMLArea.is_ie ? editor._iframe.contentWindow.event : event);
-			 });
-
-		// check if any plugins have registered refresh handlers
-		for (var i in editor.plugins) {
-			var plugin = editor.plugins[i].instance;
-			if (typeof plugin.onGenerate == "function")
-				plugin.onGenerate();
-		}
-
-		setTimeout(function() {
-			editor.updateToolbar();
-		}, 250);
-
-		if (typeof editor.onGenerate == "function")
-			editor.onGenerate();
-	};
-	setTimeout(initIframe, 100);
-};
-
-// Switches editor mode; parameter can be "textmode" or "wysiwyg".  If no
-// parameter was passed this function toggles between modes.
-HTMLArea.prototype.setMode = function(mode) {
-	if (typeof mode == "undefined") {
-		mode = ((this._editMode == "textmode") ? "wysiwyg" : "textmode");
-	}
-	switch (mode) {
-	    case "textmode":
-		this._textArea.value = this.getHTML();
-		this._iframe.style.display = "none";
-		this._textArea.style.display = "block";
-		if (this.config.statusBar) {
-			this._statusBar.innerHTML = HTMLArea.I18N.msg["TEXT_MODE"];
-		}
-		break;
-	    case "wysiwyg":
-		if (HTMLArea.is_gecko) {
-			// disable design mode before changing innerHTML
-			try {
-				this._doc.designMode = "off";
-			} catch(e) {};
-		}
-		if (!this.config.fullPage)
-			this._doc.body.innerHTML = this.getHTML();
-		else
-			this.setFullHTML(this.getHTML());
-		this._iframe.style.display = "block";
-		this._textArea.style.display = "none";
-		if (HTMLArea.is_gecko) {
-			// we need to refresh that info for Moz-1.3a
-			try {
-				this._doc.designMode = "on";
-			} catch(e) {};
-		}
-		if (this.config.statusBar) {
-			this._statusBar.innerHTML = '';
-			this._statusBar.appendChild(document.createTextNode(HTMLArea.I18N.msg["Path"] + ": "));
-			this._statusBar.appendChild(this._statusBarTree);
-		}
-		break;
-	    default:
-		alert("Mode <" + mode + "> not defined!");
-		return false;
-	}
-	this._editMode = mode;
-	this.focusEditor();
-};
-
-HTMLArea.prototype.setFullHTML = function(html) {
-	var save_multiline = RegExp.multiline;
-	RegExp.multiline = true;
-	if (html.match(HTMLArea.RE_doctype)) {
-		this.setDoctype(RegExp.$1);
-		html = html.replace(HTMLArea.RE_doctype, "");
-	}
-	RegExp.multiline = save_multiline;
-	if (!HTMLArea.is_ie) {
-		if (html.match(HTMLArea.RE_head))
-			this._doc.getElementsByTagName("head")[0].innerHTML = RegExp.$1;
-		if (html.match(HTMLArea.RE_body))
-			this._doc.getElementsByTagName("body")[0].innerHTML = RegExp.$1;
-	} else {
-		var html_re = /<html>((.|\n)*?)<\/html>/i;
-		html = html.replace(html_re, "$1");
-		this._doc.open();
-		this._doc.write(html);
-		this._doc.close();
-		this._doc.body.contentEditable = true;
-		return true;
-	}
-};
-
-/***************************************************
- *  Category: PLUGINS
- ***************************************************/
-
-// this is the variant of the function above where the plugin arguments are
-// already packed in an array.  Externally, it should be only used in the
-// full-screen editor code, in order to initialize plugins with the same
-// parameters as in the opener window.
-HTMLArea.prototype.registerPlugin2 = function(plugin, args) {
-	if (typeof plugin == "string")
-		plugin = eval(plugin);
-	var obj = new plugin(this, args);
-	if (obj) {
-		var clone = {};
-		var info = plugin._pluginInfo;
-		for (var i in info)
-			clone[i] = info[i];
-		clone.instance = obj;
-		clone.args = args;
-		this.plugins[plugin._pluginInfo.name] = clone;
-	} else
-		alert("Can't register plugin " + plugin.toString() + ".");
-};
-
-// Create the specified plugin and register it with this HTMLArea
-HTMLArea.prototype.registerPlugin = function() {
-	var plugin = arguments[0];
-	var args = [];
-	for (var i = 1; i < arguments.length; ++i)
-		args.push(arguments[i]);
-	this.registerPlugin2(plugin, args);
-};
-
-// static function that loads the required plugin and lang file, based on the
-// language loaded already for HTMLArea.  You better make sure that the plugin
-// _has_ that language, otherwise shit might happen ;-)
-HTMLArea.loadPlugin = function(pluginName) {
-	var dir = _editor_url + "plugins/" + pluginName;
-	var plugin = pluginName.replace(/([a-z])([A-Z])([a-z])/g,
-					function (str, l1, l2, l3) {
-						return l1 + "-" + l2.toLowerCase() + l3;
-					}).toLowerCase() + ".js";
-	var plugin_file = dir + "/" + plugin;
-	var plugin_lang = dir + "/lang/" + HTMLArea.I18N.lang + ".js";
-	HTMLArea._scripts.push(plugin_file, plugin_lang);
-	document.write("<script type='text/javascript' src='" + plugin_file + "'></script>");
-	document.write("<script type='text/javascript' src='" + plugin_lang + "'></script>");
-};
-
-HTMLArea.loadStyle = function(style, plugin) {
-	var url = _editor_url || '';
-	if (typeof plugin != "undefined") {
-		url += "plugins/" + plugin + "/";
-	}
-	url += style;
-	document.write("<style type='text/css'>@import url(" + url + ");</style>");
-};
-HTMLArea.loadStyle("htmlarea.css");
-
-/***************************************************
- *  Category: EDITOR UTILITIES
- ***************************************************/
-
-// The following function is a slight variation of the word cleaner code posted
-// by Weeezl (user @ InteractiveTools forums).
-HTMLArea.prototype._wordClean = function() {
-	var D = this.getInnerHTML();
-	if (D.indexOf('class=Mso') >= 0) {
-
-		// make one line
-		D = D.replace(/\r\n/g, ' ').
-			replace(/\n/g, ' ').
-			replace(/\r/g, ' ').
-			replace(/\&nbsp\;/g,' ');
-
-		// keep tags, strip attributes
-		D = D.replace(/ class=[^\s|>]*/gi,'').
-			//replace(/<p [^>]*TEXT-ALIGN: justify[^>]*>/gi,'<p align="justify">').
-			replace(/ style=\"[^>]*\"/gi,'').
-			replace(/ align=[^\s|>]*/gi,'');
-
-		//clean up tags
-		D = D.replace(/<b [^>]*>/gi,'<b>').
-			replace(/<i [^>]*>/gi,'<i>').
-			replace(/<li [^>]*>/gi,'<li>').
-			replace(/<ul [^>]*>/gi,'<ul>');
-
-		// replace outdated tags
-		D = D.replace(/<b>/gi,'<strong>').
-			replace(/<\/b>/gi,'</strong>');
-
-		// mozilla doesn't like <em> tags
-		D = D.replace(/<em>/gi,'<i>').
-			replace(/<\/em>/gi,'</i>');
-
-		// kill unwanted tags
-		D = D.replace(/<\?xml:[^>]*>/g, '').       // Word xml
-			replace(/<\/?st1:[^>]*>/g,'').     // Word SmartTags
-			replace(/<\/?[a-z]\:[^>]*>/g,'').  // All other funny Word non-HTML stuff
-			replace(/<\/?font[^>]*>/gi,'').    // Disable if you want to keep font formatting
-			replace(/<\/?span[^>]*>/gi,' ').
-			replace(/<\/?div[^>]*>/gi,' ').
-			replace(/<\/?pre[^>]*>/gi,' ').
-			replace(/<\/?h[1-6][^>]*>/gi,' ');
-
-		//remove empty tags
-		//D = D.replace(/<strong><\/strong>/gi,'').
-		//replace(/<i><\/i>/gi,'').
-		//replace(/<P[^>]*><\/P>/gi,'');
-
-		// nuke double tags
-		oldlen = D.length + 1;
-		while(oldlen > D.length) {
-			oldlen = D.length;
-			// join us now and free the tags, we'll be free hackers, we'll be free... ;-)
-			D = D.replace(/<([a-z][a-z]*)> *<\/\1>/gi,' ').
-				replace(/<([a-z][a-z]*)> *<([a-z][^>]*)> *<\/\1>/gi,'<$2>');
-		}
-		D = D.replace(/<([a-z][a-z]*)><\1>/gi,'<$1>').
-			replace(/<\/([a-z][a-z]*)><\/\1>/gi,'<\/$1>');
-
-		// nuke double spaces
-		D = D.replace(/  */gi,' ');
-
-		this.setHTML(D);
-		this.updateToolbar();
-	}
-};
-
-HTMLArea.prototype.forceRedraw = function() {
-	this._doc.body.style.visibility = "hidden";
-	this._doc.body.style.visibility = "visible";
-	// this._doc.body.innerHTML = this.getInnerHTML();
-};
-
-// focuses the iframe window.  returns a reference to the editor document.
-HTMLArea.prototype.focusEditor = function() {
-	switch (this._editMode) {
-	    case "wysiwyg" : this._iframe.contentWindow.focus(); break;
-	    case "textmode": this._textArea.focus(); break;
-	    default	   : alert("ERROR: mode " + this._editMode + " is not defined");
-	}
-	return this._doc;
-};
-
-// takes a snapshot of the current text (for undo)
-HTMLArea.prototype._undoTakeSnapshot = function() {
-	++this._undoPos;
-	if (this._undoPos >= this.config.undoSteps) {
-		// remove the first element
-		this._undoQueue.shift();
-		--this._undoPos;
-	}
-	// use the fasted method (getInnerHTML);
-	var take = true;
-	var txt = this.getInnerHTML();
-	if (this._undoPos > 0)
-		take = (this._undoQueue[this._undoPos - 1] != txt);
-	if (take) {
-		this._undoQueue[this._undoPos] = txt;
-	} else {
-		this._undoPos--;
-	}
-};
-
-HTMLArea.prototype.undo = function() {
-	if (this._undoPos > 0) {
-		var txt = this._undoQueue[--this._undoPos];
-		if (txt) this.setHTML(txt);
-		else ++this._undoPos;
-	}
-};
-
-HTMLArea.prototype.redo = function() {
-	if (this._undoPos < this._undoQueue.length - 1) {
-		var txt = this._undoQueue[++this._undoPos];
-		if (txt) this.setHTML(txt);
-		else --this._undoPos;
-	}
-};
-
-// updates enabled/disable/active state of the toolbar elements
-HTMLArea.prototype.updateToolbar = function(noStatus) {
-	var doc = this._doc;
-	var text = (this._editMode == "textmode");
-	var ancestors = null;
-	if (!text) {
-		ancestors = this.getAllAncestors();
-		if (this.config.statusBar && !noStatus) {
-			this._statusBarTree.innerHTML = HTMLArea.I18N.msg["Path"] + ": "; // clear
-			for (var i = ancestors.length; --i >= 0;) {
-				var el = ancestors[i];
-				if (!el) {
-					// hell knows why we get here; this
-					// could be a classic example of why
-					// it's good to check for conditions
-					// that are impossible to happen ;-)
-					continue;
-				}
-				var a = document.createElement("a");
-				a.href = "#";
-				a.el = el;
-				a.editor = this;
-				a.onclick = function() {
-					this.blur();
-					this.editor.selectNodeContents(this.el);
-					this.editor.updateToolbar(true);
-					return false;
-				};
-				a.oncontextmenu = function() {
-					// TODO: add context menu here
-					this.blur();
-					var info = "Inline style:\n\n";
-					info += this.el.style.cssText.split(/;\s*/).join(";\n");
-					alert(info);
-					return false;
-				};
-				var txt = el.tagName.toLowerCase();
-				a.title = el.style.cssText;
-				if (el.id) {
-					txt += "#" + el.id;
-				}
-				if (el.className) {
-					txt += "." + el.className;
-				}
-				a.appendChild(document.createTextNode(txt));
-				this._statusBarTree.appendChild(a);
-				if (i != 0) {
-					this._statusBarTree.appendChild(document.createTextNode(String.fromCharCode(0xbb)));
-				}
-			}
-		}
-	}
-	for (var i in this._toolbarObjects) {
-		var btn = this._toolbarObjects[i];
-		var cmd = i;
-		var inContext = true;
-		if (btn.context && !text) {
-			inContext = false;
-			var context = btn.context;
-			var attrs = [];
-			if (/(.*)\[(.*?)\]/.test(context)) {
-				context = RegExp.$1;
-				attrs = RegExp.$2.split(",");
-			}
-			context = context.toLowerCase();
-			var match = (context == "*");
-			for (var k in ancestors) {
-				if (!ancestors[k]) {
-					// the impossible really happens.
-					continue;
-				}
-				if (match || (ancestors[k].tagName.toLowerCase() == context)) {
-					inContext = true;
-					for (var ka in attrs) {
-						if (!eval("ancestors[k]." + attrs[ka])) {
-							inContext = false;
-							break;
-						}
-					}
-					if (inContext) {
-						break;
-					}
-				}
-			}
-		}
-		btn.state("enabled", (!text || btn.text) && inContext);
-		if (typeof cmd == "function") {
-			continue;
-		}
-		// look-it-up in the custom dropdown boxes
-		var dropdown = this.config.customSelects[cmd];
-		if ((!text || btn.text) && (typeof dropdown != "undefined")) {
-			dropdown.refresh(this);
-			continue;
-		}
-		switch (cmd) {
-		    case "fontname":
-		    case "fontsize":
-		    case "formatblock":
-			if (!text) try {
-				var value = ("" + doc.queryCommandValue(cmd)).toLowerCase();
-				if (!value) {
-					// FIXME: what do we do here?
-					break;
-				}
-				// HACK -- retrieve the config option for this
-				// combo box.  We rely on the fact that the
-				// variable in config has the same name as
-				// button name in the toolbar.
-				var options = this.config[cmd];
-				var k = 0;
-				// btn.element.selectedIndex = 0;
-				for (var j in options) {
-					// FIXME: the following line is scary.
-					if ((j.toLowerCase() == value) ||
-					    (options[j].substr(0, value.length).toLowerCase() == value)) {
-						btn.element.selectedIndex = k;
-						break;
-					}
-					++k;
-				}
-			} catch(e) {};
-			break;
-		    case "textindicator":
-			if (!text) {
-				try {with (btn.element.style) {
-					backgroundColor = HTMLArea._makeColor(
-						doc.queryCommandValue(HTMLArea.is_ie ? "backcolor" : "hilitecolor"));
-					if (/transparent/i.test(backgroundColor)) {
-						// Mozilla
-						backgroundColor = HTMLArea._makeColor(doc.queryCommandValue("backcolor"));
-					}
-					color = HTMLArea._makeColor(doc.queryCommandValue("forecolor"));
-					fontFamily = doc.queryCommandValue("fontname");
-					fontWeight = doc.queryCommandState("bold") ? "bold" : "normal";
-					fontStyle = doc.queryCommandState("italic") ? "italic" : "normal";
-				}} catch (e) {
-					// alert(e + "\n\n" + cmd);
-				}
-			}
-			break;
-		    case "htmlmode": btn.state("active", text); break;
-		    case "lefttoright":
-		    case "righttoleft":
-			var el = this.getParentElement();
-			while (el && !HTMLArea.isBlockElement(el))
-				el = el.parentNode;
-			if (el)
-				btn.state("active", (el.style.direction == ((cmd == "righttoleft") ? "rtl" : "ltr")));
-			break;
-		    default:
-			try {
-				btn.state("active", (!text && doc.queryCommandState(cmd)));
-			} catch (e) {}
-		}
-	}
-	// take undo snapshots
-	if (this._customUndo && !this._timerUndo) {
-		this._undoTakeSnapshot();
-		var editor = this;
-		this._timerUndo = setTimeout(function() {
-			editor._timerUndo = null;
-		}, this.config.undoTimeout);
-	}
-	// check if any plugins have registered refresh handlers
-	for (var i in this.plugins) {
-		var plugin = this.plugins[i].instance;
-		if (typeof plugin.onUpdateToolbar == "function")
-			plugin.onUpdateToolbar();
-	}
-};
-
-/** Returns a node after which we can insert other nodes, in the current
- * selection.  The selection is removed.  It splits a text node, if needed.
- */
-HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) {
-	if (!HTMLArea.is_ie) {
-		var sel = this._getSelection();
-		var range = this._createRange(sel);
-		// remove the current selection
-		sel.removeAllRanges();
-		range.deleteContents();
-		var node = range.startContainer;
-		var pos = range.startOffset;
-		switch (node.nodeType) {
-		    case 3: // Node.TEXT_NODE
-			// we have to split it at the caret position.
-			if (toBeInserted.nodeType == 3) {
-				// do optimized insertion
-				node.insertData(pos, toBeInserted.data);
-				range = this._createRange();
-				range.setEnd(node, pos + toBeInserted.length);
-				range.setStart(node, pos + toBeInserted.length);
-				sel.addRange(range);
-			} else {
-				node = node.splitText(pos);
-				var selnode = toBeInserted;
-				if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) {
-					selnode = selnode.firstChild;
-				}
-				node.parentNode.insertBefore(toBeInserted, node);
-				this.selectNodeContents(selnode);
-				this.updateToolbar();
-			}
-			break;
-		    case 1: // Node.ELEMENT_NODE
-			var selnode = toBeInserted;
-			if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) {
-				selnode = selnode.firstChild;
-			}
-			node.insertBefore(toBeInserted, node.childNodes[pos]);
-			this.selectNodeContents(selnode);
-			this.updateToolbar();
-			break;
-		}
-	} else {
-		return null;	// this function not yet used for IE <FIXME>
-	}
-};
-
-// Returns the deepest node that contains both endpoints of the selection.
-HTMLArea.prototype.getParentElement = function() {
-	var sel = this._getSelection();
-	var range = this._createRange(sel);
-	if (HTMLArea.is_ie) {
-		switch (sel.type) {
-		    case "Text":
-		    case "None":
-			// It seems that even for selection of type "None",
-			// there _is_ a parent element and it's value is not
-			// only correct, but very important to us.  MSIE is
-			// certainly the buggiest browser in the world and I
-			// wonder, God, how can Earth stand it?
-			return range.parentElement();
-		    case "Control":
-			return range.item(0);
-		    default:
-			return this._doc.body;
-		}
-	} else try {
-		var p = range.commonAncestorContainer;
-		if (!range.collapsed && range.startContainer == range.endContainer &&
-		    range.startOffset - range.endOffset <= 1 && range.startContainer.hasChildNodes())
-			p = range.startContainer.childNodes[range.startOffset];
-		/*
-		alert(range.startContainer + ":" + range.startOffset + "\n" +
-		      range.endContainer + ":" + range.endOffset);
-		*/
-		while (p.nodeType == 3) {
-			p = p.parentNode;
-		}
-		return p;
-	} catch (e) {
-		return null;
-	}
-};
-
-// Returns an array with all the ancestor nodes of the selection.
-HTMLArea.prototype.getAllAncestors = function() {
-	var p = this.getParentElement();
-	var a = [];
-	while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
-		a.push(p);
-		p = p.parentNode;
-	}
-	a.push(this._doc.body);
-	return a;
-};
-
-// Selects the contents inside the given node
-HTMLArea.prototype.selectNodeContents = function(node, pos) {
-	this.focusEditor();
-	this.forceRedraw();
-	var range;
-	var collapsed = (typeof pos != "undefined");
-	if (HTMLArea.is_ie) {
-		range = this._doc.body.createTextRange();
-		range.moveToElementText(node);
-		(collapsed) && range.collapse(pos);
-		range.select();
-	} else {
-		var sel = this._getSelection();
-		range = this._doc.createRange();
-		range.selectNodeContents(node);
-		(collapsed) && range.collapse(pos);
-		sel.removeAllRanges();
-		sel.addRange(range);
-	}
-};
-
-/** Call this function to insert HTML code at the current position.  It deletes
- * the selection, if any.
- */
-HTMLArea.prototype.insertHTML = function(html) {
-	var sel = this._getSelection();
-	var range = this._createRange(sel);
-	if (HTMLArea.is_ie) {
-		range.pasteHTML(html);
-	} else {
-		// construct a new document fragment with the given HTML
-		var fragment = this._doc.createDocumentFragment();
-		var div = this._doc.createElement("div");
-		div.innerHTML = html;
-		while (div.firstChild) {
-			// the following call also removes the node from div
-			fragment.appendChild(div.firstChild);
-		}
-		// this also removes the selection
-		var node = this.insertNodeAtSelection(fragment);
-	}
-};
-
-/**
- *  Call this function to surround the existing HTML code in the selection with
- *  your tags.  FIXME: buggy!  This function will be deprecated "soon".
- */
-HTMLArea.prototype.surroundHTML = function(startTag, endTag) {
-	var html = this.getSelectedHTML();
-	// the following also deletes the selection
-	this.insertHTML(startTag + html + endTag);
-};
-
-/// Retrieve the selected block
-HTMLArea.prototype.getSelectedHTML = function() {
-	var sel = this._getSelection();
-	var range = this._createRange(sel);
-	var existing = null;
-	if (HTMLArea.is_ie) {
-		existing = range.htmlText;
-	} else {
-		existing = HTMLArea.getHTML(range.cloneContents(), false, this);
-	}
-	return existing;
-};
-
-/// Return true if we have some selection
-HTMLArea.prototype.hasSelectedText = function() {
-	// FIXME: come _on_ mishoo, you can do better than this ;-)
-	return this.getSelectedHTML() != '';
-};
-
-HTMLArea.prototype._createLink = function(link) {
-	var editor = this;
-	var outparam = null;
-	if (typeof link == "undefined") {
-		link = this.getParentElement();
-		if (link && !/^a$/i.test(link.tagName))
-			link = null;
-	}
-	if (link) outparam = {
-		f_href   : HTMLArea.is_ie ? editor.stripBaseURL(link.href) : link.getAttribute("href"),
-		f_title  : link.title,
-		f_target : link.target
-	};
-	this._popupDialog("link.php", function(param) {
-		if (!param)
-			return false;
-		var a = link;
-		if (!a) {
-			editor._doc.execCommand("createlink", false, param.f_href);
-			a = editor.getParentElement();
-			var sel = editor._getSelection();
-			var range = editor._createRange(sel);
-			if (!HTMLArea.is_ie) {
-				a = range.startContainer;
-				if (!/^a$/i.test(a.tagName))
-					a = a.nextSibling;
-			}
-		} else a.href = param.f_href.trim();
-		if (!/^a$/i.test(a.tagName))
-			return false;
-		a.target = param.f_target.trim();
-		a.title = param.f_title.trim();
-		editor.selectNodeContents(a);
-		editor.updateToolbar();
-	}, outparam);
-};
-
-// Called when the user clicks on "InsertImage" button.  If an image is already
-// there, it will just modify it's properties.
-HTMLArea.prototype._insertImage = function(image) {
-	var editor = this;	// for nested functions
-	var outparam = null;
-	if (typeof image == "undefined") {
-		image = this.getParentElement();
-		if (image && !/^img$/i.test(image.tagName))
-			image = null;
-	}
-	if (image) outparam = {
-		f_url    : HTMLArea.is_ie ? editor.stripBaseURL(image.src) : image.getAttribute("src"),
-		f_alt    : image.alt,
-		f_border : image.border,
-		f_align  : image.align,
-		f_vert   : image.vspace,
-		f_horiz  : image.hspace
-	};
-	this._popupDialog("insert_image.php", function(param) {
-		if (!param) {	// user must have pressed Cancel
-			return false;
-		}
-		var img = image;
-		if (!img) {
-			var sel = editor._getSelection();
-			var range = editor._createRange(sel);
-			editor._doc.execCommand("insertimage", false, param.f_url);
-			if (HTMLArea.is_ie) {
-				img = range.parentElement();
-				// wonder if this works...
-				if (img.tagName.toLowerCase() != "img") {
-					img = img.previousSibling;
-				}
-			} else {
-				img = range.startContainer.previousSibling;
-			}
-		} else {
-			img.src = param.f_url;
-		}
-		for (field in param) {
-			var value = param[field];
-			switch (field) {
-			    case "f_alt"    : img.alt	 = value; break;
-			    case "f_border" : img.border = parseInt(value || "0"); break;
-			    case "f_align"  : img.align	 = value; break;
-			    case "f_vert"   : img.vspace = parseInt(value || "0"); break;
-			    case "f_horiz"  : img.hspace = parseInt(value || "0"); break;
-			}
-		}
-	}, outparam);
-};
-
-// Called when the user clicks the Insert Table button
-HTMLArea.prototype._insertTable = function() {
-	var sel = this._getSelection();
-	var range = this._createRange(sel);
-	var editor = this;	// for nested functions
-	this._popupDialog("insert_table.html", function(param) {
-		if (!param) {	// user must have pressed Cancel
-			return false;
-		}
-		var doc = editor._doc;
-		// create the table element
-		var table = doc.createElement("table");
-		// assign the given arguments
-		for (var field in param) {
-			var value = param[field];
-			if (!value) {
-				continue;
-			}
-			switch (field) {
-			    case "f_width"   : table.style.width = value + param["f_unit"]; break;
-			    case "f_align"   : table.align	 = value; break;
-			    case "f_border"  : table.border	 = parseInt(value); break;
-			    case "f_spacing" : table.cellspacing = parseInt(value); break;
-			    case "f_padding" : table.cellpadding = parseInt(value); break;
-			}
-		}
-		var tbody = doc.createElement("tbody");
-		table.appendChild(tbody);
-		for (var i = 0; i < param["f_rows"]; ++i) {
-			var tr = doc.createElement("tr");
-			tbody.appendChild(tr);
-			for (var j = 0; j < param["f_cols"]; ++j) {
-				var td = doc.createElement("td");
-				tr.appendChild(td);
-				// Mozilla likes to see something inside the cell.
-				(HTMLArea.is_gecko) && td.appendChild(doc.createElement("br"));
-			}
-		}
-		if (HTMLArea.is_ie) {
-			range.pasteHTML(table.outerHTML);
-		} else {
-			// insert the table
-			editor.insertNodeAtSelection(table);
-		}
-		return true;
-	}, null);
-};
-
-/***************************************************
- *  Category: EVENT HANDLERS
- ***************************************************/
-
-// el is reference to the SELECT object
-// txt is the name of the select field, as in config.toolbar
-HTMLArea.prototype._comboSelected = function(el, txt) {
-	this.focusEditor();
-	var value = el.options[el.selectedIndex].value;
-	switch (txt) {
-	    case "fontname":
-	    case "fontsize": this.execCommand(txt, false, value); break;
-	    case "formatblock":
-		(HTMLArea.is_ie) && (value = "<" + value + ">");
-		this.execCommand(txt, false, value);
-		break;
-	    default:
-		// try to look it up in the registered dropdowns
-		var dropdown = this.config.customSelects[txt];
-		if (typeof dropdown != "undefined") {
-			dropdown.action(this);
-		} else {
-			alert("FIXME: combo box " + txt + " not implemented");
-		}
-	}
-};
-
-// the execCommand function (intercepts some commands and replaces them with
-// our own implementation)
-HTMLArea.prototype.execCommand = function(cmdID, UI, param) {
-	var editor = this;	// for nested functions
-	this.focusEditor();
-	cmdID = cmdID.toLowerCase();
-	switch (cmdID) {
-	    case "htmlmode" : this.setMode(); break;
-	    case "hilitecolor":
-		(HTMLArea.is_ie) && (cmdID = "backcolor");
-	    case "forecolor":
-		this._popupDialog("select_color.html", function(color) {
-			if (color) { // selection not canceled
-				editor._doc.execCommand(cmdID, false, "#" + color);
-			}
-		}, HTMLArea._colorToRgb(this._doc.queryCommandValue(cmdID)));
-		break;
-	    case "createlink":
-		this._createLink();
-		break;
-	    case "popupeditor":
-		// this object will be passed to the newly opened window
-		HTMLArea._object = this;
-		if (HTMLArea.is_ie) {
-			//if (confirm(HTMLArea.I18N.msg["IE-sucks-full-screen"]))
-			{
-				window.open(this.popupURL("fullscreen.html"), "ha_fullscreen",
-					    "toolbar=no,location=no,directories=no,status=no,menubar=no," +
-					    "scrollbars=no,resizable=yes,width=640,height=480");
-			}
-		} else {
-			window.open(this.popupURL("fullscreen.html"), "ha_fullscreen",
-				    "toolbar=no,menubar=no,personalbar=no,width=640,height=480," +
-				    "scrollbars=no,resizable=yes");
-		}
-		break;
-	    case "undo":
-	    case "redo":
-		if (this._customUndo)
-			this[cmdID]();
-		else
-			this._doc.execCommand(cmdID, UI, param);
-		break;
-	    case "inserttable": this._insertTable(); break;
-	    case "insertimage": this._insertImage(); break;
-	    case "about"    : this._popupDialog("about.html", null, this); break;
-	    case "showhelp" : window.open(_editor_url + "reference.html", "ha_help"); break;
-
-	    case "killword": this._wordClean(); break;
-
-	    case "cut":
-	    case "copy":
-	    case "paste":
-		try {
-			if (this.config.killWordOnPaste)
-				this._wordClean();
-			this._doc.execCommand(cmdID, UI, param);
-		} catch (e) {
-			if (HTMLArea.is_gecko) {
-				if (confirm("Unprivileged scripts cannot access Cut/Copy/Paste programatically " +
-					    "for security reasons.  Click OK to see a technical note at mozilla.org " +
-					    "which shows you how to allow a script to access the clipboard."))
-					window.open("http://mozilla.org/editor/midasdemo/securityprefs.html");
-			}
-		}
-		break;
-	    case "lefttoright":
-	    case "righttoleft":
-		var dir = (cmdID == "righttoleft") ? "rtl" : "ltr";
-		var el = this.getParentElement();
-		while (el && !HTMLArea.isBlockElement(el))
-			el = el.parentNode;
-		if (el) {
-			if (el.style.direction == dir)
-				el.style.direction = "";
-			else
-				el.style.direction = dir;
-		}
-		break;
-	    default: this._doc.execCommand(cmdID, UI, param);
-	}
-	this.updateToolbar();
-	return false;
-};
-
-/** A generic event handler for things that happen in the IFRAME's document.
- * This function also handles key bindings. */
-HTMLArea.prototype._editorEvent = function(ev) {
-	var editor = this;
-	var keyEvent = (HTMLArea.is_ie && ev.type == "keydown") || (ev.type == "keypress");
-	if (keyEvent) {
-		for (var i in editor.plugins) {
-			var plugin = editor.plugins[i].instance;
-			if (typeof plugin.onKeyPress == "function") plugin.onKeyPress(ev);
-		}
-	}
-	if (keyEvent && ev.ctrlKey) {
-		var sel = null;
-		var range = null;
-		var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase();
-		var cmd = null;
-		var value = null;
-		switch (key) {
-		    case 'a':
-			if (!HTMLArea.is_ie) {
-				// KEY select all
-				sel = this._getSelection();
-				sel.removeAllRanges();
-				range = this._createRange();
-				range.selectNodeContents(this._doc.body);
-				sel.addRange(range);
-				HTMLArea._stopEvent(ev);
-			}
-			break;
-
-			// simple key commands follow
-
-		    case 'b': cmd = "bold"; break;
-		    case 'i': cmd = "italic"; break;
-		    case 'u': cmd = "underline"; break;
-		    case 's': cmd = "strikethrough"; break;
-		    case 'l': cmd = "justifyleft"; break;
-		    case 'e': cmd = "justifycenter"; break;
-		    case 'r': cmd = "justifyright"; break;
-		    case 'j': cmd = "justifyfull"; break;
-		    case 'z': cmd = "undo"; break;
-		    case 'y': cmd = "redo"; break;
-		    case 'v': cmd = "paste"; break;
-
-		    case '0': cmd = "killword"; break;
-
-			// headings
-		    case '1':
-		    case '2':
-		    case '3':
-		    case '4':
-		    case '5':
-		    case '6':
-			cmd = "formatblock";
-			value = "h" + key;
-			if (HTMLArea.is_ie) {
-				value = "<" + value + ">";
-			}
-			break;
-		}
-		if (cmd) {
-			// execute simple command
-			this.execCommand(cmd, false, value);
-			HTMLArea._stopEvent(ev);
-		}
-	}
-	/*
-	else if (keyEvent) {
-		// other keys here
-		switch (ev.keyCode) {
-		    case 13: // KEY enter
-			// if (HTMLArea.is_ie) {
-			this.insertHTML("<br />");
-			HTMLArea._stopEvent(ev);
-			// }
-			break;
-		}
-	}
-	*/
-	// update the toolbar state after some time
-	if (editor._timerToolbar) {
-		clearTimeout(editor._timerToolbar);
-	}
-	editor._timerToolbar = setTimeout(function() {
-		editor.updateToolbar();
-		editor._timerToolbar = null;
-	}, 50);
-};
-
-// retrieve the HTML
-HTMLArea.prototype.getHTML = function() {
-	switch (this._editMode) {
-	    case "wysiwyg"  :
-		if (!this.config.fullPage) {
-			return HTMLArea.getHTML(this._doc.body, false, this);
-		} else
-			return this.doctype + "\n" + HTMLArea.getHTML(this._doc.documentElement, true, this);
-	    case "textmode" : return this._textArea.value;
-	    default	    : alert("Mode <" + mode + "> not defined!");
-	}
-	return false;
-};
-
-// retrieve the HTML (fastest version, but uses innerHTML)
-HTMLArea.prototype.getInnerHTML = function() {
-	switch (this._editMode) {
-	    case "wysiwyg"  :
-		if (!this.config.fullPage)
-			return this._doc.body.innerHTML;
-		else
-			return this.doctype + "\n" + this._doc.documentElement.innerHTML;
-	    case "textmode" : return this._textArea.value;
-	    default	    : alert("Mode <" + mode + "> not defined!");
-	}
-	return false;
-};
-
-// completely change the HTML inside
-HTMLArea.prototype.setHTML = function(html) {
-	switch (this._editMode) {
-	    case "wysiwyg"  :
-		if (!this.config.fullPage)
-			this._doc.body.innerHTML = html;
-		else
-			// this._doc.documentElement.innerHTML = html;
-			this._doc.body.innerHTML = html;
-		break;
-	    case "textmode" : this._textArea.value = html; break;
-	    default	    : alert("Mode <" + mode + "> not defined!");
-	}
-	return false;
-};
-
-// sets the given doctype (useful when config.fullPage is true)
-HTMLArea.prototype.setDoctype = function(doctype) {
-	this.doctype = doctype;
-};
-
-/***************************************************
- *  Category: UTILITY FUNCTIONS
- ***************************************************/
-
-// browser identification
-
-HTMLArea.agt = navigator.userAgent.toLowerCase();
-HTMLArea.is_ie	   = ((HTMLArea.agt.indexOf("msie") != -1) && (HTMLArea.agt.indexOf("opera") == -1));
-HTMLArea.is_opera  = (HTMLArea.agt.indexOf("opera") != -1);
-HTMLArea.is_mac	   = (HTMLArea.agt.indexOf("mac") != -1);
-HTMLArea.is_mac_ie = (HTMLArea.is_ie && HTMLArea.is_mac);
-HTMLArea.is_win_ie = (HTMLArea.is_ie && !HTMLArea.is_mac);
-HTMLArea.is_gecko  = (navigator.product == "Gecko");
-
-// variable used to pass the object to the popup editor window.
-HTMLArea._object = null;
-
-// function that returns a clone of the given object
-HTMLArea.cloneObject = function(obj) {
-	var newObj = new Object;
-
-	// check for array objects
-	if (obj.constructor.toString().indexOf("function Array(") == 1) {
-		newObj = obj.constructor();
-	}
-
-	// check for function objects (as usual, IE is fucked up)
-	if (obj.constructor.toString().indexOf("function Function(") == 1) {
-		newObj = obj; // just copy reference to it
-	} else for (var n in obj) {
-		var node = obj[n];
-		if (typeof node == 'object') { newObj[n] = HTMLArea.cloneObject(node); }
-		else                         { newObj[n] = node; }
-	}
-
-	return newObj;
-};
-
-// FIXME!!! this should return false for IE < 5.5
-HTMLArea.checkSupportedBrowser = function() {
-	if (HTMLArea.is_gecko) {
-		if (navigator.productSub < 20021201) {
-			alert("You need at least Mozilla-1.3 Alpha.\n" +
-			      "Sorry, your Gecko is not supported.");
-			return false;
-		}
-		if (navigator.productSub < 20030210) {
-			alert("Mozilla < 1.3 Beta is not supported!\n" +
-			      "I'll try, though, but it might not work.");
-		}
-	}
-	return HTMLArea.is_gecko || HTMLArea.is_ie;
-};
-
-// selection & ranges
-
-// returns the current selection object
-HTMLArea.prototype._getSelection = function() {
-	if (HTMLArea.is_ie) {
-		return this._doc.selection;
-	} else {
-		return this._iframe.contentWindow.getSelection();
-	}
-};
-
-// returns a range for the current selection
-HTMLArea.prototype._createRange = function(sel) {
-	if (HTMLArea.is_ie) {
-		return sel.createRange();
-	} else {
-		this.focusEditor();
-		if (typeof sel != "undefined") {
-			try {
-				return sel.getRangeAt(0);
-			} catch(e) {
-				return this._doc.createRange();
-			}
-		} else {
-			return this._doc.createRange();
-		}
-	}
-};
-
-// event handling
-
-HTMLArea._addEvent = function(el, evname, func) {
-	if (HTMLArea.is_ie) {
-		el.attachEvent("on" + evname, func);
-	} else {
-		el.addEventListener(evname, func, true);
-	}
-};
-
-HTMLArea._addEvents = function(el, evs, func) {
-	for (var i in evs) {
-		HTMLArea._addEvent(el, evs[i], func);
-	}
-};
-
-HTMLArea._removeEvent = function(el, evname, func) {
-	if (HTMLArea.is_ie) {
-		el.detachEvent("on" + evname, func);
-	} else {
-		el.removeEventListener(evname, func, true);
-	}
-};
-
-HTMLArea._removeEvents = function(el, evs, func) {
-	for (var i in evs) {
-		HTMLArea._removeEvent(el, evs[i], func);
-	}
-};
-
-HTMLArea._stopEvent = function(ev) {
-	if (HTMLArea.is_ie) {
-		ev.cancelBubble = true;
-		ev.returnValue = false;
-	} else {
-		ev.preventDefault();
-		ev.stopPropagation();
-	}
-};
-
-HTMLArea._removeClass = function(el, className) {
-	if (!(el && el.className)) {
-		return;
-	}
-	var cls = el.className.split(" ");
-	var ar = new Array();
-	for (var i = cls.length; i > 0;) {
-		if (cls[--i] != className) {
-			ar[ar.length] = cls[i];
-		}
-	}
-	el.className = ar.join(" ");
-};
-
-HTMLArea._addClass = function(el, className) {
-	// remove the class first, if already there
-	HTMLArea._removeClass(el, className);
-	el.className += " " + className;
-};
-
-HTMLArea._hasClass = function(el, className) {
-	if (!(el && el.className)) {
-		return false;
-	}
-	var cls = el.className.split(" ");
-	for (var i = cls.length; i > 0;) {
-		if (cls[--i] == className) {
-			return true;
-		}
-	}
-	return false;
-};
-
-HTMLArea.isBlockElement = function(el) {
-	var blockTags = " body form textarea fieldset ul ol dl li div " +
-		"p h1 h2 h3 h4 h5 h6 quote pre table thead " +
-		"tbody tfoot tr td iframe address ";
-	return (blockTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
-};
-
-HTMLArea.needsClosingTag = function(el) {
-	var closingTags = " head script style div span tr td tbody table em strong font a title ";
-	return (closingTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
-};
-
-// performs HTML encoding of some given string
-HTMLArea.htmlEncode = function(str) {
-	// we don't need regexp for that, but.. so be it for now.
-	str = str.replace(/&/ig, "&amp;");
-	str = str.replace(/</ig, "&lt;");
-	str = str.replace(/>/ig, "&gt;");
-	str = str.replace(/\x22/ig, "&quot;");
-	// \x22 means '"' -- we use hex reprezentation so that we don't disturb
-	// JS compressors (well, at least mine fails.. ;)
-	return str;
-};
-
-// Retrieves the HTML code from the given node.	 This is a replacement for
-// getting innerHTML, using standard DOM calls.
-HTMLArea.getHTML = function(root, outputRoot, editor) {
-	var html = "";
-	switch (root.nodeType) {
-	    case 1: // Node.ELEMENT_NODE
-	    case 11: // Node.DOCUMENT_FRAGMENT_NODE
-		var closed;
-		var i;
-		var root_tag = (root.nodeType == 1) ? root.tagName.toLowerCase() : '';
-		if (HTMLArea.is_ie && root_tag == "head") {
-			if (outputRoot)
-				html += "<head>";
-			// lowercasize
-			var save_multiline = RegExp.multiline;
-			RegExp.multiline = true;
-			var txt = root.innerHTML.replace(HTMLArea.RE_tagName, function(str, p1, p2) {
-				return p1 + p2.toLowerCase();
-			});
-			RegExp.multiline = save_multiline;
-			html += txt;
-			if (outputRoot)
-				html += "</head>";
-			break;
-		} else if (outputRoot) {
-			closed = (!(root.hasChildNodes() || HTMLArea.needsClosingTag(root)));
-			html = "<" + root.tagName.toLowerCase();
-			var attrs = root.attributes;
-			for (i = 0; i < attrs.length; ++i) {
-				var a = attrs.item(i);
-				if (!a.specified) {
-					continue;
-				}
-				var name = a.nodeName.toLowerCase();
-				if (/_moz|contenteditable|_msh/.test(name)) {
-					// avoid certain attributes
-					continue;
-				}
-				var value;
-				if (name != "style") {
-					// IE5.5 reports 25 when cellSpacing is
-					// 1; other values might be doomed too.
-					// For this reason we extract the
-					// values directly from the root node.
-					// I'm starting to HATE JavaScript
-					// development.  Browser differences
-					// suck.
-					//
-					// Using Gecko the values of href and src are converted to absolute links
-					// unless we get them using nodeValue()
-					if (typeof root[a.nodeName] != "undefined" && name != "href" && name != "src") {
-						value = root[a.nodeName];
-					} else {
-						value = a.nodeValue;
-						// IE seems not willing to return the original values - it converts to absolute
-						// links using a.nodeValue, a.value, a.stringValue, root.getAttribute("href")
-						// So we have to strip the baseurl manually -/
-						if (HTMLArea.is_ie && (name == "href" || name == "src")) {
-							value = editor.stripBaseURL(value);
-						}
-					}
-				} else { // IE fails to put style in attributes list
-					// FIXME: cssText reported by IE is UPPERCASE
-					value = root.style.cssText;
-				}
-				if (/(_moz|^$)/.test(value)) {
-					// Mozilla reports some special tags
-					// here; we don't need them.
-					continue;
-				}
-				html += " " + name + '="' + value + '"';
-			}
-			html += closed ? " />" : ">";
-		}
-		for (i = root.firstChild; i; i = i.nextSibling) {
-			html += HTMLArea.getHTML(i, true, editor);
-		}
-		if (outputRoot && !closed) {
-			html += "</" + root.tagName.toLowerCase() + ">";
-		}
-		break;
-	    case 3: // Node.TEXT_NODE
-		// If a text node is alone in an element and all spaces, replace it with an non breaking one
-		// This partially undoes the damage done by moz, which translates '&nbsp;'s into spaces in the data element
-		if ( !root.previousSibling && !root.nextSibling && root.data.match(/^\s*$/i) ) html = '&nbsp;';
-		else html = HTMLArea.htmlEncode(root.data);
-		break;
-	    case 8: // Node.COMMENT_NODE
-		html = "<!--" + root.data + "-->";
-		break;		// skip comments, for now.
-	}
-	return html;
-};
-
-HTMLArea.prototype.stripBaseURL = function(string) {
-	var baseurl = this.config.baseURL;
-
-	// strip to last directory in case baseurl points to a file
-	baseurl = baseurl.replace(/[^\/]+$/, '');
-	var basere = new RegExp(baseurl);
-	string = string.replace(basere, "");
-
-	// strip host-part of URL which is added by MSIE to links relative to server root
-	baseurl = baseurl.replace(/^(https?:\/\/[^\/]+)(.*)$/, '$1');
-	basere = new RegExp(baseurl);
-	return string.replace(basere, "");
-};
-
-String.prototype.trim = function() {
-	a = this.replace(/^\s+/, '');
-	return a.replace(/\s+$/, '');
-};
-
-// creates a rgb-style color from a number
-HTMLArea._makeColor = function(v) {
-	if (typeof v != "number") {
-		// already in rgb (hopefully); IE doesn't get here.
-		return v;
-	}
-	// IE sends number; convert to rgb.
-	var r = v & 0xFF;
-	var g = (v >> 8) & 0xFF;
-	var b = (v >> 16) & 0xFF;
-	return "rgb(" + r + "," + g + "," + b + ")";
-};
-
-// returns hexadecimal color representation from a number or a rgb-style color.
-HTMLArea._colorToRgb = function(v) {
-	if (!v)
-		return '';
-
-	// returns the hex representation of one byte (2 digits)
-	function hex(d) {
-		return (d < 16) ? ("0" + d.toString(16)) : d.toString(16);
-	};
-
-	if (typeof v == "number") {
-		// we're talking to IE here
-		var r = v & 0xFF;
-		var g = (v >> 8) & 0xFF;
-		var b = (v >> 16) & 0xFF;
-		return "#" + hex(r) + hex(g) + hex(b);
-	}
-
-	if (v.substr(0, 3) == "rgb") {
-		// in rgb(...) form -- Mozilla
-		var re = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/;
-		if (v.match(re)) {
-			var r = parseInt(RegExp.$1);
-			var g = parseInt(RegExp.$2);
-			var b = parseInt(RegExp.$3);
-			return "#" + hex(r) + hex(g) + hex(b);
-		}
-		// doesn't match RE?!  maybe uses percentages or float numbers
-		// -- FIXME: not yet implemented.
-		return null;
-	}
-
-	if (v.substr(0, 1) == "#") {
-		// already hex rgb (hopefully :D )
-		return v;
-	}
-
-	// if everything else fails ;)
-	return null;
-};
-
-// modal dialogs for Mozilla (for IE we're using the showModalDialog() call).
-
-// receives an URL to the popup dialog and a function that receives one value;
-// this function will get called after the dialog is closed, with the return
-// value of the dialog.
-HTMLArea.prototype._popupDialog = function(url, action, init) {
-	Dialog(this.popupURL(url), action, init);
-};
-
-// paths
-
-HTMLArea.prototype.imgURL = function(file, plugin) {
-	if (typeof plugin == "undefined")
-		return _editor_url + file;
-	else
-		return _editor_url + "plugins/" + plugin + "/img/" + file;
-};
-
-HTMLArea.prototype.popupURL = function(file) {
-	var url = "";
-	if (file.match(/^plugin:\/\/(.*?)\/(.*)/)) {
-		var plugin = RegExp.$1;
-		var popup = RegExp.$2;
-		if (!/\.html$/.test(popup))
-			popup += ".html";
-		url = _editor_url + "plugins/" + plugin + "/popups/" + popup;
-	} else
-		url = _editor_url + this.config.popupURL + file;
-	return url;
-};
-
-/**
- * FIX: Internet Explorer returns an item having the _name_ equal to the given
- * id, even if it's not having any id.  This way it can return a different form
- * field even if it's not a textarea.  This workarounds the problem by
- * specifically looking to search only elements having a certain tag name.
- */
-HTMLArea.getElementById = function(tag, id) {
-	var el, i, objs = document.getElementsByTagName(tag);
-	for (i = objs.length; --i >= 0 && (el = objs[i]);)
-		if (el.id == id)
-			return el;
-	return null;
-};
-
-
-
-// EOF
-// Local variables: //
-// c-basic-offset:8 //
-// indent-tabs-mode:t //
-// End: //
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/dialog.js
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/dialog.js	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/dialog.js	(nonexistent)
@@ -1,72 +0,0 @@
-// htmlArea 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.1.1 2005/01/30 10:31:05 rdjurovich 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) {
-	if (Dialog._modal && !Dialog._modal.closed) {
-		Dialog._modal.focus();
-		HTMLArea._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 dlg = window.open(url, "hadialog",
-			      "toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
-			      "scrollbars=no,resizable=yes");
-	Dialog._modal = dlg;
-	Dialog._arguments = init;
-
-	// capture some window's events
-	function capwin(w) {
-		HTMLArea._addEvent(w, "click", Dialog._parentEvent);
-		HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent);
-		HTMLArea._addEvent(w, "focus", Dialog._parentEvent);
-	};
-	// release the captured events
-	function relwin(w) {
-		HTMLArea._removeEvent(w, "click", Dialog._parentEvent);
-		HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent);
-		HTMLArea._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;
-	};
-};
Index: trunk/addons/trunk/modules/htmlarea/htmlarea/license.txt
===================================================================
--- trunk/addons/trunk/modules/htmlarea/htmlarea/license.txt	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/htmlarea/license.txt	(nonexistent)
@@ -1,30 +0,0 @@
-htmlArea License (based on BSD license)
-Copyright (c) 2002-2004, interactivetools.com, inc.
-Copyright (c) 2003-2004 dynarch.com
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1) Redistributions of source code must retain the above copyright notice,
-   this list of conditions and the following disclaimer.
-
-2) Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
-
-3) Neither the name of interactivetools.com, inc. nor the names of its
-   contributors may be used to endorse or promote products derived from this
-   software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
Index: trunk/addons/trunk/modules/htmlarea/install.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/install.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/install.php	(nonexistent)
@@ -1,24 +0,0 @@
-<?php
-
-if(defined('WB_URL')) {
-
-	// Set the filename of the actual editor file
-	$editor_file = $module_dir.'/htmlarea.zip';
-	
-	// Setup the PclZip object
-	$editor_archive = new PclZip($editor_file);
-
-	// Unzip FCKeditor to the module dir
-	$list = $editor_archive->extract(PCLZIP_OPT_PATH, $module_dir);
-	if(!$list) {
-		$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNZIP']);
-	}
-	// Delete the zip file
-	if(file_exists($editor_file)) { unlink($editor_file); }
-	
-	// Chmod all the editors files
-	chmod_directory_contents($module_dir.'/htmlarea', OCTAL_FILE_MODE);
-	
-}
-
-?>
Index: trunk/addons/trunk/modules/htmlarea/include.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/include.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/include.php	(nonexistent)
@@ -1,32 +0,0 @@
-<?php
-      $WB_DIRECTORY = substr(WB_PATH, strlen($_SERVER['DOCUMENT_ROOT'])).'/media/';
-?>
-
-<script type="text/javascript">
-  _editor_url = "<?php echo WB_URL;?>/modules/htmlarea/htmlarea/";
-  _editor_lang = "en";
-</script>
-
-<script type="text/javascript" src="<?php echo WB_URL;?>/modules/htmlarea/htmlarea/htmlarea.js"></script>
-<script type="text/javascript">
-	HTMLArea.loadPlugin("ContextMenu");
-	HTMLArea.loadPlugin("TableOperations");
-	window.onload = function() {
-<?php
-	foreach($id_list AS $textarea_id)
-	{
-		echo 'var editor = new HTMLArea("'.$textarea_id.'"); '
-		.'editor.registerPlugin(ContextMenu);'
-		.'editor.registerPlugin(TableOperations);'
-		.'editor.config.pageStyle = "body { '.stripslashes(WYSIWYG_STYLE).' }";'
-		.'editor.generate();';
-	}
-?>
-}
-</script>
-
-<?php
-	function show_wysiwyg_editor($name,$id,$content,$width,$height) {
-		echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
-	}
-?>
Index: trunk/addons/trunk/modules/htmlarea/index.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/index.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/index.php	(nonexistent)
@@ -1,5 +0,0 @@
-<?php
-
-header('Location: ../index.php');
-
-?>
\ No newline at end of file
Index: trunk/addons/trunk/modules/htmlarea/info.php
===================================================================
--- trunk/addons/trunk/modules/htmlarea/info.php	(revision 102)
+++ trunk/addons/trunk/modules/htmlarea/info.php	(nonexistent)
@@ -1,11 +0,0 @@
-<?php
-
-$module_directory = 'htmlarea';
-$module_name = 'HTMLArea';
-$module_type = 'WYSIWYG';
-$module_version = '0.1';
-$module_designed_for = '2.5.x';
-$module_author = 'Ryan Djurovich, Stefan Braunewell';
-$module_description = 'This module allows you to edit the contents of a page using HTMLArea Editor.';
-
-?>
Index: trunk/addons/trunk/modules/menu_link/save.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/save.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/save.php	(nonexistent)
@@ -1,55 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-$database = new database();
-
-// Update the mod_menu_links table with the link
-if(isset($_POST['link'])) {
-	// Update link and target
-	$link = $admin->add_slashes($_POST['link']);
-	$target = $_POST['target'];
-	$query = "UPDATE ".TABLE_PREFIX."pages SET link = '$link', target = '$target' WHERE page_id = '$page_id'";
-	$database->query($query);
-} else {
-	$admin->print_error('Error in wb/modules/menu_link/save.php at line 35', $js_back);
-}
-
-// Check if there is a database error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), $js_back);
-} else {
-	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/save.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/install.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/install.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/install.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: install.php,v 1.1.1.1 2005/01/30 10:32:15 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// No table is needed for this module
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/install.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/modify.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/modify.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/modify.php	(nonexistent)
@@ -1,64 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Setup template object
-$template = new Template(WB_PATH.'/modules/menu_link');
-$template->set_file('page', 'modify.html');
-$template->set_block('page', 'main_block', 'main');
-
-// Get page link and target
-$query_info = "SELECT link,target FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'";
-$get_info = $database->query($query_info);
-$fetch_info = $get_info->fetchRow();
-$link = $admin->strip_slashes_dummy($fetch_info['link']);
-$target = $fetch_info['target'];
-
-// Insert vars
-$template->set_var(array(
-								'PAGE_ID' => $page_id,
-								'WB_URL' => WB_URL,
-								'LINK' => $link,
-								'TEXT_LINK' => $TEXT['LINK'],
-								'TEXT_TARGET' => $TEXT['TARGET'],
-								'TEXT_NEW_WINDOW' => $TEXT['NEW_WINDOW'],
-								'TEXT_SAME_WINDOW' => $TEXT['SAME_WINDOW'],
-								'TEXT_SAVE' => $TEXT['SAVE'],
-								'TEXT_CANCEL' => $TEXT['CANCEL'],
-								'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT']
-								)
-						);
-
-// Select target
-if($target == '_blank') {
-	$template->set_var('BLANK_SELECTED', ' selected');
-} elseif($target == '_top') {
-	$template->set_var('TOP_SELECTED', ' selected');
-}
-
-// Parse template object
-$template->parse('main', 'main_block', false);
-$template->pparse('output', 'page');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/modify.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/modify.html
===================================================================
--- trunk/addons/trunk/modules/menu_link/modify.html	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/modify.html	(nonexistent)
@@ -1,47 +0,0 @@
-<!-- BEGIN main_block -->
-
-<form action="{WB_URL}/modules/menu_link/save.php" method="post">
-
-<input type="hidden" name="page_id" value="{PAGE_ID}" />
-<input type="hidden" name="section_id" value="{SECTION_ID}" />
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td>
-		{TEXT_LINK}:
-	</td>
-	<td>
-		<input type="text" id="link" name="link" style="width: 100%;" value="{LINK}" />
-	</td>
-</tr>
-<tr>
-	<td>
-		{TEXT_TARGET}:
-	</td>
-	<td>
-		<select name="target" style="width: 100%;" value="{TARGET}" />
-			<option value="_top">{TEXT_PLEASE_SELECT}...</option>
-			<option value="_blank"{BLANK_SELECTED}>{TEXT_NEW_WINDOW}</option>
-			<option value="_top"{TOP_SELECTED}>{TEXT_SAME_WINDOW}</option>
-		</select>
-	</td>
-</tr>
-</table>
-
-<br />
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left">
-		<input type="submit" value="{TEXT_SAVE}" style="width: 100px; margin-top: 5px;" />
-	</td>
-	<td align="right">
-		</form>
-		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-</form>
-
-<!-- END main_block -->
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/modify.html
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/view.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/view.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/view.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id: view.php,v 1.1.1.1 2005/01/30 10:32:15 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-Since there is nothing to show and users shouldn't really know this
-page exists, we might as well give them a link to the home page.
-*/
-
-?>
-<a href="<?php echo WB_URL; ?>">
-Click HERE to go to the main page
-</a>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/view.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/add.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/add.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/add.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: add.php,v 1.1.1.1 2005/01/30 10:32:15 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Nothing needs to be inserted anywhere special
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/add.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/index.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/index.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/index.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: index.php,v 1.1.1.1 2005/01/30 10:32:15 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-header('Location: ../index.php');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/delete.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/delete.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/delete.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: delete.php,v 1.1.1.1 2005/01/30 10:32:15 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Nothing special has to be deleted
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/delete.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/menu_link/info.php
===================================================================
--- trunk/addons/trunk/modules/menu_link/info.php	(revision 102)
+++ trunk/addons/trunk/modules/menu_link/info.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$module_directory = 'menu_link';
-$module_name = 'Menu Link';
-$module_type = 'page';
-$module_version = '2.5';
-$module_designed_for = '2.x';
-$module_author = 'Ryan Djurovich';
-$module_description = 'This module allows you to insert a link into the menu.';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/menu_link/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/save.php
===================================================================
--- trunk/addons/trunk/modules/code/save.php	(revision 102)
+++ trunk/addons/trunk/modules/code/save.php	(nonexistent)
@@ -1,51 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Update the mod_wysiwygs table with the contents
-if(isset($_POST['content'])) {
-	$tags = array('<?php', '?>' , '<?');
-	$content = $admin->add_slashes(str_replace($tags, '', $_POST['content']));
-	$database = new database();
-	$query = "UPDATE ".TABLE_PREFIX."mod_code SET content = '$content' WHERE section_id = '$section_id'";
-	$database->query($query);	
-}
-
-// Check if there is a database error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), $js_back);
-} else {
-	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/save.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/install.php
===================================================================
--- trunk/addons/trunk/modules/code/install.php	(revision 102)
+++ trunk/addons/trunk/modules/code/install.php	(nonexistent)
@@ -1,64 +0,0 @@
-<?php
-
-// $Id: install.php,v 1.2 2005/04/02 08:21:46 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-if(defined('WB_URL')) {
-	
-	// Create table
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_code`");
-	$mod_code = 'CREATE TABLE `'.TABLE_PREFIX.'mod_code` ('
-						  . ' `section_id` INT NOT NULL,'
-						  . ' `page_id` INT NOT NULL,'
-	                 . ' `content` TEXT NOT NULL ,'
-	                 . ' PRIMARY KEY ( `section_id` ) )'
-	                 . ' ';
-	$database->query($mod_code);
-	
-	// Insert info into the search table
-	// Module query info
-	$field_info = array();
-	$field_info['page_id'] = 'page_id';
-	$field_info['title'] = 'page_title';
-	$field_info['link'] = 'link';
-	$field_info['description'] = 'description';
-	$field_info['modified_when'] = 'modified_when';
-	$field_info['modified_by'] = 'modified_by';
-	$field_info = serialize($field_info);
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'code', '$field_info')");
-	// Query start
-	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_code, [TP]pages WHERE ";
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'code')");
-	// Query body
-	$query_body_code = " [TP]pages.page_id = [TP]mod_code.page_id AND [TP]mod_code.content [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";	
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'code')");
-	// Query end
-	$query_end_code = "";	
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'code')");
-	
-	// Insert blank row (there needs to be at least on row for the search to work)
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_code (page_id,section_id) VALUES ('0','0')");
-	
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/install.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/modify.php
===================================================================
--- trunk/addons/trunk/modules/code/modify.php	(revision 102)
+++ trunk/addons/trunk/modules/code/modify.php	(nonexistent)
@@ -1,52 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Setup template object
-$template = new Template(WB_PATH.'/modules/code');
-$template->set_file('page', 'modify.html');
-$template->set_block('page', 'main_block', 'main');
-
-// Get page content
-$query = "SELECT content FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'";
-$get_content = $database->query($query);
-$content = $get_content->fetchRow();
-$content = $admin->strip_slashes_dummy(htmlspecialchars($content['content']));
-
-// Insert vars
-$template->set_var(array(
-								'PAGE_ID' => $page_id,
-								'SECTION_ID' => $section_id,
-								'WB_URL' => WB_URL,
-								'CONTENT' => $content,
-								'TEXT_SAVE' => $TEXT['SAVE'],
-								'TEXT_CANCEL' => $TEXT['CANCEL']
-								)
-						);
-
-// Parse template object
-$template->parse('main', 'main_block', false);
-$template->pparse('output', 'page');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/modify.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/modify.html
===================================================================
--- trunk/addons/trunk/modules/code/modify.html	(revision 102)
+++ trunk/addons/trunk/modules/code/modify.html	(nonexistent)
@@ -1,24 +0,0 @@
-<!-- BEGIN main_block -->
-
-<form action="{WB_URL}/modules/code/save.php" method="post">
-
-<input type="hidden" name="page_id" value="{PAGE_ID}" />
-<input type="hidden" name="section_id" value="{SECTION_ID}" />
-
-<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 380px">{CONTENT}</textarea>
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left">
-		<input type="submit" value="{TEXT_SAVE}" style="width: 100px; margin-top: 5px;" />
-	</td>
-	<td align="right">
-		</form>
-		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-</form>
-
-<!-- END main_block -->
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/modify.html
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/view.php
===================================================================
--- trunk/addons/trunk/modules/code/view.php	(revision 102)
+++ trunk/addons/trunk/modules/code/view.php	(nonexistent)
@@ -1,32 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Get content
-$get_content = $database->query("SELECT content FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'");
-$fetch_content = $get_content->fetchRow();
-$content = $this->strip_slashes_dummy($fetch_content['content']);
-eval($content);
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/view.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/add.php
===================================================================
--- trunk/addons/trunk/modules/code/add.php	(revision 102)
+++ trunk/addons/trunk/modules/code/add.php	(nonexistent)
@@ -1,29 +0,0 @@
-<?php
-
-// $Id: add.php,v 1.1.1.1 2005/01/30 10:32:22 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Insert an extra row into the database
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_code (page_id,section_id) VALUES ('$page_id','$section_id')");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/add.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/index.php
===================================================================
--- trunk/addons/trunk/modules/code/index.php	(revision 102)
+++ trunk/addons/trunk/modules/code/index.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: index.php,v 1.1.1.1 2005/01/30 10:32:22 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-header('Location: ../index.php');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/delete.php
===================================================================
--- trunk/addons/trunk/modules/code/delete.php	(revision 102)
+++ trunk/addons/trunk/modules/code/delete.php	(nonexistent)
@@ -1,29 +0,0 @@
-<?php
-
-// $Id: delete.php,v 1.1.1.1 2005/01/30 10:32:22 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Delete record from the database
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/delete.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/code/info.php
===================================================================
--- trunk/addons/trunk/modules/code/info.php	(revision 102)
+++ trunk/addons/trunk/modules/code/info.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.3 2005/04/08 09:58:05 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$module_directory = 'code';
-$module_name = 'Code';
-$module_type = 'page';
-$module_version = '2.5';
-$module_designed_for = '2.x';
-$module_author = 'Ryan Djurovich';
-$module_description = 'This module allows you to edit the contents of a page with a simple, yet powerful, text box';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/code/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/save.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/save.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/save.php	(nonexistent)
@@ -1,51 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Update the mod_wysiwygs table with the contents
-if(isset($_POST['content'.$section_id])) {
-	$content = $admin->add_slashes($_POST['content'.$section_id]);
-	$text = strip_tags($content);
-	$database = new database();
-	$query = "UPDATE ".TABLE_PREFIX."mod_wysiwyg SET content = '$content', text = '$text' WHERE section_id = '$section_id'";
-	$database->query($query);	
-}
-
-// Check if there is a database error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), $js_back);
-} else {
-	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>

Property changes on: trunk/addons/trunk/modules/wysiwyg/save.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/install.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/install.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/install.php	(nonexistent)
@@ -1,65 +0,0 @@
-<?php
-
-// $Id: install.php,v 1.2 2005/04/02 08:21:46 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-if(defined('WB_URL')) {
-	
-	// Create table
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_wysiwyg`");
-	$mod_wysiwyg = 'CREATE TABLE `'.TABLE_PREFIX.'mod_wysiwyg` ( '
-						  . ' `section_id` INT NOT NULL,'
-						  . ' `page_id` INT NOT NULL,'
-	                 . ' `content` TEXT NOT NULL ,'
-	                 . ' `text` TEXT NOT NULL ,'
-	                 . ' PRIMARY KEY ( `section_id` ) )'
-	                 . ' ';
-	$database->query($mod_wysiwyg);
-	
-	// Insert info into the search table
-	// Module query info
-	$field_info = array();
-	$field_info['page_id'] = 'page_id';
-	$field_info['title'] = 'page_title';
-	$field_info['link'] = 'link';
-	$field_info['description'] = 'description';
-	$field_info['modified_when'] = 'modified_when';
-	$field_info['modified_by'] = 'modified_by';
-	$field_info = serialize($field_info);
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'wysiwyg', '$field_info')");
-	// Query start
-	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_wysiwyg, [TP]pages WHERE ";
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'wysiwyg')");
-	// Query body
-	$query_body_code = " [TP]pages.page_id = [TP]mod_wysiwyg.page_id AND [TP]mod_wysiwyg.text [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";	
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'wysiwyg')");
-	// Query end
-	$query_end_code = "";	
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'wysiwyg')");
-	
-	// Insert blank row (there needs to be at least on row for the search to work)
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_wysiwyg (page_id,section_id) VALUES ('0','0')");
-	
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wysiwyg/install.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/modify.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/modify.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/modify.php	(nonexistent)
@@ -1,79 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-if(!defined('WB_PATH')) exit('Direct access to this file is not allowed');
-
-// Get page content
-$query = "SELECT content FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'";
-$get_content = $database->query($query);
-$content = $get_content->fetchRow();
-$content = $admin->strip_slashes_dummy(htmlspecialchars($content['content']));
-
-if(!isset($wysiwyg_editor_loaded)) {
-	$wysiwyg_editor_loaded=true;
-
-	if (!defined('WYSIWYG_EDITOR') OR WYSIWYG_EDITOR=="none" OR !file_exists(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php')) {
-		function show_wysiwyg_editor($name,$id,$content,$width,$height) {
-			echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
-		}
-	} else {
-		$id_list=array();
-		$query_wysiwyg = $database->query("SELECT section_id FROM ".TABLE_PREFIX."sections WHERE page_id = '$page_id' AND module = 'wysiwyg'");
-		if($query_wysiwyg->numRows() > 0) {
-			while($wysiwyg_section = $query_wysiwyg->fetchRow()) {
-				$entry='content'.$wysiwyg_section['section_id'];
-				array_push($id_list,$entry);
-			}
-			require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');
-		}
-	}
-}
-
-?>
-
-<form name="wysiwyg<?php echo $section_id; ?>" action="<?php echo WB_URL; ?>/modules/wysiwyg/save.php" method="post">
-
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
-
-<?php
-show_wysiwyg_editor('content'.$section_id,'content'.$section_id,$content,'725px','350px');
-?>
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%" style="padding-bottom: 10px;">
-<tr>
-	<td align="left">
-		<input type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
-	</td>
-	<td align="right">
-		</form>
-		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-</form>
-
-<br />

Property changes on: trunk/addons/trunk/modules/wysiwyg/modify.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/view.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/view.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/view.php	(nonexistent)
@@ -1,35 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Get content
-$get_content = $database->query("SELECT content FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'");
-$fetch_content = $get_content->fetchRow();
-$content = $this->strip_slashes_dummy($fetch_content['content']);
-
-$this->preprocess($content);
-
-echo $content;
-
-?>

Property changes on: trunk/addons/trunk/modules/wysiwyg/view.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/add.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/add.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/add.php	(nonexistent)
@@ -1,29 +0,0 @@
-<?php
-
-// $Id: add.php,v 1.1.1.1 2005/01/30 10:32:12 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Insert an extra row into the database
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_wysiwyg (page_id,section_id) VALUES ('$page_id','$section_id')");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wysiwyg/add.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/index.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/index.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/index.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: index.php,v 1.1.1.1 2005/01/30 10:32:12 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-header('Location: ../index.php');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wysiwyg/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/delete.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/delete.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/delete.php	(nonexistent)
@@ -1,29 +0,0 @@
-<?php
-
-// $Id: delete.php,v 1.1.1.1 2005/01/30 10:32:12 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Delete record from the database
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wysiwyg/delete.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wysiwyg/info.php
===================================================================
--- trunk/addons/trunk/modules/wysiwyg/info.php	(revision 102)
+++ trunk/addons/trunk/modules/wysiwyg/info.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.3 2005/04/08 09:58:31 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$module_directory = 'wysiwyg';
-$module_name = 'WYSIWYG';
-$module_type = 'page';
-$module_version = '2.5';
-$module_designed_for = '2.x';
-$module_author = 'Ryan Djurovich';
-$module_description = 'This module allows you to edit the contents of a page using the WYSIWYG htmlArea program';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wysiwyg/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/uninstall.php
===================================================================
--- trunk/addons/trunk/modules/news/uninstall.php	(revision 102)
+++ trunk/addons/trunk/modules/news/uninstall.php	(nonexistent)
@@ -1,38 +0,0 @@
-<?php
-
-// $Id: uninstall.php,v 1.3 2005/04/25 11:53:12 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Must include code to stop this file being access directly
-if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-
-$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE name = 'module' AND value = 'news'");
-$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE extra = 'news'");
-$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_posts");
-$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_groups");
-$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_comments");
-$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_settings");
-require(WB_PATH.'/framework/functions.php');
-rm_full_dir(WB_PATH.PAGES_DIRECTORY.'/posts');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/uninstall.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/save_post.php
===================================================================
--- trunk/addons/trunk/modules/news/save_post.php	(revision 102)
+++ trunk/addons/trunk/modules/news/save_post.php	(nonexistent)
@@ -1,115 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_POST['post_id']) OR !is_numeric($_POST['post_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$id = $_POST['post_id'];
-	$post_id = $id;
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Validate all fields
-if($admin->get_post('title') == '' AND $admin->get_post('url') == '') {
-	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$id);
-} else {
-	$title = $admin->add_slashes($admin->get_post('title'));
-	$short = $admin->add_slashes($admin->get_post('short'));
-	$long = $admin->add_slashes($admin->get_post('long'));
-	$commenting = $admin->get_post('commenting');
-	$active = $admin->get_post('active');
-	$old_link = $admin->get_post('link');
-	$group_id = $admin->get_post('group');
-}
-
-// Get page link URL
-$query_page = $database->query("SELECT level,link FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
-$page = $query_page->fetchRow();
-$page_level = $page['level'];
-$page_link = $page['link'];
-
-// Include WB functions file
-require(WB_PATH.'/framework/functions.php');
-
-// Work-out what the link should be
-$post_link = '/posts/'.page_filename($title).$post_id;
-
-// Make sure the post link is set and exists
-// Make news post access files dir
-make_dir(WB_PATH.PAGES_DIRECTORY.'/posts/');
-if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/posts/')) {
-	$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']);
-} elseif($old_link != $post_link OR !file_exists(WB_PATH.PAGES_DIRECTORY.$post_link.'.php')) {
-	// We need to create a new file
-	// First, delete old file if it exists
-	if(file_exists(WB_PATH.$old_link.'.php')) {
-		unlink(WB_PATH.$old_link.'.php');
-	}
-	// Specify the filename
-	$filename = WB_PATH.PAGES_DIRECTORY.'/'.$post_link.'.php';
-	// The depth of the page directory in the directory hierarchy
-	// '/pages' is at depth 1
-	$pages_dir_depth=count(explode('/',PAGES_DIRECTORY))-1;
-	// Work-out how many ../'s we need to get to the index page
-	$index_location = '../';
-	for($i = 0; $i < $pages_dir_depth; $i++) {
-		$index_location .= '../';
-	}
-	// Write to the filename
-	$content = ''.
-'<?php
-$page_id = '.$page_id.';
-$section_id = '.$section_id.';
-$post_id = '.$post_id.';
-define("POST_ID", $post_id);
-require("'.$index_location.'config.php");
-require(WB_PATH."/index.php");
-?>';
-	$handle = fopen($filename, 'w');
-	fwrite($handle, $content);
-	fclose($handle);
-	change_mode($filename);
-}
-
-// Update row
-$database->query("UPDATE ".TABLE_PREFIX."mod_news_posts SET group_id = '$group_id', title = '$title', link = '$post_link', content_short = '$short', content_long = '$long', commenting = '$commenting', active = '$active', posted_when = '".mktime()."', posted_by = '".$admin->get_user_id()."' WHERE post_id = '$post_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/save_post.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/comment.php
===================================================================
--- trunk/addons/trunk/modules/news/comment.php	(revision 102)
+++ trunk/addons/trunk/modules/news/comment.php	(nonexistent)
@@ -1,71 +0,0 @@
-<?php
-
-// $Id: comment.php,v 1.2 2005/04/02 06:25:56 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Include config file
-require('../../config.php');
-
-// Check if there is a post id
-if(!isset($_GET['id']) OR !is_numeric($_GET['id'])) {
-	if(!isset($_POST['post_id']) OR !is_numeric($_POST['post_id'])) {
-		header('Location: '.WB_URL.'/pages/');
-	} else {
-		$post_id = $_POST['post_id'];
-	}
-} else {
-	$post_id = $_GET['id'];
-}
-
-// Include database class
-require_once(WB_PATH.'/framework/class.database.php');
-$database = new database();
-
-// Query post for page id
-$query_post = $database->query("SELECT post_id,title,section_id,page_id FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
-if($query_post->numRows() == 0) {
-	header('Location: '.WB_URL.'/pages/');
-} else {
-	$fetch_post = $query_post->fetchRow();
-	$page_id = $fetch_post['page_id'];
-	$section_id = $fetch_post['section_id'];
-	$post_id = $fetch_post['post_id'];
-	$post_title = $fetch_post['title'];
-	define('SECTION_ID', $section_id);
-	define('POST_ID', $post_id);
-	define('POST_TITLE', $post_title);
-	// Get page details
-	$query_page = $database->query("SELECT parent,page_title,menu_title,keywords,description,visibility FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
-	if($query_page->numRows() == 0) {
-		header('Location: '.WB_URL.'/pages/');
-	} else {
-		$page = $query_page->fetchRow();
-		// Required page details
-		define('PAGE_CONTENT', WB_PATH.'/modules/news/comment_page.php');
-		// Include index (wrapper) file
-		require(WB_PATH.'/index.php');
-	}
-}
-
-
-?>

Property changes on: trunk/addons/trunk/modules/news/comment.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/install.php
===================================================================
--- trunk/addons/trunk/modules/news/install.php	(revision 102)
+++ trunk/addons/trunk/modules/news/install.php	(nonexistent)
@@ -1,137 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-if(defined('WB_URL')) {
-	
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_posts`");
-	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_posts` ( '
-					 . '`post_id` INT NOT NULL AUTO_INCREMENT,'
-					 . '`section_id` INT NOT NULL,'
-					 . '`page_id` INT NOT NULL,'
-					 . '`group_id` INT NOT NULL,'
-					 . '`active` INT NOT NULL,'
-					 . '`position` INT NOT NULL,'
-					 . '`title` VARCHAR(255) NOT NULL,'
-					 . '`link` TEXT NOT NULL,'
-					 . '`content_short` TEXT NOT NULL,'
-					 . '`content_long` TEXT NOT NULL,'
-					 . '`commenting` VARCHAR(7) NOT NULL,'
-		   	    . '`posted_when` INT NOT NULL ,'
-					 . '`posted_by` INT NOT NULL ,'
-					 . 'PRIMARY KEY (post_id)'
-                . ' )';
-	$database->query($mod_news);
-	
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_groups`");
-	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_groups` ( '
-					 . '`group_id` INT NOT NULL AUTO_INCREMENT,'
-					 . '`section_id` INT NOT NULL,'
-					 . '`page_id` INT NOT NULL,'
-					 . '`active` INT NOT NULL,'
-					 . '`position` INT NOT NULL,'
-					 . '`title` VARCHAR(255) NOT NULL,'
-					 . 'PRIMARY KEY (group_id)'
-                . ' )';
-	$database->query($mod_news);
-	
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_comments`");
-	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_comments` ( '
-					 . '`comment_id` INT NOT NULL AUTO_INCREMENT,'
-					 . '`section_id` INT NOT NULL,'
-					 . '`page_id` INT NOT NULL,'
-					 . '`post_id` INT NOT NULL,'
-					 . '`title` VARCHAR(255) NOT NULL,'
-					 . '`comment` TEXT NOT NULL,'
-		   	    . '`commented_when` INT NOT NULL ,'
-					 . '`commented_by` INT NOT NULL ,'
-					 . 'PRIMARY KEY (comment_id)'
-                . ' )';
-	$database->query($mod_news);
-	
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_settings`");
-	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_settings` ( '
-					 . '`section_id` INT NOT NULL,'
-					 . '`page_id` INT NOT NULL,'
-					 . '`header` TEXT NOT NULL,'
-					 . '`post_loop` TEXT NOT NULL,'
-					 . '`footer` TEXT NOT NULL,'
-					 . '`posts_per_page` INT NOT NULL,'
-					 . '`post_header` TEXT NOT NULL,'
-					 . '`post_footer` TEXT NOT NULL,'
-					 . '`comments_header` TEXT NOT NULL,'
-					 . '`comments_loop` TEXT NOT NULL,'
-					 . '`comments_footer` TEXT NOT NULL,'
-					 . '`comments_page` TEXT NOT NULL,'
-					 . '`commenting` VARCHAR(7) NOT NULL,'
-					 . '`resize` INT NOT NULL,'
-					 . 'PRIMARY KEY (section_id)'
-                . ' )';
-	$database->query($mod_news);
-		
-	// Insert info into the search table
-	// Module query info
-	$field_info = array();
-	$field_info['page_id'] = 'page_id';
-	$field_info['title'] = 'page_title';
-	$field_info['link'] = 'link';
-	$field_info['description'] = 'description';
-	$field_info['modified_when'] = 'modified_when';
-	$field_info['modified_by'] = 'modified_by';
-	$field_info = serialize($field_info);
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'news', '$field_info')");
-	// Query start
-	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_news_posts, [TP]mod_news_groups, [TP]mod_news_comments, [TP]mod_news_settings, [TP]pages WHERE ";
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'news')");
-	// Query body
-	$query_body_code = "
-	[TP]pages.page_id = [TP]mod_news_posts.page_id AND [TP]mod_news_posts.title LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_posts.page_id AND [TP]mod_news_posts.content_short LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_posts.page_id AND [TP]mod_news_posts.content_long LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_comments.page_id AND [TP]mod_news_comments.title LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_comments.page_id AND [TP]mod_news_comments.comment LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.header LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.footer LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.post_header LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.post_footer LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.comments_header LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.comments_footer LIKE \'%[STRING]%\'
-	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.comments_footer LIKE \'%[STRING]%\'";
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'news')");
-	// Query end
-	$query_end_code = "";	
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'news')");
-	
-	// Insert blank row (there needs to be at least on row for the search to work)
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_posts (section_id,page_id) VALUES ('0', '0')");
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_groups (section_id,page_id) VALUES ('0', '0')");
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_comments (section_id,page_id) VALUES ('0', '0')");
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_settings (section_id,page_id) VALUES ('0', '0')");
-	
-	// Make news post access files dir
-	make_dir(WB_PATH.PAGES_DIRECTORY.'/posts/');-	
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/install.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/modify_settings.php
===================================================================
--- trunk/addons/trunk/modules/news/modify_settings.php	(revision 102)
+++ trunk/addons/trunk/modules/news/modify_settings.php	(nonexistent)
@@ -1,173 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get header and footer
-$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
-$fetch_content = $query_content->fetchRow();
-
-// Set raw html <'s and >'s to be replace by friendly html code
-$raw = array('<', '>');
-$friendly = array('&lt;', '&gt;');
-
-?>
-
-<style type="text/css">
-.setting_name {
-	vertical-align: top;
-}
-</style>
-
-<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_settings.php" method="post" style="margin: 0;">
-
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
-
-<table cellpadding="2" cellspacing="0" border="0" width="100%">
-<tr>
-	<td class="setting_name" width="100"><?php echo $TEXT['HEADER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="header" style="width: 100%; height: 80px;"><?php echo $admin->strip_slashes_dummy($fetch_content['header']); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['POST'].' '.$TEXT['LOOP']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="post_loop" style="width: 100%; height: 60px;"><?php echo $admin->strip_slashes_dummy($fetch_content['post_loop']); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['FOOTER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="footer" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['footer'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['POST_HEADER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="post_header" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['post_header'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['POST_FOOTER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="post_footer" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['post_footer'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['POSTS_PER_PAGE']; ?>:</td>
-	<td class="setting_name">
-		<select name="posts_per_page" style="width: 100%;">
-			<option value=""><?php echo $TEXT['UNLIMITED']; ?></option>
-			<?php
-			for($i = 1; $i <= 20; $i++) {
-				if($fetch_content['posts_per_page'] == ($i*5)) { $selected = ' selected'; } else { $selected = ''; }
-				echo '<option value="'.($i*5).'"'.$selected.'>'.($i*5).'</option>';
-			}
-			?>
-		</select>
-	</td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['COMMENTING']; ?>:</td>
-	<td>
-		<select name="commenting" style="width: 100%;">
-			<option value="none"><?php echo $TEXT['DISABLED']; ?></option>
-			<option value="public" <?php if($fetch_content['commenting'] == 'public') { echo 'selected'; } ?>><?php echo $TEXT['PUBLIC']; ?></option>
-			<option value="private" <?php if($fetch_content['commenting'] == 'private') { echo 'selected'; } ?>><?php echo $TEXT['PRIVATE']; ?></option>
-		</select>
-	</td>
-</tr>
-<?php if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg')) { /* Make's sure GD library is installed */ ?>
-<tr>
-	<td>
-		<?php echo $TEXT['RESIZE_IMAGE_TO']; ?>:
-	</td>
-	<td>
-		<select name="resize" style="width: 100%;">
-			<option value=""><?php echo $TEXT['NONE']; ?></option>
-			<?php
-			$SIZES['50'] = '50x50px';
-			$SIZES['75'] = '75x75px';
-			$SIZES['100'] = '100x100px';
-			$SIZES['125'] = '125x125px';
-			$SIZES['150'] = '150x150px';
-			foreach($SIZES AS $size => $size_name) {
-				if($fetch_content['resize'] == $size) { $selected = ' selected'; } else { $selected = ''; }
-				echo '<option value="'.$size.'"'.$selected.'>'.$size_name.'</option>';
-			}
-			?>
-		</select>
-	</td>
-</tr>
-<?php } ?>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['HEADER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="comments_header" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_header'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['LOOP']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="comments_loop" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_loop'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['FOOTER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="comments_footer" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_footer'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['PAGE']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="comments_page" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_page'])); ?></textarea>
-	</td>
-</tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="105">&nbsp;</td>
-	<td align="left">
-		<input name="save" type="submit" value="<?php echo $TEXT['SAVE'].' '.$TEXT['SETTINGS']; ?>" style="width: 200px; margin-top: 5px;"></form>
-	</td>
-	<td align="right">
-		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/modify_settings.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/modify_group.php
===================================================================
--- trunk/addons/trunk/modules/news/modify_group.php	(revision 102)
+++ trunk/addons/trunk/modules/news/modify_group.php	(nonexistent)
@@ -1,105 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$group_id = $_GET['group_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get header and footer
-$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '$group_id'");
-$fetch_content = $query_content->fetchRow();
-
-?>
-
-<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_group.php" method="post" enctype="multipart/form-data" style="margin: 0;">
-
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
-<input type="hidden" name="group_id" value="<?php echo $group_id; ?>">
-
-<table cellpadding="4" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
-	<td>
-		<input type="text" name="title" value="<?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['title'])); ?>" style="width: 100%;" maxlength="255" />
-	</td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['IMAGE']; ?>:</td>
-	<?php if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) { ?>
-	<td>
-		<a href="<?php echo WB_URL.MEDIA_DIRECTORY; ?>/.news/image<?php echo $group_id; ?>.jpg" target="_blank">View</a>
-		&nbsp;
-		<input type="checkbox" name="delete_image" id="delete_image" value="true" />
-		<a href="javascript: toggle_checkbox('delete_image');">Delete</a>
-	</td>
-	<?php } else { ?>
-	<td>
-		<input type="file" name="image" />
-	</td>
-	<?php } ?>
-</tr>
-<tr>
-	<td><?php echo $TEXT['ACTIVE']; ?>:</td>
-	<td>
-		<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked'; } ?> />
-		<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
-		<?php echo $TEXT['YES']; ?>
-		</a>
-		-
-		<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked'; } ?> />
-		<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
-		<?php echo $TEXT['NO']; ?>
-		</a>
-	</td>
-</tr>
-</table>
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left">
-		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 200px; margin-top: 5px;"></form>
-	</td>
-	<td align="right">
-		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/modify_group.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/save_settings.php
===================================================================
--- trunk/addons/trunk/modules/news/save_settings.php	(revision 102)
+++ trunk/addons/trunk/modules/news/save_settings.php	(nonexistent)
@@ -1,65 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// This code removes any <?php tags and adds slashes
-$friendly = array('&lt;', '&gt;', '?php');
-$raw = array('<', '>', '');
-$header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['header']));
-$post_loop = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_loop']));
-$footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['footer']));
-$post_header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_header']));
-$post_footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_footer']));
-$comments_header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_header']));
-$comments_loop = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_loop']));
-$comments_footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_footer']));
-$comments_page = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_page']));
-$commenting = $_POST['commenting'];
-$posts_per_page = $_POST['posts_per_page'];
-if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg')) {
-	$resize = $_POST['resize'];
-} else {
-	$resize = '';
-}
-
-// Update settings
-$database->query("UPDATE ".TABLE_PREFIX."mod_news_settings SET header = '$header', post_loop = '$post_loop', footer = '$footer', posts_per_page = '$posts_per_page', post_header = '$post_header', post_footer = '$post_footer', comments_header = '$comments_header', comments_loop = '$comments_loop', comments_footer = '$comments_footer', comments_page = '$comments_page', commenting = '$commenting', resize = '$resize' WHERE section_id = '$section_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/save_settings.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/modify_post.php
===================================================================
--- trunk/addons/trunk/modules/news/modify_post.php	(revision 102)
+++ trunk/addons/trunk/modules/news/modify_post.php	(nonexistent)
@@ -1,197 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$post_id = $_GET['post_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get header and footer
-$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
-$fetch_content = $query_content->fetchRow();
-
-if (!defined('WYSIWYG_EDITOR') OR WYSIWYG_EDITOR=="none" OR !file_exists(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php')) {
-	function show_wysiwyg_editor($name,$id,$content,$width,$height) {
-		echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
-	}
-} else {
-	$id_list=array("short","long");
-			require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');
-}
-
-?>
-<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_post.php" method="post" style="margin: 0;">
-
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
-<input type="hidden" name="post_id" value="<?php echo $post_id; ?>">
-<input type="hidden" name="link" value="<?php echo $fetch_content['link']; ?>">
-
-<table cellpadding="4" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
-	<td>
-		<input type="text" name="title" value="<?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['title'])); ?>" style="width: 100%;" maxlength="255" />
-	</td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['GROUP']; ?>:</td>
-	<td>
-		<select name="group" style="width: 100%;">
-			<option value="0"><?php echo $TEXT['NONE']; ?></option>
-			<?php
-			$query = $database->query("SELECT group_id,title FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id' ORDER BY position ASC");
-			if($query->numRows() > 0) {
-				// Loop through groups
-				while($group = $query->fetchRow()) {
-					?>
-					<option value="<?php echo $group['group_id']; ?>"<?php if($fetch_content['group_id'] == $group['group_id']) { echo ' selected'; } ?>><?php echo $group['title']; ?></option>
-					<?php
-				}
-			}
-			?>
-		</select>
-	</td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['COMMENTING']; ?>:</td>
-	<td>
-		<select name="commenting" style="width: 100%;">
-			<option value="none"><?php echo $TEXT['DISABLED']; ?></option>
-			<option value="public" <?php if($fetch_content['commenting'] == 'public') { echo 'selected'; } ?>><?php echo $TEXT['PUBLIC']; ?></option>
-			<option value="private" <?php if($fetch_content['commenting'] == 'private') { echo 'selected'; } ?>><?php echo $TEXT['PRIVATE']; ?></option>
-		</select>
-	</td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['ACTIVE']; ?>:</td>
-	<td>
-		<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked'; } ?> />
-		<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
-		<?php echo $TEXT['YES']; ?>
-		</a>
-		&nbsp;
-		<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked'; } ?> />
-		<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
-		<?php echo $TEXT['NO']; ?>
-		</a>
-	</td>
-</tr>
-<tr>
-	<td valign="top"><?php echo $TEXT['SHORT']; ?>:</td>
-	<td>
-	<?php
-	show_wysiwyg_editor("short","short",$fetch_content['content_short'],"100%","135px");
-	?>
-	</td>
-</tr>
-<tr>
-	<td valign="top"><?php echo $TEXT['LONG']; ?>:</td>
-	<td>
-	<?php
-	show_wysiwyg_editor("long","long",$fetch_content['content_long'],"100%","300px");
-	?>
-	</td>
-</tr>
-</table>
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="90">
-		&nbsp;
-	</td>
-	<td align="left">
-		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 200px; margin-top: 5px;"></form>
-	</td>
-	<td align="right">
-		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-<br />
-
-<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['COMMENT']; ?></h2>
-
-<?php
-
-// Loop through existing posts
-$query_comments = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_comments` WHERE section_id = '$section_id' AND post_id = '$post_id' ORDER BY commented_when DESC");
-if($query_comments->numRows() > 0) {
-	$row = 'a';
-	?>
-	<table cellpadding="2" cellspacing="0" border="0" width="100%">
-	<?php
-	while($comment = $query_comments->fetchRow()) {
-		?>
-		<tr class="row_<?php echo $row; ?>" height="20">
-			<td width="20" style="padding-left: 5px;">
-				<a href="<?php echo WB_URL; ?>/modules/news/modify_comment.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&comment_id=<?php echo $comment['comment_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="^" />
-				</a>
-			</td>	
-			<td>
-				<a href="<?php echo WB_URL; ?>/modules/news/modify_comment.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&comment_id=<?php echo $comment['comment_id']; ?>">
-					<?php echo $comment['title']; ?>
-				</a>
-			</td>
-			<td width="20">
-				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_comment.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post_id; ?>&comment_id=<?php echo $comment['comment_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
-				</a>
-			</td>
-		</tr>
-		<?php
-		// Alternate row color
-		if($row == 'a') {
-			$row = 'b';
-		} else {
-			$row = 'a';
-		}
-	}
-	?>
-	</table>
-	<?php
-} else {
-	echo $TEXT['NONE_FOUND'];
-}
-
-?>
-
-
-
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>

Property changes on: trunk/addons/trunk/modules/news/modify_post.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/move_up.php
===================================================================
--- trunk/addons/trunk/modules/news/move_up.php	(revision 102)
+++ trunk/addons/trunk/modules/news/move_up.php	(nonexistent)
@@ -1,60 +0,0 @@
-<?php
-
-// $Id: move_up.php,v 1.1.1.1 2005/01/30 10:32:20 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
-	if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
-		header("Location: index.php");
-	} else {
-		$id = $_GET['group_id'];
-		$id_field = 'group_id';
-		$table = TABLE_PREFIX.'mod_news_groups';
-	}
-} else {
-	$id = $_GET['post_id'];
-	$id_field = 'post_id';
-	$table = TABLE_PREFIX.'mod_news_posts';
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-
-// Create new order object an reorder
-$order = new order($table, 'position', $id_field, 'section_id');
-if($order->move_up($id)) {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/move_up.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/add_group.php
===================================================================
--- trunk/addons/trunk/modules/news/add_group.php	(revision 102)
+++ trunk/addons/trunk/modules/news/add_group.php	(nonexistent)
@@ -1,53 +0,0 @@
-<?php
-
-// $Id: add_group.php,v 1.1.1.1 2005/01/30 10:32:22 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-// Get new order
-$order = new order(TABLE_PREFIX.'mod_news_groups', 'position', 'group_id', 'section_id');
-$position = $order->get_new($section_id);
-
-// Insert new row into database
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_groups (section_id,page_id,position,active) VALUES ('$section_id','$page_id','$position','1')");
-
-// Get the id
-$group_id = $database->get_one("SELECT LAST_INSERT_ID()");
-
-// Say that a new record has been added, then redirect to modify page
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/add_group.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/view.php
===================================================================
--- trunk/addons/trunk/modules/news/view.php	(revision 102)
+++ trunk/addons/trunk/modules/news/view.php	(nonexistent)
@@ -1,323 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Must include code to stop this file being access directly
-if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-
-// Check if there is a start point defined
-if(isset($_GET['p']) AND is_numeric($_GET['p']) AND $_GET['p'] >= 0) {
-	$position = $_GET['p'];
-} else {
-	$position = 0;
-}
-
-// Get user's username, display name, email, and id - needed for insertion into post info
-$users = array();
-$query_users = $database->query("SELECT user_id,username,display_name,email FROM ".TABLE_PREFIX."users");
-if($query_users->numRows() > 0) {
-	while($user = $query_users->fetchRow()) {
-		// Insert user info into users array
-		$user_id = $user['user_id'];
-		$users[$user_id]['username'] = $user['username'];
-		$users[$user_id]['display_name'] = $user['display_name'];
-		$users[$user_id]['email'] = $user['email'];
-	}
-}
-
-// Get groups (title, if they are active, and their image [if one has been uploaded])
-$groups[0]['title'] = '';
-$groups[0]['active'] = true;
-$groups[0]['image'] = '';
-$query_users = $database->query("SELECT group_id,title,active FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id' ORDER BY position ASC");
-if($query_users->numRows() > 0) {
-	while($group = $query_users->fetchRow()) {
-		// Insert user info into users array
-		$group_id = $group['group_id'];
-		$groups[$group_id]['title'] = $this->strip_slashes_dummy($group['title']);
-		$groups[$group_id]['active'] = $group['active'];
-		if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) {
-			$groups[$group_id]['image'] = WB_URL.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg';
-		} else {
-			$groups[$group_id]['image'] = '';
-		}
-	}
-}
-
-// Check if we should show the main page or a post itself
-if(!defined('POST_ID') OR !is_numeric(POST_ID)) {
-	
-	// Check if we should only list posts from a certain group
-	if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
-		$query_extra = " AND group_id = '".$_GET['g']."'";
-		?>
-		<style type="text/css">.selected_group_title { font-size: 14px; text-align: center; }</style>
-		<?php
-	} else {
-		$query_extra = '';
-	}
-	
-	// Get settings
-	$query_settings = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
-	if($query_settings->numRows() > 0) {
-		$fetch_settings = $query_settings->fetchRow();
-		$setting_header = $this->strip_slashes_dummy($fetch_settings['header']);
-		$setting_post_loop = $this->strip_slashes_dummy($fetch_settings['post_loop']);
-		$setting_footer = $this->strip_slashes_dummy($fetch_settings['footer']);
-		$setting_posts_per_page = $fetch_settings['posts_per_page'];
-	} else {
-		$setting_header = '';
-		$setting_post_loop = '';
-		$setting_footer = '';
-		$setting_posts_per_page = '';
-	}
-	
-	// Get total number of posts
-	$query_total_num = $database->query("SELECT post_id FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id' AND active = '1' AND title != ''$query_extra");
-	$total_num = $query_total_num->numRows();
-
-	// Work-out if we need to add limit code to sql
-	if($setting_posts_per_page != 0) {
-		$limit_sql = " LIMIT $position,$setting_posts_per_page";
-	} else {
-		$limit_sql = "";
-	}
-	
-	// Query posts (for this page)
-	$query_posts = $database->query("SELECT group_id,post_id,title,link,content_short,posted_by,posted_when FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id' AND active = '1' AND title != ''$query_extra ORDER BY position DESC".$limit_sql);
-	$num_posts = $query_posts->numRows();
-	
-	// Create previous and next links
-	if($setting_posts_per_page != 0) {
-		if($position > 0) {
-			if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
-				$pl_prepend = '<a href="?p='.($position-$setting_posts_per_page).'&g='.$_GET['g'].'"><< ';
-			} else {
-				$pl_prepend = '<a href="?p='.($position-$setting_posts_per_page).'"><< ';
-			}
-			$pl_append = '</a>';
-			$previous_link = $pl_prepend.$TEXT['PREVIOUS'].$pl_append;
-			$previous_page_link = $pl_prepend.$TEXT['PREVIOUS_PAGE'].$pl_append;
-		} else {
-			$previous_link = '';
-			$previous_page_link = '';
-		}
-		if($position+$setting_posts_per_page >= $total_num) {
-			$next_link = '';
-			$next_page_link = '';
-		} else {
-			if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
-				$nl_prepend = '<a href="?p='.($position+$setting_posts_per_page).'&g='.$_GET['g'].'"> ';
-			} else {
-				$nl_prepend = '<a href="?p='.($position+$setting_posts_per_page).'"> ';
-			}
-			$nl_append = ' >></a>';
-			$next_link = $nl_prepend.$TEXT['NEXT'].$nl_append;
-			$next_page_link = $nl_prepend.$TEXT['NEXT_PAGE'].$nl_append;
-		}
-		if($position+$setting_posts_per_page > $total_num) {
-			$num_of = $position+$num_posts;
-		} else {
-			$num_of = $position+$setting_posts_per_page;
-		}
-		$out_of = ($position+1).'-'.$num_of.' '.strtolower($TEXT['OUT_OF']).' '.$total_num;
-		$of = ($position+1).'-'.$num_of.' '.strtolower($TEXT['OF']).' '.$total_num;
-		$display_previous_next_links = '';
-	} else {
-		$display_previous_next_links = 'none';
-	}
-		
-	// Print header
-	if($display_previous_next_links == 'none') {
-		echo  str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array('','','','','','', $display_previous_next_links), $setting_header);
-	} else {
-		echo str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array($next_page_link, $next_link, $previous_page_link, $previous_link, $out_of, $of, $display_previous_next_links), $setting_header);
-	}
-	
-	if($num_posts > 0) {
-		if($query_extra != '') {
-			?>
-			<div class="selected_group_title">
-				<?php echo '<a href="'.$_SERVER['PHP_SELF'].'">'.PAGE_TITLE.'</a> >> '.$groups[$_GET['g']]['title']; ?>
-			</div>
-			<?php
-		}
-		while($post = $query_posts->fetchRow()) {
-			if(isset($groups[$post['group_id']]['active']) AND $groups[$post['group_id']]['active'] != false) { // Make sure parent group is active
-				$uid = $post['posted_by']; // User who last modified the post
-				// Workout date and time of last modified post
-				$post_date = gmdate(DATE_FORMAT, $post['posted_when']+TIMEZONE);
-				$post_time = gmdate(TIME_FORMAT, $post['posted_when']+TIMEZONE);
-				// Work-out the post link
-				$post_link = page_link($post['link']);
-				if(isset($_GET['p']) AND $position > 0) {
-					$post_link .= '?p='.$position;
-				}
-				if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
-					if(isset($_GET['p']) AND $position > 0) { $post_link .= '&'; } else { $post_link .= '?'; }
-					$post_link .= 'g='.$_GET['g'];
-				}
-				// Get group id, title, and image
-				$group_id = $post['group_id'];
-				$group_title = $groups[$group_id]['title'];
-				$group_image = $groups[$group_id]['image'];
-				if($group_image == '') { $display_image = 'none'; } else { $display_image = ''; }
-				if($group_id == 0) { $display_group = 'none'; } else { $display_group = ''; }
-				// Replace [wblink--PAGE_ID--] with real link
-				$short = $this->strip_slashes_dummy($post['content_short']);
-				$this->preprocess($short);
-				// Replace vars with values
-				$vars = array('[PAGE_TITLE]', '[GROUP_ID]', '[GROUP_TITLE]', '[GROUP_IMAGE]', '[DISPLAY_GROUP]', '[DISPLAY_IMAGE]', '[TITLE]', '[SHORT]', '[LINK]', '[DATE]', '[TIME]', '[USER_ID]', '[USERNAME]', '[DISPLAY_NAME]', '[EMAIL]', '[TEXT_READ_MORE]');
-				if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '') {
-					$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $short, $post_link, $post_date, $post_time, $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email'], $TEXT['READ_MORE']);
-				} else {
-					$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $short, $post_link, $post_date, $post_time, '', '', '', '', $TEXT['READ_MORE']);
-				}
-				echo str_replace($vars, $values, $setting_post_loop);
-			}
-		}
-	}
-	
-	// Print footer
-	if($display_previous_next_links == 'none') {
-		echo  str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array('','','','','','', $display_previous_next_links), $setting_footer);
-	} else {
-		echo str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array($next_page_link, $next_link, $previous_page_link, $previous_link, $out_of, $of, $display_previous_next_links), $setting_footer);
-	}
-	
-} elseif(defined('POST_ID') AND is_numeric(POST_ID)) {
-	
-	// Get settings
-	$query_settings = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
-	if($query_settings->numRows() > 0) {
-		$fetch_settings = $query_settings->fetchRow();
-		$setting_post_header = $this->strip_slashes_dummy($fetch_settings['post_header']);
-		$setting_post_footer = $this->strip_slashes_dummy($fetch_settings['post_footer']);
-		$setting_comments_header = $this->strip_slashes_dummy($fetch_settings['comments_header']);
-		$setting_comments_loop = $this->strip_slashes_dummy($fetch_settings['comments_loop']);
-		$setting_comments_footer = $this->strip_slashes_dummy($fetch_settings['comments_footer']);
-	} else {
-		$setting_post_header = '';
-		$setting_post_footer = '';
-		$setting_comments_header = '';
-		$setting_comments_loop = '';
-		$setting_comments_footer = '';
-	}
-	
-	// Get page info
-	$query_page = $database->query("SELECT link FROM ".TABLE_PREFIX."pages WHERE page_id = '".PAGE_ID."'");
-	if($query_page->numRows() > 0) {
-		$page = $query_page->fetchRow();
-		$page_link = page_link($page['link']);
-		if(isset($_GET['p']) AND $position > 0) {
-			$page_link .= '?p='.$_GET['p'];
-		}
-		if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
-			if(isset($_GET['p']) AND $position > 0) { $page_link .= '&'; } else { $page_link .= '?'; }
-			$page_link .= 'g='.$_GET['g'];
-		}
-	} else {
-		exit('Page not found');
-	}
-	
-	// Get post info
-	$query_post = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '".POST_ID."' AND active = '1'");
-	if($query_post->numRows() > 0) {
-		$post = $query_post->fetchRow();
-		if(isset($groups[$post['group_id']]['active']) AND $groups[$post['group_id']]['active'] != false) { // Make sure parent group is active
-			$uid = $post['posted_by']; // User who last modified the post
-			// Workout date and time of last modified post
-			$post_date = gmdate(DATE_FORMAT, $post['posted_when']+TIMEZONE);
-			$post_time = gmdate(TIME_FORMAT, $post['posted_when']+TIMEZONE);
-			// Get group id, title, and image
-			$group_id = $post['group_id'];
-			$group_title = $groups[$group_id]['title'];
-			$group_image = $groups[$group_id]['image'];
-			if($group_image == '') { $display_image = 'none'; } else { $display_image = ''; }
-			if($group_id == 0) { $display_group = 'none'; } else { $display_group = ''; }
-			$vars = array('[PAGE_TITLE]', '[GROUP_ID]', '[GROUP_TITLE]', '[GROUP_IMAGE]', '[DISPLAY_GROUP]', '[DISPLAY_IMAGE]', '[TITLE]', '[SHORT]', '[BACK]', '[DATE]', '[TIME]', '[USER_ID]', '[USERNAME]', '[DISPLAY_NAME]', '[EMAIL]');
-			if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '') {
-				$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $this->strip_slashes_dummy($post['content_short']), $page_link, $post_date, $post_time, $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email']);
-			} else {
-				$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $this->strip_slashes_dummy($post['content_short']), $page_link, $post_date, $post_time, '', '', '', '');
-			}
-			$post_long = $this->strip_slashes_dummy($post['content_long']);
-		}
-	} else {
-		header('Location: '.WB_URL.'/pages/');
-	}
-	
-	// Print post header
-	echo str_replace($vars, $values, $setting_post_header);
-	
-	// Replace [wblink--PAGE_ID--] with real link
-  	$this->preprocess($postlong);
-	// Print long
-	echo $post_long;
-	
-	// Print post footer
-	echo str_replace($vars, $values, $setting_post_footer);
-	
-	// Show comments section if we have to
-	if($post['commenting'] == 'private' AND isset($admin) AND $admin->is_authenticated() == true OR $post['commenting'] == 'public') {
-		
-		// Print comments header
-		echo str_replace('[ADD_COMMENT_URL]', WB_URL.'/modules/news/comment.php?id='.POST_ID, $setting_comments_header);
-		
-		// Query for comments
-		$query_comments = $database->query("SELECT title,comment,commented_when,commented_by FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '".POST_ID."' ORDER BY commented_when ASC");
-		if($query_comments->numRows() > 0) {
-			while($comment = $query_comments->fetchRow()) {
-				// Display Comments without slashes, but with new-line characters
-				$comment['comment'] = nl2br($this->strip_slashes_dummy($comment['comment']));
-				$comment['title'] = $this->strip_slashes_dummy($comment['title']);
-				// Print comments loop
-				$commented_date = gmdate(DATE_FORMAT, $comment['commented_when']+TIMEZONE);
-				$commented_time = gmdate(TIME_FORMAT, $comment['commented_when']+TIMEZONE);
-				$uid = $comment['commented_by'];
-				$vars = array('[TITLE]','[COMMENT]','[DATE]','[TIME]','[USER_ID]','[USERNAME]','[DISPLAY_NAME]', '[EMAIL]');
-				if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '') {
-					$values = array($this->strip_slashes_dummy($comment['title']), $this->strip_slashes_dummy($comment['comment']), $commented_date, $commented_time, $uid, $this->strip_slashes_dummy($users[$uid]['username']), $this->strip_slashes_dummy($users[$uid]['display_name']), $this->strip_slashes_dummy($users[$uid]['email']));
-				} else {
-					$values = array($this->strip_slashes_dummy($comment['title']), $this->strip_slashes_dummy($comment['comment']), $commented_date, $commented_time, '0', strtolower($TEXT['UNKNOWN']), $TEXT['UNKNOWN'], '');
-				}
-				echo str_replace($vars, $values, $setting_comments_loop);
-			}
-		} else {
-			// Say no comments found
-			if(isset($TEXT['NONE_FOUND'])) {
-				echo $TEXT['NONE_FOUND'].'<br />';
-			} else {
-				echo 'None Found<br />';
-			}
-		}
-		
-		// Print comments footer
-		echo str_replace('[ADD_COMMENT_URL]', WB_URL.'/modules/news/comment.php?id='.POST_ID, $setting_comments_footer);
-		
-	}
-		
-}
-
-?>

Property changes on: trunk/addons/trunk/modules/news/view.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/save_group.php
===================================================================
--- trunk/addons/trunk/modules/news/save_group.php	(revision 102)
+++ trunk/addons/trunk/modules/news/save_group.php	(nonexistent)
@@ -1,99 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_POST['group_id']) OR !is_numeric($_POST['group_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$group_id = $_POST['group_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Include WB functions file
-require(WB_PATH.'/framework/functions.php');
-
-// Vagroup_idate all fields
-if($admin->get_post('title') == '') {
-	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
-} else {
-	$title = $admin->add_slashes($admin->get_post('title'));
-	$active = $admin->get_post('active');
-}
-
-// Update row
-$database->query("UPDATE ".TABLE_PREFIX."mod_news_groups SET title = '$title', active = '$active' WHERE group_id = '$group_id'");
-
-// Check if the user uploaded an image or wants to delete one
-if(isset($_FILES['image']['tmp_name']) AND $_FILES['image']['tmp_name'] != '') {
-	// Get real filename and set new filename
-	$filename = $_FILES['image']['name'];
-	$new_filename = WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg';
-	// Make sure the image is a jpg file
-	if(substr($filename, -3, 3) != 'jpg') {
-		$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG)');
-	} elseif(mime_content_type($_FILES['image']['tmp_name']) != 'image/jpeg' AND mime_content_type($_FILES['image']['tmp_name']) != 'image/jpg') {
-		$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG)');
-	}
-	// Make sure the target directory exists
-	make_dir(WB_PATH.MEDIA_DIRECTORY.'/.news');
-	// Upload image
-	move_uploaded_file($_FILES['image']['tmp_name'], $new_filename);
-	// Check if we need to create a thumb
-	$query_settings = $database->query("SELECT resize FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
-	$fetch_settings = $query_settings->fetchRow();
-	$resize = $fetch_settings['resize'];
-	if($resize != 0) {
-		// Resize the image
-		$thumb_location = WB_PATH.MEDIA_DIRECTORY.'/.news/thumb'.$group_id.'.jpg';
-		if(make_thumb($new_filename, $thumb_location, $resize)) {
-			// Delete the actual image and replace with the resized version
-			unlink($new_filename);
-			rename($thumb_location, $new_filename);
-		}
-	}
-}
-if(isset($_POST['delete_image']) AND $_POST['delete_image'] != '') {
-	// Try unlinking image
-	if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) {
-		unlink(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg');
-	}
-}
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>

Property changes on: trunk/addons/trunk/modules/news/save_group.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/save_comment.php
===================================================================
--- trunk/addons/trunk/modules/news/save_comment.php	(revision 102)
+++ trunk/addons/trunk/modules/news/save_comment.php	(nonexistent)
@@ -1,61 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_POST['comment_id']) OR !is_numeric($_POST['comment_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$comment_id = $_POST['comment_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Validate all fields
-if($admin->get_post('title') == '' AND $admin->get_post('comment') == '') {
-	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/modify_comment.php?page_id='.$page_id.'&section_id='.$section_id.'comment_id='.$id);
-} else {
-	$title = $admin->add_slashes($admin->get_post('title'));
-	$comment = $admin->add_slashes($admin->get_post('comment'));
-	$post_id = $admin->get_post('post_id');
-}
-
-// Update row
-$database->query("UPDATE ".TABLE_PREFIX."mod_news_comments SET title = '$title', comment = '$comment' WHERE comment_id = '$comment_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_comment.php?page_id='.$page_id.'&section_id='.$section_id.'&comment_id='.$id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/save_comment.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/delete_group.php
===================================================================
--- trunk/addons/trunk/modules/news/delete_group.php	(revision 102)
+++ trunk/addons/trunk/modules/news/delete_group.php	(nonexistent)
@@ -1,52 +0,0 @@
-<?php
-
-// $Id: delete_group.php,v 1.1.1.1 2005/01/30 10:32:17 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$group_id = $_GET['group_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Update row
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '$group_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/delete_group.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/delete_post.php
===================================================================
--- trunk/addons/trunk/modules/news/delete_post.php	(revision 102)
+++ trunk/addons/trunk/modules/news/delete_post.php	(nonexistent)
@@ -1,70 +0,0 @@
-<?php
-
-// $Id: delete_post.php,v 1.1.1.1 2005/01/30 10:32:21 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$post_id = $_GET['post_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Get post details
-$query_details = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
-if($query_details->numRows() > 0) {
-	$get_details = $query_details->fetchRow();
-} else {
-	$admin->print_error($TEXT['NOT_FOUND'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Unlink post access file
-if(is_writable(WB_PATH.$get_details['link'].'.php')) {
-	unlink(WB_PATH.$get_details['link'].'.php');
-}
-
-// Delete post
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id' LIMIT 1");
-
-// Clean up ordering
-require(WB_PATH.'/framework/class.order.php');
-$order = new order(TABLE_PREFIX.'mod_news_posts', 'position', 'post_id', 'section_id');
-$order->clean($section_id); 
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/modify_post.php?page_id='.$page_id.'&post_id='.$post_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/delete_post.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/rss.php
===================================================================
--- trunk/addons/trunk/modules/news/rss.php	(revision 102)
+++ trunk/addons/trunk/modules/news/rss.php	(nonexistent)
@@ -1,94 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Include WB files
-require_once('../../config.php');
-require_once(WB_PATH.'/framework/class.frontend.php');
-$database = new database();
-$wb = new frontend();
-$wb->get_page_details();
-$wb->get_website_settings();
-
-// Check that GET values have been supplied
-if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])) {
-	$page_id = $_GET['page_id'];
-} else {
-	header('Location: '.WB_URL);
-}
-if(isset($_GET['group_id']) AND is_numeric($_GET['group_id'])) {
-	$group_id = $_GET['group_id'];
-}
-
-// Sending XML header
-header("Content-type: text/xml");
-
-// Header info
-// Required by CSS 2.0
-
-echo "<rss version='2.0'>";
-echo "<channel>";
-echo "<title>".PAGE_TITLE."</title>";
-echo "<link>".WB_URL."</link>";
-echo "<description>".PAGE_DESCRIPTION."</description>";
-
-// Optional header info
-echo "<language>".DEFAULT_LANGUAGE."</language>";
-echo "<copyright>".WB_URL."</copyright>";
-echo "<managingEditor>".SERVER_EMAIL."</managingEditor>";
-echo "<webMaster>".SERVER_EMAIL."</webMaster>";
-echo "<category>".WEBSITE_TITLE."</category>";
-echo "<generator>Website Baker Content Management System</generator>";
-
-// Get news items from database
-
-//Query
-if(isset($group_id)) {
-	$query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE group_id=".$group_id." AND page_id = ".$page_id." AND active=1 ORDER BY posted_when DESC";
-} else {
-	$query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE page_id=".$page_id." AND active=1 ORDER BY posted_when DESC";	
-}
-$result = $database->query($query);
-
-//Generating the news items
-while($item = $result->fetchRow($result)){
-
-    echo "<item>";
-    echo "<title>".$item["title"]."</title>";
-    // Stripping HTML Tags for text-only visibility
-    echo "<description>".strip_tags($item["content_short"])."</description>";
-    echo "<link>".WB_URL."/pages".$item["link"].PAGE_EXTENSION."</link>";
-    /* Add further (non required) information here like ie.
-    echo "<author>".$item["posted_by"]."</author>");
-    etc.
-    */
-    echo "</item>";
-
-}
-
-// Writing footer information
-echo "</channel>";
-echo "</rss>";
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/rss.php
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/modify.php
===================================================================
--- trunk/addons/trunk/modules/news/modify.php	(revision 102)
+++ trunk/addons/trunk/modules/news/modify.php	(nonexistent)
@@ -1,192 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Must include code to stop this file being access directly
-if(!defined('WB_PATH')) { exit("Cannot access this file directly"); }
-
-?>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left" width="33%">
-		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['POST']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/add_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
-	</td>
-	<td align="left" width="33%">
-		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['GROUP']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/add_group.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
-	</td>
-	<td align="right" width="33%">
-		<input type="button" value="<?php echo $TEXT['SETTINGS']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/modify_settings.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
-	</td>
-</tr>
-</table>
-
-<br />
-
-<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['POST']; ?></h2>
-
-<?php
-
-// Loop through existing posts
-$query_posts = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_posts` WHERE section_id = '$section_id' ORDER BY position DESC");
-if($query_posts->numRows() > 0) {
-	$num_posts = $query_posts->numRows();
-	$row = 'a';
-	?>
-	<table cellpadding="2" cellspacing="0" border="0" width="100%">
-	<?php
-	while($post = $query_posts->fetchRow()) {
-		?>
-		<tr class="row_<?php echo $row; ?>" height="20">
-			<td width="20" style="padding-left: 5px;">
-				<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="Modify - " />
-				</a>
-			</td>
-			<td>
-				<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>">
-					<?php echo $admin->strip_slashes_dummy($post['title']); ?>
-				</a>
-			</td>
-			<td width="180">
-				<?php echo $TEXT['GROUP'].': ';
-				// Get group title
-				$query_title = $database->query("SELECT title FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '".$post['group_id']."'");
-				if($query_title->numRows() > 0) {
-					$fetch_title = $query_title->fetchRow();
-					echo $admin->strip_slashes_dummy($fetch_title['title']);
-				} else {
-					echo $TEXT['NONE'];
-				}
-				?>
-			</td>
-			<td width="80">
-				<?php echo $TEXT['COMMENTS'].': ';
-				// Get number of comments
-				$query_title = $database->query("SELECT title FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '".$post['post_id']."'");
-				echo $query_title->numRows();
-				?>
-			</td>
-			<td width="80">
-				<?php echo $TEXT['ACTIVE'].': '; if($post['active'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; } ?>
-			</td>
-			<td width="20">
-			<?php if($post['position'] != $num_posts) { ?>
-				<a href="<?php echo WB_URL; ?>/modules/news/move_down.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/up_16.png" border="0" alt="^" />
-				</a>
-			<?php } ?>
-			</td>
-			<td width="20">
-			<?php if($post['position'] != 1) { ?>
-				<a href="<?php echo WB_URL; ?>/modules/news/move_up.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/down_16.png" border="0" alt="v" />
-				</a>
-			<?php } ?>
-			</td>
-			<td width="20">
-				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
-				</a>
-			</td>
-		</tr>
-		<?php
-		// Alternate row color
-		if($row == 'a') {
-			$row = 'b';
-		} else {
-			$row = 'a';
-		}
-	}
-	?>
-	</table>
-	<?php
-} else {
-	echo $TEXT['NONE_FOUND'];
-}
-
-?>
-
-<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['GROUP']; ?></h2>
-
-<?php
-
-// Loop through existing groups
-$query_groups = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_groups` WHERE section_id = '$section_id' ORDER BY position ASC");
-if($query_groups->numRows() > 0) {
-	$num_groups = $query_groups->numRows();
-	$row = 'a';
-	?>
-	<table cellpadding="2" cellspacing="0" border="0" width="100%">
-	<?php
-	while($group = $query_groups->fetchRow()) {
-		?>
-		<tr class="row_<?php echo $row; ?>" height="20">
-			<td width="20" style="padding-left: 5px;">
-				<a href="<?php echo WB_URL; ?>/modules/news/modify_group.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="Modify - " />
-				</a>
-			</td>		
-			<td>
-				<a href="<?php echo WB_URL; ?>/modules/news/modify_group.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>">
-					<?php echo $group['title']; ?>
-				</a>
-			</td>
-			<td width="80">
-				<?php echo $TEXT['ACTIVE'].': '; if($group['active'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; } ?>
-			</td>
-			<td width="20">
-			<?php if($group['position'] != 1) { ?>
-				<a href="<?php echo WB_URL; ?>/modules/news/move_up.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/up_16.png" border="0" alt="^" />
-				</a>
-			<?php } ?>
-			</td>
-			<td width="20">
-			<?php if($group['position'] != $num_groups) { ?>
-				<a href="<?php echo WB_URL; ?>/modules/news/move_down.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/down_16.png" border="0" alt="v" />
-				</a>
-			<?php } ?>
-			</td>
-			<td width="20">
-				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_group.php?page_id=<?php echo $page_id; ?>&group_id=<?php echo $group['group_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
-				</a>
-			</td>
-		</tr>
-		<?php
-		// Alternate row color
-		if($row == 'a') {
-			$row = 'b';
-		} else {
-			$row = 'a';
-		}
-	}
-	?>
-	</table>
-	<?php
-} else {
-	echo $TEXT['NONE_FOUND'];
-}
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/modify.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/move_down.php
===================================================================
--- trunk/addons/trunk/modules/news/move_down.php	(revision 102)
+++ trunk/addons/trunk/modules/news/move_down.php	(nonexistent)
@@ -1,60 +0,0 @@
-<?php
-
-// $Id: move_down.php,v 1.1.1.1 2005/01/30 10:32:15 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
-	if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
-		header("Location: index.php");
-	} else {
-		$id = $_GET['group_id'];
-		$id_field = 'group_id';
-		$table = TABLE_PREFIX.'mod_news_groups';
-	}
-} else {
-	$id = $_GET['post_id'];
-	$id_field = 'post_id';
-	$table = TABLE_PREFIX.'mod_news_posts';
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-
-// Create new order object an reorder
-$order = new order($table, 'position', $id_field, 'section_id');
-if($order->move_down($id)) {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/move_down.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/modify_comment.php
===================================================================
--- trunk/addons/trunk/modules/news/modify_comment.php	(revision 102)
+++ trunk/addons/trunk/modules/news/modify_comment.php	(nonexistent)
@@ -1,85 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['comment_id']) OR !is_numeric($_GET['comment_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$comment_id = $_GET['comment_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get header and footer
-$query_content = $database->query("SELECT post_id,title,comment FROM ".TABLE_PREFIX."mod_news_comments WHERE comment_id = '$comment_id'");
-$fetch_content = $query_content->fetchRow();
-
-?>
-
-<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_comment.php" method="post" style="margin: 0;">
-
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
-<input type="hidden" name="post_id" value="<?php echo $fetch_content['post_id']; ?>">
-<input type="hidden" name="comment_id" value="<?php echo $comment_id; ?>">
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
-	<td>
-		<input type="text" name="title" value="<?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['title'])); ?>" style="width: 100%;" maxlength="255" />
-	</td>
-</tr>
-<tr>
-	<td valign="top"><?php echo $TEXT['COMMENT']; ?>:</td>
-	<td>
-		<textarea name="comment" style="width: 100%; height: 150px;"><?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['comment'])); ?></textarea>
-	</td>
-</tr>
-</table>
-
-<br />
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left">
-		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 200px; margin-top: 5px;"></form>
-	</td>
-	<td align="right">
-		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $fetch_content['post_id']; ?>';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/modify_comment.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/index.php
===================================================================
--- trunk/addons/trunk/modules/news/index.php	(revision 102)
+++ trunk/addons/trunk/modules/news/index.php	(nonexistent)
@@ -1,3 +0,0 @@
-<?php
-header("Location: ../../index.php");
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/add.php
===================================================================
--- trunk/addons/trunk/modules/news/add.php	(revision 102)
+++ trunk/addons/trunk/modules/news/add.php	(nonexistent)
@@ -1,105 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Must include code to stop this file being access directly
-if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-
-$header = '<style type=\"text/css\">
-.post_title, .post_date { border-bottom: 1px solid #DDDDDD; }
-.post_title { font-weight: bold; font-size: 12px; color: #000000; }
-.post_date { text-align: right; font-weight: bold; }
-.post_short { text-align: justify; padding-bottom: 5px; }
-</style>
-<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">';
-$post_loop = '<tr class=\"post_top\">
-<td class=\"post_title\"><a href=\"[LINK]\">[TITLE]</a></td>
-<td class=\"post_date\">[TIME], [DATE]</td>
-</tr>
-<tr>
-<td class=\"post_short\" colspan=\"2\">
-[SHORT] 
-<a href=\"[LINK]\">[TEXT_READ_MORE]</a>
-</td>
-</tr>';
-$footer = '</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" style="display: [DISPLAY_PREVIOUS_NEXT_LINKS]">
-<tr>
-<td width="35%" align="left">[PREVIOUS_PAGE_LINK]</td>
-<td width="30%" align="center">[OF]</td>
-<td width="35%" align="right">[NEXT_PAGE_LINK]</td>
-</tr>
-</table>';
-$post_header = $admin->add_slashes('<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-<td height="30"><h1>[TITLE]</h1></td>
-<td rowspan="3" style="display: [DISPLAY_IMAGE]"><img src="[GROUP_IMAGE]" alt="[GROUP_TITLE]" /></td>
-</tr>
-<tr>
-<td valign="top"><b>Posted by [DISPLAY_NAME] ([USERNAME]) on [DATE] at [TIME]</b></td>
-</tr>
-<tr style="display: [DISPLAY_GROUP]">
-<td valign="top"><a href="[BACK]">[PAGE_TITLE]</a> >> <a href="[BACK]?g=[GROUP_ID]">[GROUP_TITLE]</a></td>
-</tr>
-</table>
-<p style="text-align: justify;">');
-$post_footer = '</p>
-<a href=\"[BACK]\">Back</a>';
-$comments_header = $admin->add_slashes('<br /><br />
-<style type="text/css">
-.comment_title { font-weight: bold; }
-.comment_text { font-weight: bold; background-color: #FDFDFD; border-bottom: 1px solid #DDDDDD; padding-bottom: 15px; }
-.comment_title, .comment_text { border-left: 1px solid #DDDDDD; }
-.comment_info { text-align: right; border-right: 1px solid #DDDDDD; }
-.comment_title, .comment_info { border-top: 1px solid #DDDDDD; background-color: #EEEEEE; }
-</style>
-<h2>Comments</h2>
-<table cellpadding="2" cellspacing="0" border="0" width="100%">');
-$comments_loop = $admin->add_slashes('<tr>
-<td class="comment_title">[TITLE]</td>
-<td class="comment_info">By [DISPLAY_NAME] on [DATE] at [TIME]</td>
-</tr>
-<tr>
-<td colspan="2" class="comment_text">[COMMENT]</td>
-</tr>');
-$comments_footer = '</table>
-<br /><a href=\"[ADD_COMMENT_URL]\">Add Comment</a>';
-$comments_page = '<h1>Comment</h1>
-<h2>[POST_TITLE]</h2>
-<br />
-<form name=\"comment\" action=\"[ACTION_URL]\" method=\"post\">
-Title:
-<br />
-<input type=\"text\" name=\"title\" maxlength=\"255\" style=\"width: 90%;\" />
-<br /><br />
-Comment:
-<br />
-<textarea name=\"comment\" style=\"width: 90%; height: 150px;\"></textarea>
-<br /><br />
-<input type=\"submit\" name=\"submit\" value=\"Add Comment\" />';
-$commenting = 'none';
-
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_settings (section_id,page_id,header,post_loop,footer,post_header,post_footer,comments_header,comments_loop,comments_footer,comments_page,commenting) VALUES ('$section_id','$page_id','$header','$post_loop','$footer','$post_header','$post_footer','$comments_header','$comments_loop','$comments_footer','$comments_page','$commenting')");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/add.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/delete.php
===================================================================
--- trunk/addons/trunk/modules/news/delete.php	(revision 102)
+++ trunk/addons/trunk/modules/news/delete.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id: delete.php,v 1.1.1.1 2005/01/30 10:32:21 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Must include code to stop this file being access directly
-if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id'");
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id'");
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments WHERE section_id = '$section_id'");
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/delete.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/comment_page.php
===================================================================
--- trunk/addons/trunk/modules/news/comment_page.php	(revision 102)
+++ trunk/addons/trunk/modules/news/comment_page.php	(nonexistent)
@@ -1,41 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Make sure page cannot be accessed directly
-if(!defined('WB_URL')) { header('Location: ../index.php'); }
-	
-// Get comments page template details from db
-$query_settings = $database->query("SELECT comments_page FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '".SECTION_ID."'");
-if($query_settings->numRows() == 0) {
-	header('Location: '.WB_URL.'/pages/');
-} else {
-	$settings = $query_settings->fetchRow();
-	// Print comments page
-	$vars = array('[POST_TITLE]', '[ACTION_URL]');
-	$values = array(POST_TITLE, WB_URL.'/modules/news/submit_comment.php?page_id='.PAGE_ID.'&section_id='.SECTION_ID.'&post_id='.POST_ID);
-	echo str_replace($vars, $values, $this->strip_slashes_dummy($settings['comments_page']));
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/comment_page.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/info.php
===================================================================
--- trunk/addons/trunk/modules/news/info.php	(revision 102)
+++ trunk/addons/trunk/modules/news/info.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.3 2005/04/08 09:58:31 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$module_directory = 'news';
-$module_name = 'News';
-$module_type = 'page';
-$module_version = '2.5';
-$module_designed_for = '2.x';
-$module_author = 'Ryan Djurovich';
-$module_description = 'This page type is designed for making a news page.';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/add_post.php
===================================================================
--- trunk/addons/trunk/modules/news/add_post.php	(revision 102)
+++ trunk/addons/trunk/modules/news/add_post.php	(nonexistent)
@@ -1,58 +0,0 @@
-<?php
-
-// $Id: add_post.php,v 1.1.1.1 2005/01/30 10:32:19 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-// Get new order
-$order = new order(TABLE_PREFIX.'mod_news_posts', 'position', 'post_id', 'section_id');
-$position = $order->get_new($section_id);
-
-// Get default commenting
-$query_settings = $database->query("SELECT commenting FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
-$fetch_settings = $query_settings->fetchRow();
-$commenting = $fetch_settings['commenting'];
-
-// Insert new row into database
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_posts (section_id,page_id,position,commenting,active) VALUES ('$section_id','$page_id','$position','$commenting','1')");
-
-// Get the id
-$post_id = $database->get_one("SELECT LAST_INSERT_ID()");
-
-// Say that a new record has been added, then redirect to modify page
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/add_post.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/submit_comment.php
===================================================================
--- trunk/addons/trunk/modules/news/submit_comment.php	(revision 102)
+++ trunk/addons/trunk/modules/news/submit_comment.php	(nonexistent)
@@ -1,63 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Include config file
-require('../../config.php');
-
-// Include admin class
-require_once(WB_PATH.'/framework/class.admin.php');
-$admin = new admin('Start', 'start', false, false);
-
-// Include WB functions file
-if(!defined('FUNCTIONS_CLASS_LOADED')) {
-	require(WB_PATH.'/framework/functions.php');
-}
-
-// Check if we should show the form or add a comment
-if(is_numeric($_GET['page_id']) AND is_numeric($_GET['section_id']) AND isset($_GET['post_id']) AND is_numeric($_GET['post_id']) AND isset($_POST['comment']) AND $_POST['comment'] != '') {
-	
-	// Insert the comment into db
-	$page_id = $_GET['page_id'];
-	$section_id = $_GET['section_id'];
-	$post_id = $_GET['post_id'];
-	$title = $admin->add_slashes(strip_tags($_POST['title']));
-	$comment = $admin->add_slashes(strip_tags($_POST['comment']));
-	$commented_when = mktime();
-	if(isset($admin) AND $admin->is_authenticated() == true) {
-		$commented_by = $admin->get_user_id();
-	} else {
-		$commented_by = '';
-	}
-	$query = $database->query("INSERT INTO ".TABLE_PREFIX."mod_news_comments (section_id,page_id,post_id,title,comment,commented_when,commented_by) VALUES ('$section_id','$page_id','$post_id','$title','$comment','$commented_when','$commented_by')");
-	// Get page link
-	$query_page = $database->query("SELECT link FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
-	$page = $query_page->fetchRow();
-	header('Location: '.page_link($page['link']).'?id='.$post_id);
-	
-} else {
-	header('Location: '.WB_URL.'/pages/');
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/submit_comment.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/news/delete_comment.php
===================================================================
--- trunk/addons/trunk/modules/news/delete_comment.php	(revision 102)
+++ trunk/addons/trunk/modules/news/delete_comment.php	(nonexistent)
@@ -1,59 +0,0 @@
-<?php
-
-// $Id: delete_comment.php,v 1.1.1.1 2005/01/30 10:32:20 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['comment_id']) OR !is_numeric($_GET['comment_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$comment_id = $_GET['comment_id'];
-}
-
-// Get post id
-if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$post_id = $_GET['post_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Update row
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments  WHERE comment_id = '$comment_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/news/delete_comment.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/save.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/save.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/save.php	(nonexistent)
@@ -1,54 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Update the mod_wrapper table with the contents
-if(isset($_POST['url'])) {
-	$url = $admin->add_slashes($_POST['url']);
-	$height = $_POST['height'];
-	if(!is_numeric($height)) {
-		$height = 400;
-	}
-	$database = new database();
-	$query = "UPDATE ".TABLE_PREFIX."mod_wrapper SET url = '$url', height = '$height' WHERE section_id = '$section_id'";
-	$database->query($query);	
-}
-
-// Check if there is a database error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), $js_back);
-} else {
-	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/save.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/install.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/install.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/install.php	(nonexistent)
@@ -1,41 +0,0 @@
-<?php
-
-// $Id: install.php,v 1.1.1.1 2005/01/30 10:32:23 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-if(defined('WB_URL')) {
-	
-	// Create table
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_wrapper`");
-	$mod_wrapper = 'CREATE TABLE `'.TABLE_PREFIX.'mod_wrapper` ('
-						  . ' `section_id` INT NOT NULL,'
-						  . ' `page_id` INT NOT NULL,'
-	                 . ' `url` TEXT NOT NULL ,'
-						  . ' `height` INT NOT NULL,'
-	                 . ' PRIMARY KEY ( `section_id` ) )'
-	                 . ' ';
-	$database->query($mod_wrapper);
-	
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/install.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/modify.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/modify.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/modify.php	(nonexistent)
@@ -1,56 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Setup template object
-$template = new Template(WB_PATH.'/modules/wrapper');
-$template->set_file('page', 'modify.html');
-$template->set_block('page', 'main_block', 'main');
-
-// Get page content
-$query = "SELECT url,height FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'";
-$get_settings = $database->query($query);
-$settings = $get_settings->fetchRow();
-$url = $admin->strip_slashes_dummy($settings['url']);
-$height = $settings['height'];
-
-// Insert vars
-$template->set_var(array(
-								'PAGE_ID' => $page_id,
-								'SECTION_ID' => $section_id,
-								'WB_URL' => WB_URL,
-								'URL' => $url,
-								'HEIGHT' => $height,
-								'TEXT_URL' => $TEXT['URL'],
-								'TEXT_HEIGHT' => $TEXT['HEIGHT'],
-								'TEXT_SAVE' => $TEXT['SAVE'],
-								'TEXT_CANCEL' => $TEXT['CANCEL']
-								)
-						);
-
-// Parse template object
-$template->parse('main', 'main_block', false);
-$template->pparse('output', 'page');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/modify.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/modify.html
===================================================================
--- trunk/addons/trunk/modules/wrapper/modify.html	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/modify.html	(nonexistent)
@@ -1,41 +0,0 @@
-<!-- BEGIN main_block -->
-
-<form action="{WB_URL}/modules/wrapper/save.php" method="post">
-
-<input type="hidden" name="page_id" value="{PAGE_ID}" />
-<input type="hidden" name="section_id" value="{SECTION_ID}" />
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left" width="50">
-		{TEXT_URL}:
-	</td>
-	<td>
-		<input type="text" name="url" value="{URL}" style="width: 100%;" />
-	</td>
-</tr>
-<tr>
-	<td align="left" width="50">
-		{TEXT_HEIGHT}:
-	</td>
-	<td>
-		<input type="text" name="height" value="{HEIGHT}" maxlength="4" style="width: 100%;" />
-	</td>
-</tr>
-</table>
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left">
-		<input type="submit" value="{TEXT_SAVE}" style="width: 200px; margin-top: 5px;" />
-	</td>
-	<td align="right">
-		</form>
-		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-</form>
-
-<!-- END main_block -->

Property changes on: trunk/addons/trunk/modules/wrapper/modify.html
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/view.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/view.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/view.php	(nonexistent)
@@ -1,36 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Get url
-$get_settings = $database->query("SELECT url,height FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'");
-$fetch_settings = $get_settings->fetchRow();
-$url = $this->strip_slashes_dummy($fetch_settings['url']);
-
-?>
-<iframe src="<?php echo $url; ?>" width="100%" height="<?php echo $fetch_settings['height']; ?>px" frameborder="0" scrolling="auto">
-Your browser does not support inline frames.<br />
-Click on the link below to visit the website that was meant to be shown here...<br />
-<a href="<?php echo $url; ?>" target="_blank"><?php echo $url; ?></a>
-</iframe>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/view.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/add.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/add.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/add.php	(nonexistent)
@@ -1,29 +0,0 @@
-<?php
-
-// $Id: add.php,v 1.1.1.1 2005/01/30 10:32:23 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Insert an extra row into the database
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_wrapper (page_id,section_id,height) VALUES ('$page_id','$section_id','400')");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/add.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/index.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/index.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/index.php	(nonexistent)
@@ -1,28 +0,0 @@
-<?php
-
-// $Id: index.php,v 1.1.1.1 2005/01/30 10:32:23 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-header('Location: ../index.php');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/delete.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/delete.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/delete.php	(nonexistent)
@@ -1,29 +0,0 @@
-<?php
-
-// $Id: delete.php,v 1.1.1.1 2005/01/30 10:32:23 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-// Delete page from mod_wrapper
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/delete.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/wrapper/info.php
===================================================================
--- trunk/addons/trunk/modules/wrapper/info.php	(revision 102)
+++ trunk/addons/trunk/modules/wrapper/info.php	(nonexistent)
@@ -1,34 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.3 2005/04/08 09:58:31 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$module_directory = 'wrapper';
-$module_name = 'Wrapper';
-$module_type = 'page';
-$module_version = '2.5';
-$module_designed_for = '2.x';
-$module_author = 'Ryan Djurovich';
-$module_description = 'This module allows you to wrap your site around another using an inline frame';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/wrapper/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/install.php
===================================================================
--- trunk/addons/trunk/modules/form/install.php	(revision 102)
+++ trunk/addons/trunk/modules/form/install.php	(nonexistent)
@@ -1,103 +0,0 @@
-<?php
-
-// $Id: install.php,v 1.6 2005/04/02 08:21:46 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-if(defined('WB_URL')) {
-		
-	// Create tables
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_fields`");
-	$mod_form = 'CREATE TABLE `'.TABLE_PREFIX.'mod_form_fields` ( `field_id` INT NOT NULL AUTO_INCREMENT,'
-	                 . ' `section_id` INT NOT NULL ,'
-	                 . ' `page_id` INT NOT NULL ,'
-	                 . ' `position` INT NOT NULL ,'
-	                 . ' `title` VARCHAR(255) NOT NULL ,'
-	                 . ' `type` VARCHAR(255) NOT NULL ,'
-	                 . ' `required` INT NOT NULL ,'
-	                 . ' `value` TEXT NOT NULL ,'
-	                 . ' `extra` TEXT NOT NULL ,'
-	                 . ' PRIMARY KEY ( `field_id` ) )'
-	                 . ' ';
-	$database->query($mod_form);
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_settings`");
-	$mod_form = 'CREATE TABLE `'.TABLE_PREFIX.'mod_form_settings` ('
-						  . ' `section_id` INT NOT NULL,'
-						  . ' `page_id` INT NOT NULL,'
-	                 . ' `header` TEXT NOT NULL ,'
-	                 . ' `field_loop` TEXT NOT NULL ,'
-	                 . ' `footer` TEXT NOT NULL ,'
-	                 . ' `email_to` TEXT NOT NULL ,'
-	                 . ' `email_from` VARCHAR(255) NOT NULL ,'
-	                 . ' `email_subject` VARCHAR(255) NOT NULL ,'
-	                 . ' `success_message` TEXT NOT NULL ,'
-						  . ' `stored_submissions` INT NOT NULL,'
-						  . ' `max_submissions` INT NOT NULL,'
-	                 . ' PRIMARY KEY ( `section_id` ) )'
-	                 . ' ';
-	$database->query($mod_form);
-	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_submissions`");
-	$mod_form = 'CREATE TABLE `'.TABLE_PREFIX.'mod_form_submissions` ( `submission_id` INT NOT NULL AUTO_INCREMENT,'
-						  . ' `section_id` INT NOT NULL,'
-						  . ' `page_id` INT NOT NULL,'
-						  . ' `submitted_when` INT NOT NULL,'
-						  . ' `submitted_by` INT NOT NULL,'
-	                 . ' `body` TEXT NOT NULL ,'
-	                 . ' PRIMARY KEY ( `submission_id` ) )'
-	                 . ' ';
-	$database->query($mod_form);
-		
-	// Insert info into the search table
-	// Module query info
-	$field_info = array();
-	$field_info['page_id'] = 'page_id';
-	$field_info['title'] = 'page_title';
-	$field_info['link'] = 'link';
-	$field_info['description'] = 'description';
-	$field_info['modified_when'] = 'modified_when';
-	$field_info['modified_by'] = 'modified_by';
-	$field_info = serialize($field_info);
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'form', '$field_info')");
-	// Query start
-	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_form_fields, [TP]mod_form_settings, [TP]pages WHERE ";
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'form')");
-	// Query body
-	$query_body_code = " [TP]pages.page_id = [TP]mod_form_settings.page_id AND [TP]mod_form_settings.header [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'
-	OR [TP]pages.page_id = [TP]mod_form_settings.page_id AND [TP]mod_form_settings.footer [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'
-	OR [TP]pages.page_id = [TP]mod_form_fields.page_id AND [TP]mod_form_fields.title [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'form')");
-	// Query end
-	$query_end_code = '';
-	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'form')");
-	
-	// Insert blank row (there needs to be at least on row for the search to work)
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_fields (page_id,section_id) VALUES ('0','0')");
-	$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_settings (page_id,section_id) VALUES ('0','0')");
-
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/install.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/modify_settings.php
===================================================================
--- trunk/addons/trunk/modules/form/modify_settings.php	(revision 102)
+++ trunk/addons/trunk/modules/form/modify_settings.php	(nonexistent)
@@ -1,147 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get header and footer
-$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_settings WHERE section_id = '$section_id'");
-$setting = $query_content->fetchRow();
-
-// Set raw html <'s and >'s to be replace by friendly html code
-$raw = array('<', '>');
-$friendly = array('&lt;', '&gt;');
-
-?>
-
-<style type="text/css">
-.setting_name {
-	vertical-align: top;
-}
-</style>
-
-<form name="edit" action="<?php echo WB_URL; ?>/modules/form/save_settings.php" method="post" style="margin: 0;">
-
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
-
-<table cellpadding="2" cellspacing="0" border="0" width="100%">
-<tr>
-	<td class="setting_name" width="220"><?php echo $TEXT['HEADER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="header" style="width: 100%; height: 80px;"><?php echo $admin->strip_slashes_dummy($setting['header']); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['FIELD'].' '.$TEXT['LOOP']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="field_loop" style="width: 100%; height: 60px;"><?php echo $admin->strip_slashes_dummy($setting['field_loop']); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['FOOTER']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="footer" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['footer'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['TO']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="email_to" style="width: 100%; height: 30px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['email_to'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['FROM']; ?>:</td>
-	<td class="setting_name">
-		<select name="email_from_field" style="width: 100%;">
-			<option value="" onclick="javascript: document.getElementById('email_from').style.display = 'block';"><?php echo $TEXT['CUSTOM']; ?>:</option>
-			<?php
-			$email_from_value = str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['email_from']));
-			$query_email_fields = $database->query("SELECT field_id,title FROM ".TABLE_PREFIX."mod_form_fields ORDER BY position ASC");
-			if($query_email_fields->numRows() > 0) {
-				while($field = $query_email_fields->fetchRow()) {
-					?>
-					<option value="field<?php echo $field['field_id']; ?>"<?php if($email_from_value == 'field'.$field['field_id']) { echo ' selected'; $selected = true; } ?> onclick="javascript: document.getElementById('email_from').style.display = 'none';">
-						<?php echo $TEXT['FIELD'].': '.$field['title']; ?>
-					</option>
-					<?php
-				}
-			}
-			?>
-		</select>
-		<input type="text" name="email_from" id="email_from" style="width: 100%; display: <?php if(isset($selected) AND $selected == true) { echo 'none'; } else { echo 'block'; } ?>;" maxlength="255" value="<?php if(substr($email_from_value, 0, 5) != 'field') { echo $email_from_value; } ?>" />
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['SUBJECT']; ?>:</td>
-	<td class="setting_name">
-		<input type="text" name="email_subject" style="width: 100%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['email_subject'])); ?>" />
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['SUCCESS'].' '.$TEXT['MESSAGE']; ?>:</td>
-	<td class="setting_name">
-		<textarea name="success_message" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['success_message'])); ?></textarea>
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['MAX_SUBMISSIONS_PER_HOUR']; ?>:</td>
-	<td class="setting_name">
-		<input type="text" name="max_submissions" style="width: 100%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['max_submissions'])); ?>" />
-	</td>
-</tr>
-<tr>
-	<td class="setting_name"><?php echo $TEXT['SUBMISSIONS_STORED_IN_DATABASE']; ?>:</td>
-	<td class="setting_name">
-		<input type="text" name="stored_submissions" style="width: 100%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['stored_submissions'])); ?>" />
-	</td>
-</tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="225">&nbsp;</td>
-	<td align="left">
-		<input name="save" type="submit" value="<?php echo $TEXT['SAVE'].' '.$TEXT['SETTINGS']; ?>" style="width: 200px; margin-top: 5px;"></form>
-	</td>
-	<td align="right">
-		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/modify_settings.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/delete_submission.php
===================================================================
--- trunk/addons/trunk/modules/form/delete_submission.php	(revision 102)
+++ trunk/addons/trunk/modules/form/delete_submission.php	(nonexistent)
@@ -1,57 +0,0 @@
-<?php
-
-// $Id: delete_submission.php,v 1.1 2005/03/28 04:35:39 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra submission types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['submission_id']) OR !is_numeric($_GET['submission_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$submission_id = $_GET['submission_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Delete row
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/delete_submission.php
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/save_settings.php
===================================================================
--- trunk/addons/trunk/modules/form/save_settings.php	(revision 102)
+++ trunk/addons/trunk/modules/form/save_settings.php	(nonexistent)
@@ -1,79 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// This code removes any <?php tags and adds slashes
-$friendly = array('&lt;', '&gt;', '?php');
-$raw = array('<', '>', '');
-$header = $admin->add_slashes($_POST['header']);
-$field_loop = $admin->add_slashes($_POST['field_loop']);
-$footer = $admin->add_slashes($_POST['footer']);
-$email_to = $admin->add_slashes($_POST['email_to']);
-if($_POST['email_from_field'] == '') {
-	$email_from = $admin->add_slashes($_POST['email_from']);
-} else {
-	$email_from = $admin->add_slashes($_POST['email_from_field']);
-}
-$email_subject = $admin->add_slashes($_POST['email_subject']);
-$success_message = $admin->add_slashes($_POST['success_message']);
-if(!is_numeric($_POST['max_submissions'])) {
-	$max_submissions = 50;
-} else {
-	$max_submissions = $_POST['max_submissions'];
-}
-if(!is_numeric($_POST['stored_submissions'])) {
-	$stored_submissions = 100;
-} else {
-	$stored_submissions = $_POST['stored_submissions'];
-}
-// Make sure max submissions is not smaller than stored submissions
-if($max_submissions < $stored_submissions) {
-	$max_submissions = $stored_submissions;
-}
-
-// Update settings
-$database->query("UPDATE ".TABLE_PREFIX."mod_form_settings SET header = '$header', field_loop = '$field_loop', footer = '$footer', email_to = '$email_to', email_from = '$email_from', email_subject = '$email_subject', success_message = '$success_message', max_submissions = '$max_submissions', stored_submissions = '$stored_submissions' WHERE section_id = '$section_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/save_settings.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/move_up.php
===================================================================
--- trunk/addons/trunk/modules/form/move_up.php	(revision 102)
+++ trunk/addons/trunk/modules/form/move_up.php	(nonexistent)
@@ -1,57 +0,0 @@
-<?php
-
-// $Id: move_up.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
-	header("Location: index.php");
-} else {
-	$field_id = $_GET['field_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-
-// Create new order object an reorder
-$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
-if($order->move_up($field_id)) {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/move_up.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/view.php
===================================================================
--- trunk/addons/trunk/modules/form/view.php	(revision 102)
+++ trunk/addons/trunk/modules/form/view.php	(nonexistent)
@@ -1,323 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-// Must include code to stop this file being access directly
-if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-
-// Function for generating an optionsfor a select field
-function make_option(&$n) {
-	// start option group if it exists
-	if (substr($n,0,2) == '[=') {
-	 	$n = '<optgroup label="'.substr($n,2,strlen($n)).'">';
-	} elseif ($n == ']') {
-		$n = '</optgroup>';
-	} else {
-		$n = '<option value="'.$n.'">'.$n.'</option>';
-	}
-}
-
-// Function for generating a checkbox
-function make_checkbox(&$n, $idx, $params) {
-	$field_id = $params[0];
-	$seperator = $params[1];
-	//$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
-	$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
-}
-
-// Function for generating a radio button
-function make_radio(&$n, $idx, $params) {
-	$field_id = $params[0];
-	$group = $params[1];
-	$seperator = $params[2];
-	$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator;
-}
-
-// Work-out if the form has been submitted or not
-if($_POST == array()) {
-
-?>
-<style type="text/css">
-.required {
-	color: #FF0000;
-}
-.field_title {
-	font-size: 12px;
-	width: 100px;
-	vertical-align: top;
-	text-align:right;
-}
-.textfield {
-	font-size: 12px;
-	width: 200px;
-}
-.textarea {
-	font-size: 12px;
-	width: 90%;
-	height: 100px;
-}
-.field_heading {
-	font-size: 12px;
-	font-weight: bold;
-	border-bottom-width: 2px;
-	border-bottom-style: solid;
-	border-bottom-color: #666666;
-	padding-top: 10px;
-	color: #666666;
-}
-.select {
-	font-size: 12px;
-}
-.checkbox_label {
-	font-size: 11px;
-	cursor: pointer;
-}
-.radio_label {
-	font-size: 11px;
-	cursor: pointer;
-}
-.email {
-	font-size: 12px;
-	width: 200px;
-}
-</style>
-<?php
-
-// Get settings
-$query_settings = $database->query("SELECT header,field_loop,footer FROM ".TABLE_PREFIX."mod_form_settings WHERE section_id = '$section_id'");
-if($query_settings->numRows() > 0) {
-	$fetch_settings = $query_settings->fetchRow();
-	$header = $this->strip_slashes_dummy($fetch_settings['header']);
-	$field_loop = $this->strip_slashes_dummy($fetch_settings['field_loop']);
-	$footer = $this->strip_slashes_dummy($fetch_settings['footer']);
-} else {
-	$header = '';
-	$field_loop = '';
-	$footer = '';
-}
-
-// Add form starter code
-?>
-<form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
-<?php
-
-// Print header
-echo $header;
-
-// Get list of fields
-$query_fields = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id' ORDER BY position ASC");
-if($query_fields->numRows() > 0) {
-	while($field = $query_fields->fetchRow()) {
-		// Set field values
-		$field_id = $field['field_id'];
-		$value = $this->strip_slashes_dummy($field['value']);
-		// Print field_loop after replacing vars with values
-		$vars = array('{TITLE}', '{REQUIRED}');
-		$values = array($field['title']);
-		if($field['required'] == 1) {
-			$values[] = '<font class="required">*</font>';
-		} else {
-			$values[] = '';
-		}
-		if($field['type'] == 'textfield') {
-			$vars[] = '{FIELD}';
-			$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.$value.'" class="textfield" />';
-		} elseif($field['type'] == 'textarea') {
-			$vars[] = '{FIELD}';
-			$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea">'.$value.'</textarea>';
-		} elseif($field['type'] == 'select') {
-			$vars[] = '{FIELD}';
-			$options = explode(',', $value);
-			array_walk($options, 'make_option');
-			$field['extra'] = explode(',',$field['extra']); 
-			$values[] = '<select name="field'.$field_id.'[]" id="field'.$field_id.'" size="'.$field['extra'][0].'" '.$field['extra'][1].' class="select">'.implode($options).'</select>';
-		} elseif($field['type'] == 'heading') {
-			$vars[] = '{FIELD}';
-			$values[] = '<input type="hidden" name="field'.$field_id.'" id="field'.$field_id.'" value="===['.$field['title'].']===" />';
-			$tmp_field_loop = $field_loop;		// temporarily modify the field loop template
-			$field_loop = $field['extra'];
-		} elseif($field['type'] == 'checkbox') {
-			$vars[] = '{FIELD}';
-			$options = explode(',', $value);
-			array_walk($options, 'make_checkbox',array($field_id,$field['extra']));
-			$values[] = implode($options);
-		} elseif($field['type'] == 'radio') {
-			$vars[] = '{FIELD}';
-			$options = explode(',', $value);
-			array_walk($options, 'make_radio',array($field_id,$field['title'],$field['extra']));
-			$values[] = implode($options);
-		} elseif($field['type'] == 'email') {
-			$vars[] = '{FIELD}';
-			$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" class="email" />';
-		}
-		if($field['type'] != '') {
-			echo str_replace($vars, $values, $field_loop);
-		}
-		if (isset($tmp_field_loop)) $field_loop = $tmp_field_loop;
-	}
-}
-
-// Print footer
-echo $footer;
-
-// Add form end code
-?>
-</form>
-<?php
-
-} else {
-	
-	// Submit form data
-	// First start message settings
-	$query_settings = $database->query("SELECT email_to,email_from,email_subject,success_message,max_submissions,stored_submissions FROM ".TABLE_PREFIX."mod_form_settings WHERE section_id = '$section_id'");
-	if($query_settings->numRows() > 0) {
-		$fetch_settings = $query_settings->fetchRow();
-		$email_to = $this->strip_slashes_dummy($fetch_settings['email_to']);
-		$email_from = $this->strip_slashes_dummy($fetch_settings['email_from']);
-		if(substr($email_from, 0, 5) == 'field') {
-			// Set the email from field to what the user entered in the specified field
-			$email_from = $this->add_slashes($_POST[$email_from]);
-		}
-		$email_subject = $this->strip_slashes_dummy($fetch_settings['email_subject']);
-		$success_message = $this->strip_slashes_dummy($fetch_settings['success_message']);
-		$max_submissions = $this->strip_slashes_dummy($fetch_settings['max_submissions']);
-		$stored_submissions = $this->strip_slashes_dummy($fetch_settings['stored_submissions']);
-	} else {
-		exit($TEXT['UNDER_CONSTRUCTION']);
-	}
-	$email_body = '';
-	
-	// Create blank "required" array
-	$required = array();
-	
-	// Loop through fields and add to message body
-	// Get list of fields
-	$query_fields = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id' ORDER BY position ASC");
-	if($query_fields->numRows() > 0) {
-		while($field = $query_fields->fetchRow()) {
-			// Add to message body
-			if($field['type'] != '') {
-				if(!empty($_POST['field'.$field['field_id']])) {
-					if($field['type'] == 'heading') {
-					$email_body .= '
-					
-	'.$_POST['field'.$field['field_id']];
-					} elseif (!is_array($_POST['field'.$field['field_id']])) {
-					$email_body .= '
-					
-	'.$this->strip_slashes_dummy($field['title']).': '.$_POST['field'.$field['field_id']]."\n";
-					} else {
-						$email_body .= '
-					
-	'.$this->strip_slashes_dummy($field['title']).": \n";
-						foreach ($_POST['field'.$field['field_id']] as $k=>$v) {
-							$email_body .= '
-					
-	'.$v;
-						}
-					}
-				} elseif($field['required'] == 1) {
-				$required[] = $this->strip_slashes_dummy($field['title']);
-				}
-			}
-		}
-	}
-	
-	// Addslashes to email body - proposed by Icheb in topic=1170.0
-	// $email_body = $this->add_slashes($email_body);
-	
-	// Check if the user forgot to enter values into all the required fields
-	if($required != array()) {
-		if(!isset($MESSAGE['MOD_FORM']['REQUIRED_FIELDS'])) {
-			echo 'You must enter details for the following fields';
-		} else {
-			echo $MESSAGE['MOD_FORM']['REQUIRED_FIELDS'];
-		}
-		echo ':<br /><ul>';
-		foreach($required AS $field_title) {
-			echo '<li>'.$field_title;
-		}
-		echo '</ul><a href="javascript: history.go(-1);">'.$TEXT['BACK'].'</a>';
-		
-	} else {
-		
-		// Check how many times form has been submitted in last hour
-		$query_submissions = $database->query("SELECT submission_id FROM ".TABLE_PREFIX."mod_form_submissions WHERE submitted_when >= '3600'");
-		if($query_submissions->numRows() > $max_submissions) {
-			// Too many submissions so far this hour
-			echo $MESSAGE['MOD_FORM']['EXCESS_SUBMISSIONS'];
-			$success = false;
-		} else {
-			// Now send the email
-			if($email_to != '') {
-				if($email_from != '') {
-					if(mail($email_to,$email_subject,str_replace('\n', '', $email_body),"From: ".$email_from)) { $success = true; }
-				} else {
-					if(mail($email_to,$email_subject,str_replace('\n', '', $email_body))) { $success = true; }
-				}
-			}				
-			// Write submission to database
-			if(isset($admin) AND $admin->get_user_id() > 0) {
-				$admin->get_user_id();
-			} else {
-				$submitted_by = 0;
-			}
-			$email_body = $this->add_slashes($email_body);
-			$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_submissions (page_id,section_id,submitted_when,submitted_by,body) VALUES ('".PAGE_ID."','$section_id','".mktime()."','$submitted_by','$email_body')");
-			// Make sure submissions table isn't too full
-			$query_submissions = $database->query("SELECT submission_id FROM ".TABLE_PREFIX."mod_form_submissions ORDER BY submitted_when");
-			$num_submissions = $query_submissions->numRows();
-			if($num_submissions > $stored_submissions) {
-				// Remove excess submission
-				$num_to_remove = $num_submissions-$stored_submissions;
-				while($submission = $query_submissions->fetchRow()) {
-					if($num_to_remove > 0) {
-						$submission_id = $submission['submission_id'];
-						$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
-						$num_to_remove = $num_to_remove-1;
-					}
-				}
-			}
-			if(!$database->is_error()) {
-				$success = true;
-			}
-		}
-		
-		// Now check if the email was sent successfully
-		if(isset($success) AND $success == true) {
-			echo $success_message;
-		} else {
-			echo $TEXT['ERROR'];
-		}
-	
-	}
-	
-}
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/view.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/view_submission.php
===================================================================
--- trunk/addons/trunk/modules/form/view_submission.php	(revision 102)
+++ trunk/addons/trunk/modules/form/view_submission.php	(nonexistent)
@@ -1,92 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['submission_id']) OR !is_numeric($_GET['submission_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$submission_id = $_GET['submission_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get submission details
-$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
-$submission = $query_content->fetchRow();
-
-// Get the user details of whoever did this submission
-$query_user = "SELECT username,display_name FROM ".TABLE_PREFIX."users WHERE user_id = '".$submission['submitted_by']."'";
-$get_user = $database->query($query_user);
-if($get_user->numRows() != 0) {
-	$user = $get_user->fetchRow();
-} else {
-	$user['display_name'] = 'Unknown';
-	$user['username'] = 'unknown';
-}
-
-?>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td><?php echo $TEXT['SUBMISSION_ID']; ?>:</td>
-	<td><?php echo $submission['submission_id']; ?></td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['SUBMITTED']; ?>:</td>
-	<td><?php echo gmdate(TIME_FORMAT.', '.DATE_FORMAT, $submission['submitted_when']+TIMEZONE); ?></td>
-</td>
-<tr>
-	<td><?php echo $TEXT['USER']; ?>:</td>
-	<td><?php echo $user['display_name'].' ('.$user['username'].')'; ?></td>
-</tr>
-<tr>
-	<td colspan="2">
-		<hr />
-	</td>
-</tr>
-<tr>
-	<td colspan="2">
-		<?php echo $admin->strip_slashes_dummy(str_replace('\n', '<br />', $submission['body'])); ?>
-	</td>
-</tr>
-</table>
-
-<br />
-
-<input type="button" value="<?php echo $TEXT['CLOSE']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 150px; margin-top: 5px;" />
-<input type="button" value="<?php echo $TEXT['DELETE']; ?>" onclick="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $submission_id; ?>');" style="width: 150px; margin-top: 5px;" />
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/view_submission.php
___________________________________________________________________
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/modify.php
===================================================================
--- trunk/addons/trunk/modules/form/modify.php	(revision 102)
+++ trunk/addons/trunk/modules/form/modify.php	(nonexistent)
@@ -1,191 +0,0 @@
-<?php
-
-// $Id: modify.php,v 1.5 2005/03/28 11:58:04 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-// Must include code to stop this file being access directly
-if(!defined('WB_PATH')) { exit("Cannot access this file directly"); }
-
-?>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td align="left" width="33%">
-		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['FIELD']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/add_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
-	</td>
-	<td align="right" width="33%">
-		<input type="button" value="<?php echo $TEXT['SETTINGS']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/modify_settings.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
-	</td>
-</tr>
-</table>
-
-<br />
-
-<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['FIELD']; ?></h2>
-<?php
-
-// Loop through existing fields
-$query_fields = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_form_fields` WHERE section_id = '$section_id' ORDER BY position ASC");
-if($query_fields->numRows() > 0) {
-	$num_fields = $query_fields->numRows();
-	$row = 'a';
-	?>
-	<table cellpadding="2" cellspacing="0" border="0" width="100%">
-	<?php
-	while($field = $query_fields->fetchRow()) {
-		?>
-		<tr class="row_<?php echo $row; ?>" height="20">
-			<td width="20" style="padding-left: 5px;">
-				<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="^" />
-				</a>
-			</td>		
-			<td>
-				<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>">
-					<?php echo $field['title']; ?>
-				</a>
-			</td>
-			<td width="175">
-				<?php
-				echo $TEXT['TYPE'].':';
-				if($field['type'] == 'textfield') {
-					echo $TEXT['SHORT_TEXT'];
-				} elseif($field['type'] == 'textarea') {
-					echo $TEXT['LONG_TEXT'];
-				} elseif($field['type'] == 'heading') {
-					echo $TEXT['HEADING'];
-				} elseif($field['type'] == 'select') {
-					echo $TEXT['SELECT_BOX'];
-				} elseif($field['type'] == 'checkbox') {
-					echo $TEXT['CHECKBOX_GROUP'];
-				} elseif($field['type'] == 'radio') {
-					echo $TEXT['RADIO_BUTTON_GROUP'];
-				} elseif($field['type'] == 'email') {
-					echo $TEXT['EMAIL_ADDRESS'];
-				}
-				?>
-			</td>
-			<td width="95">		-			<?php 
-			if ($field['type'] != 'group_begin') {
-				echo $TEXT['REQUIRED'].': '; if($field['required'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; }
-			}
-			?>
-			</td>
-			<td width="110">
-			<?php
-			if ($field['type'] == 'select') {
-				$field['extra'] = explode(',',$field['extra']);
-				echo $TEXT['MULTISELECT'].': '; if($field['extra'][1] == 'multiple') { echo $TEXT['YES']; } else { echo $TEXT['NO']; }
-			}
-			?>
-			</td>
-			<td width="20">
-			<?php if($field['position'] != 1) { ?>
-				<a href="<?php echo WB_URL; ?>/modules/form/move_up.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/up_16.png" border="0" alt="^" />
-				</a>
-			<?php } ?>
-			</td>
-			<td width="20">
-			<?php if($field['position'] != $num_fields) { ?>
-				<a href="<?php echo WB_URL; ?>/modules/form/move_down.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/down_16.png" border="0" alt="v" />
-				</a>
-			<?php } ?>
-			</td>
-			<td width="20">
-				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
-				</a>
-			</td>
-		</tr>
-		<?php
-		// Alternate row color
-		if($row == 'a') {
-			$row = 'b';
-		} else {
-			$row = 'a';
-		}
-	}
-	?>
-	</table>
-	<?php
-} else {
-	echo $TEXT['NONE_FOUND'];
-}
-
-?>
-
-<br /><br />
-
-<h2><?php echo $TEXT['SUBMISSIONS']; ?></h2>
-
-<?php
-
-// Query submissions table
-$query_submissions = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_form_submissions` WHERE section_id = '$section_id' ORDER BY submitted_when ASC");
-if($query_submissions->numRows() > 0) {
-	?>
-	<table cellpadding="2" cellspacing="0" border="0" width="100%">
-	<?php
-	// List submissions
-	$row = 'a';
-	while($submission = $query_submissions->fetchRow()) {
-		?>
-		<tr class="row_<?php echo $row; ?>" height="20">
-			<td width="20" style="padding-left: 5px;">
-				<a href="<?php echo WB_URL; ?>/modules/form/view_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $submission['submission_id']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/folder_16.png" alt="<?php echo $TEXT['OPEN']; ?>" border="0" />
-				</a>
-			</td>
-			<td width="237"><?php echo $TEXT['SUBMISSION_ID'].': '.$submission['submission_id']; ?></td>
-			<td><?php echo $TEXT['SUBMITTED'].': '.gmdate(TIME_FORMAT.', '.DATE_FORMAT, $submission['submitted_when']+TIMEZONE); ?></td>
-			<td width="20">
-				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $submission['submission_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
-					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
-				</a>
-			</td>
-		</tr>
-		<?php
-		// Alternate row color
-		if($row == 'a') {
-			$row = 'b';
-		} else {
-			$row = 'a';
-		}
-	}
-	?>
-	</table>
-	<?php
-} else {
-	echo $TEXT['NONE_FOUND'];
-}
-
-?>
-
-<br />
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/modify.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/move_down.php
===================================================================
--- trunk/addons/trunk/modules/form/move_down.php	(revision 102)
+++ trunk/addons/trunk/modules/form/move_down.php	(nonexistent)
@@ -1,57 +0,0 @@
-<?php
-
-// $Id: move_down.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
-	header("Location: index.php");
-} else {
-	$field_id = $_GET['field_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-
-// Create new order object an reorder
-$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
-if($order->move_down($field_id)) {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/move_down.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/modify_field.php
===================================================================
--- trunk/addons/trunk/modules/form/modify_field.php	(revision 102)
+++ trunk/addons/trunk/modules/form/modify_field.php	(nonexistent)
@@ -1,218 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$field_id = $_GET['field_id'];
-}
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Get header and footer
-$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE field_id = '$field_id'");
-$form = $query_content->fetchRow();
-$type = $form['type'];
-if($type == '') {
-	$type = 'none';
-}
-
-// Set raw html <'s and >'s to be replaced by friendly html code
-$raw = array('<', '>');
-$friendly = array('&lt;', '&gt;');
-?>
-
-<form name="modify" action="<?php echo WB_URL; ?>/modules/form/save_field.php" method="post" style="margin: 0;">
-
-<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
-<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
-<input type="hidden" name="field_id" value="<?php echo $field_id; ?>">
-
-<table cellpadding="4" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
-	<td>
-		<input type="text" name="title" value="<?php echo htmlspecialchars($admin->strip_slashes_dummy($form['title'])); ?>" style="width: 100%;" maxlength="255" />
-	</td>
-</tr>
-<tr>
-	<td><?php echo $TEXT['TYPE']; ?>:</td>
-	<td>
-		<select name="type" style="width: 100%;">
-			<option value=""><?php echo $TEXT['PLEASE_SELECT']; ?>...</option>
-			<option value="heading"<?php if($type == 'heading') { echo ' selected'; } ?>><?php echo $TEXT['HEADING']; ?></option>
-			<option value="textfield"<?php if($type == 'textfield') { echo ' selected'; } ?>><?php echo $TEXT['SHORT'].' '.$TEXT['TEXT']; ?> (Textfield)</option>
-			<option value="textarea"<?php if($type == 'textarea') { echo ' selected'; } ?>><?php echo $TEXT['LONG'].' '.$TEXT['TEXT']; ?> (Textarea)</option>
-			<option value="select"<?php if($type == 'select') { echo ' selected'; } ?>><?php echo $TEXT['SELECT_BOX']; ?></option>
-			<option value="checkbox"<?php if($type == 'checkbox') { echo ' selected'; } ?>><?php echo $TEXT['CHECKBOX_GROUP']; ?></option>
-			<option value="radio"<?php if($type == 'radio') { echo ' selected'; } ?>><?php echo $TEXT['RADIO_BUTTON_GROUP']; ?></option>
-			<option value="email"<?php if($type == 'email') { echo ' selected'; } ?>><?php echo $TEXT['EMAIL_ADDRESS']; ?></option>
-		</select>
-	</td>
-</tr>
-<?php if($type != 'none' AND $type != 'email') { ?>
-	<?php if($type == 'heading') { ?>
-	<tr>
-		<td valign="top"><?php echo $TEXT['TEMPLATE']; ?>:</td>
-		<td>
-		<textarea name="template" style="width: 100%; height: 20px;"><?php echo htmlspecialchars($admin->strip_slashes_dummy($form['extra'])); ?></textarea>
-		</td>
-	</tr>
-	<?php } elseif($type == 'textfield') { ?>
-	<tr>
-		<td><?php echo $TEXT['LENGTH']; ?>:</td>
-		<td>
-			<input type="text" name="length" value="<?php echo $form['extra']; ?>" style="width: 100%;" maxlength="3" />
-		</td>
-	</tr>
-	<tr>
-		<td><?php echo $TEXT['DEFAULT_TEXT']; ?>:</td>
-		<td>
-			<input type="text" name="value" value="<?php echo $form['value']; ?>" style="width: 100%;" />
-		</td>
-	</tr>
-	<?php } elseif($type == 'textarea') { ?>
-	<tr>
-		<td valign="top"><?php echo $TEXT['DEFAULT_TEXT']; ?>:</td>
-		<td>
-			<textarea name="value" style="width: 100%; height: 100px;"><?php echo $form['value']; ?></textarea>
-		</td>
-	</tr>
-	<?php } elseif($type == 'select' OR $type = 'radio' OR $type = 'checkbox') { ?>
-	<tr>
-		<td valign="top"><?php echo 'List'; ?>:</td>
-		<td>
-			<?php
-			$option_count = 0;
-			$list = explode(',', $form['value']);
-			foreach($list AS $option_value) {
-				$option_count = $option_count+1;
-				?>
-				<table cellpadding="3" cellspacing="0" width="100%" border="0">
-				<tr>
-					<td width="70"><?php echo $TEXT['OPTION'].' '.$option_count; ?>:</td>
-					<td>
-						<input type="text" name="value<?php echo $option_count; ?>" value="<?php echo $option_value; ?>" style="width: 250px;" />
-					</td>
-				</tr>
-				</table>
-				<?php
-			}
-			for($i = 0; $i < 2; $i++) {
-				$option_count = $option_count+1;
-				?>
-				<table cellpadding="3" cellspacing="0" width="100%" border="0">
-				<tr>
-					<td width="70"><?php echo $TEXT['OPTION'].' '.$option_count; ?>:</td>
-					<td>
-						<input type="text" name="value<?php echo $option_count; ?>" value="" style="width: 250px;" />
-					</td>
-				</tr>
-				</table>
-				<?php
-			}
-			?>
-			<input type="hidden" name="list_count" value="<?php echo $option_count; ?>" />
-		</td>
-	</tr>
-	<?php } ?>
-	<?php if($type == 'select') { ?>
-	<tr>
-		<td><?php echo $TEXT['SIZE']; ?>:</td>
-		<td>
-			<?php $form['extra'] = explode(',',$form['extra']); ?>
-			<input type="text" name="size" value="<?php echo trim($form['extra'][0]); ?>" style="width: 100%;" maxlength="3" />
-		</td>
-	</tr>
-	<tr>
-		<td><?php echo $TEXT['ALLOW_MULTIPLE_SELECTIONS']; ?>:</td>
-		<td>
-			<input type="radio" name="multiselect" id="multiselect_true" value="multiple" <?php if($form['extra'][1] == 'multiple') { echo ' checked'; } ?> />
-			<a href="#" onclick="javascript: document.getElementById('multiselect_true').checked = true;">
-			<?php echo $TEXT['YES']; ?>
-			</a>
-			&nbsp;
-			<input type="radio" name="multiselect" id="multiselect_false" value="" <?php if($form['extra'][1] == '') { echo ' checked'; } ?> />
-			<a href="#" onclick="javascript: document.getElementById('multiselect_false').checked = true;">
-			<?php echo $TEXT['NO']; ?>
-			</a>
-		</td>
-	</tr>
-	<?php } elseif($type == 'checkbox' OR $type == 'radio') { ?>
-	<tr>
-		<td valign="top"><?php echo $TEXT['SEPERATOR']; ?>:</td>
-		<td>
-			<input type="text" name="seperator" value="<?php echo $form['extra']; ?>" style="width: 100%;" />
-		</td>
-	</tr>
-	<?php } ?>
-<?php } ?>
-<?php if($type != 'heading' AND $type != 'none') { ?>
-<tr>
-	<td><?php echo $TEXT['REQUIRED']; ?>:</td>
-	<td>
-		<input type="radio" name="required" id="required_true" value="1" <?php if($form['required'] == 1) { echo ' checked'; } ?> />
-		<a href="#" onclick="javascript: document.getElementById('required_true').checked = true;">
-		<?php echo $TEXT['YES']; ?>
-		</a>
-		&nbsp;
-		<input type="radio" name="required" id="required_false" value="0" <?php if($form['required'] == 0) { echo ' checked'; } ?> />
-		<a href="#" onclick="javascript: document.getElementById('required_false').checked = true;">
-		<?php echo $TEXT['NO']; ?>
-		</a>
-	</td>
-</tr>
-<?php } ?>
-</table>
-
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
-<tr>
-	<td width="90">&nbsp;
-		
-	</td>
-	<td align="left">
-		<input name="save" type="submit" value="<?php echo $TEXT['SAVE'].' '.$TEXT['FIELD']; ?>" style="width: 200px; margin-top: 5px;"></form>
-	</td>
-	<td align="right">
-		<input type="button" value="<?php echo $TEXT['CLOSE']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
-	</td>
-</tr>
-</table>
-
-<?php
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/modify_field.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/add_field.php
===================================================================
--- trunk/addons/trunk/modules/form/add_field.php	(revision 102)
+++ trunk/addons/trunk/modules/form/add_field.php	(nonexistent)
@@ -1,58 +0,0 @@
-<?php
-
-// $Id: add_field.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Include WB admin wrapper script
-require(WB_PATH.'/modules/admin.php');
-
-// Include the ordering class
-require(WB_PATH.'/framework/class.order.php');
-// Get new order
-$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
-$position = $order->get_new($section_id);
-
-// Insert new row into database
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_fields (section_id,page_id,position,required) VALUES ('$section_id','$page_id','$position','0')");
-
-// Get the id
-$field_id = $database->get_one("SELECT LAST_INSERT_ID()");
-
-// Say that a new record has been added, then redirect to modify page
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/add_field.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/add.php
===================================================================
--- trunk/addons/trunk/modules/form/add.php	(revision 102)
+++ trunk/addons/trunk/modules/form/add.php	(nonexistent)
@@ -1,48 +0,0 @@
-<?php
-
-// $Id: add.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-// Insert an extra rows into the database
-$header = '<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"100%\">';
-$field_loop = '<tr><td class=\"field_title\">{TITLE}{REQUIRED}:</td><td>{FIELD}</td></tr>';
-$footer = '<tr><td>&nbsp;</td>
-<td>
-<input type=\"submit\" name=\"submit\" value=\"Submit Form\" />
-</td>
-</tr>
-</table>';
-$email_to = $admin->get_email();
-$email_from = '';
-$email_subject = 'Results from form on website...';
-$success_message = 'Thank-you.';
-$max_submissions = 50;
-$stored_submissions = 100;
-$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_settings (page_id,section_id,header,field_loop,footer,email_to,email_from,email_subject,success_message,max_submissions,stored_submissions) VALUES ('$page_id','$section_id','$header','$field_loop','$footer','$email_to','$email_from','$email_subject','$success_message','$max_submissions','$stored_submissions')");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/add.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/index.php
===================================================================
--- trunk/addons/trunk/modules/form/index.php	(revision 102)
+++ trunk/addons/trunk/modules/form/index.php	(nonexistent)
@@ -1,33 +0,0 @@
-<?php
-
-// $Id: index.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-header('Location: ../index.php');
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/save_field.php
===================================================================
--- trunk/addons/trunk/modules/form/save_field.php	(revision 102)
+++ trunk/addons/trunk/modules/form/save_field.php	(nonexistent)
@@ -1,103 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_POST['field_id']) OR !is_numeric($_POST['field_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$field_id = $_POST['field_id'];
-	$field_id = $field_id;
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Validate all fields
-if($admin->get_post('title') == '' OR $admin->get_post('type') == '') {
-	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
-} else {
-	$title = $admin->add_slashes($admin->get_post('title'));
-	$type = $admin->get_post('type');
-	$required = $admin->get_post('required');
-}
-
-// Update row
-$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET title = '$title', type = '$type', required = '$required' WHERE field_id = '$field_id'");
-
-// If field type has multiple options, get all values and implode them
-$list_count = $admin->get_post('list_count');
-if(is_numeric($list_count)) {
-	$values = array();
-	for($i = 1; $i <= $list_count; $i++) {
-		if($admin->get_post('value'.$i) != '') {
-			$values[] = $admin->get_post('value'.$i);
-		}
-	}
-	$value = implode(',', $values);
-}
-
-// Get extra fields for field-type-specific settings
-if($admin->get_post('type') == 'textfield') {
-	$length = $admin->get_post('length');
-	$value = $admin->get_post('value');
-	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$length' WHERE field_id = '$field_id'");
-} elseif($admin->get_post('type') == 'textarea') {
-	$value = $admin->get_post('value');
-	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '' WHERE field_id = '$field_id'");
-} elseif($admin->get_post('type') == 'heading') {
-	$extra = $admin->get_post('template');
-	if(trim($extra) == '') $extra = '<tr><td class="field_heading" colspan="2">{TITLE}{FIELD}</td></tr>';
-	$extra = $admin->add_slashes($extra);
-	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '', extra = '$extra' WHERE field_id = '$field_id'");
-} elseif($admin->get_post('type') == 'select') {
-	$extra = $admin->get_post('size').','.$admin->get_post('multiselect');
-	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
-} elseif($admin->get_post('type') == 'checkbox') {
-	$extra = $admin->get_post('seperator');
-	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
-} elseif($admin->get_post('type') == 'radio') {
-	$extra = $admin->get_post('seperator');
-	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
-}
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/save_field.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/delete.php
===================================================================
--- trunk/addons/trunk/modules/form/delete.php	(revision 102)
+++ trunk/addons/trunk/modules/form/delete.php	(nonexistent)
@@ -1,35 +0,0 @@
-<?php
-
-// $Id: delete.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-// Delete page from mod_wysiwyg
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_fields WHERE page_id = '$page_id'");
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_settings WHERE page_id = '$page_id'");
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/delete.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/info.php
===================================================================
--- trunk/addons/trunk/modules/form/info.php	(revision 102)
+++ trunk/addons/trunk/modules/form/info.php	(nonexistent)
@@ -1,40 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.4 2005/04/08 09:58:26 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-$module_directory = 'form';
-$module_name = 'Form';
-$module_type = 'page';
-$module_version = '2.5';
-$module_designed_for = '2.x';
-$module_author = 'Ryan Djurovich & Rudolph Lartey';
-$module_description = 'This module allows you to create customised online forms, such as a feedback form. '.
-'Thank-you to Rudolph Lartey who help enhance this module, providing code for extra field types, etc.';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/modules/form/delete_field.php
===================================================================
--- trunk/addons/trunk/modules/form/delete_field.php	(revision 102)
+++ trunk/addons/trunk/modules/form/delete_field.php	(nonexistent)
@@ -1,57 +0,0 @@
-<?php
-
-// $Id: delete_field.php,v 1.3 2005/03/28 04:34:45 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-/*
-The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
-for his contributions to this module - adding extra field types
-*/
-
-require('../../config.php');
-
-// Get id
-if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
-	header("Location: ".ADMIN_URL."/pages/index.php");
-} else {
-	$field_id = $_GET['field_id'];
-}
-
-// Include WB admin wrapper script
-$update_when_modified = true; // Tells script to update when this page was last updated
-require(WB_PATH.'/modules/admin.php');
-
-// Delete row
-$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_fields WHERE field_id = '$field_id'");
-
-// Check if there is a db error, otherwise say successful
-if($database->is_error()) {
-	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-} else {
-	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
-}
-
-// Print admin footer
-$admin->print_footer();
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/modules/form/delete_field.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/powered.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/round/powered.jpg
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/menu_bottom.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/round/menu_bottom.gif
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/index.php
===================================================================
--- trunk/addons/trunk/templates/round/index.php	(revision 102)
+++ trunk/addons/trunk/templates/round/index.php	(nonexistent)
@@ -1,227 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-?>
-<!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" xml:lang="en" lang="en">
-<head>
-<title><?php page_title(); ?></title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="<?php page_description(); ?>" />
-<meta name="keywords" content="<?php page_keywords(); ?>" />
-<link href="<?php echo TEMPLATE_DIR; ?>/screen.css" rel="stylesheet" type="text/css" media="screen" />
-<link href="<?php echo TEMPLATE_DIR; ?>/print.css" rel="stylesheet" type="text/css" media="print" />
-</head>
-<body>
-
-<table cellpadding="0" cellspacing="0" border="0" align="center" class="main" width="750">
-<tr>
-	<td colspan="2" class="header" height="80">
-		<a href="<?php echo WB_URL; ?>"><img src="<?php echo TEMPLATE_DIR; ?>/banner.jpg" border="0" width="750" height="80" alt="<?php page_title('', '[WEBSITE_TITLE]'); ?>" /></a>
-	</td>
-</tr>
-<tr>
-	<?php
-	// Only show menu items if we are supposed to
-	if(SHOW_MENU) {
-	?>	
-	<td style="padding: 10px; background-color: #FFFFFF;" valign="top">
-		<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" class="menu">
-		<tr>
-			<td class="border">
-				<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
-			</td>
-		</tr>
-		<tr>
-			<td width="170">
-				<?php page_menu(); ?>
-			</td>
-		</tr>
-		<tr>
-			<td class="border">
-				<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
-			</td>
-		</tr>
-		</table>
-		
-		<?php if(SHOW_SEARCH) { ?>
-		<form name="search" action="<?php echo WB_URL.'/search/index'.PAGE_EXTENSION; ?>" method="post">
-			<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
-				<tr>
-					<td class="border">
-						<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
-					</td>
-				</tr>
-				<tr>
-					<td class="login">
-						<input type="text" name="string" />
-					</td>
-				</tr>
-				<tr>
-					<td class="login">
-
-						<input type="submit" name="submit" value="<?php if(isset($TEXT['SUBMIT'])) { echo $TEXT['SEARCH']; } else { echo 'Search'; } ?>" />
-					</td>
-				</tr>
-				<tr>
-					<td class="border">
-						<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
-					</td>
-				</tr>
-			</table>
-		</form>
-		<?php } ?>
-		
-		<?php
-		if(FRONTEND_LOGIN AND !$admin->is_authenticated()) {
-		?>
-		<form name="login" action="<?php echo LOGIN_URL; ?>" method="post">
-			
-			<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
-			<tr>
-				<td class="border">
-					<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
-				</td>
-			</tr>
-			<tr>
-				<td class="login" style="text-transform: uppercase;">
-					<b><?php echo $TEXT['LOGIN']; ?></b>
-				</td>
-			</tr>
-			<tr>
-				<td class="login" style="text-align: left;">
-					<?php echo $TEXT['USERNAME']; ?>:
-				</td>
-			</tr>
-			<tr>
-				<td class="login">
-					<input type="text" name="username" />
-				</td>
-			</tr>
-			<tr>
-				<td class="login" style="text-align: left;">
-					<?php echo $TEXT['PASSWORD']; ?>:
-				</td>
-			</tr>
-			<tr>
-				<td class="login">
-					<input type="password" name="password" />
-				</td>
-			</tr>
-			<tr>
-				<td class="login">
-					<input type="submit" name="submit" value="<?php echo $TEXT['LOGIN']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
-				</td>
-			</tr>
-			<tr>
-				<td class="login">
-					<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
-					<?php if(is_numeric(FRONTEND_SIGNUP)) { ?>
-						<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
-					<?php } ?>
-				</td>
-			</tr>
-			<tr>
-				<td class="border">
-					<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
-				</td>
-			</tr>
-			</table>
-		
-		</form>
-		<?php
-		} elseif(FRONTEND_LOGIN AND $admin->is_authenticated()) {
-		?>
-		<form name="logout" action="<?php echo LOGOUT_URL; ?>" method="post">
-			
-			<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
-			<tr>
-				<td class="border">
-					<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
-				</td>
-			</tr>
-			<tr>
-				<td class="login" style="text-transform: uppercase;">
-					<b><?php echo $TEXT['LOGGED_IN']; ?></b>
-				</td>
-			</tr>
-			<tr>
-				<td class="login" style="padding-top: 15px; padding-bottom: 15px;">
-					<?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $admin->get_display_name(); ?>
-				</td>
-			</tr>
-			<tr>
-				<td class="login">
-					<input type="submit" name="submit" value="<?php echo $MENU['LOGOUT']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
-				</td>
-			</tr>
-			<tr>
-				<td class="login">
-					<a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a>
-				</td>
-			</tr>
-			<tr>
-				<td class="border">
-					<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
-				</td>
-			</tr>
-			</table>
-		
-		</form>
-		<?php
-		}
-		?>
-	</td>
-	<?php } ?>
-	<td class="content" width="600" rowspan="2">
-		<?php page_content(); ?>
-	</td>
-</tr>
-<tr>
-	<?php
-	// Only show menu items if we are supposed to
-	if(defined('SHOW_MENU') AND SHOW_MENU == true) {
-	?>	
-	<td height="20" width="155" valign="bottom" class="powered_by">
-		<a href="http://www.websitebaker.org/" target="_blank">
-			<img src="<?php echo TEMPLATE_DIR; ?>/powered.jpg" border="0" alt="Powered By Website Baker" />
-		</a>
-	</td>
-	<?php } ?>
-</tr>
-<tr>
-	<td colspan="2" class="border">
-		<img src="<?php echo TEMPLATE_DIR; ?>/footer.png" border="0" alt="" />
-	</td>
-</tr>
-<tr>
-	<td colspan="2" class="footer">
-		<?php page_footer(); ?>
-	</td>
-</tr>
-</table>
-
-</body>
-</html>
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/round/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/banner.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/round/banner.jpg
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/menu_top.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/round/menu_top.gif
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/print.css
===================================================================
--- trunk/addons/trunk/templates/round/print.css	(revision 102)
+++ trunk/addons/trunk/templates/round/print.css	(nonexistent)
@@ -1,23 +0,0 @@
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-}
-body {
-	background-color: #FFFFFF;
-	margin: 0px;
-}
-a:link, a:visited, a:active {
-	color: #003366;
-	text-decoration: none;
-}
-a:hover {
-	color: #336699;
-	text-decoration: none;
-}
-.header, .menu, .search, .powered_by, .footer {
-	display: none;
-}
-.content {
-	vertical-align: top;
-}
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/round/print.css
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/round/background.jpg
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/footer.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/round/footer.png
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/info.php
===================================================================
--- trunk/addons/trunk/templates/round/info.php	(revision 102)
+++ trunk/addons/trunk/templates/round/info.php	(nonexistent)
@@ -1,33 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.4 2005/04/08 11:37:32 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$template_directory = 'round';
-$template_name = 'Round';
-$template_version = '2.5';
-$template_designed_for = '2.x';
-$template_author = 'Ryan Djurovich';
-$template_description = 'Default template for Website Baker 2.2.x. Simular to the box template, but with rounded edges.';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/round/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/round/screen.css
===================================================================
--- trunk/addons/trunk/templates/round/screen.css	(revision 102)
+++ trunk/addons/trunk/templates/round/screen.css	(nonexistent)
@@ -1,117 +0,0 @@
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-}
-body {
-	background-color: #003366;
-	background-image: url(background.jpg);
-	background-repeat: repeat-x;
-	margin: 10px;
-}
-a:link, a:visited, a:active {
-	color: #003366;
-	text-decoration: none;
-}
-a:hover {
-	color: #336699;
-	text-decoration: none;
-}
-hr {
-	margin: 15px 0px 15px 0px;
-	color: #003366;
-	height: 1px;
-	width: 100%;
-}
-h1 {
-	font-size: 18px;
-	color: #003366;
-	margin: 5px 0px 5px 0px;
-}
-h2 {
-	font-size: 15px;
-	color: #336699;
-	margin: 15px 0px 5px 0px;
-}
-form {
-	margin: 0;
-}
-.header {
-	width: 750px;
-	height: 80px;
-	background-color: #FFFFFF;
-	vertical-align: top;
-}
-.menu {
-	vertical-align: top;
-	background-color: #FFFFFF;
-	width: 170px;
-	padding: 0px;
-}
-.menu ul, .menu li{
-	list-style-type: none;
-	margin: 0;
-	padding: 0;
-}
-.menu ul {
-	border-bottom: 0px;
-	background-color: #003366;
-}
-.menu ul ul {
-	padding-left: 10px;
-}
-.menu a:link, .menu a:visited, .menu a:active {
-	padding: 4px 10px 4px 10px;
-	color: #FFFFFF;
-	display: block;
-	background-color: #003366;
-	text-decoration: none;
-}
-.menu a:hover {
-	background-color: #336699;
-	text-decoration: none;
-}
-.menu_current {
-	font-weight: bold;
-}
-.border {
-	font-size: 1px;
-	height: 10px;
-}
-.login {
-	padding: 2px 10px 2px 10px;
-	font-size: 10px;
-	background-color: #003366;
-	color: #FFFFFF;
-	text-align: center;
-}
-.login input {
-	width: 95%;
-	font-size: 10px;
-}
-.login a:link, .login a:visited, .login a:active {
-	color: #DDDDDD;
-	text-decoration: none;
-}
-.login a:hover {
-	color: #FFFFFF;
-	text-decoration: none;
-}
-.powered_by {
-	padding: 3px 0px 0px 15px;
-	background-color: #FFFFFF;
-}
-.content {
-	padding: 10px;
-	background-color: #FFFFFF;
-	height: 300px;
-	vertical-align: top;
-	text-align: left;
-}
-.footer {
-	padding: 5px;
-	height: 20px;
-	color: #FFFFFF;
-	vertical-align: middle;
-	text-align: center;
-}
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/round/screen.css
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/simple/index.php
===================================================================
--- trunk/addons/trunk/templates/simple/index.php	(revision 102)
+++ trunk/addons/trunk/templates/simple/index.php	(nonexistent)
@@ -1,81 +0,0 @@
-<?php
-
-// $Id: index.php,v 1.4 2005/04/15 06:38:13 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-?>
-<!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" xml:lang="en" lang="en">
-<head>
-<title><?php page_title(); ?></title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="<?php page_description(); ?>" />
-<meta name="keywords" content="<?php page_keywords(); ?>" />
-<link href="<?php echo TEMPLATE_DIR; ?>/screen.css" rel="stylesheet" type="text/css" media="screen" />
-<link href="<?php echo TEMPLATE_DIR; ?>/print.css" rel="stylesheet" type="text/css" media="print" />
-</head>
-<body>
-
-<table cellpadding="5" cellspacing="0" border="0" width="750" align="center">
-<tr>
-	<td colspan="2" class="header">
-		<?php page_title('','[WEBSITE_TITLE]'); ?>
-	</td>
-</tr>
-<tr>
-	<td colspan="2" class="footer">
-		&nbsp;
-	</td>
-</tr>
-<tr>
-	<td class="menu">
-		<?php if(SHOW_MENU) { /* Only shown menu if we need to */ ?>	
-			Menu: <br />
-			<?php page_menu(); ?>
-		<?php } ?>
-		
-		<?php if(SHOW_SEARCH) { /* Only show search box if search is enabled */ ?>
-			<br />
-			Search: <br />
-			<form name="search" action="<?php echo WB_URL; ?>/search/index<?php echo PAGE_EXTENSION; ?>" method="post">
-				<input type="text" name="string" style="width: 100%;" />
-				<input type="submit" name="submit" value="Search" style="width: 100%;" />
-			</form>
-		<?php } ?>
-		
-		<br />
-		<a href="http://www.websitebaker.org" target="_blank">Powered by <br /> Website Baker</a>
-	</td>
-	<td class="content">
-		<?php page_content(); ?>
-	</td>
-</tr>
-<tr>
-	<td colspan="2" class="footer">
-		<?php page_footer(); ?>
-	</td>
-</tr>
-</table>
-
-</body>
-</html>
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/simple/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-""
\ No newline at end of property
Index: trunk/addons/trunk/templates/simple/print.css
===================================================================
--- trunk/addons/trunk/templates/simple/print.css	(revision 102)
+++ trunk/addons/trunk/templates/simple/print.css	(nonexistent)
@@ -1,29 +0,0 @@
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-}
-body {
-	background-color: #FFFFFF;
-	margin: 0px;
-}
-a:link, a:visited, a:active {
-	color: #003366;
-	text-decoration: none;
-}
-a:hover {
-	color: #336699;
-	text-decoration: none;
-}
-.header {
-	display: none;
-}
-.menu {
-	display: none;
-}
-.content {
-	vertical-align: top;
-}
-.footer {
-	display: none;
-}
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/simple/print.css
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-""
\ No newline at end of property
Index: trunk/addons/trunk/templates/simple/info.php
===================================================================
--- trunk/addons/trunk/templates/simple/info.php	(revision 102)
+++ trunk/addons/trunk/templates/simple/info.php	(nonexistent)
@@ -1,33 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.3 2005/04/08 09:58:32 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$template_directory = 'simple';
-$template_name = 'Simple';
-$template_version = '2.5';
-$template_designed_for = '2.x';
-$template_author = 'Ryan Djurovich';
-$template_description = 'This template is designed for developers to learn how to make templates easily. Please note this template only supports 2 page levels.';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/simple/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-""
\ No newline at end of property
Index: trunk/addons/trunk/templates/simple/screen.css
===================================================================
--- trunk/addons/trunk/templates/simple/screen.css	(revision 102)
+++ trunk/addons/trunk/templates/simple/screen.css	(nonexistent)
@@ -1,60 +0,0 @@
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-}
-body {
-	background-color: #333333;
-	margin: 10px;
-}
-a:link, a:visited, a:active {
-	color: #003366;
-	text-decoration: none;
-}
-a:hover {
-	color: #336699;
-	text-decoration: none;
-}
-form {
-	margin: 0;
-}
-h1, h2, h3, h4, h5 {
-	margin: 5px 0px 5px 0px;
-}
-.header {
-	background-color: #336699;
-	vertical-align: middle;
-	text-align: center;
-	color: #FFFFFF;
-	height: 50px;
-	font-size: 20px;
-	font-weight: bold;
-}
-.menu {
-	background-color: #EEEEEE;
-	padding: 10px;
-	width: 150px;
-	vertical-align: top;
-}
-.menu ul, .menu li {
-	list-style-type: none;
-	display: block;
-	margin: 0;
-	padding: 0;
-	padding-left: 5px;
-}
-.current {
-	font-weight: bold;
-}
-.content {
-	background-color: #FFFFFF;
-	padding: 20px;
-	height: 400px;
-	vertical-align: top;
-}
-.footer {
-	background-color: #DDDDDD;
-	text-align: center;
-	font-size: 10px;
-	height: 10px;
-}
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/simple/screen.css
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-""
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/footer.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/allcss/footer.jpg
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/allcss/header.jpg
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/index.php
===================================================================
--- trunk/addons/trunk/templates/allcss/index.php	(revision 102)
+++ trunk/addons/trunk/templates/allcss/index.php	(nonexistent)
@@ -1,110 +0,0 @@
-<?php
-
-// $Id$
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-?>
-<!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" xml:lang="en" lang="en">
-<head>
-<title><?php page_title(); ?></title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="<?php page_description(); ?>" />
-<meta name="keywords" content="<?php page_keywords(); ?>" />
-<link href="<?php echo TEMPLATE_DIR; ?>/screen.css" rel="stylesheet" type="text/css" media="screen" />
-<link href="<?php echo TEMPLATE_DIR; ?>/print.css" rel="stylesheet" type="text/css" media="print" />
-</head>
-<body>
-
-<div class="main">
-	
-	<div class="banner">
-		<a href="<?php echo WB_URL; ?>/" target="_top"><?php echo WEBSITE_TITLE; ?></a>
-		<font color="#D0D0D0">| <?php echo PAGE_TITLE; ?></font>
-	</div>
-	
-	<div class="search_box">
-		<?php if(SHOW_SEARCH) { ?>
-		<form name="search" action="<?php echo WB_URL.'/search/index'.PAGE_EXTENSION; ?>" method="post">
-		<input type="text" name="string" class="search_string" />
-		<input type="submit" name="submit" value="Search" class="search_submit" />
-		</form>
-		<?php } ?>
-	</div>
-	
-	<?php
-	// Only show menu items if we are supposed to
-	if(SHOW_MENU) {
-	?>	
-	<div class="menu">
-		<?php page_menu(0, 1, '<li class="menu_main"[class]>[a][menu_title][/a]</li>', '<ul>', '</ul>', '', ' style="font-weight: bold;"'); ?>
-		
-		<?php
-		if(FRONTEND_LOGIN == 'enabled' AND VISIBILITY != 'private' AND $admin->get_session('USER_ID') == '') {
-		?>
-		<form name="login" action="<?php echo LOGIN_URL; ?>" method="post" class="login_table">
-			<h1><?php echo $TEXT['LOGIN']; ?></h1>
-			<?php echo $TEXT['USERNAME']; ?>:
-			<input type="text" name="username" style="text-transform: lowercase;" />
-			<?php echo $TEXT['PASSWORD']; ?>:
-			<input type="password" name="password" />
-			<input type="submit" name="submit" value="<?php echo $TEXT['LOGIN']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
-			<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
-				<?php if(is_numeric(FRONTEND_SIGNUP)) { ?>
-					<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
-				<?php } ?>
-		</form>
-		<?php
-		} elseif(FRONTEND_LOGIN == 'enabled' AND is_numeric($admin->get_session('USER_ID'))) {
-		?>
-		<form name="logout" action="<?php echo LOGOUT_URL; ?>" method="post" class="login_table">
-			<h1><?php echo $TEXT['LOGGED_IN']; ?></h1>
-			<?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $admin->get_display_name(); ?>
-			<br />
-			<input type="submit" name="submit" value="<?php echo $MENU['LOGOUT']; ?>" />
-			<br />
-			<a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a>
-			<a href="<?php echo ADMIN_URL; ?>/index.php"><?php echo $TEXT['ADMINISTRATION']; ?></a>
-		</form>
-		<?php
-		}
-		?>
-	</div>
-	<?php } ?>
-	
-	<div class="content">
-		<?php page_content(); ?>
-	</div>
-	
-	<div class="footer">
-		<?php page_footer(); ?>
-	</div>
-	
-</div>
-
-<div class="powered_by">
-	Powered by <a href="http://www.websitebaker.org" target="_blank">Website Baker</a>
-</div>
-
-</body>
-</html>
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/allcss/index.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/print.css
===================================================================
--- trunk/addons/trunk/templates/allcss/print.css	(revision 102)
+++ trunk/addons/trunk/templates/allcss/print.css	(nonexistent)
@@ -1,71 +0,0 @@
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-}
-body {
-	background-color: #FFFFFF;
-	margin: 0px;
-}
-a:link, a:visited, a:active {
-	color: #660033;
-	text-decoration: none;
-}
-a:hover {
-	color: #993366;
-	text-decoration: none;
-}
-hr {
-	margin: 15px 0px 15px 0px;
-	color: #660033;
-	height: 1px;
-	width: 100%;
-}
-h1 {
-	font-size: 15px;
-	color: #993366;
-	margin: 5px 0px 5px 0px;
-}
-form {
-	margin: 0;
-}
-.main {
-	width: 100%;
-	margin: 0;
-	padding: 0;
-}
-.banner {
-	font-size: 20px;
-	font-weight: bold;
-	color: #FFFFFF;
-	padding-bottom: 20px;
-	text-align: center;
-}
-.search_box {
-	display: none;
-}
-.menu {
-	display: none;
-}
-.menu ul, .menu li {
-	display: none;
-}
-.login_table {
-	display: none;
-}
-.content {
-	margin: 0;
-	text-align: justify;
-}
-.footer {
-	clear: both;
-	height: 20px;
-	background: #FFFFFF;
-	font-size: 10px;
-	color: #666666;
-	text-align: center;
-	padding-top: 20px;
-}
-.powered_by {
-	display: none;
-}
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/allcss/print.css
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/addons/trunk/templates/allcss/background.jpg
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/info.php
===================================================================
--- trunk/addons/trunk/templates/allcss/info.php	(revision 102)
+++ trunk/addons/trunk/templates/allcss/info.php	(nonexistent)
@@ -1,33 +0,0 @@
-<?php
-
-// $Id: info.php,v 1.3 2005/04/08 09:58:31 rdjurovich Exp $
-
-/*
-
- Website Baker Project <http://www.websitebaker.org/>
- Copyright (C) 2004-2005, Ryan Djurovich
-
- Website Baker 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.
-
- Website Baker 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 Website Baker; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-*/
-
-$template_directory = 'allcss';
-$template_name = 'All CSS';
-$template_version = '2.5';
-$template_designed_for = '2.x';
-$template_author = 'Ryan Djurovich';
-$template_description = 'This template is designed with one goal in mind: to completely control lay-out with css. In case you were wondering, that is where the name came from.';
-
-?>
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/allcss/info.php
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/addons/trunk/templates/allcss/screen.css
===================================================================
--- trunk/addons/trunk/templates/allcss/screen.css	(revision 102)
+++ trunk/addons/trunk/templates/allcss/screen.css	(nonexistent)
@@ -1,145 +0,0 @@
-body,td,th {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 12px;
-	color: #000000;
-}
-body {
-	background-color: #F0F0F0;
-	background-image: url(background.jpg);
-	margin: 0;
-}
-a:link, a:visited, a:active {
-	color: #660033;
-	text-decoration: none;
-}
-a:hover {
-	color: #993366;
-	text-decoration: none;
-}
-hr {
-	margin: 5px 0px 5px 0px;
-	color: #660033;
-	border: 0;
-	border-top: 1px solid #660033;
-	height: 1px;
-	width: 580px;
-}
-h1 {
-	font-size: 16px;
-	color: #993366;
-	text-align: left;
-	margin: 8px 2px 8px 2px;
-}
-form {
-	margin: 0;
-}
-.main {
-	width: 750px;
-	margin: auto;
-	padding: 0;
-	background-color: #FFFFFF;
-}
-.banner, .search_box {
-	height: 80px;
-	background-image: url(header.jpg);
-	background-repeat: repeat-x;
-	font-size: 20px;
-	font-weight: bold;
-	color: #FFFFFF;
-	text-align: center;
-	padding-top: 20px;
-}
-.banner {
-	width: 530px;
-	padding-left: 20px;
-	float: left;
-	text-align: left;
-}
-.search_box {
-	float: right;
-	clear: right;
-	width: 200px;
-}
-.search_string {
-	width: 100px;
-	height: 16px;
-	font-size: 10px;
-	vertical-align: middle;
-}
-.search_submit {
-	width: 50px;
-	height: 22px;
-	font-size: 10px;
-	vertical-align: middle;
-}
-.banner a {
-	color: #FFFFFF;
-}
-.menu {
-	float: left;
-	width: 140px;
-	margin: 10px;
-	margin-top: 3px;
-}
-.menu ul, .menu li {
-	margin: 0;
-	padding: 0;
-	list-style: none;
-	margin-bottom: 5px;
-}
-.menu ul ul {
-	padding-left: 8px;
-}
-.menu a:link, .menu a:visited, .menu a:active, .menu a:hover {
-	display: block;
-	padding: 2px;
-}
-.menu_main a:link, .menu_main a:visited, .menu_main a:active {
-	border-bottom: 1px dashed #999999;
-}
-.menu_main a:hover {
-	border-bottom: 1px dashed #333333;
-}
-.login_table {
-	border: 1px solid #D0D0D0;
-	margin-top: 20px;
-	margin-bottom: 5px;
-	text-align: center;
-	padding-bottom: 3px;
-}
-.login_table h1 {
-	color: #660033;
-	font-size: 12px;
-	text-transform: uppercase;
-	font-weight: bold;
-	text-align: center;
-	margin: 5px 0px 5px 0px;
-}
-.login_table input {
-	text-transform: uppercase;
-	font-size: 10px;
-	margin: 5px 0px 1px 0px;
-	width: 100px;
-}
-.content {
-	margin-left: 150px;
-	padding: 4px 10px 14px 10px;
-	text-align: justify;
-	clear: right;
-}
-.footer {
-	background-color: #FFFFFF;
-	clear: both;
-	height: 20px;
-	background-image: url(footer.jpg);
-	background-repeat: repeat-x;
-	font-size: 10px;
-	color: #666666;
-	text-align: center;
-	line-height: 18px;
-}
-.powered_by {
-	text-align: center;
-	font-size: 10px;
-	padding-top: 2px;
-}
\ No newline at end of file

Property changes on: trunk/addons/trunk/templates/allcss/screen.css
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: trunk/wb/languages/EN.php
===================================================================
--- trunk/wb/languages/EN.php	(nonexistent)
+++ trunk/wb/languages/EN.php	(revision 103)
@@ -0,0 +1,506 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+	define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'EN';
+$language_name = 'English';
+$language_author = 'Ryan Djurovich';
+$language_version = '2.5';
+$language_designed_for = '2.5.x';
+
+// Menu titles
+$MENU['START'] = 'Start';
+$MENU['PAGES'] = 'Pages';
+$MENU['MEDIA'] = 'Media';
+$MENU['ADDONS'] = 'Add-ons';
+$MENU['MODULES'] = 'Modules';
+$MENU['TEMPLATES'] = 'Templates';
+$MENU['LANGUAGES'] = 'Languages';
+$MENU['PREFERENCES'] = 'Preferences';
+$MENU['SETTINGS'] = 'Settings';
+$MENU['ACCESS'] = 'Access';
+$MENU['USERS'] = 'Users';
+$MENU['GROUPS'] = 'Groups';
+$MENU['HELP'] = 'Help';
+$MENU['VIEW'] = 'View';
+$MENU['LOGOUT'] = 'Log-out';
+$MENU['LOGIN'] = 'Login';
+$MENU['FORGOT'] = 'Retrieve Login Details';
+
+// Section overviews
+$OVERVIEW['START'] = 'Administration overview';
+$OVERVIEW['PAGES'] = 'Manage your websites pages...';
+$OVERVIEW['MEDIA'] = 'Manage files stored in the media folder...';
+$OVERVIEW['MODULES'] = 'Manage Website Baker modules...';
+$OVERVIEW['TEMPLATES'] = 'Change the look and feel of your website with templates...';
+$OVERVIEW['LANGUAGES'] = 'Manage Website Baker languages...';
+$OVERVIEW['PREFERENCES'] = 'Change preferences such as email address, password, etc... ';
+$OVERVIEW['SETTINGS'] = 'Changes settings for Website Baker...';
+$OVERVIEW['USERS'] = 'Manage users who can log-in to Website Baker...';
+$OVERVIEW['GROUPS'] = 'Manage user groups and their system permissions...';
+$OVERVIEW['HELP'] = 'Got a questions? Find your answer...';
+$OVERVIEW['VIEW'] = 'Quickly view and browse your website in a new window...';
+
+// Headings
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modify/Delete Page';
+$HEADING['DELETED_PAGES'] = 'Deleted Pages';
+$HEADING['ADD_PAGE'] = 'Add Page';
+$HEADING['ADD_HEADING'] = 'Add Heading';
+$HEADING['MODIFY_PAGE'] = 'Modify Page';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modify Page Settings';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modify Advanced Page Settings';
+$HEADING['MANAGE_SECTIONS'] = 'Manage Sections';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modify Intro Page';
+
+$HEADING['BROWSE_MEDIA'] = 'Browse Media';
+$HEADING['CREATE_FOLDER'] = 'Create Folder';
+$HEADING['UPLOAD_FILES'] = 'Upload File(s)';
+
+$HEADING['INSTALL_MODULE'] = 'Install Module';
+$HEADING['UNINSTALL_MODULE'] = 'Uninstall Module';
+$HEADING['MODULE_DETAILS'] = 'Module Details';
+
+$HEADING['INSTALL_TEMPLATE'] = 'Install Template';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Uninstall Template';
+$HEADING['TEMPLATE_DETAILS'] = 'Template Details';
+
+$HEADING['INSTALL_LANGUAGE'] = 'Install Language';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Uninstall Language';
+$HEADING['LANGUAGE_DETAILS'] = 'Language Details';
+
+$HEADING['MY_SETTINGS'] = 'My Settings';
+$HEADING['MY_EMAIL'] = 'My Email';
+$HEADING['MY_PASSWORD'] = 'My Password';
+
+$HEADING['GENERAL_SETTINGS'] = 'General Settings';
+$HEADING['DEFAULT_SETTINGS'] = 'Default Settings';
+$HEADING['SEARCH_SETTINGS'] = 'Search Settings';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Filesystem Settings';
+
+$HEADING['MODIFY_DELETE_USER'] = 'Modify/Delete User';
+$HEADING['ADD_USER'] = 'Add User';
+$HEADING['MODIFY_USER'] = 'Modify User';
+
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modify/Delete Group';
+$HEADING['ADD_GROUP'] = 'Add Group';
+$HEADING['MODIFY_GROUP'] = 'Modify Group';
+
+// Other text
+$TEXT['ADD'] = 'Add';
+$TEXT['MODIFY'] = 'Modify';
+$TEXT['SETTINGS'] = 'Settings';
+$TEXT['DELETE'] = 'Delete';
+$TEXT['SAVE'] = 'Save';
+$TEXT['RESET'] = 'Reset';
+$TEXT['LOGIN'] = 'Login';
+$TEXT['RELOAD'] = 'Reload';
+$TEXT['CANCEL'] = 'Cancel';
+$TEXT['NAME'] = 'Name';
+$TEXT['PLEASE_SELECT'] = 'Please select';
+$TEXT['TITLE'] = 'Title';
+$TEXT['PARENT'] = 'Parent';
+$TEXT['TYPE'] = 'Type';
+$TEXT['VISIBILITY'] = 'Visibility';
+$TEXT['PRIVATE'] = 'Private';
+$TEXT['PUBLIC'] = 'Public';
+$TEXT['NONE'] = 'None';
+$TEXT['NONE_FOUND'] = 'None Found';
+$TEXT['CURRENT'] = 'Current';
+$TEXT['CHANGE'] = 'Change';
+$TEXT['WINDOW'] = 'Window';
+$TEXT['DESCRIPTION'] = 'Description';
+$TEXT['KEYWORDS'] = 'Keywords';
+$TEXT['ADMINISTRATORS'] = 'Administrators';
+$TEXT['PRIVATE_VIEWERS'] = 'Private Viewers';
+$TEXT['EXPAND'] = 'Expand';
+$TEXT['COLLAPSE'] = 'Collapse';
+$TEXT['MOVE_UP'] = 'Move Up';
+$TEXT['MOVE_DOWN'] = 'Move Down';
+$TEXT['RENAME'] = 'Rename';
+$TEXT['MODIFY_SETTINGS'] = 'Modify Settings';
+$TEXT['MODIFY_CONTENT'] = 'Modify Content';
+$TEXT['VIEW'] = 'View';
+$TEXT['UP'] = 'Up';
+$TEXT['FORGOTTEN_DETAILS'] = 'Forgotten your details?';
+$TEXT['NEED_TO_LOGIN'] = 'Need to log-in?';
+$TEXT['SEND_DETAILS'] = 'Send Details';
+$TEXT['USERNAME'] = 'Username';
+$TEXT['PASSWORD'] = 'Password';
+$TEXT['HOME'] = 'Home';
+$TEXT['TARGET_FOLDER'] = 'Target folder';
+$TEXT['OVERWRITE_EXISTING'] = 'Overwrite existing';
+$TEXT['FILE'] = 'File';
+$TEXT['FILES'] = 'Files';
+$TEXT['FOLDER'] = 'Folder';
+$TEXT['FOLDERS'] = 'Folders';
+$TEXT['CREATE_FOLDER'] = 'Create Folder';
+$TEXT['UPLOAD_FILES'] = 'Upload File(s)';
+$TEXT['CURRENT_FOLDER'] = 'Current Folder';
+$TEXT['TO'] = 'To';
+$TEXT['FROM'] = 'From';
+$TEXT['INSTALL'] = 'Install';
+$TEXT['UNINSTALL'] = 'Uninstall';
+$TEXT['VIEW_DETAILS'] = 'View Details';
+$TEXT['DISPLAY_NAME'] = 'Display Name';
+$TEXT['AUTHOR'] = 'Author';
+$TEXT['VERSION'] = 'Version';
+$TEXT['DESIGNED_FOR'] = 'Designed For';
+$TEXT['DESCRIPTION'] = 'Description';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['LANGUAGE'] = 'Language';
+$TEXT['TIMEZONE'] = 'Timezone';
+$TEXT['CURRENT_PASSWORD'] = 'Current Password';
+$TEXT['NEW_PASSWORD'] = 'New Password';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Re-type New Password';
+$TEXT['ACTIVE'] = 'Active';
+$TEXT['DISABLED'] = 'Disabled';
+$TEXT['ENABLED'] = 'Enabled';
+$TEXT['RETYPE_PASSWORD'] = 'Re-type Password';
+$TEXT['GROUP'] = 'Group';
+$TEXT['SYSTEM_PERMISSIONS'] = 'System Permissions';
+$TEXT['MODULE_PERMISSIONS'] = 'Module Permissions';
+$TEXT['SHOW_ADVANCED'] = 'Show Advanced Options';
+$TEXT['HIDE_ADVANCED'] = 'Hide Advanced Options';
+$TEXT['BASIC'] = 'Basic';
+$TEXT['ADVANCED'] = 'Advanced';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['DEFAULT'] = 'Default';
+$TEXT['KEYWORDS'] = 'Keywords';
+$TEXT['TEXT'] = 'Text';
+$TEXT['HEADER'] = 'Header';
+$TEXT['FOOTER'] = 'Footer';
+$TEXT['TEMPLATE'] = 'Template';
+$TEXT['INSTALLATION'] = 'Installation';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['HOST'] = 'Host';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['PAGE'] = 'Page';
+$TEXT['SIGNUP'] = 'Sign-up';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Error Reporting Level';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['PATH'] = 'Path';
+$TEXT['URL'] = 'URL';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['TABLE_PREFIX'] = 'Table Prefix';
+$TEXT['CHANGES'] = 'Changes';
+$TEXT['ADMINISTRATION'] = 'Administration';
+$TEXT['FORGOT_DETAILS'] = 'Forgot Details?';
+$TEXT['LOGGED_IN'] = 'Logged-In';
+$TEXT['WELCOME_BACK'] = 'Welcome back';
+$TEXT['FULL_NAME'] = 'Full Name';
+$TEXT['ACCOUNT_SIGNUP'] = 'Account Sign-Up';
+$TEXT['LINK'] = 'Link';
+$TEXT['TARGET'] = 'Target';
+$TEXT['NEW_WINDOW'] = 'New Window';
+$TEXT['SAME_WINDOW'] = 'Same Window';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Page Level Limit';
+$TEXT['SUCCESS'] = 'Success';
+$TEXT['ERROR'] = 'Error';
+$TEXT['ARE_YOU_SURE'] = 'Are you sure?';
+$TEXT['YES'] = 'Yes';
+$TEXT['NO'] = 'No';
+$TEXT['SYSTEM_DEFAULT'] = 'System Default';
+$TEXT['PAGE_TITLE'] = 'Page Title';
+$TEXT['MENU_TITLE'] = 'Menu Title';
+$TEXT['ACTIONS'] = 'Actions';
+$TEXT['UNKNOWN'] = 'Unknown';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['SEARCH'] = 'Search';
+$TEXT['SEARCHING'] = 'Searching';
+$TEXT['POST'] = 'Post';
+$TEXT['COMMENT'] = 'Comment';
+$TEXT['COMMENTS'] = 'Comments';
+$TEXT['COMMENTING'] = 'Commenting';
+$TEXT['SHORT'] = 'Short';
+$TEXT['LONG'] = 'Long';
+$TEXT['LOOP'] = 'Loop';
+$TEXT['FIELD'] = 'Field';
+$TEXT['REQUIRED'] = 'Required';
+$TEXT['LENGTH'] = 'Length';
+$TEXT['MESSAGE'] = 'Message';
+$TEXT['SUBJECT'] = 'Subject';
+$TEXT['MATCH'] = 'Match';
+$TEXT['ALL_WORDS'] = 'All Words';
+$TEXT['ANY_WORDS'] = 'Any Words';
+$TEXT['EXACT_MATCH'] = 'Exact Match';
+$TEXT['SHOW'] = 'Show';
+$TEXT['HIDE'] = 'Hide';
+$TEXT['START_PUBLISHING'] = 'Start Publishing';
+$TEXT['FINISH_PUBLISHING'] = 'Finish Publishing';
+$TEXT['DATE'] = 'Date';
+$TEXT['START'] = 'Start';
+$TEXT['END'] = 'End';
+$TEXT['IMAGE'] = 'Image';
+$TEXT['ICON'] = 'Icon';
+$TEXT['SECTION'] = 'Section';
+$TEXT['DATE_FORMAT'] = 'Date Format';
+$TEXT['TIME_FORMAT'] = 'Time Format';
+$TEXT['RESULTS'] = 'Results';
+$TEXT['RESIZE'] = 'Re-size';
+$TEXT['MANAGE'] = 'Manage';
+$TEXT['CODE'] = 'Code';
+$TEXT['WIDTH'] = 'Width';
+$TEXT['HEIGHT'] = 'Height';
+$TEXT['MORE'] = 'More';
+$TEXT['READ_MORE'] = 'Read More';
+$TEXT['CHANGE_SETTINGS'] = 'Change Settings';
+$TEXT['CURRENT_PAGE'] = 'Current Page';
+$TEXT['CLOSE'] = 'Close';
+$TEXT['INTRO_PAGE'] = 'Intro Page';
+$TEXT['INSTALLATION_URL'] = 'Installation URL';
+$TEXT['INSTALLATION_PATH'] = 'Installation Path';
+$TEXT['PAGE_EXTENSION'] = 'Page Extension';
+$TEXT['NO_RESULTS'] = 'No Results';
+$TEXT['WEBSITE_TITLE'] = 'Website Title';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Website Description';
+$TEXT['WEBSITE_KEYWORDS'] = 'Website Keywords';
+$TEXT['WEBSITE_HEADER'] = 'Website Header';
+$TEXT['WEBSITE_FOOTER'] = 'Website Footer';
+$TEXT['RESULTS_HEADER'] = 'Results Header';
+$TEXT['RESULTS_LOOP'] = 'Results Loop';
+$TEXT['RESULTS_FOOTER'] = 'Results Footer';
+$TEXT['LEVEL'] = 'Level';
+$TEXT['NOT_FOUND'] = 'Not Found';
+$TEXT['PAGE_SPACER'] = 'Page Spacer';
+$TEXT['MATCHING'] = 'Matching';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Template Permissions';
+$TEXT['PAGES_DIRECTORY'] = 'Pages Directory';
+$TEXT['MEDIA_DIRECTORY'] = 'Media Directory';
+$TEXT['FILE_MODE'] = 'File Mode';
+$TEXT['USER'] = 'User';
+$TEXT['OTHERS'] = 'Others';
+$TEXT['READ'] = 'Read';
+$TEXT['WRITE'] = 'Write';
+$TEXT['EXECUTE'] = 'Execute';
+$TEXT['SMART_LOGIN'] = 'Smart Login';
+$TEXT['REMEMBER_ME'] = 'Remember Me';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Filesystem Permissions';
+$TEXT['DIRECTORIES'] = 'Directories';
+$TEXT['DIRECTORY_MODE'] = 'Directory Mode';
+$TEXT['LIST_OPTIONS'] = 'List Options';
+$TEXT['OPTION'] = 'Option';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Allow Multiple Selections';
+$TEXT['TEXTFIELD'] = 'Textfield';
+$TEXT['TEXTAREA'] = 'Textarea';
+$TEXT['SELECT_BOX'] = 'Select Box';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox Group';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button Group';
+$TEXT['SIZE'] = 'Size';
+$TEXT['DEFAULT_TEXT'] = 'Default Text';
+$TEXT['SEPERATOR'] = 'Seperator';
+$TEXT['BACK'] = 'Back';
+$TEXT['UNDER_CONSTRUCTION'] = 'Under Construction';
+$TEXT['MULTISELECT'] = 'Multi-select';
+$TEXT['SHORT_TEXT'] = 'Short Text';
+$TEXT['LONG_TEXT'] = 'Long Text';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Homepage Redirection';
+$TEXT['HEADING'] = 'Heading';
+$TEXT['MULTIPLE_MENUS'] = 'Multiple Menu\'s';
+$TEXT['REGISTERED'] = 'Registered';
+$TEXT['START'] = 'Start';
+$TEXT['SECTION_BLOCKS'] = 'Section Blocks';
+$TEXT['REGISTERED_VIEWERS'] = 'Registered Viewers';
+$TEXT['SUBMISSION_ID'] = 'Submission ID';
+$TEXT['SUBMISSIONS'] = 'Submissions';
+$TEXT['SUBMITTED'] = 'Submitted';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Submissions Per Hour';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Submissions Stored In Database';
+$TEXT['EMAIL_ADDRESS'] = 'Email Address';
+$TEXT['CUSTOM'] = 'Custom';
+$TEXT['ANONYMOUS'] = 'Anonymous';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server Operating System';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-writeable file permissions';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix based';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['HOME_FOLDER'] = 'Home Folder';
+$TEXT['HOME_FOLDERS'] = 'Home Folders';
+$TEXT['PAGE_TRASH'] = 'Page Trash';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['SEPARATE'] = 'Separate';
+$TEXT['DELETED'] = 'Deleted';
+$TEXT['VIEW_DELETED_PAGES'] = 'View Deleted Pages';
+$TEXT['EMPTY_TRASH'] = 'Empty Trash';
+$TEXT['TRASH_EMPTIED'] = 'Trash Emptied';
+$TEXT['ADD_SECTION'] = 'Add Section';
+$TEXT['POST_HEADER'] = 'Post Header';
+$TEXT['POST_FOOTER'] = 'Post Footer';
+$TEXT['POSTS_PER_PAGE'] = 'Posts Per Page';
+$TEXT['RESIZE_IMAGE_TO'] = 'Resize Image To';
+$TEXT['UNLIMITED'] = 'Unlimited';
+$TEXT['OF'] = 'Of';
+$TEXT['OUT_OF'] = 'Out Of';
+$TEXT['NEXT'] = 'Next';
+$TEXT['PREVIOUS'] = 'Previous';
+$TEXT['NEXT_PAGE'] = 'Next Page';
+$TEXT['PREVIOUS_PAGE'] = 'Previous Page';
+$TEXT['ON'] = 'On';
+$TEXT['LAST_UPDATED_BY'] = 'Last Updated By';
+$TEXT['RESULTS_FOR'] = 'Results For';
+$TEXT['TIME'] = 'Time';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
+$TEXT['WYSIWYG_EDITOR'] = "WYSIWYG Editor";
+$TEXT['SERVER_EMAIL'] = 'Server Email';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MANAGE_GROUPS'] = 'Manage Groups';
+$TEXT['MANAGE_USERS'] = 'Manage Users';
+$TEXT['PAGE_LANGUAGES'] = 'Page Languages';
+$TEXT['HIDDEN'] = 'Hidden';
+$TEXT['MAIN'] = 'Main';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'Rename Files On Upload';
+
+// Success/error messages
+$MESSAGE['FRONTEND']['SORRY_NO_VIEWING_PERMISSIONS'] = 'Sorry, you do not have permissions to view this page';
+
+$MESSAGE['ADMIN']['INSUFFICIENT_PRIVELLIGES'] = 'Insufficient privelliges to be here';
+
+$MESSAGE['LOGIN']['BOTH_BLANK'] = 'Please enter you username and password below';
+$MESSAGE['LOGIN']['USERNAME_BLANK'] = 'Please enter a username';
+$MESSAGE['LOGIN']['PASSWORD_BLANK'] = 'Please enter a password';
+$MESSAGE['LOGIN']['USERNAME_TOO_SHORT'] = 'Supplied username to short';
+$MESSAGE['LOGIN']['PASSWORD_TOO_SHORT'] = 'Supplied password to short';
+$MESSAGE['LOGIN']['USERNAME_TOO_LONG'] = 'Supplied username to long';
+$MESSAGE['LOGIN']['PASSWORD_TOO_LONG'] = 'Supplied password to long';
+$MESSAGE['LOGIN']['AUTHENTICATION_FAILED'] = 'Username or password incorrect';
+
+$MESSAGE['SIGNUP']['NO_EMAIL'] = 'You must enter an email address';
+
+$MESSAGE['FORGOT_PASS']['NO_DATA'] = 'Please enter your email address below';
+$MESSAGE['FORGOT_PASS']['EMAIL_NOT_FOUND'] = 'The email that you entered cannot be found in the database';
+$MESSAGE['FORGOT_PASS']['CANNOT_EMAIL'] = 'Unable to email password, please contact system administrator';
+$MESSAGE['FORGOT_PASS']['PASSWORD_RESET'] = 'Your username and password have been sent to your email address';
+$MESSAGE['FORGOT_PASS']['ALREADY_RESET'] = 'Password cannot be reset more than once per hour, sorry';
+
+$MESSAGE['START']['WELCOME_MESSAGE'] = 'Welcome to Website Baker Administration';
+$MESSAGE['START']['INSTALL_DIR_EXISTS'] = 'Warning, Installation Directory Still Exists!';
+$MESSAGE['START']['CURRENT_USER'] = 'You are currently logged in as:';
+
+$MESSAGE['SETTINGS']['UNABLE_OPEN_CONFIG'] = 'Unable to open the configuration file';
+$MESSAGE['SETTINGS']['UNABLE_WRITE_CONFIG'] = 'Cannot write to configuration file';
+$MESSAGE['SETTINGS']['SAVED'] = 'Settings saved successfully';
+$MESSAGE['SETTINGS']['MODE_SWITCH_WARNING'] = 'Please Note: Pressing this button resets all unsaved changes';
+$MESSAGE['SETTINGS']['WORLD_WRITEABLE_WARNING'] = 'Please note: this is only recommended for testing environments';
+
+$MESSAGE['USERS']['ADDED'] = 'User added successfully';
+$MESSAGE['USERS']['SAVED'] = 'User saved successfully';
+$MESSAGE['USERS']['DELETED'] = 'User deleted successfully';
+$MESSAGE['USERS']['NO_GROUP'] = 'No group was selected';
+$MESSAGE['USERS']['USERNAME_TOO_SHORT'] = 'The username you entered was too short';
+$MESSAGE['USERS']['PASSWORD_TOO_SHORT'] = 'The password you entered was too short';
+$MESSAGE['USERS']['PASSWORD_MISMATCH'] = 'The passwords you entered do not match';
+$MESSAGE['USERS']['INVALID_EMAIL'] = 'The email address you entered is invalid';
+$MESSAGE['USERS']['EMAIL_TAKEN'] = 'The email you entered is already in use';
+$MESSAGE['USERS']['USERNAME_TAKEN'] = 'The username you entered is already taken';
+$MESSAGE['USERS']['CHANGING_PASSWORD'] = 'Please note: You should only enter values in the above fields if you wish to change this users password';
+$MESSAGE['USERS']['CONFIRM_DELETE'] = 'Are you sure you want to delete the selected user?';
+
+$MESSAGE['GROUPS']['ADDED'] = 'Group added successfully';
+$MESSAGE['GROUPS']['SAVED'] = 'Group saved successfully';
+$MESSAGE['GROUPS']['DELETED'] = 'Group deleted successfully';
+$MESSAGE['GROUPS']['GROUP_NAME_BLANK'] = 'Group name is blank';
+$MESSAGE['GROUPS']['CONFIRM_DELETE'] = 'Are you sure you want to delete the selected group (and any users that belong to it)?';
+$MESSAGE['GROUPS']['NO_GROUPS_FOUND'] = 'No groups found';
+$MESSAGE['GROUPS']['GROUP_NAME_EXISTS'] = 'Group name already exists';
+
+$MESSAGE['PREFERENCES']['DETAILS_SAVED'] = 'Details saved successfully';
+$MESSAGE['PREFERENCES']['EMAIL_UPDATED'] = 'Email updated successfully';
+$MESSAGE['PREFERENCES']['CURRENT_PASSWORD_INCORRECT'] = 'The (current) password you entered is incorrect';
+$MESSAGE['PREFERENCES']['PASSWORD_CHANGED'] = 'Password changed successfully';
+
+$MESSAGE['TEMPLATES']['CHANGE_TEMPLATE_NOTICE'] = 'Please note: to change the template you must go to the Settings section';
+
+$MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH'] = 'Cannot include ../ in the folder name';
+$MESSAGE['MEDIA']['DIR_DOES_NOT_EXIST'] = 'Directory does not exist';
+$MESSAGE['MEDIA']['TARGET_DOT_DOT_SLASH'] = 'Cannot have ../ in the folder target';
+$MESSAGE['MEDIA']['NAME_DOT_DOT_SLASH'] = 'Cannot include ../ in the name';
+$MESSAGE['MEDIA']['NAME_INDEX_PHP'] = 'Cannot use index.php as the name';
+$MESSAGE['MEDIA']['NONE_FOUND'] = 'No media found in the current folder';
+$MESSAGE['MEDIA']['FILE_NOT_FOUND'] = 'File not found';
+$MESSAGE['MEDIA']['DELETED_FILE'] = 'File deleted successfully';
+$MESSAGE['MEDIA']['DELETED_DIR'] = 'Folder deleted successfully';
+$MESSAGE['MEDIA']['CONFIRM_DELETE'] = 'Are you sure you want to delete the following file or folder?';
+$MESSAGE['MEDIA']['CANNOT_DELETE_FILE'] = 'Cannot delete the selected file';
+$MESSAGE['MEDIA']['CANNOT_DELETE_DIR'] = 'Cannot delete the selected folder';
+$MESSAGE['MEDIA']['BLANK_NAME'] = 'You did not enter a new name';
+$MESSAGE['MEDIA']['BLANK_EXTENSION'] = 'You did not enter a file extension';
+$MESSAGE['MEDIA']['RENAMED'] = 'Rename successful';
+$MESSAGE['MEDIA']['CANNOT_RENAME'] = 'Rename unsuccessful';
+$MESSAGE['MEDIA']['FILE_EXISTS'] = 'A file matching the name you entered already exists';
+$MESSAGE['MEDIA']['DIR_EXISTS'] = 'A folder matching the name you entered already exists';
+$MESSAGE['MEDIA']['DIR_MADE'] = 'Folder created successfully';
+$MESSAGE['MEDIA']['DIR_NOT_MADE'] = 'Unable to create folder';
+$MESSAGE['MEDIA']['SINGLE_UPLOADED'] = ' file was successfully uploaded';
+$MESSAGE['MEDIA']['UPLOADED'] = ' files were successfully uploaded';
+
+$MESSAGE['PAGES']['ADDED'] = 'Page added successfully';
+$MESSAGE['PAGES']['ADDED_HEADING'] = 'Page heading added successfully';
+$MESSAGE['PAGES']['PAGE_EXISTS'] = 'A page with the same or similar title exists';
+$MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE'] = 'Error creating access file in the /pages directory (insufficient privileges)';
+$MESSAGE['PAGES']['CANNOT_DELETE_ACCESS_FILE'] = 'Error deleting access file in the /pages directory (insufficient privileges)';
+$MESSAGE['PAGES']['NOT_FOUND'] = 'Page not found';
+$MESSAGE['PAGES']['SAVED'] = 'Page saved successfully';
+$MESSAGE['PAGES']['SAVED_SETTINGS'] = 'Page settings saved successfully';
+$MESSAGE['PAGES']['NOT_SAVED'] = 'Error saving page';
+$MESSAGE['PAGES']['DELETE_CONFIRM'] = 'Are you sure you want to delete the selected page (and all of its sub-pages)';
+$MESSAGE['PAGES']['DELETED'] = 'Page deleted successfully';
+$MESSAGE['PAGES']['RESTORED'] = 'Page restored successfully';
+$MESSAGE['PAGES']['BLANK_PAGE_TITLE'] = 'Please enter a page title';
+$MESSAGE['PAGES']['BLANK_MENU_TITLE'] = 'Please enter a menu title';
+$MESSAGE['PAGES']['REORDERED'] = 'Page re-ordered successfully';
+$MESSAGE['PAGES']['CANNOT_REORDER'] = 'Error re-ordering page';
+$MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS'] = 'You do not have permissions to modify this page';
+$MESSAGE['PAGES']['INTRO_NOT_WRITABLE'] = 'Cannot write to file /pages/intro.php (insufficient priviliges)';
+$MESSAGE['PAGES']['INTRO_SAVED'] = 'Intro page saved successfully';
+$MESSAGE['PAGES']['LAST_MODIFIED'] = 'Last modification by';
+$MESSAGE['PAGES']['INTRO_LINK'] = 'Click HERE to modify the intro page';
+$MESSAGE['PAGES']['SECTIONS_PROPERTIES_SAVED'] = 'Section properties saved successfully';
+$MESSAGE['PAGES']['RETURN_TO_PAGES'] = 'Return to pages';
+
+$MESSAGE['GENERIC']['FILL_IN_ALL'] = 'Please go back and fill-in all fields';
+$MESSAGE['GENERIC']['FILE_TYPE'] = 'Please note that the file you upload must be of the following format:';
+$MESSAGE['GENERIC']['FILE_TYPES'] = 'Please note that the file you upload must be in one of the following formats:';
+$MESSAGE['GENERIC']['CANNOT_UPLOAD'] = 'Cannot upload file';
+$MESSAGE['GENERIC']['ALREADY_INSTALLED'] = 'Already installed';
+$MESSAGE['GENERIC']['NOT_INSTALLED'] = 'Not installed';
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL'] = 'Cannot uninstall';
+$MESSAGE['GENERIC']['CANNOT_UNZIP'] = 'Cannot unzip file';
+$MESSAGE['GENERIC']['INSTALLED'] = 'Installed successfully';
+$MESSAGE['GENERIC']['INSTALLED'] = 'Upgraded successfully';
+$MESSAGE['GENERIC']['UNINSTALLED'] = 'Uninstalled successfully';
+$MESSAGE['GENERIC']['BAD_PERMISSIONS'] = 'Unable to write to the target directory';
+$MESSAGE['GENERIC']['INVALID'] = 'The file you uploaded is invalid';
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE'] = 'Cannot Uninstall: the selected file is in use';
+$MESSAGE['GENERIC']['WEBSITE_UNDER_CONTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GENERIC']['PLEASE_CHECK_BACK_SOON'] = 'Please check back soon...';
+
+$MESSAGE['MOD_FORM']['REQUIRED_FIELDS'] = 'You must enter details for the following fields';
+$MESSAGE['MOD_FORM']['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+
+?>

Property changes on: trunk/wb/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/info.php
===================================================================
--- trunk/wb/modules/wrapper/info.php	(nonexistent)
+++ trunk/wb/modules/wrapper/info.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$module_directory = 'wrapper';
+$module_name = 'Wrapper';
+$module_type = 'page';
+$module_version = '2.5';
+$module_designed_for = '2.x';
+$module_author = 'Ryan Djurovich';
+$module_description = 'This module allows you to wrap your site around another using an inline frame';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/delete.php
===================================================================
--- trunk/wb/modules/wrapper/delete.php	(nonexistent)
+++ trunk/wb/modules/wrapper/delete.php	(revision 103)
@@ -0,0 +1,29 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Delete page from mod_wrapper
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/install.php
===================================================================
--- trunk/wb/modules/wrapper/install.php	(nonexistent)
+++ trunk/wb/modules/wrapper/install.php	(revision 103)
@@ -0,0 +1,41 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+if(defined('WB_URL')) {
+	
+	// Create table
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_wrapper`");
+	$mod_wrapper = 'CREATE TABLE `'.TABLE_PREFIX.'mod_wrapper` ('
+						  . ' `section_id` INT NOT NULL,'
+						  . ' `page_id` INT NOT NULL,'
+	                 . ' `url` TEXT NOT NULL ,'
+						  . ' `height` INT NOT NULL,'
+	                 . ' PRIMARY KEY ( `section_id` ) )'
+	                 . ' ';
+	$database->query($mod_wrapper);
+	
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/index.php
===================================================================
--- trunk/wb/modules/wrapper/index.php	(nonexistent)
+++ trunk/wb/modules/wrapper/index.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/add.php
===================================================================
--- trunk/wb/modules/wrapper/add.php	(nonexistent)
+++ trunk/wb/modules/wrapper/add.php	(revision 103)
@@ -0,0 +1,29 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Insert an extra row into the database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_wrapper (page_id,section_id,height) VALUES ('$page_id','$section_id','400')");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/view.php
===================================================================
--- trunk/wb/modules/wrapper/view.php	(nonexistent)
+++ trunk/wb/modules/wrapper/view.php	(revision 103)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Get url
+$get_settings = $database->query("SELECT url,height FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'");
+$fetch_settings = $get_settings->fetchRow();
+$url = $this->strip_slashes_dummy($fetch_settings['url']);
+
+?>
+<iframe src="<?php echo $url; ?>" width="100%" height="<?php echo $fetch_settings['height']; ?>px" frameborder="0" scrolling="auto">
+Your browser does not support inline frames.<br />
+Click on the link below to visit the website that was meant to be shown here...<br />
+<a href="<?php echo $url; ?>" target="_blank"><?php echo $url; ?></a>
+</iframe>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/modify.php
===================================================================
--- trunk/wb/modules/wrapper/modify.php	(nonexistent)
+++ trunk/wb/modules/wrapper/modify.php	(revision 103)
@@ -0,0 +1,56 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Setup template object
+$template = new Template(WB_PATH.'/modules/wrapper');
+$template->set_file('page', 'modify.html');
+$template->set_block('page', 'main_block', 'main');
+
+// Get page content
+$query = "SELECT url,height FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'";
+$get_settings = $database->query($query);
+$settings = $get_settings->fetchRow();
+$url = $admin->strip_slashes_dummy($settings['url']);
+$height = $settings['height'];
+
+// Insert vars
+$template->set_var(array(
+								'PAGE_ID' => $page_id,
+								'SECTION_ID' => $section_id,
+								'WB_URL' => WB_URL,
+								'URL' => $url,
+								'HEIGHT' => $height,
+								'TEXT_URL' => $TEXT['URL'],
+								'TEXT_HEIGHT' => $TEXT['HEIGHT'],
+								'TEXT_SAVE' => $TEXT['SAVE'],
+								'TEXT_CANCEL' => $TEXT['CANCEL']
+								)
+						);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/save.php
===================================================================
--- trunk/wb/modules/wrapper/save.php	(nonexistent)
+++ trunk/wb/modules/wrapper/save.php	(revision 103)
@@ -0,0 +1,54 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Update the mod_wrapper table with the contents
+if(isset($_POST['url'])) {
+	$url = $admin->add_slashes($_POST['url']);
+	$height = $_POST['height'];
+	if(!is_numeric($height)) {
+		$height = 400;
+	}
+	$database = new database();
+	$query = "UPDATE ".TABLE_PREFIX."mod_wrapper SET url = '$url', height = '$height' WHERE section_id = '$section_id'";
+	$database->query($query);	
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wrapper/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wrapper/modify.html
===================================================================
--- trunk/wb/modules/wrapper/modify.html	(nonexistent)
+++ trunk/wb/modules/wrapper/modify.html	(revision 103)
@@ -0,0 +1,41 @@
+<!-- BEGIN main_block -->
+
+<form action="{WB_URL}/modules/wrapper/save.php" method="post">
+
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<input type="hidden" name="section_id" value="{SECTION_ID}" />
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left" width="50">
+		{TEXT_URL}:
+	</td>
+	<td>
+		<input type="text" name="url" value="{URL}" style="width: 100%;" />
+	</td>
+</tr>
+<tr>
+	<td align="left" width="50">
+		{TEXT_HEIGHT}:
+	</td>
+	<td>
+		<input type="text" name="height" value="{HEIGHT}" maxlength="4" style="width: 100%;" />
+	</td>
+</tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input type="submit" value="{TEXT_SAVE}" style="width: 200px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		</form>
+		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<!-- END main_block -->

Property changes on: trunk/wb/modules/wrapper/modify.html
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/view.php
===================================================================
--- trunk/wb/modules/menu_link/view.php	(nonexistent)
+++ trunk/wb/modules/menu_link/view.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+Since there is nothing to show and users shouldn't really know this
+page exists, we might as well give them a link to the home page.
+*/
+
+?>
+<a href="<?php echo WB_URL; ?>">
+Click HERE to go to the main page
+</a>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/delete.php
===================================================================
--- trunk/wb/modules/menu_link/delete.php	(nonexistent)
+++ trunk/wb/modules/menu_link/delete.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Nothing special has to be deleted
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/install.php
===================================================================
--- trunk/wb/modules/menu_link/install.php	(nonexistent)
+++ trunk/wb/modules/menu_link/install.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// No table is needed for this module
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/index.php
===================================================================
--- trunk/wb/modules/menu_link/index.php	(nonexistent)
+++ trunk/wb/modules/menu_link/index.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/add.php
===================================================================
--- trunk/wb/modules/menu_link/add.php	(nonexistent)
+++ trunk/wb/modules/menu_link/add.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Nothing needs to be inserted anywhere special
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/info.php
===================================================================
--- trunk/wb/modules/menu_link/info.php	(nonexistent)
+++ trunk/wb/modules/menu_link/info.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$module_directory = 'menu_link';
+$module_name = 'Menu Link';
+$module_type = 'page';
+$module_version = '2.5';
+$module_designed_for = '2.x';
+$module_author = 'Ryan Djurovich';
+$module_description = 'This module allows you to insert a link into the menu.';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/modify.php
===================================================================
--- trunk/wb/modules/menu_link/modify.php	(nonexistent)
+++ trunk/wb/modules/menu_link/modify.php	(revision 103)
@@ -0,0 +1,64 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Setup template object
+$template = new Template(WB_PATH.'/modules/menu_link');
+$template->set_file('page', 'modify.html');
+$template->set_block('page', 'main_block', 'main');
+
+// Get page link and target
+$query_info = "SELECT link,target FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'";
+$get_info = $database->query($query_info);
+$fetch_info = $get_info->fetchRow();
+$link = $admin->strip_slashes_dummy($fetch_info['link']);
+$target = $fetch_info['target'];
+
+// Insert vars
+$template->set_var(array(
+								'PAGE_ID' => $page_id,
+								'WB_URL' => WB_URL,
+								'LINK' => $link,
+								'TEXT_LINK' => $TEXT['LINK'],
+								'TEXT_TARGET' => $TEXT['TARGET'],
+								'TEXT_NEW_WINDOW' => $TEXT['NEW_WINDOW'],
+								'TEXT_SAME_WINDOW' => $TEXT['SAME_WINDOW'],
+								'TEXT_SAVE' => $TEXT['SAVE'],
+								'TEXT_CANCEL' => $TEXT['CANCEL'],
+								'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT']
+								)
+						);
+
+// Select target
+if($target == '_blank') {
+	$template->set_var('BLANK_SELECTED', ' selected');
+} elseif($target == '_top') {
+	$template->set_var('TOP_SELECTED', ' selected');
+}
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/save.php
===================================================================
--- trunk/wb/modules/menu_link/save.php	(nonexistent)
+++ trunk/wb/modules/menu_link/save.php	(revision 103)
@@ -0,0 +1,55 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+$database = new database();
+
+// Update the mod_menu_links table with the link
+if(isset($_POST['link'])) {
+	// Update link and target
+	$link = $admin->add_slashes($_POST['link']);
+	$target = $_POST['target'];
+	$query = "UPDATE ".TABLE_PREFIX."pages SET link = '$link', target = '$target' WHERE page_id = '$page_id'";
+	$database->query($query);
+} else {
+	$admin->print_error('Error in wb/modules/menu_link/save.php at line 35', $js_back);
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/menu_link/modify.html
===================================================================
--- trunk/wb/modules/menu_link/modify.html	(nonexistent)
+++ trunk/wb/modules/menu_link/modify.html	(revision 103)
@@ -0,0 +1,47 @@
+<!-- BEGIN main_block -->
+
+<form action="{WB_URL}/modules/menu_link/save.php" method="post">
+
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<input type="hidden" name="section_id" value="{SECTION_ID}" />
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td>
+		{TEXT_LINK}:
+	</td>
+	<td>
+		<input type="text" id="link" name="link" style="width: 100%;" value="{LINK}" />
+	</td>
+</tr>
+<tr>
+	<td>
+		{TEXT_TARGET}:
+	</td>
+	<td>
+		<select name="target" style="width: 100%;" value="{TARGET}" />
+			<option value="_top">{TEXT_PLEASE_SELECT}...</option>
+			<option value="_blank"{BLANK_SELECTED}>{TEXT_NEW_WINDOW}</option>
+			<option value="_top"{TOP_SELECTED}>{TEXT_SAME_WINDOW}</option>
+		</select>
+	</td>
+</tr>
+</table>
+
+<br />
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input type="submit" value="{TEXT_SAVE}" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		</form>
+		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<!-- END main_block -->
\ No newline at end of file

Property changes on: trunk/wb/modules/menu_link/modify.html
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/info.php
===================================================================
--- trunk/wb/modules/wysiwyg/info.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/info.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$module_directory = 'wysiwyg';
+$module_name = 'WYSIWYG';
+$module_type = 'page';
+$module_version = '2.5';
+$module_designed_for = '2.x';
+$module_author = 'Ryan Djurovich';
+$module_description = 'This module allows you to edit the contents of a page using the WYSIWYG htmlArea program';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wysiwyg/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/delete.php
===================================================================
--- trunk/wb/modules/wysiwyg/delete.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/delete.php	(revision 103)
@@ -0,0 +1,29 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Delete record from the database
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wysiwyg/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/install.php
===================================================================
--- trunk/wb/modules/wysiwyg/install.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/install.php	(revision 103)
@@ -0,0 +1,65 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+if(defined('WB_URL')) {
+	
+	// Create table
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_wysiwyg`");
+	$mod_wysiwyg = 'CREATE TABLE `'.TABLE_PREFIX.'mod_wysiwyg` ( '
+						  . ' `section_id` INT NOT NULL,'
+						  . ' `page_id` INT NOT NULL,'
+	                 . ' `content` TEXT NOT NULL ,'
+	                 . ' `text` TEXT NOT NULL ,'
+	                 . ' PRIMARY KEY ( `section_id` ) )'
+	                 . ' ';
+	$database->query($mod_wysiwyg);
+	
+	// Insert info into the search table
+	// Module query info
+	$field_info = array();
+	$field_info['page_id'] = 'page_id';
+	$field_info['title'] = 'page_title';
+	$field_info['link'] = 'link';
+	$field_info['description'] = 'description';
+	$field_info['modified_when'] = 'modified_when';
+	$field_info['modified_by'] = 'modified_by';
+	$field_info = serialize($field_info);
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'wysiwyg', '$field_info')");
+	// Query start
+	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_wysiwyg, [TP]pages WHERE ";
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'wysiwyg')");
+	// Query body
+	$query_body_code = " [TP]pages.page_id = [TP]mod_wysiwyg.page_id AND [TP]mod_wysiwyg.text [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";	
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'wysiwyg')");
+	// Query end
+	$query_end_code = "";	
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'wysiwyg')");
+	
+	// Insert blank row (there needs to be at least on row for the search to work)
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_wysiwyg (page_id,section_id) VALUES ('0','0')");
+	
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wysiwyg/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/index.php
===================================================================
--- trunk/wb/modules/wysiwyg/index.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/index.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wysiwyg/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/add.php
===================================================================
--- trunk/wb/modules/wysiwyg/add.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/add.php	(revision 103)
@@ -0,0 +1,29 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Insert an extra row into the database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_wysiwyg (page_id,section_id) VALUES ('$page_id','$section_id')");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/wysiwyg/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/modify.php
===================================================================
--- trunk/wb/modules/wysiwyg/modify.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/modify.php	(revision 103)
@@ -0,0 +1,79 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+if(!defined('WB_PATH')) exit('Direct access to this file is not allowed');
+
+// Get page content
+$query = "SELECT content FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'";
+$get_content = $database->query($query);
+$content = $get_content->fetchRow();
+$content = $admin->strip_slashes_dummy(htmlspecialchars($content['content']));
+
+if(!isset($wysiwyg_editor_loaded)) {
+	$wysiwyg_editor_loaded=true;
+
+	if (!defined('WYSIWYG_EDITOR') OR WYSIWYG_EDITOR=="none" OR !file_exists(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php')) {
+		function show_wysiwyg_editor($name,$id,$content,$width,$height) {
+			echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
+		}
+	} else {
+		$id_list=array();
+		$query_wysiwyg = $database->query("SELECT section_id FROM ".TABLE_PREFIX."sections WHERE page_id = '$page_id' AND module = 'wysiwyg'");
+		if($query_wysiwyg->numRows() > 0) {
+			while($wysiwyg_section = $query_wysiwyg->fetchRow()) {
+				$entry='content'.$wysiwyg_section['section_id'];
+				array_push($id_list,$entry);
+			}
+			require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');
+		}
+	}
+}
+
+?>
+
+<form name="wysiwyg<?php echo $section_id; ?>" action="<?php echo WB_URL; ?>/modules/wysiwyg/save.php" method="post">
+
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+
+<?php
+show_wysiwyg_editor('content'.$section_id,'content'.$section_id,$content,'725px','350px');
+?>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%" style="padding-bottom: 10px;">
+<tr>
+	<td align="left">
+		<input type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		</form>
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<br />

Property changes on: trunk/wb/modules/wysiwyg/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/save.php
===================================================================
--- trunk/wb/modules/wysiwyg/save.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/save.php	(revision 103)
@@ -0,0 +1,51 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Update the mod_wysiwygs table with the contents
+if(isset($_POST['content'.$section_id])) {
+	$content = $admin->add_slashes($_POST['content'.$section_id]);
+	$text = strip_tags($content);
+	$database = new database();
+	$query = "UPDATE ".TABLE_PREFIX."mod_wysiwyg SET content = '$content', text = '$text' WHERE section_id = '$section_id'";
+	$database->query($query);	
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>

Property changes on: trunk/wb/modules/wysiwyg/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/wysiwyg/view.php
===================================================================
--- trunk/wb/modules/wysiwyg/view.php	(nonexistent)
+++ trunk/wb/modules/wysiwyg/view.php	(revision 103)
@@ -0,0 +1,35 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Get content
+$get_content = $database->query("SELECT content FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'");
+$fetch_content = $get_content->fetchRow();
+$content = $this->strip_slashes_dummy($fetch_content['content']);
+
+$this->preprocess($content);
+
+echo $content;
+
+?>

Property changes on: trunk/wb/modules/wysiwyg/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/add_field.php
===================================================================
--- trunk/wb/modules/form/add_field.php	(nonexistent)
+++ trunk/wb/modules/form/add_field.php	(revision 103)
@@ -0,0 +1,58 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+// Get new order
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+$position = $order->get_new($section_id);
+
+// Insert new row into database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_fields (section_id,page_id,position,required) VALUES ('$section_id','$page_id','$position','0')");
+
+// Get the id
+$field_id = $database->get_one("SELECT LAST_INSERT_ID()");
+
+// Say that a new record has been added, then redirect to modify page
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/add_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/info.php
===================================================================
--- trunk/wb/modules/form/info.php	(nonexistent)
+++ trunk/wb/modules/form/info.php	(revision 103)
@@ -0,0 +1,40 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+$module_directory = 'form';
+$module_name = 'Form';
+$module_type = 'page';
+$module_version = '2.5';
+$module_designed_for = '2.x';
+$module_author = 'Ryan Djurovich & Rudolph Lartey';
+$module_description = 'This module allows you to create customised online forms, such as a feedback form. '.
+'Thank-you to Rudolph Lartey who help enhance this module, providing code for extra field types, etc.';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/move_down.php
===================================================================
--- trunk/wb/modules/form/move_down.php	(nonexistent)
+++ trunk/wb/modules/form/move_down.php	(revision 103)
@@ -0,0 +1,57 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
+	header("Location: index.php");
+} else {
+	$field_id = $_GET['field_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+if($order->move_down($field_id)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/move_down.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/delete.php
===================================================================
--- trunk/wb/modules/form/delete.php	(nonexistent)
+++ trunk/wb/modules/form/delete.php	(revision 103)
@@ -0,0 +1,35 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+// Delete page from mod_wysiwyg
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_fields WHERE page_id = '$page_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_settings WHERE page_id = '$page_id'");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/delete_field.php
===================================================================
--- trunk/wb/modules/form/delete_field.php	(nonexistent)
+++ trunk/wb/modules/form/delete_field.php	(revision 103)
@@ -0,0 +1,57 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$field_id = $_GET['field_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Delete row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_fields WHERE field_id = '$field_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/delete_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/install.php
===================================================================
--- trunk/wb/modules/form/install.php	(nonexistent)
+++ trunk/wb/modules/form/install.php	(revision 103)
@@ -0,0 +1,103 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+if(defined('WB_URL')) {
+		
+	// Create tables
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_fields`");
+	$mod_form = 'CREATE TABLE `'.TABLE_PREFIX.'mod_form_fields` ( `field_id` INT NOT NULL AUTO_INCREMENT,'
+	                 . ' `section_id` INT NOT NULL ,'
+	                 . ' `page_id` INT NOT NULL ,'
+	                 . ' `position` INT NOT NULL ,'
+	                 . ' `title` VARCHAR(255) NOT NULL ,'
+	                 . ' `type` VARCHAR(255) NOT NULL ,'
+	                 . ' `required` INT NOT NULL ,'
+	                 . ' `value` TEXT NOT NULL ,'
+	                 . ' `extra` TEXT NOT NULL ,'
+	                 . ' PRIMARY KEY ( `field_id` ) )'
+	                 . ' ';
+	$database->query($mod_form);
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_settings`");
+	$mod_form = 'CREATE TABLE `'.TABLE_PREFIX.'mod_form_settings` ('
+						  . ' `section_id` INT NOT NULL,'
+						  . ' `page_id` INT NOT NULL,'
+	                 . ' `header` TEXT NOT NULL ,'
+	                 . ' `field_loop` TEXT NOT NULL ,'
+	                 . ' `footer` TEXT NOT NULL ,'
+	                 . ' `email_to` TEXT NOT NULL ,'
+	                 . ' `email_from` VARCHAR(255) NOT NULL ,'
+	                 . ' `email_subject` VARCHAR(255) NOT NULL ,'
+	                 . ' `success_message` TEXT NOT NULL ,'
+						  . ' `stored_submissions` INT NOT NULL,'
+						  . ' `max_submissions` INT NOT NULL,'
+	                 . ' PRIMARY KEY ( `section_id` ) )'
+	                 . ' ';
+	$database->query($mod_form);
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_submissions`");
+	$mod_form = 'CREATE TABLE `'.TABLE_PREFIX.'mod_form_submissions` ( `submission_id` INT NOT NULL AUTO_INCREMENT,'
+						  . ' `section_id` INT NOT NULL,'
+						  . ' `page_id` INT NOT NULL,'
+						  . ' `submitted_when` INT NOT NULL,'
+						  . ' `submitted_by` INT NOT NULL,'
+	                 . ' `body` TEXT NOT NULL ,'
+	                 . ' PRIMARY KEY ( `submission_id` ) )'
+	                 . ' ';
+	$database->query($mod_form);
+		
+	// Insert info into the search table
+	// Module query info
+	$field_info = array();
+	$field_info['page_id'] = 'page_id';
+	$field_info['title'] = 'page_title';
+	$field_info['link'] = 'link';
+	$field_info['description'] = 'description';
+	$field_info['modified_when'] = 'modified_when';
+	$field_info['modified_by'] = 'modified_by';
+	$field_info = serialize($field_info);
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'form', '$field_info')");
+	// Query start
+	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_form_fields, [TP]mod_form_settings, [TP]pages WHERE ";
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'form')");
+	// Query body
+	$query_body_code = " [TP]pages.page_id = [TP]mod_form_settings.page_id AND [TP]mod_form_settings.header [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'
+	OR [TP]pages.page_id = [TP]mod_form_settings.page_id AND [TP]mod_form_settings.footer [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'
+	OR [TP]pages.page_id = [TP]mod_form_fields.page_id AND [TP]mod_form_fields.title [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'form')");
+	// Query end
+	$query_end_code = '';
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'form')");
+	
+	// Insert blank row (there needs to be at least on row for the search to work)
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_fields (page_id,section_id) VALUES ('0','0')");
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_settings (page_id,section_id) VALUES ('0','0')");
+
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/index.php
===================================================================
--- trunk/wb/modules/form/index.php	(nonexistent)
+++ trunk/wb/modules/form/index.php	(revision 103)
@@ -0,0 +1,33 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/move_up.php
===================================================================
--- trunk/wb/modules/form/move_up.php	(nonexistent)
+++ trunk/wb/modules/form/move_up.php	(revision 103)
@@ -0,0 +1,57 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
+	header("Location: index.php");
+} else {
+	$field_id = $_GET['field_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+if($order->move_up($field_id)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/move_up.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/delete_submission.php
===================================================================
--- trunk/wb/modules/form/delete_submission.php	(nonexistent)
+++ trunk/wb/modules/form/delete_submission.php	(revision 103)
@@ -0,0 +1,57 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra submission types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['submission_id']) OR !is_numeric($_GET['submission_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$submission_id = $_GET['submission_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Delete row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/delete_submission.php
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/modify.php
===================================================================
--- trunk/wb/modules/form/modify.php	(nonexistent)
+++ trunk/wb/modules/form/modify.php	(revision 103)
@@ -0,0 +1,191 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+// Must include code to stop this file being access directly
+if(!defined('WB_PATH')) { exit("Cannot access this file directly"); }
+
+?>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left" width="33%">
+		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['FIELD']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/add_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+	<td align="right" width="33%">
+		<input type="button" value="<?php echo $TEXT['SETTINGS']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/modify_settings.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['FIELD']; ?></h2>
+<?php
+
+// Loop through existing fields
+$query_fields = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_form_fields` WHERE section_id = '$section_id' ORDER BY position ASC");
+if($query_fields->numRows() > 0) {
+	$num_fields = $query_fields->numRows();
+	$row = 'a';
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($field = $query_fields->fetchRow()) {
+		?>
+		<tr class="row_<?php echo $row; ?>" height="20">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="^" />
+				</a>
+			</td>		
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>">
+					<?php echo $field['title']; ?>
+				</a>
+			</td>
+			<td width="175">
+				<?php
+				echo $TEXT['TYPE'].':';
+				if($field['type'] == 'textfield') {
+					echo $TEXT['SHORT_TEXT'];
+				} elseif($field['type'] == 'textarea') {
+					echo $TEXT['LONG_TEXT'];
+				} elseif($field['type'] == 'heading') {
+					echo $TEXT['HEADING'];
+				} elseif($field['type'] == 'select') {
+					echo $TEXT['SELECT_BOX'];
+				} elseif($field['type'] == 'checkbox') {
+					echo $TEXT['CHECKBOX_GROUP'];
+				} elseif($field['type'] == 'radio') {
+					echo $TEXT['RADIO_BUTTON_GROUP'];
+				} elseif($field['type'] == 'email') {
+					echo $TEXT['EMAIL_ADDRESS'];
+				}
+				?>
+			</td>
+			<td width="95">		+			<?php 
+			if ($field['type'] != 'group_begin') {
+				echo $TEXT['REQUIRED'].': '; if($field['required'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; }
+			}
+			?>
+			</td>
+			<td width="110">
+			<?php
+			if ($field['type'] == 'select') {
+				$field['extra'] = explode(',',$field['extra']);
+				echo $TEXT['MULTISELECT'].': '; if($field['extra'][1] == 'multiple') { echo $TEXT['YES']; } else { echo $TEXT['NO']; }
+			}
+			?>
+			</td>
+			<td width="20">
+			<?php if($field['position'] != 1) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/form/move_up.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/up_16.png" border="0" alt="^" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+			<?php if($field['position'] != $num_fields) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/form/move_down.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/down_16.png" border="0" alt="v" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_field.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&field_id=<?php echo $field['field_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+
+?>
+
+<br /><br />
+
+<h2><?php echo $TEXT['SUBMISSIONS']; ?></h2>
+
+<?php
+
+// Query submissions table
+$query_submissions = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_form_submissions` WHERE section_id = '$section_id' ORDER BY submitted_when ASC");
+if($query_submissions->numRows() > 0) {
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	// List submissions
+	$row = 'a';
+	while($submission = $query_submissions->fetchRow()) {
+		?>
+		<tr class="row_<?php echo $row; ?>" height="20">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/form/view_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $submission['submission_id']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/folder_16.png" alt="<?php echo $TEXT['OPEN']; ?>" border="0" />
+				</a>
+			</td>
+			<td width="237"><?php echo $TEXT['SUBMISSION_ID'].': '.$submission['submission_id']; ?></td>
+			<td><?php echo $TEXT['SUBMITTED'].': '.gmdate(TIME_FORMAT.', '.DATE_FORMAT, $submission['submitted_when']+TIMEZONE); ?></td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $submission['submission_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+
+?>
+
+<br />
\ No newline at end of file

Property changes on: trunk/wb/modules/form/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/add.php
===================================================================
--- trunk/wb/modules/form/add.php	(nonexistent)
+++ trunk/wb/modules/form/add.php	(revision 103)
@@ -0,0 +1,48 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+// Insert an extra rows into the database
+$header = '<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"100%\">';
+$field_loop = '<tr><td class=\"field_title\">{TITLE}{REQUIRED}:</td><td>{FIELD}</td></tr>';
+$footer = '<tr><td>&nbsp;</td>
+<td>
+<input type=\"submit\" name=\"submit\" value=\"Submit Form\" />
+</td>
+</tr>
+</table>';
+$email_to = $admin->get_email();
+$email_from = '';
+$email_subject = 'Results from form on website...';
+$success_message = 'Thank-you.';
+$max_submissions = 50;
+$stored_submissions = 100;
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_settings (page_id,section_id,header,field_loop,footer,email_to,email_from,email_subject,success_message,max_submissions,stored_submissions) VALUES ('$page_id','$section_id','$header','$field_loop','$footer','$email_to','$email_from','$email_subject','$success_message','$max_submissions','$stored_submissions')");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/save_field.php
===================================================================
--- trunk/wb/modules/form/save_field.php	(nonexistent)
+++ trunk/wb/modules/form/save_field.php	(revision 103)
@@ -0,0 +1,103 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_POST['field_id']) OR !is_numeric($_POST['field_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$field_id = $_POST['field_id'];
+	$field_id = $field_id;
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Validate all fields
+if($admin->get_post('title') == '' OR $admin->get_post('type') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
+} else {
+	$title = $admin->add_slashes($admin->get_post('title'));
+	$type = $admin->get_post('type');
+	$required = $admin->get_post('required');
+}
+
+// Update row
+$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET title = '$title', type = '$type', required = '$required' WHERE field_id = '$field_id'");
+
+// If field type has multiple options, get all values and implode them
+$list_count = $admin->get_post('list_count');
+if(is_numeric($list_count)) {
+	$values = array();
+	for($i = 1; $i <= $list_count; $i++) {
+		if($admin->get_post('value'.$i) != '') {
+			$values[] = $admin->get_post('value'.$i);
+		}
+	}
+	$value = implode(',', $values);
+}
+
+// Get extra fields for field-type-specific settings
+if($admin->get_post('type') == 'textfield') {
+	$length = $admin->get_post('length');
+	$value = $admin->get_post('value');
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$length' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'textarea') {
+	$value = $admin->get_post('value');
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'heading') {
+	$extra = $admin->get_post('template');
+	if(trim($extra) == '') $extra = '<tr><td class="field_heading" colspan="2">{TITLE}{FIELD}</td></tr>';
+	$extra = $admin->add_slashes($extra);
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '', extra = '$extra' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'select') {
+	$extra = $admin->get_post('size').','.$admin->get_post('multiselect');
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'checkbox') {
+	$extra = $admin->get_post('seperator');
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'radio') {
+	$extra = $admin->get_post('seperator');
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$field_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/save_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/modify_field.php
===================================================================
--- trunk/wb/modules/form/modify_field.php	(nonexistent)
+++ trunk/wb/modules/form/modify_field.php	(revision 103)
@@ -0,0 +1,218 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['field_id']) OR !is_numeric($_GET['field_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$field_id = $_GET['field_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE field_id = '$field_id'");
+$form = $query_content->fetchRow();
+$type = $form['type'];
+if($type == '') {
+	$type = 'none';
+}
+
+// Set raw html <'s and >'s to be replaced by friendly html code
+$raw = array('<', '>');
+$friendly = array('&lt;', '&gt;');
+?>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/form/save_field.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
+<input type="hidden" name="field_id" value="<?php echo $field_id; ?>">
+
+<table cellpadding="4" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
+	<td>
+		<input type="text" name="title" value="<?php echo htmlspecialchars($admin->strip_slashes_dummy($form['title'])); ?>" style="width: 100%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['TYPE']; ?>:</td>
+	<td>
+		<select name="type" style="width: 100%;">
+			<option value=""><?php echo $TEXT['PLEASE_SELECT']; ?>...</option>
+			<option value="heading"<?php if($type == 'heading') { echo ' selected'; } ?>><?php echo $TEXT['HEADING']; ?></option>
+			<option value="textfield"<?php if($type == 'textfield') { echo ' selected'; } ?>><?php echo $TEXT['SHORT'].' '.$TEXT['TEXT']; ?> (Textfield)</option>
+			<option value="textarea"<?php if($type == 'textarea') { echo ' selected'; } ?>><?php echo $TEXT['LONG'].' '.$TEXT['TEXT']; ?> (Textarea)</option>
+			<option value="select"<?php if($type == 'select') { echo ' selected'; } ?>><?php echo $TEXT['SELECT_BOX']; ?></option>
+			<option value="checkbox"<?php if($type == 'checkbox') { echo ' selected'; } ?>><?php echo $TEXT['CHECKBOX_GROUP']; ?></option>
+			<option value="radio"<?php if($type == 'radio') { echo ' selected'; } ?>><?php echo $TEXT['RADIO_BUTTON_GROUP']; ?></option>
+			<option value="email"<?php if($type == 'email') { echo ' selected'; } ?>><?php echo $TEXT['EMAIL_ADDRESS']; ?></option>
+		</select>
+	</td>
+</tr>
+<?php if($type != 'none' AND $type != 'email') { ?>
+	<?php if($type == 'heading') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['TEMPLATE']; ?>:</td>
+		<td>
+		<textarea name="template" style="width: 100%; height: 20px;"><?php echo htmlspecialchars($admin->strip_slashes_dummy($form['extra'])); ?></textarea>
+		</td>
+	</tr>
+	<?php } elseif($type == 'textfield') { ?>
+	<tr>
+		<td><?php echo $TEXT['LENGTH']; ?>:</td>
+		<td>
+			<input type="text" name="length" value="<?php echo $form['extra']; ?>" style="width: 100%;" maxlength="3" />
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $TEXT['DEFAULT_TEXT']; ?>:</td>
+		<td>
+			<input type="text" name="value" value="<?php echo $form['value']; ?>" style="width: 100%;" />
+		</td>
+	</tr>
+	<?php } elseif($type == 'textarea') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['DEFAULT_TEXT']; ?>:</td>
+		<td>
+			<textarea name="value" style="width: 100%; height: 100px;"><?php echo $form['value']; ?></textarea>
+		</td>
+	</tr>
+	<?php } elseif($type == 'select' OR $type = 'radio' OR $type = 'checkbox') { ?>
+	<tr>
+		<td valign="top"><?php echo 'List'; ?>:</td>
+		<td>
+			<?php
+			$option_count = 0;
+			$list = explode(',', $form['value']);
+			foreach($list AS $option_value) {
+				$option_count = $option_count+1;
+				?>
+				<table cellpadding="3" cellspacing="0" width="100%" border="0">
+				<tr>
+					<td width="70"><?php echo $TEXT['OPTION'].' '.$option_count; ?>:</td>
+					<td>
+						<input type="text" name="value<?php echo $option_count; ?>" value="<?php echo $option_value; ?>" style="width: 250px;" />
+					</td>
+				</tr>
+				</table>
+				<?php
+			}
+			for($i = 0; $i < 2; $i++) {
+				$option_count = $option_count+1;
+				?>
+				<table cellpadding="3" cellspacing="0" width="100%" border="0">
+				<tr>
+					<td width="70"><?php echo $TEXT['OPTION'].' '.$option_count; ?>:</td>
+					<td>
+						<input type="text" name="value<?php echo $option_count; ?>" value="" style="width: 250px;" />
+					</td>
+				</tr>
+				</table>
+				<?php
+			}
+			?>
+			<input type="hidden" name="list_count" value="<?php echo $option_count; ?>" />
+		</td>
+	</tr>
+	<?php } ?>
+	<?php if($type == 'select') { ?>
+	<tr>
+		<td><?php echo $TEXT['SIZE']; ?>:</td>
+		<td>
+			<?php $form['extra'] = explode(',',$form['extra']); ?>
+			<input type="text" name="size" value="<?php echo trim($form['extra'][0]); ?>" style="width: 100%;" maxlength="3" />
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $TEXT['ALLOW_MULTIPLE_SELECTIONS']; ?>:</td>
+		<td>
+			<input type="radio" name="multiselect" id="multiselect_true" value="multiple" <?php if($form['extra'][1] == 'multiple') { echo ' checked'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('multiselect_true').checked = true;">
+			<?php echo $TEXT['YES']; ?>
+			</a>
+			&nbsp;
+			<input type="radio" name="multiselect" id="multiselect_false" value="" <?php if($form['extra'][1] == '') { echo ' checked'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('multiselect_false').checked = true;">
+			<?php echo $TEXT['NO']; ?>
+			</a>
+		</td>
+	</tr>
+	<?php } elseif($type == 'checkbox' OR $type == 'radio') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['SEPERATOR']; ?>:</td>
+		<td>
+			<input type="text" name="seperator" value="<?php echo $form['extra']; ?>" style="width: 100%;" />
+		</td>
+	</tr>
+	<?php } ?>
+<?php } ?>
+<?php if($type != 'heading' AND $type != 'none') { ?>
+<tr>
+	<td><?php echo $TEXT['REQUIRED']; ?>:</td>
+	<td>
+		<input type="radio" name="required" id="required_true" value="1" <?php if($form['required'] == 1) { echo ' checked'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('required_true').checked = true;">
+		<?php echo $TEXT['YES']; ?>
+		</a>
+		&nbsp;
+		<input type="radio" name="required" id="required_false" value="0" <?php if($form['required'] == 0) { echo ' checked'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('required_false').checked = true;">
+		<?php echo $TEXT['NO']; ?>
+		</a>
+	</td>
+</tr>
+<?php } ?>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="90">&nbsp;
+		
+	</td>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE'].' '.$TEXT['FIELD']; ?>" style="width: 200px; margin-top: 5px;"></form>
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CLOSE']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/modify_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/modify_settings.php
===================================================================
--- trunk/wb/modules/form/modify_settings.php	(nonexistent)
+++ trunk/wb/modules/form/modify_settings.php	(revision 103)
@@ -0,0 +1,147 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_settings WHERE section_id = '$section_id'");
+$setting = $query_content->fetchRow();
+
+// Set raw html <'s and >'s to be replace by friendly html code
+$raw = array('<', '>');
+$friendly = array('&lt;', '&gt;');
+
+?>
+
+<style type="text/css">
+.setting_name {
+	vertical-align: top;
+}
+</style>
+
+<form name="edit" action="<?php echo WB_URL; ?>/modules/form/save_settings.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
+
+<table cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td class="setting_name" width="220"><?php echo $TEXT['HEADER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="header" style="width: 100%; height: 80px;"><?php echo $admin->strip_slashes_dummy($setting['header']); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['FIELD'].' '.$TEXT['LOOP']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="field_loop" style="width: 100%; height: 60px;"><?php echo $admin->strip_slashes_dummy($setting['field_loop']); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['FOOTER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="footer" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['footer'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['TO']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="email_to" style="width: 100%; height: 30px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['email_to'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['FROM']; ?>:</td>
+	<td class="setting_name">
+		<select name="email_from_field" style="width: 100%;">
+			<option value="" onclick="javascript: document.getElementById('email_from').style.display = 'block';"><?php echo $TEXT['CUSTOM']; ?>:</option>
+			<?php
+			$email_from_value = str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['email_from']));
+			$query_email_fields = $database->query("SELECT field_id,title FROM ".TABLE_PREFIX."mod_form_fields ORDER BY position ASC");
+			if($query_email_fields->numRows() > 0) {
+				while($field = $query_email_fields->fetchRow()) {
+					?>
+					<option value="field<?php echo $field['field_id']; ?>"<?php if($email_from_value == 'field'.$field['field_id']) { echo ' selected'; $selected = true; } ?> onclick="javascript: document.getElementById('email_from').style.display = 'none';">
+						<?php echo $TEXT['FIELD'].': '.$field['title']; ?>
+					</option>
+					<?php
+				}
+			}
+			?>
+		</select>
+		<input type="text" name="email_from" id="email_from" style="width: 100%; display: <?php if(isset($selected) AND $selected == true) { echo 'none'; } else { echo 'block'; } ?>;" maxlength="255" value="<?php if(substr($email_from_value, 0, 5) != 'field') { echo $email_from_value; } ?>" />
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['SUBJECT']; ?>:</td>
+	<td class="setting_name">
+		<input type="text" name="email_subject" style="width: 100%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['email_subject'])); ?>" />
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['SUCCESS'].' '.$TEXT['MESSAGE']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="success_message" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['success_message'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['MAX_SUBMISSIONS_PER_HOUR']; ?>:</td>
+	<td class="setting_name">
+		<input type="text" name="max_submissions" style="width: 100%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['max_submissions'])); ?>" />
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['SUBMISSIONS_STORED_IN_DATABASE']; ?>:</td>
+	<td class="setting_name">
+		<input type="text" name="stored_submissions" style="width: 100%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($setting['stored_submissions'])); ?>" />
+	</td>
+</tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="225">&nbsp;</td>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE'].' '.$TEXT['SETTINGS']; ?>" style="width: 200px; margin-top: 5px;"></form>
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/modify_settings.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/view.php
===================================================================
--- trunk/wb/modules/form/view.php	(nonexistent)
+++ trunk/wb/modules/form/view.php	(revision 103)
@@ -0,0 +1,323 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Function for generating an optionsfor a select field
+function make_option(&$n) {
+	// start option group if it exists
+	if (substr($n,0,2) == '[=') {
+	 	$n = '<optgroup label="'.substr($n,2,strlen($n)).'">';
+	} elseif ($n == ']') {
+		$n = '</optgroup>';
+	} else {
+		$n = '<option value="'.$n.'">'.$n.'</option>';
+	}
+}
+
+// Function for generating a checkbox
+function make_checkbox(&$n, $idx, $params) {
+	$field_id = $params[0];
+	$seperator = $params[1];
+	//$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
+	$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
+}
+
+// Function for generating a radio button
+function make_radio(&$n, $idx, $params) {
+	$field_id = $params[0];
+	$group = $params[1];
+	$seperator = $params[2];
+	$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator;
+}
+
+// Work-out if the form has been submitted or not
+if($_POST == array()) {
+
+?>
+<style type="text/css">
+.required {
+	color: #FF0000;
+}
+.field_title {
+	font-size: 12px;
+	width: 100px;
+	vertical-align: top;
+	text-align:right;
+}
+.textfield {
+	font-size: 12px;
+	width: 200px;
+}
+.textarea {
+	font-size: 12px;
+	width: 90%;
+	height: 100px;
+}
+.field_heading {
+	font-size: 12px;
+	font-weight: bold;
+	border-bottom-width: 2px;
+	border-bottom-style: solid;
+	border-bottom-color: #666666;
+	padding-top: 10px;
+	color: #666666;
+}
+.select {
+	font-size: 12px;
+}
+.checkbox_label {
+	font-size: 11px;
+	cursor: pointer;
+}
+.radio_label {
+	font-size: 11px;
+	cursor: pointer;
+}
+.email {
+	font-size: 12px;
+	width: 200px;
+}
+</style>
+<?php
+
+// Get settings
+$query_settings = $database->query("SELECT header,field_loop,footer FROM ".TABLE_PREFIX."mod_form_settings WHERE section_id = '$section_id'");
+if($query_settings->numRows() > 0) {
+	$fetch_settings = $query_settings->fetchRow();
+	$header = $this->strip_slashes_dummy($fetch_settings['header']);
+	$field_loop = $this->strip_slashes_dummy($fetch_settings['field_loop']);
+	$footer = $this->strip_slashes_dummy($fetch_settings['footer']);
+} else {
+	$header = '';
+	$field_loop = '';
+	$footer = '';
+}
+
+// Add form starter code
+?>
+<form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
+<?php
+
+// Print header
+echo $header;
+
+// Get list of fields
+$query_fields = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id' ORDER BY position ASC");
+if($query_fields->numRows() > 0) {
+	while($field = $query_fields->fetchRow()) {
+		// Set field values
+		$field_id = $field['field_id'];
+		$value = $this->strip_slashes_dummy($field['value']);
+		// Print field_loop after replacing vars with values
+		$vars = array('{TITLE}', '{REQUIRED}');
+		$values = array($field['title']);
+		if($field['required'] == 1) {
+			$values[] = '<font class="required">*</font>';
+		} else {
+			$values[] = '';
+		}
+		if($field['type'] == 'textfield') {
+			$vars[] = '{FIELD}';
+			$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.$value.'" class="textfield" />';
+		} elseif($field['type'] == 'textarea') {
+			$vars[] = '{FIELD}';
+			$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea">'.$value.'</textarea>';
+		} elseif($field['type'] == 'select') {
+			$vars[] = '{FIELD}';
+			$options = explode(',', $value);
+			array_walk($options, 'make_option');
+			$field['extra'] = explode(',',$field['extra']); 
+			$values[] = '<select name="field'.$field_id.'[]" id="field'.$field_id.'" size="'.$field['extra'][0].'" '.$field['extra'][1].' class="select">'.implode($options).'</select>';
+		} elseif($field['type'] == 'heading') {
+			$vars[] = '{FIELD}';
+			$values[] = '<input type="hidden" name="field'.$field_id.'" id="field'.$field_id.'" value="===['.$field['title'].']===" />';
+			$tmp_field_loop = $field_loop;		// temporarily modify the field loop template
+			$field_loop = $field['extra'];
+		} elseif($field['type'] == 'checkbox') {
+			$vars[] = '{FIELD}';
+			$options = explode(',', $value);
+			array_walk($options, 'make_checkbox',array($field_id,$field['extra']));
+			$values[] = implode($options);
+		} elseif($field['type'] == 'radio') {
+			$vars[] = '{FIELD}';
+			$options = explode(',', $value);
+			array_walk($options, 'make_radio',array($field_id,$field['title'],$field['extra']));
+			$values[] = implode($options);
+		} elseif($field['type'] == 'email') {
+			$vars[] = '{FIELD}';
+			$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" class="email" />';
+		}
+		if($field['type'] != '') {
+			echo str_replace($vars, $values, $field_loop);
+		}
+		if (isset($tmp_field_loop)) $field_loop = $tmp_field_loop;
+	}
+}
+
+// Print footer
+echo $footer;
+
+// Add form end code
+?>
+</form>
+<?php
+
+} else {
+	
+	// Submit form data
+	// First start message settings
+	$query_settings = $database->query("SELECT email_to,email_from,email_subject,success_message,max_submissions,stored_submissions FROM ".TABLE_PREFIX."mod_form_settings WHERE section_id = '$section_id'");
+	if($query_settings->numRows() > 0) {
+		$fetch_settings = $query_settings->fetchRow();
+		$email_to = $this->strip_slashes_dummy($fetch_settings['email_to']);
+		$email_from = $this->strip_slashes_dummy($fetch_settings['email_from']);
+		if(substr($email_from, 0, 5) == 'field') {
+			// Set the email from field to what the user entered in the specified field
+			$email_from = $this->add_slashes($_POST[$email_from]);
+		}
+		$email_subject = $this->strip_slashes_dummy($fetch_settings['email_subject']);
+		$success_message = $this->strip_slashes_dummy($fetch_settings['success_message']);
+		$max_submissions = $this->strip_slashes_dummy($fetch_settings['max_submissions']);
+		$stored_submissions = $this->strip_slashes_dummy($fetch_settings['stored_submissions']);
+	} else {
+		exit($TEXT['UNDER_CONSTRUCTION']);
+	}
+	$email_body = '';
+	
+	// Create blank "required" array
+	$required = array();
+	
+	// Loop through fields and add to message body
+	// Get list of fields
+	$query_fields = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id' ORDER BY position ASC");
+	if($query_fields->numRows() > 0) {
+		while($field = $query_fields->fetchRow()) {
+			// Add to message body
+			if($field['type'] != '') {
+				if(!empty($_POST['field'.$field['field_id']])) {
+					if($field['type'] == 'heading') {
+					$email_body .= '
+					
+	'.$_POST['field'.$field['field_id']];
+					} elseif (!is_array($_POST['field'.$field['field_id']])) {
+					$email_body .= '
+					
+	'.$this->strip_slashes_dummy($field['title']).': '.$_POST['field'.$field['field_id']]."\n";
+					} else {
+						$email_body .= '
+					
+	'.$this->strip_slashes_dummy($field['title']).": \n";
+						foreach ($_POST['field'.$field['field_id']] as $k=>$v) {
+							$email_body .= '
+					
+	'.$v;
+						}
+					}
+				} elseif($field['required'] == 1) {
+				$required[] = $this->strip_slashes_dummy($field['title']);
+				}
+			}
+		}
+	}
+	
+	// Addslashes to email body - proposed by Icheb in topic=1170.0
+	// $email_body = $this->add_slashes($email_body);
+	
+	// Check if the user forgot to enter values into all the required fields
+	if($required != array()) {
+		if(!isset($MESSAGE['MOD_FORM']['REQUIRED_FIELDS'])) {
+			echo 'You must enter details for the following fields';
+		} else {
+			echo $MESSAGE['MOD_FORM']['REQUIRED_FIELDS'];
+		}
+		echo ':<br /><ul>';
+		foreach($required AS $field_title) {
+			echo '<li>'.$field_title;
+		}
+		echo '</ul><a href="javascript: history.go(-1);">'.$TEXT['BACK'].'</a>';
+		
+	} else {
+		
+		// Check how many times form has been submitted in last hour
+		$query_submissions = $database->query("SELECT submission_id FROM ".TABLE_PREFIX."mod_form_submissions WHERE submitted_when >= '3600'");
+		if($query_submissions->numRows() > $max_submissions) {
+			// Too many submissions so far this hour
+			echo $MESSAGE['MOD_FORM']['EXCESS_SUBMISSIONS'];
+			$success = false;
+		} else {
+			// Now send the email
+			if($email_to != '') {
+				if($email_from != '') {
+					if(mail($email_to,$email_subject,str_replace('\n', '', $email_body),"From: ".$email_from)) { $success = true; }
+				} else {
+					if(mail($email_to,$email_subject,str_replace('\n', '', $email_body))) { $success = true; }
+				}
+			}				
+			// Write submission to database
+			if(isset($admin) AND $admin->get_user_id() > 0) {
+				$admin->get_user_id();
+			} else {
+				$submitted_by = 0;
+			}
+			$email_body = $this->add_slashes($email_body);
+			$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_submissions (page_id,section_id,submitted_when,submitted_by,body) VALUES ('".PAGE_ID."','$section_id','".mktime()."','$submitted_by','$email_body')");
+			// Make sure submissions table isn't too full
+			$query_submissions = $database->query("SELECT submission_id FROM ".TABLE_PREFIX."mod_form_submissions ORDER BY submitted_when");
+			$num_submissions = $query_submissions->numRows();
+			if($num_submissions > $stored_submissions) {
+				// Remove excess submission
+				$num_to_remove = $num_submissions-$stored_submissions;
+				while($submission = $query_submissions->fetchRow()) {
+					if($num_to_remove > 0) {
+						$submission_id = $submission['submission_id'];
+						$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
+						$num_to_remove = $num_to_remove-1;
+					}
+				}
+			}
+			if(!$database->is_error()) {
+				$success = true;
+			}
+		}
+		
+		// Now check if the email was sent successfully
+		if(isset($success) AND $success == true) {
+			echo $success_message;
+		} else {
+			echo $TEXT['ERROR'];
+		}
+	
+	}
+	
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/view_submission.php
===================================================================
--- trunk/wb/modules/form/view_submission.php	(nonexistent)
+++ trunk/wb/modules/form/view_submission.php	(revision 103)
@@ -0,0 +1,92 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['submission_id']) OR !is_numeric($_GET['submission_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$submission_id = $_GET['submission_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get submission details
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
+$submission = $query_content->fetchRow();
+
+// Get the user details of whoever did this submission
+$query_user = "SELECT username,display_name FROM ".TABLE_PREFIX."users WHERE user_id = '".$submission['submitted_by']."'";
+$get_user = $database->query($query_user);
+if($get_user->numRows() != 0) {
+	$user = $get_user->fetchRow();
+} else {
+	$user['display_name'] = 'Unknown';
+	$user['username'] = 'unknown';
+}
+
+?>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td><?php echo $TEXT['SUBMISSION_ID']; ?>:</td>
+	<td><?php echo $submission['submission_id']; ?></td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['SUBMITTED']; ?>:</td>
+	<td><?php echo gmdate(TIME_FORMAT.', '.DATE_FORMAT, $submission['submitted_when']+TIMEZONE); ?></td>
+</td>
+<tr>
+	<td><?php echo $TEXT['USER']; ?>:</td>
+	<td><?php echo $user['display_name'].' ('.$user['username'].')'; ?></td>
+</tr>
+<tr>
+	<td colspan="2">
+		<hr />
+	</td>
+</tr>
+<tr>
+	<td colspan="2">
+		<?php echo $admin->strip_slashes_dummy(str_replace('\n', '<br />', $submission['body'])); ?>
+	</td>
+</tr>
+</table>
+
+<br />
+
+<input type="button" value="<?php echo $TEXT['CLOSE']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 150px; margin-top: 5px;" />
+<input type="button" value="<?php echo $TEXT['DELETE']; ?>" onclick="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $submission_id; ?>');" style="width: 150px; margin-top: 5px;" />
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/view_submission.php
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/form/save_settings.php
===================================================================
--- trunk/wb/modules/form/save_settings.php	(nonexistent)
+++ trunk/wb/modules/form/save_settings.php	(revision 103)
@@ -0,0 +1,79 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+The Website Baker Project would like to thank Rudolph Lartey <www.carbonect.com>
+for his contributions to this module - adding extra field types
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// This code removes any <?php tags and adds slashes
+$friendly = array('&lt;', '&gt;', '?php');
+$raw = array('<', '>', '');
+$header = $admin->add_slashes($_POST['header']);
+$field_loop = $admin->add_slashes($_POST['field_loop']);
+$footer = $admin->add_slashes($_POST['footer']);
+$email_to = $admin->add_slashes($_POST['email_to']);
+if($_POST['email_from_field'] == '') {
+	$email_from = $admin->add_slashes($_POST['email_from']);
+} else {
+	$email_from = $admin->add_slashes($_POST['email_from_field']);
+}
+$email_subject = $admin->add_slashes($_POST['email_subject']);
+$success_message = $admin->add_slashes($_POST['success_message']);
+if(!is_numeric($_POST['max_submissions'])) {
+	$max_submissions = 50;
+} else {
+	$max_submissions = $_POST['max_submissions'];
+}
+if(!is_numeric($_POST['stored_submissions'])) {
+	$stored_submissions = 100;
+} else {
+	$stored_submissions = $_POST['stored_submissions'];
+}
+// Make sure max submissions is not smaller than stored submissions
+if($max_submissions < $stored_submissions) {
+	$max_submissions = $stored_submissions;
+}
+
+// Update settings
+$database->query("UPDATE ".TABLE_PREFIX."mod_form_settings SET header = '$header', field_loop = '$field_loop', footer = '$footer', email_to = '$email_to', email_from = '$email_from', email_subject = '$email_subject', success_message = '$success_message', max_submissions = '$max_submissions', stored_submissions = '$stored_submissions' WHERE section_id = '$section_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/form/save_settings.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/info.php
===================================================================
--- trunk/wb/modules/code/info.php	(nonexistent)
+++ trunk/wb/modules/code/info.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$module_directory = 'code';
+$module_name = 'Code';
+$module_type = 'page';
+$module_version = '2.5';
+$module_designed_for = '2.x';
+$module_author = 'Ryan Djurovich';
+$module_description = 'This module allows you to edit the contents of a page with a simple, yet powerful, text box';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/delete.php
===================================================================
--- trunk/wb/modules/code/delete.php	(nonexistent)
+++ trunk/wb/modules/code/delete.php	(revision 103)
@@ -0,0 +1,29 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Delete record from the database
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/install.php
===================================================================
--- trunk/wb/modules/code/install.php	(nonexistent)
+++ trunk/wb/modules/code/install.php	(revision 103)
@@ -0,0 +1,64 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+if(defined('WB_URL')) {
+	
+	// Create table
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_code`");
+	$mod_code = 'CREATE TABLE `'.TABLE_PREFIX.'mod_code` ('
+						  . ' `section_id` INT NOT NULL,'
+						  . ' `page_id` INT NOT NULL,'
+	                 . ' `content` TEXT NOT NULL ,'
+	                 . ' PRIMARY KEY ( `section_id` ) )'
+	                 . ' ';
+	$database->query($mod_code);
+	
+	// Insert info into the search table
+	// Module query info
+	$field_info = array();
+	$field_info['page_id'] = 'page_id';
+	$field_info['title'] = 'page_title';
+	$field_info['link'] = 'link';
+	$field_info['description'] = 'description';
+	$field_info['modified_when'] = 'modified_when';
+	$field_info['modified_by'] = 'modified_by';
+	$field_info = serialize($field_info);
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'code', '$field_info')");
+	// Query start
+	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_code, [TP]pages WHERE ";
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'code')");
+	// Query body
+	$query_body_code = " [TP]pages.page_id = [TP]mod_code.page_id AND [TP]mod_code.content [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";	
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'code')");
+	// Query end
+	$query_end_code = "";	
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'code')");
+	
+	// Insert blank row (there needs to be at least on row for the search to work)
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_code (page_id,section_id) VALUES ('0','0')");
+	
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/index.php
===================================================================
--- trunk/wb/modules/code/index.php	(nonexistent)
+++ trunk/wb/modules/code/index.php	(revision 103)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/add.php
===================================================================
--- trunk/wb/modules/code/add.php	(nonexistent)
+++ trunk/wb/modules/code/add.php	(revision 103)
@@ -0,0 +1,29 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Insert an extra row into the database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_code (page_id,section_id) VALUES ('$page_id','$section_id')");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/save.php
===================================================================
--- trunk/wb/modules/code/save.php	(nonexistent)
+++ trunk/wb/modules/code/save.php	(revision 103)
@@ -0,0 +1,51 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Update the mod_wysiwygs table with the contents
+if(isset($_POST['content'])) {
+	$tags = array('<?php', '?>' , '<?');
+	$content = $admin->add_slashes(str_replace($tags, '', $_POST['content']));
+	$database = new database();
+	$query = "UPDATE ".TABLE_PREFIX."mod_code SET content = '$content' WHERE section_id = '$section_id'";
+	$database->query($query);	
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/view.php
===================================================================
--- trunk/wb/modules/code/view.php	(nonexistent)
+++ trunk/wb/modules/code/view.php	(revision 103)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Get content
+$get_content = $database->query("SELECT content FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'");
+$fetch_content = $get_content->fetchRow();
+$content = $this->strip_slashes_dummy($fetch_content['content']);
+eval($content);
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/modify.php
===================================================================
--- trunk/wb/modules/code/modify.php	(nonexistent)
+++ trunk/wb/modules/code/modify.php	(revision 103)
@@ -0,0 +1,52 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Setup template object
+$template = new Template(WB_PATH.'/modules/code');
+$template->set_file('page', 'modify.html');
+$template->set_block('page', 'main_block', 'main');
+
+// Get page content
+$query = "SELECT content FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'";
+$get_content = $database->query($query);
+$content = $get_content->fetchRow();
+$content = $admin->strip_slashes_dummy(htmlspecialchars($content['content']));
+
+// Insert vars
+$template->set_var(array(
+								'PAGE_ID' => $page_id,
+								'SECTION_ID' => $section_id,
+								'WB_URL' => WB_URL,
+								'CONTENT' => $content,
+								'TEXT_SAVE' => $TEXT['SAVE'],
+								'TEXT_CANCEL' => $TEXT['CANCEL']
+								)
+						);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/code/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/code/modify.html
===================================================================
--- trunk/wb/modules/code/modify.html	(nonexistent)
+++ trunk/wb/modules/code/modify.html	(revision 103)
@@ -0,0 +1,24 @@
+<!-- BEGIN main_block -->
+
+<form action="{WB_URL}/modules/code/save.php" method="post">
+
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<input type="hidden" name="section_id" value="{SECTION_ID}" />
+
+<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 380px">{CONTENT}</textarea>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input type="submit" value="{TEXT_SAVE}" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		</form>
+		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<!-- END main_block -->
\ No newline at end of file

Property changes on: trunk/wb/modules/code/modify.html
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/info.php
===================================================================
--- trunk/wb/modules/news/info.php	(nonexistent)
+++ trunk/wb/modules/news/info.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$module_directory = 'news';
+$module_name = 'News';
+$module_type = 'page';
+$module_version = '2.5';
+$module_designed_for = '2.x';
+$module_author = 'Ryan Djurovich';
+$module_description = 'This page type is designed for making a news page.';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/move_down.php
===================================================================
--- trunk/wb/modules/news/move_down.php	(nonexistent)
+++ trunk/wb/modules/news/move_down.php	(revision 103)
@@ -0,0 +1,60 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
+	if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
+		header("Location: index.php");
+	} else {
+		$id = $_GET['group_id'];
+		$id_field = 'group_id';
+		$table = TABLE_PREFIX.'mod_news_groups';
+	}
+} else {
+	$id = $_GET['post_id'];
+	$id_field = 'post_id';
+	$table = TABLE_PREFIX.'mod_news_posts';
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order($table, 'position', $id_field, 'section_id');
+if($order->move_down($id)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/move_down.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/add_post.php
===================================================================
--- trunk/wb/modules/news/add_post.php	(nonexistent)
+++ trunk/wb/modules/news/add_post.php	(revision 103)
@@ -0,0 +1,58 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+// Get new order
+$order = new order(TABLE_PREFIX.'mod_news_posts', 'position', 'post_id', 'section_id');
+$position = $order->get_new($section_id);
+
+// Get default commenting
+$query_settings = $database->query("SELECT commenting FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+$fetch_settings = $query_settings->fetchRow();
+$commenting = $fetch_settings['commenting'];
+
+// Insert new row into database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_posts (section_id,page_id,position,commenting,active) VALUES ('$section_id','$page_id','$position','$commenting','1')");
+
+// Get the id
+$post_id = $database->get_one("SELECT LAST_INSERT_ID()");
+
+// Say that a new record has been added, then redirect to modify page
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/add_post.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/comment.php
===================================================================
--- trunk/wb/modules/news/comment.php	(nonexistent)
+++ trunk/wb/modules/news/comment.php	(revision 103)
@@ -0,0 +1,71 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include config file
+require('../../config.php');
+
+// Check if there is a post id
+if(!isset($_GET['id']) OR !is_numeric($_GET['id'])) {
+	if(!isset($_POST['post_id']) OR !is_numeric($_POST['post_id'])) {
+		header('Location: '.WB_URL.'/pages/');
+	} else {
+		$post_id = $_POST['post_id'];
+	}
+} else {
+	$post_id = $_GET['id'];
+}
+
+// Include database class
+require_once(WB_PATH.'/framework/class.database.php');
+$database = new database();
+
+// Query post for page id
+$query_post = $database->query("SELECT post_id,title,section_id,page_id FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+if($query_post->numRows() == 0) {
+	header('Location: '.WB_URL.'/pages/');
+} else {
+	$fetch_post = $query_post->fetchRow();
+	$page_id = $fetch_post['page_id'];
+	$section_id = $fetch_post['section_id'];
+	$post_id = $fetch_post['post_id'];
+	$post_title = $fetch_post['title'];
+	define('SECTION_ID', $section_id);
+	define('POST_ID', $post_id);
+	define('POST_TITLE', $post_title);
+	// Get page details
+	$query_page = $database->query("SELECT parent,page_title,menu_title,keywords,description,visibility FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
+	if($query_page->numRows() == 0) {
+		header('Location: '.WB_URL.'/pages/');
+	} else {
+		$page = $query_page->fetchRow();
+		// Required page details
+		define('PAGE_CONTENT', WB_PATH.'/modules/news/comment_page.php');
+		// Include index (wrapper) file
+		require(WB_PATH.'/index.php');
+	}
+}
+
+
+?>

Property changes on: trunk/wb/modules/news/comment.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/delete.php
===================================================================
--- trunk/wb/modules/news/delete.php	(nonexistent)
+++ trunk/wb/modules/news/delete.php	(revision 103)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments WHERE section_id = '$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/add_group.php
===================================================================
--- trunk/wb/modules/news/add_group.php	(nonexistent)
+++ trunk/wb/modules/news/add_group.php	(revision 103)
@@ -0,0 +1,53 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+// Get new order
+$order = new order(TABLE_PREFIX.'mod_news_groups', 'position', 'group_id', 'section_id');
+$position = $order->get_new($section_id);
+
+// Insert new row into database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_groups (section_id,page_id,position,active) VALUES ('$section_id','$page_id','$position','1')");
+
+// Get the id
+$group_id = $database->get_one("SELECT LAST_INSERT_ID()");
+
+// Say that a new record has been added, then redirect to modify page
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/add_group.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/delete_post.php
===================================================================
--- trunk/wb/modules/news/delete_post.php	(nonexistent)
+++ trunk/wb/modules/news/delete_post.php	(revision 103)
@@ -0,0 +1,70 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$post_id = $_GET['post_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Get post details
+$query_details = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+if($query_details->numRows() > 0) {
+	$get_details = $query_details->fetchRow();
+} else {
+	$admin->print_error($TEXT['NOT_FOUND'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Unlink post access file
+if(is_writable(WB_PATH.$get_details['link'].'.php')) {
+	unlink(WB_PATH.$get_details['link'].'.php');
+}
+
+// Delete post
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id' LIMIT 1");
+
+// Clean up ordering
+require(WB_PATH.'/framework/class.order.php');
+$order = new order(TABLE_PREFIX.'mod_news_posts', 'position', 'post_id', 'section_id');
+$order->clean($section_id); 
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/modify_post.php?page_id='.$page_id.'&post_id='.$post_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/delete_post.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/uninstall.php
===================================================================
--- trunk/wb/modules/news/uninstall.php	(nonexistent)
+++ trunk/wb/modules/news/uninstall.php	(revision 103)
@@ -0,0 +1,38 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE name = 'module' AND value = 'news'");
+$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE extra = 'news'");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_posts");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_groups");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_comments");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_settings");
+require(WB_PATH.'/framework/functions.php');
+rm_full_dir(WB_PATH.PAGES_DIRECTORY.'/posts');
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/uninstall.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/move_up.php
===================================================================
--- trunk/wb/modules/news/move_up.php	(nonexistent)
+++ trunk/wb/modules/news/move_up.php	(revision 103)
@@ -0,0 +1,60 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
+	if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
+		header("Location: index.php");
+	} else {
+		$id = $_GET['group_id'];
+		$id_field = 'group_id';
+		$table = TABLE_PREFIX.'mod_news_groups';
+	}
+} else {
+	$id = $_GET['post_id'];
+	$id_field = 'post_id';
+	$table = TABLE_PREFIX.'mod_news_posts';
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order($table, 'position', $id_field, 'section_id');
+if($order->move_up($id)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/move_up.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/delete_group.php
===================================================================
--- trunk/wb/modules/news/delete_group.php	(nonexistent)
+++ trunk/wb/modules/news/delete_group.php	(revision 103)
@@ -0,0 +1,52 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$group_id = $_GET['group_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Update row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '$group_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/delete_group.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/delete_comment.php
===================================================================
--- trunk/wb/modules/news/delete_comment.php	(nonexistent)
+++ trunk/wb/modules/news/delete_comment.php	(revision 103)
@@ -0,0 +1,59 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['comment_id']) OR !is_numeric($_GET['comment_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$comment_id = $_GET['comment_id'];
+}
+
+// Get post id
+if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$post_id = $_GET['post_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Update row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments  WHERE comment_id = '$comment_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/delete_comment.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/modify_post.php
===================================================================
--- trunk/wb/modules/news/modify_post.php	(nonexistent)
+++ trunk/wb/modules/news/modify_post.php	(revision 103)
@@ -0,0 +1,197 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['post_id']) OR !is_numeric($_GET['post_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$post_id = $_GET['post_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+$fetch_content = $query_content->fetchRow();
+
+if (!defined('WYSIWYG_EDITOR') OR WYSIWYG_EDITOR=="none" OR !file_exists(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php')) {
+	function show_wysiwyg_editor($name,$id,$content,$width,$height) {
+		echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
+	}
+} else {
+	$id_list=array("short","long");
+			require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');
+}
+
+?>
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_post.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
+<input type="hidden" name="post_id" value="<?php echo $post_id; ?>">
+<input type="hidden" name="link" value="<?php echo $fetch_content['link']; ?>">
+
+<table cellpadding="4" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
+	<td>
+		<input type="text" name="title" value="<?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['title'])); ?>" style="width: 100%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['GROUP']; ?>:</td>
+	<td>
+		<select name="group" style="width: 100%;">
+			<option value="0"><?php echo $TEXT['NONE']; ?></option>
+			<?php
+			$query = $database->query("SELECT group_id,title FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id' ORDER BY position ASC");
+			if($query->numRows() > 0) {
+				// Loop through groups
+				while($group = $query->fetchRow()) {
+					?>
+					<option value="<?php echo $group['group_id']; ?>"<?php if($fetch_content['group_id'] == $group['group_id']) { echo ' selected'; } ?>><?php echo $group['title']; ?></option>
+					<?php
+				}
+			}
+			?>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['COMMENTING']; ?>:</td>
+	<td>
+		<select name="commenting" style="width: 100%;">
+			<option value="none"><?php echo $TEXT['DISABLED']; ?></option>
+			<option value="public" <?php if($fetch_content['commenting'] == 'public') { echo 'selected'; } ?>><?php echo $TEXT['PUBLIC']; ?></option>
+			<option value="private" <?php if($fetch_content['commenting'] == 'private') { echo 'selected'; } ?>><?php echo $TEXT['PRIVATE']; ?></option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['ACTIVE']; ?>:</td>
+	<td>
+		<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
+		<?php echo $TEXT['YES']; ?>
+		</a>
+		&nbsp;
+		<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
+		<?php echo $TEXT['NO']; ?>
+		</a>
+	</td>
+</tr>
+<tr>
+	<td valign="top"><?php echo $TEXT['SHORT']; ?>:</td>
+	<td>
+	<?php
+	show_wysiwyg_editor("short","short",$fetch_content['content_short'],"100%","135px");
+	?>
+	</td>
+</tr>
+<tr>
+	<td valign="top"><?php echo $TEXT['LONG']; ?>:</td>
+	<td>
+	<?php
+	show_wysiwyg_editor("long","long",$fetch_content['content_long'],"100%","300px");
+	?>
+	</td>
+</tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="90">
+		&nbsp;
+	</td>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 200px; margin-top: 5px;"></form>
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['COMMENT']; ?></h2>
+
+<?php
+
+// Loop through existing posts
+$query_comments = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_comments` WHERE section_id = '$section_id' AND post_id = '$post_id' ORDER BY commented_when DESC");
+if($query_comments->numRows() > 0) {
+	$row = 'a';
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($comment = $query_comments->fetchRow()) {
+		?>
+		<tr class="row_<?php echo $row; ?>" height="20">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_comment.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&comment_id=<?php echo $comment['comment_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="^" />
+				</a>
+			</td>	
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_comment.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&comment_id=<?php echo $comment['comment_id']; ?>">
+					<?php echo $comment['title']; ?>
+				</a>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_comment.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post_id; ?>&comment_id=<?php echo $comment['comment_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+
+?>
+
+
+
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>

Property changes on: trunk/wb/modules/news/modify_post.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/save_post.php
===================================================================
--- trunk/wb/modules/news/save_post.php	(nonexistent)
+++ trunk/wb/modules/news/save_post.php	(revision 103)
@@ -0,0 +1,115 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_POST['post_id']) OR !is_numeric($_POST['post_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$id = $_POST['post_id'];
+	$post_id = $id;
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Validate all fields
+if($admin->get_post('title') == '' AND $admin->get_post('url') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$id);
+} else {
+	$title = $admin->add_slashes($admin->get_post('title'));
+	$short = $admin->add_slashes($admin->get_post('short'));
+	$long = $admin->add_slashes($admin->get_post('long'));
+	$commenting = $admin->get_post('commenting');
+	$active = $admin->get_post('active');
+	$old_link = $admin->get_post('link');
+	$group_id = $admin->get_post('group');
+}
+
+// Get page link URL
+$query_page = $database->query("SELECT level,link FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
+$page = $query_page->fetchRow();
+$page_level = $page['level'];
+$page_link = $page['link'];
+
+// Include WB functions file
+require(WB_PATH.'/framework/functions.php');
+
+// Work-out what the link should be
+$post_link = '/posts/'.page_filename($title).$post_id;
+
+// Make sure the post link is set and exists
+// Make news post access files dir
+make_dir(WB_PATH.PAGES_DIRECTORY.'/posts/');
+if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/posts/')) {
+	$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']);
+} elseif($old_link != $post_link OR !file_exists(WB_PATH.PAGES_DIRECTORY.$post_link.'.php')) {
+	// We need to create a new file
+	// First, delete old file if it exists
+	if(file_exists(WB_PATH.$old_link.'.php')) {
+		unlink(WB_PATH.$old_link.'.php');
+	}
+	// Specify the filename
+	$filename = WB_PATH.PAGES_DIRECTORY.'/'.$post_link.'.php';
+	// The depth of the page directory in the directory hierarchy
+	// '/pages' is at depth 1
+	$pages_dir_depth=count(explode('/',PAGES_DIRECTORY))-1;
+	// Work-out how many ../'s we need to get to the index page
+	$index_location = '../';
+	for($i = 0; $i < $pages_dir_depth; $i++) {
+		$index_location .= '../';
+	}
+	// Write to the filename
+	$content = ''.
+'<?php
+$page_id = '.$page_id.';
+$section_id = '.$section_id.';
+$post_id = '.$post_id.';
+define("POST_ID", $post_id);
+require("'.$index_location.'config.php");
+require(WB_PATH."/index.php");
+?>';
+	$handle = fopen($filename, 'w');
+	fwrite($handle, $content);
+	fclose($handle);
+	change_mode($filename);
+}
+
+// Update row
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_posts SET group_id = '$group_id', title = '$title', link = '$post_link', content_short = '$short', content_long = '$long', commenting = '$commenting', active = '$active', posted_when = '".mktime()."', posted_by = '".$admin->get_user_id()."' WHERE post_id = '$post_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/save_post.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/install.php
===================================================================
--- trunk/wb/modules/news/install.php	(nonexistent)
+++ trunk/wb/modules/news/install.php	(revision 103)
@@ -0,0 +1,137 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+if(defined('WB_URL')) {
+	
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_posts`");
+	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_posts` ( '
+					 . '`post_id` INT NOT NULL AUTO_INCREMENT,'
+					 . '`section_id` INT NOT NULL,'
+					 . '`page_id` INT NOT NULL,'
+					 . '`group_id` INT NOT NULL,'
+					 . '`active` INT NOT NULL,'
+					 . '`position` INT NOT NULL,'
+					 . '`title` VARCHAR(255) NOT NULL,'
+					 . '`link` TEXT NOT NULL,'
+					 . '`content_short` TEXT NOT NULL,'
+					 . '`content_long` TEXT NOT NULL,'
+					 . '`commenting` VARCHAR(7) NOT NULL,'
+		   	    . '`posted_when` INT NOT NULL ,'
+					 . '`posted_by` INT NOT NULL ,'
+					 . 'PRIMARY KEY (post_id)'
+                . ' )';
+	$database->query($mod_news);
+	
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_groups`");
+	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_groups` ( '
+					 . '`group_id` INT NOT NULL AUTO_INCREMENT,'
+					 . '`section_id` INT NOT NULL,'
+					 . '`page_id` INT NOT NULL,'
+					 . '`active` INT NOT NULL,'
+					 . '`position` INT NOT NULL,'
+					 . '`title` VARCHAR(255) NOT NULL,'
+					 . 'PRIMARY KEY (group_id)'
+                . ' )';
+	$database->query($mod_news);
+	
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_comments`");
+	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_comments` ( '
+					 . '`comment_id` INT NOT NULL AUTO_INCREMENT,'
+					 . '`section_id` INT NOT NULL,'
+					 . '`page_id` INT NOT NULL,'
+					 . '`post_id` INT NOT NULL,'
+					 . '`title` VARCHAR(255) NOT NULL,'
+					 . '`comment` TEXT NOT NULL,'
+		   	    . '`commented_when` INT NOT NULL ,'
+					 . '`commented_by` INT NOT NULL ,'
+					 . 'PRIMARY KEY (comment_id)'
+                . ' )';
+	$database->query($mod_news);
+	
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_news_settings`");
+	$mod_news = 'CREATE TABLE `'.TABLE_PREFIX.'mod_news_settings` ( '
+					 . '`section_id` INT NOT NULL,'
+					 . '`page_id` INT NOT NULL,'
+					 . '`header` TEXT NOT NULL,'
+					 . '`post_loop` TEXT NOT NULL,'
+					 . '`footer` TEXT NOT NULL,'
+					 . '`posts_per_page` INT NOT NULL,'
+					 . '`post_header` TEXT NOT NULL,'
+					 . '`post_footer` TEXT NOT NULL,'
+					 . '`comments_header` TEXT NOT NULL,'
+					 . '`comments_loop` TEXT NOT NULL,'
+					 . '`comments_footer` TEXT NOT NULL,'
+					 . '`comments_page` TEXT NOT NULL,'
+					 . '`commenting` VARCHAR(7) NOT NULL,'
+					 . '`resize` INT NOT NULL,'
+					 . 'PRIMARY KEY (section_id)'
+                . ' )';
+	$database->query($mod_news);
+		
+	// Insert info into the search table
+	// Module query info
+	$field_info = array();
+	$field_info['page_id'] = 'page_id';
+	$field_info['title'] = 'page_title';
+	$field_info['link'] = 'link';
+	$field_info['description'] = 'description';
+	$field_info['modified_when'] = 'modified_when';
+	$field_info['modified_by'] = 'modified_by';
+	$field_info = serialize($field_info);
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'news', '$field_info')");
+	// Query start
+	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_news_posts, [TP]mod_news_groups, [TP]mod_news_comments, [TP]mod_news_settings, [TP]pages WHERE ";
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'news')");
+	// Query body
+	$query_body_code = "
+	[TP]pages.page_id = [TP]mod_news_posts.page_id AND [TP]mod_news_posts.title LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_posts.page_id AND [TP]mod_news_posts.content_short LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_posts.page_id AND [TP]mod_news_posts.content_long LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_comments.page_id AND [TP]mod_news_comments.title LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_comments.page_id AND [TP]mod_news_comments.comment LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.header LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.footer LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.post_header LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.post_footer LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.comments_header LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.comments_footer LIKE \'%[STRING]%\'
+	OR [TP]pages.page_id = [TP]mod_news_settings.page_id AND [TP]mod_news_settings.comments_footer LIKE \'%[STRING]%\'";
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'news')");
+	// Query end
+	$query_end_code = "";	
+	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'news')");
+	
+	// Insert blank row (there needs to be at least on row for the search to work)
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_posts (section_id,page_id) VALUES ('0', '0')");
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_groups (section_id,page_id) VALUES ('0', '0')");
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_comments (section_id,page_id) VALUES ('0', '0')");
+	$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_settings (section_id,page_id) VALUES ('0', '0')");
+	
+	// Make news post access files dir
+	make_dir(WB_PATH.PAGES_DIRECTORY.'/posts/');+	
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/rss.php
===================================================================
--- trunk/wb/modules/news/rss.php	(nonexistent)
+++ trunk/wb/modules/news/rss.php	(revision 103)
@@ -0,0 +1,94 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include WB files
+require_once('../../config.php');
+require_once(WB_PATH.'/framework/class.frontend.php');
+$database = new database();
+$wb = new frontend();
+$wb->get_page_details();
+$wb->get_website_settings();
+
+// Check that GET values have been supplied
+if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])) {
+	$page_id = $_GET['page_id'];
+} else {
+	header('Location: '.WB_URL);
+}
+if(isset($_GET['group_id']) AND is_numeric($_GET['group_id'])) {
+	$group_id = $_GET['group_id'];
+}
+
+// Sending XML header
+header("Content-type: text/xml");
+
+// Header info
+// Required by CSS 2.0
+
+echo "<rss version='2.0'>";
+echo "<channel>";
+echo "<title>".PAGE_TITLE."</title>";
+echo "<link>".WB_URL."</link>";
+echo "<description>".PAGE_DESCRIPTION."</description>";
+
+// Optional header info
+echo "<language>".DEFAULT_LANGUAGE."</language>";
+echo "<copyright>".WB_URL."</copyright>";
+echo "<managingEditor>".SERVER_EMAIL."</managingEditor>";
+echo "<webMaster>".SERVER_EMAIL."</webMaster>";
+echo "<category>".WEBSITE_TITLE."</category>";
+echo "<generator>Website Baker Content Management System</generator>";
+
+// Get news items from database
+
+//Query
+if(isset($group_id)) {
+	$query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE group_id=".$group_id." AND page_id = ".$page_id." AND active=1 ORDER BY posted_when DESC";
+} else {
+	$query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE page_id=".$page_id." AND active=1 ORDER BY posted_when DESC";	
+}
+$result = $database->query($query);
+
+//Generating the news items
+while($item = $result->fetchRow($result)){
+
+    echo "<item>";
+    echo "<title>".$item["title"]."</title>";
+    // Stripping HTML Tags for text-only visibility
+    echo "<description>".strip_tags($item["content_short"])."</description>";
+    echo "<link>".WB_URL."/pages".$item["link"].PAGE_EXTENSION."</link>";
+    /* Add further (non required) information here like ie.
+    echo "<author>".$item["posted_by"]."</author>");
+    etc.
+    */
+    echo "</item>";
+
+}
+
+// Writing footer information
+echo "</channel>";
+echo "</rss>";
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/rss.php
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/view.php
===================================================================
--- trunk/wb/modules/news/view.php	(nonexistent)
+++ trunk/wb/modules/news/view.php	(revision 103)
@@ -0,0 +1,323 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Check if there is a start point defined
+if(isset($_GET['p']) AND is_numeric($_GET['p']) AND $_GET['p'] >= 0) {
+	$position = $_GET['p'];
+} else {
+	$position = 0;
+}
+
+// Get user's username, display name, email, and id - needed for insertion into post info
+$users = array();
+$query_users = $database->query("SELECT user_id,username,display_name,email FROM ".TABLE_PREFIX."users");
+if($query_users->numRows() > 0) {
+	while($user = $query_users->fetchRow()) {
+		// Insert user info into users array
+		$user_id = $user['user_id'];
+		$users[$user_id]['username'] = $user['username'];
+		$users[$user_id]['display_name'] = $user['display_name'];
+		$users[$user_id]['email'] = $user['email'];
+	}
+}
+
+// Get groups (title, if they are active, and their image [if one has been uploaded])
+$groups[0]['title'] = '';
+$groups[0]['active'] = true;
+$groups[0]['image'] = '';
+$query_users = $database->query("SELECT group_id,title,active FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id' ORDER BY position ASC");
+if($query_users->numRows() > 0) {
+	while($group = $query_users->fetchRow()) {
+		// Insert user info into users array
+		$group_id = $group['group_id'];
+		$groups[$group_id]['title'] = $this->strip_slashes_dummy($group['title']);
+		$groups[$group_id]['active'] = $group['active'];
+		if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) {
+			$groups[$group_id]['image'] = WB_URL.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg';
+		} else {
+			$groups[$group_id]['image'] = '';
+		}
+	}
+}
+
+// Check if we should show the main page or a post itself
+if(!defined('POST_ID') OR !is_numeric(POST_ID)) {
+	
+	// Check if we should only list posts from a certain group
+	if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
+		$query_extra = " AND group_id = '".$_GET['g']."'";
+		?>
+		<style type="text/css">.selected_group_title { font-size: 14px; text-align: center; }</style>
+		<?php
+	} else {
+		$query_extra = '';
+	}
+	
+	// Get settings
+	$query_settings = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+	if($query_settings->numRows() > 0) {
+		$fetch_settings = $query_settings->fetchRow();
+		$setting_header = $this->strip_slashes_dummy($fetch_settings['header']);
+		$setting_post_loop = $this->strip_slashes_dummy($fetch_settings['post_loop']);
+		$setting_footer = $this->strip_slashes_dummy($fetch_settings['footer']);
+		$setting_posts_per_page = $fetch_settings['posts_per_page'];
+	} else {
+		$setting_header = '';
+		$setting_post_loop = '';
+		$setting_footer = '';
+		$setting_posts_per_page = '';
+	}
+	
+	// Get total number of posts
+	$query_total_num = $database->query("SELECT post_id FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id' AND active = '1' AND title != ''$query_extra");
+	$total_num = $query_total_num->numRows();
+
+	// Work-out if we need to add limit code to sql
+	if($setting_posts_per_page != 0) {
+		$limit_sql = " LIMIT $position,$setting_posts_per_page";
+	} else {
+		$limit_sql = "";
+	}
+	
+	// Query posts (for this page)
+	$query_posts = $database->query("SELECT group_id,post_id,title,link,content_short,posted_by,posted_when FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id' AND active = '1' AND title != ''$query_extra ORDER BY position DESC".$limit_sql);
+	$num_posts = $query_posts->numRows();
+	
+	// Create previous and next links
+	if($setting_posts_per_page != 0) {
+		if($position > 0) {
+			if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
+				$pl_prepend = '<a href="?p='.($position-$setting_posts_per_page).'&g='.$_GET['g'].'"><< ';
+			} else {
+				$pl_prepend = '<a href="?p='.($position-$setting_posts_per_page).'"><< ';
+			}
+			$pl_append = '</a>';
+			$previous_link = $pl_prepend.$TEXT['PREVIOUS'].$pl_append;
+			$previous_page_link = $pl_prepend.$TEXT['PREVIOUS_PAGE'].$pl_append;
+		} else {
+			$previous_link = '';
+			$previous_page_link = '';
+		}
+		if($position+$setting_posts_per_page >= $total_num) {
+			$next_link = '';
+			$next_page_link = '';
+		} else {
+			if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
+				$nl_prepend = '<a href="?p='.($position+$setting_posts_per_page).'&g='.$_GET['g'].'"> ';
+			} else {
+				$nl_prepend = '<a href="?p='.($position+$setting_posts_per_page).'"> ';
+			}
+			$nl_append = ' >></a>';
+			$next_link = $nl_prepend.$TEXT['NEXT'].$nl_append;
+			$next_page_link = $nl_prepend.$TEXT['NEXT_PAGE'].$nl_append;
+		}
+		if($position+$setting_posts_per_page > $total_num) {
+			$num_of = $position+$num_posts;
+		} else {
+			$num_of = $position+$setting_posts_per_page;
+		}
+		$out_of = ($position+1).'-'.$num_of.' '.strtolower($TEXT['OUT_OF']).' '.$total_num;
+		$of = ($position+1).'-'.$num_of.' '.strtolower($TEXT['OF']).' '.$total_num;
+		$display_previous_next_links = '';
+	} else {
+		$display_previous_next_links = 'none';
+	}
+		
+	// Print header
+	if($display_previous_next_links == 'none') {
+		echo  str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array('','','','','','', $display_previous_next_links), $setting_header);
+	} else {
+		echo str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array($next_page_link, $next_link, $previous_page_link, $previous_link, $out_of, $of, $display_previous_next_links), $setting_header);
+	}
+	
+	if($num_posts > 0) {
+		if($query_extra != '') {
+			?>
+			<div class="selected_group_title">
+				<?php echo '<a href="'.$_SERVER['PHP_SELF'].'">'.PAGE_TITLE.'</a> >> '.$groups[$_GET['g']]['title']; ?>
+			</div>
+			<?php
+		}
+		while($post = $query_posts->fetchRow()) {
+			if(isset($groups[$post['group_id']]['active']) AND $groups[$post['group_id']]['active'] != false) { // Make sure parent group is active
+				$uid = $post['posted_by']; // User who last modified the post
+				// Workout date and time of last modified post
+				$post_date = gmdate(DATE_FORMAT, $post['posted_when']+TIMEZONE);
+				$post_time = gmdate(TIME_FORMAT, $post['posted_when']+TIMEZONE);
+				// Work-out the post link
+				$post_link = page_link($post['link']);
+				if(isset($_GET['p']) AND $position > 0) {
+					$post_link .= '?p='.$position;
+				}
+				if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
+					if(isset($_GET['p']) AND $position > 0) { $post_link .= '&'; } else { $post_link .= '?'; }
+					$post_link .= 'g='.$_GET['g'];
+				}
+				// Get group id, title, and image
+				$group_id = $post['group_id'];
+				$group_title = $groups[$group_id]['title'];
+				$group_image = $groups[$group_id]['image'];
+				if($group_image == '') { $display_image = 'none'; } else { $display_image = ''; }
+				if($group_id == 0) { $display_group = 'none'; } else { $display_group = ''; }
+				// Replace [wblink--PAGE_ID--] with real link
+				$short = $this->strip_slashes_dummy($post['content_short']);
+				$this->preprocess($short);
+				// Replace vars with values
+				$vars = array('[PAGE_TITLE]', '[GROUP_ID]', '[GROUP_TITLE]', '[GROUP_IMAGE]', '[DISPLAY_GROUP]', '[DISPLAY_IMAGE]', '[TITLE]', '[SHORT]', '[LINK]', '[DATE]', '[TIME]', '[USER_ID]', '[USERNAME]', '[DISPLAY_NAME]', '[EMAIL]', '[TEXT_READ_MORE]');
+				if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '') {
+					$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $short, $post_link, $post_date, $post_time, $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email'], $TEXT['READ_MORE']);
+				} else {
+					$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $short, $post_link, $post_date, $post_time, '', '', '', '', $TEXT['READ_MORE']);
+				}
+				echo str_replace($vars, $values, $setting_post_loop);
+			}
+		}
+	}
+	
+	// Print footer
+	if($display_previous_next_links == 'none') {
+		echo  str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array('','','','','','', $display_previous_next_links), $setting_footer);
+	} else {
+		echo str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array($next_page_link, $next_link, $previous_page_link, $previous_link, $out_of, $of, $display_previous_next_links), $setting_footer);
+	}
+	
+} elseif(defined('POST_ID') AND is_numeric(POST_ID)) {
+	
+	// Get settings
+	$query_settings = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+	if($query_settings->numRows() > 0) {
+		$fetch_settings = $query_settings->fetchRow();
+		$setting_post_header = $this->strip_slashes_dummy($fetch_settings['post_header']);
+		$setting_post_footer = $this->strip_slashes_dummy($fetch_settings['post_footer']);
+		$setting_comments_header = $this->strip_slashes_dummy($fetch_settings['comments_header']);
+		$setting_comments_loop = $this->strip_slashes_dummy($fetch_settings['comments_loop']);
+		$setting_comments_footer = $this->strip_slashes_dummy($fetch_settings['comments_footer']);
+	} else {
+		$setting_post_header = '';
+		$setting_post_footer = '';
+		$setting_comments_header = '';
+		$setting_comments_loop = '';
+		$setting_comments_footer = '';
+	}
+	
+	// Get page info
+	$query_page = $database->query("SELECT link FROM ".TABLE_PREFIX."pages WHERE page_id = '".PAGE_ID."'");
+	if($query_page->numRows() > 0) {
+		$page = $query_page->fetchRow();
+		$page_link = page_link($page['link']);
+		if(isset($_GET['p']) AND $position > 0) {
+			$page_link .= '?p='.$_GET['p'];
+		}
+		if(isset($_GET['g']) AND is_numeric($_GET['g'])) {
+			if(isset($_GET['p']) AND $position > 0) { $page_link .= '&'; } else { $page_link .= '?'; }
+			$page_link .= 'g='.$_GET['g'];
+		}
+	} else {
+		exit('Page not found');
+	}
+	
+	// Get post info
+	$query_post = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '".POST_ID."' AND active = '1'");
+	if($query_post->numRows() > 0) {
+		$post = $query_post->fetchRow();
+		if(isset($groups[$post['group_id']]['active']) AND $groups[$post['group_id']]['active'] != false) { // Make sure parent group is active
+			$uid = $post['posted_by']; // User who last modified the post
+			// Workout date and time of last modified post
+			$post_date = gmdate(DATE_FORMAT, $post['posted_when']+TIMEZONE);
+			$post_time = gmdate(TIME_FORMAT, $post['posted_when']+TIMEZONE);
+			// Get group id, title, and image
+			$group_id = $post['group_id'];
+			$group_title = $groups[$group_id]['title'];
+			$group_image = $groups[$group_id]['image'];
+			if($group_image == '') { $display_image = 'none'; } else { $display_image = ''; }
+			if($group_id == 0) { $display_group = 'none'; } else { $display_group = ''; }
+			$vars = array('[PAGE_TITLE]', '[GROUP_ID]', '[GROUP_TITLE]', '[GROUP_IMAGE]', '[DISPLAY_GROUP]', '[DISPLAY_IMAGE]', '[TITLE]', '[SHORT]', '[BACK]', '[DATE]', '[TIME]', '[USER_ID]', '[USERNAME]', '[DISPLAY_NAME]', '[EMAIL]');
+			if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '') {
+				$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $this->strip_slashes_dummy($post['content_short']), $page_link, $post_date, $post_time, $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email']);
+			} else {
+				$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $this->strip_slashes_dummy($post['title']), $this->strip_slashes_dummy($post['content_short']), $page_link, $post_date, $post_time, '', '', '', '');
+			}
+			$post_long = $this->strip_slashes_dummy($post['content_long']);
+		}
+	} else {
+		header('Location: '.WB_URL.'/pages/');
+	}
+	
+	// Print post header
+	echo str_replace($vars, $values, $setting_post_header);
+	
+	// Replace [wblink--PAGE_ID--] with real link
+  	$this->preprocess($postlong);
+	// Print long
+	echo $post_long;
+	
+	// Print post footer
+	echo str_replace($vars, $values, $setting_post_footer);
+	
+	// Show comments section if we have to
+	if($post['commenting'] == 'private' AND isset($admin) AND $admin->is_authenticated() == true OR $post['commenting'] == 'public') {
+		
+		// Print comments header
+		echo str_replace('[ADD_COMMENT_URL]', WB_URL.'/modules/news/comment.php?id='.POST_ID, $setting_comments_header);
+		
+		// Query for comments
+		$query_comments = $database->query("SELECT title,comment,commented_when,commented_by FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '".POST_ID."' ORDER BY commented_when ASC");
+		if($query_comments->numRows() > 0) {
+			while($comment = $query_comments->fetchRow()) {
+				// Display Comments without slashes, but with new-line characters
+				$comment['comment'] = nl2br($this->strip_slashes_dummy($comment['comment']));
+				$comment['title'] = $this->strip_slashes_dummy($comment['title']);
+				// Print comments loop
+				$commented_date = gmdate(DATE_FORMAT, $comment['commented_when']+TIMEZONE);
+				$commented_time = gmdate(TIME_FORMAT, $comment['commented_when']+TIMEZONE);
+				$uid = $comment['commented_by'];
+				$vars = array('[TITLE]','[COMMENT]','[DATE]','[TIME]','[USER_ID]','[USERNAME]','[DISPLAY_NAME]', '[EMAIL]');
+				if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '') {
+					$values = array($this->strip_slashes_dummy($comment['title']), $this->strip_slashes_dummy($comment['comment']), $commented_date, $commented_time, $uid, $this->strip_slashes_dummy($users[$uid]['username']), $this->strip_slashes_dummy($users[$uid]['display_name']), $this->strip_slashes_dummy($users[$uid]['email']));
+				} else {
+					$values = array($this->strip_slashes_dummy($comment['title']), $this->strip_slashes_dummy($comment['comment']), $commented_date, $commented_time, '0', strtolower($TEXT['UNKNOWN']), $TEXT['UNKNOWN'], '');
+				}
+				echo str_replace($vars, $values, $setting_comments_loop);
+			}
+		} else {
+			// Say no comments found
+			if(isset($TEXT['NONE_FOUND'])) {
+				echo $TEXT['NONE_FOUND'].'<br />';
+			} else {
+				echo 'None Found<br />';
+			}
+		}
+		
+		// Print comments footer
+		echo str_replace('[ADD_COMMENT_URL]', WB_URL.'/modules/news/comment.php?id='.POST_ID, $setting_comments_footer);
+		
+	}
+		
+}
+
+?>

Property changes on: trunk/wb/modules/news/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/comment_page.php
===================================================================
--- trunk/wb/modules/news/comment_page.php	(nonexistent)
+++ trunk/wb/modules/news/comment_page.php	(revision 103)
@@ -0,0 +1,41 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Make sure page cannot be accessed directly
+if(!defined('WB_URL')) { header('Location: ../index.php'); }
+	
+// Get comments page template details from db
+$query_settings = $database->query("SELECT comments_page FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '".SECTION_ID."'");
+if($query_settings->numRows() == 0) {
+	header('Location: '.WB_URL.'/pages/');
+} else {
+	$settings = $query_settings->fetchRow();
+	// Print comments page
+	$vars = array('[POST_TITLE]', '[ACTION_URL]');
+	$values = array(POST_TITLE, WB_URL.'/modules/news/submit_comment.php?page_id='.PAGE_ID.'&section_id='.SECTION_ID.'&post_id='.POST_ID);
+	echo str_replace($vars, $values, $this->strip_slashes_dummy($settings['comments_page']));
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/comment_page.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/modify_group.php
===================================================================
--- trunk/wb/modules/news/modify_group.php	(nonexistent)
+++ trunk/wb/modules/news/modify_group.php	(revision 103)
@@ -0,0 +1,105 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['group_id']) OR !is_numeric($_GET['group_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$group_id = $_GET['group_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '$group_id'");
+$fetch_content = $query_content->fetchRow();
+
+?>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_group.php" method="post" enctype="multipart/form-data" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
+<input type="hidden" name="group_id" value="<?php echo $group_id; ?>">
+
+<table cellpadding="4" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
+	<td>
+		<input type="text" name="title" value="<?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['title'])); ?>" style="width: 100%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['IMAGE']; ?>:</td>
+	<?php if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) { ?>
+	<td>
+		<a href="<?php echo WB_URL.MEDIA_DIRECTORY; ?>/.news/image<?php echo $group_id; ?>.jpg" target="_blank">View</a>
+		&nbsp;
+		<input type="checkbox" name="delete_image" id="delete_image" value="true" />
+		<a href="javascript: toggle_checkbox('delete_image');">Delete</a>
+	</td>
+	<?php } else { ?>
+	<td>
+		<input type="file" name="image" />
+	</td>
+	<?php } ?>
+</tr>
+<tr>
+	<td><?php echo $TEXT['ACTIVE']; ?>:</td>
+	<td>
+		<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
+		<?php echo $TEXT['YES']; ?>
+		</a>
+		-
+		<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
+		<?php echo $TEXT['NO']; ?>
+		</a>
+	</td>
+</tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 200px; margin-top: 5px;"></form>
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/modify_group.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/modify_settings.php
===================================================================
--- trunk/wb/modules/news/modify_settings.php	(nonexistent)
+++ trunk/wb/modules/news/modify_settings.php	(revision 103)
@@ -0,0 +1,173 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+$fetch_content = $query_content->fetchRow();
+
+// Set raw html <'s and >'s to be replace by friendly html code
+$raw = array('<', '>');
+$friendly = array('&lt;', '&gt;');
+
+?>
+
+<style type="text/css">
+.setting_name {
+	vertical-align: top;
+}
+</style>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_settings.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
+
+<table cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td class="setting_name" width="100"><?php echo $TEXT['HEADER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="header" style="width: 100%; height: 80px;"><?php echo $admin->strip_slashes_dummy($fetch_content['header']); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['POST'].' '.$TEXT['LOOP']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="post_loop" style="width: 100%; height: 60px;"><?php echo $admin->strip_slashes_dummy($fetch_content['post_loop']); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['FOOTER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="footer" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['footer'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['POST_HEADER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="post_header" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['post_header'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['POST_FOOTER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="post_footer" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['post_footer'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['POSTS_PER_PAGE']; ?>:</td>
+	<td class="setting_name">
+		<select name="posts_per_page" style="width: 100%;">
+			<option value=""><?php echo $TEXT['UNLIMITED']; ?></option>
+			<?php
+			for($i = 1; $i <= 20; $i++) {
+				if($fetch_content['posts_per_page'] == ($i*5)) { $selected = ' selected'; } else { $selected = ''; }
+				echo '<option value="'.($i*5).'"'.$selected.'>'.($i*5).'</option>';
+			}
+			?>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['COMMENTING']; ?>:</td>
+	<td>
+		<select name="commenting" style="width: 100%;">
+			<option value="none"><?php echo $TEXT['DISABLED']; ?></option>
+			<option value="public" <?php if($fetch_content['commenting'] == 'public') { echo 'selected'; } ?>><?php echo $TEXT['PUBLIC']; ?></option>
+			<option value="private" <?php if($fetch_content['commenting'] == 'private') { echo 'selected'; } ?>><?php echo $TEXT['PRIVATE']; ?></option>
+		</select>
+	</td>
+</tr>
+<?php if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg')) { /* Make's sure GD library is installed */ ?>
+<tr>
+	<td>
+		<?php echo $TEXT['RESIZE_IMAGE_TO']; ?>:
+	</td>
+	<td>
+		<select name="resize" style="width: 100%;">
+			<option value=""><?php echo $TEXT['NONE']; ?></option>
+			<?php
+			$SIZES['50'] = '50x50px';
+			$SIZES['75'] = '75x75px';
+			$SIZES['100'] = '100x100px';
+			$SIZES['125'] = '125x125px';
+			$SIZES['150'] = '150x150px';
+			foreach($SIZES AS $size => $size_name) {
+				if($fetch_content['resize'] == $size) { $selected = ' selected'; } else { $selected = ''; }
+				echo '<option value="'.$size.'"'.$selected.'>'.$size_name.'</option>';
+			}
+			?>
+		</select>
+	</td>
+</tr>
+<?php } ?>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['HEADER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="comments_header" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_header'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['LOOP']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="comments_loop" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_loop'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['FOOTER']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="comments_footer" style="width: 100%; height: 60px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_footer'])); ?></textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['PAGE']; ?>:</td>
+	<td class="setting_name">
+		<textarea name="comments_page" style="width: 100%; height: 80px;"><?php echo str_replace($raw, $friendly, $admin->strip_slashes_dummy($fetch_content['comments_page'])); ?></textarea>
+	</td>
+</tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="105">&nbsp;</td>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE'].' '.$TEXT['SETTINGS']; ?>" style="width: 200px; margin-top: 5px;"></form>
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/modify_settings.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/modify_comment.php
===================================================================
--- trunk/wb/modules/news/modify_comment.php	(nonexistent)
+++ trunk/wb/modules/news/modify_comment.php	(revision 103)
@@ -0,0 +1,85 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_GET['comment_id']) OR !is_numeric($_GET['comment_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$comment_id = $_GET['comment_id'];
+}
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get header and footer
+$query_content = $database->query("SELECT post_id,title,comment FROM ".TABLE_PREFIX."mod_news_comments WHERE comment_id = '$comment_id'");
+$fetch_content = $query_content->fetchRow();
+
+?>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_comment.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>">
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>">
+<input type="hidden" name="post_id" value="<?php echo $fetch_content['post_id']; ?>">
+<input type="hidden" name="comment_id" value="<?php echo $comment_id; ?>">
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
+	<td>
+		<input type="text" name="title" value="<?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['title'])); ?>" style="width: 100%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td valign="top"><?php echo $TEXT['COMMENT']; ?>:</td>
+	<td>
+		<textarea name="comment" style="width: 100%; height: 150px;"><?php echo $admin->strip_slashes_dummy(htmlspecialchars($fetch_content['comment'])); ?></textarea>
+	</td>
+</tr>
+</table>
+
+<br />
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 200px; margin-top: 5px;"></form>
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $fetch_content['post_id']; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+
+<?php
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/modify_comment.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/modify.php
===================================================================
--- trunk/wb/modules/news/modify.php	(nonexistent)
+++ trunk/wb/modules/news/modify.php	(revision 103)
@@ -0,0 +1,192 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being access directly
+if(!defined('WB_PATH')) { exit("Cannot access this file directly"); }
+
+?>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left" width="33%">
+		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['POST']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/add_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+	<td align="left" width="33%">
+		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['GROUP']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/add_group.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+	<td align="right" width="33%">
+		<input type="button" value="<?php echo $TEXT['SETTINGS']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/modify_settings.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['POST']; ?></h2>
+
+<?php
+
+// Loop through existing posts
+$query_posts = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_posts` WHERE section_id = '$section_id' ORDER BY position DESC");
+if($query_posts->numRows() > 0) {
+	$num_posts = $query_posts->numRows();
+	$row = 'a';
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($post = $query_posts->fetchRow()) {
+		?>
+		<tr class="row_<?php echo $row; ?>" height="20">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="Modify - " />
+				</a>
+			</td>
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>">
+					<?php echo $admin->strip_slashes_dummy($post['title']); ?>
+				</a>
+			</td>
+			<td width="180">
+				<?php echo $TEXT['GROUP'].': ';
+				// Get group title
+				$query_title = $database->query("SELECT title FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '".$post['group_id']."'");
+				if($query_title->numRows() > 0) {
+					$fetch_title = $query_title->fetchRow();
+					echo $admin->strip_slashes_dummy($fetch_title['title']);
+				} else {
+					echo $TEXT['NONE'];
+				}
+				?>
+			</td>
+			<td width="80">
+				<?php echo $TEXT['COMMENTS'].': ';
+				// Get number of comments
+				$query_title = $database->query("SELECT title FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '".$post['post_id']."'");
+				echo $query_title->numRows();
+				?>
+			</td>
+			<td width="80">
+				<?php echo $TEXT['ACTIVE'].': '; if($post['active'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; } ?>
+			</td>
+			<td width="20">
+			<?php if($post['position'] != $num_posts) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_down.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/up_16.png" border="0" alt="^" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+			<?php if($post['position'] != 1) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_up.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/down_16.png" border="0" alt="v" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_post.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&post_id=<?php echo $post['post_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+
+?>
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['GROUP']; ?></h2>
+
+<?php
+
+// Loop through existing groups
+$query_groups = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_groups` WHERE section_id = '$section_id' ORDER BY position ASC");
+if($query_groups->numRows() > 0) {
+	$num_groups = $query_groups->numRows();
+	$row = 'a';
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($group = $query_groups->fetchRow()) {
+		?>
+		<tr class="row_<?php echo $row; ?>" height="20">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_group.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/modify_16.png" border="0" alt="Modify - " />
+				</a>
+			</td>		
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_group.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>">
+					<?php echo $group['title']; ?>
+				</a>
+			</td>
+			<td width="80">
+				<?php echo $TEXT['ACTIVE'].': '; if($group['active'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; } ?>
+			</td>
+			<td width="20">
+			<?php if($group['position'] != 1) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_up.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/up_16.png" border="0" alt="^" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+			<?php if($group['position'] != $num_groups) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_down.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&group_id=<?php echo $group['group_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/down_16.png" border="0" alt="v" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_group.php?page_id=<?php echo $page_id; ?>&group_id=<?php echo $group['group_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo ADMIN_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/save_group.php
===================================================================
--- trunk/wb/modules/news/save_group.php	(nonexistent)
+++ trunk/wb/modules/news/save_group.php	(revision 103)
@@ -0,0 +1,99 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_POST['group_id']) OR !is_numeric($_POST['group_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$group_id = $_POST['group_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Include WB functions file
+require(WB_PATH.'/framework/functions.php');
+
+// Vagroup_idate all fields
+if($admin->get_post('title') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
+} else {
+	$title = $admin->add_slashes($admin->get_post('title'));
+	$active = $admin->get_post('active');
+}
+
+// Update row
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_groups SET title = '$title', active = '$active' WHERE group_id = '$group_id'");
+
+// Check if the user uploaded an image or wants to delete one
+if(isset($_FILES['image']['tmp_name']) AND $_FILES['image']['tmp_name'] != '') {
+	// Get real filename and set new filename
+	$filename = $_FILES['image']['name'];
+	$new_filename = WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg';
+	// Make sure the image is a jpg file
+	if(substr($filename, -3, 3) != 'jpg') {
+		$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG)');
+	} elseif(mime_content_type($_FILES['image']['tmp_name']) != 'image/jpeg' AND mime_content_type($_FILES['image']['tmp_name']) != 'image/jpg') {
+		$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG)');
+	}
+	// Make sure the target directory exists
+	make_dir(WB_PATH.MEDIA_DIRECTORY.'/.news');
+	// Upload image
+	move_uploaded_file($_FILES['image']['tmp_name'], $new_filename);
+	// Check if we need to create a thumb
+	$query_settings = $database->query("SELECT resize FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+	$fetch_settings = $query_settings->fetchRow();
+	$resize = $fetch_settings['resize'];
+	if($resize != 0) {
+		// Resize the image
+		$thumb_location = WB_PATH.MEDIA_DIRECTORY.'/.news/thumb'.$group_id.'.jpg';
+		if(make_thumb($new_filename, $thumb_location, $resize)) {
+			// Delete the actual image and replace with the resized version
+			unlink($new_filename);
+			rename($thumb_location, $new_filename);
+		}
+	}
+}
+if(isset($_POST['delete_image']) AND $_POST['delete_image'] != '') {
+	// Try unlinking image
+	if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) {
+		unlink(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg');
+	}
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>

Property changes on: trunk/wb/modules/news/save_group.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/save_settings.php
===================================================================
--- trunk/wb/modules/news/save_settings.php	(nonexistent)
+++ trunk/wb/modules/news/save_settings.php	(revision 103)
@@ -0,0 +1,65 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// This code removes any <?php tags and adds slashes
+$friendly = array('&lt;', '&gt;', '?php');
+$raw = array('<', '>', '');
+$header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['header']));
+$post_loop = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_loop']));
+$footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['footer']));
+$post_header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_header']));
+$post_footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_footer']));
+$comments_header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_header']));
+$comments_loop = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_loop']));
+$comments_footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_footer']));
+$comments_page = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_page']));
+$commenting = $_POST['commenting'];
+$posts_per_page = $_POST['posts_per_page'];
+if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg')) {
+	$resize = $_POST['resize'];
+} else {
+	$resize = '';
+}
+
+// Update settings
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_settings SET header = '$header', post_loop = '$post_loop', footer = '$footer', posts_per_page = '$posts_per_page', post_header = '$post_header', post_footer = '$post_footer', comments_header = '$comments_header', comments_loop = '$comments_loop', comments_footer = '$comments_footer', comments_page = '$comments_page', commenting = '$commenting', resize = '$resize' WHERE section_id = '$section_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/save_settings.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/save_comment.php
===================================================================
--- trunk/wb/modules/news/save_comment.php	(nonexistent)
+++ trunk/wb/modules/news/save_comment.php	(revision 103)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require('../../config.php');
+
+// Get id
+if(!isset($_POST['comment_id']) OR !is_numeric($_POST['comment_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$comment_id = $_POST['comment_id'];
+}
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Validate all fields
+if($admin->get_post('title') == '' AND $admin->get_post('comment') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/modify_comment.php?page_id='.$page_id.'&section_id='.$section_id.'comment_id='.$id);
+} else {
+	$title = $admin->add_slashes($admin->get_post('title'));
+	$comment = $admin->add_slashes($admin->get_post('comment'));
+	$post_id = $admin->get_post('post_id');
+}
+
+// Update row
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_comments SET title = '$title', comment = '$comment' WHERE comment_id = '$comment_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_comment.php?page_id='.$page_id.'&section_id='.$section_id.'&comment_id='.$id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/save_comment.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/submit_comment.php
===================================================================
--- trunk/wb/modules/news/submit_comment.php	(nonexistent)
+++ trunk/wb/modules/news/submit_comment.php	(revision 103)
@@ -0,0 +1,63 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include config file
+require('../../config.php');
+
+// Include admin class
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Start', 'start', false, false);
+
+// Include WB functions file
+if(!defined('FUNCTIONS_CLASS_LOADED')) {
+	require(WB_PATH.'/framework/functions.php');
+}
+
+// Check if we should show the form or add a comment
+if(is_numeric($_GET['page_id']) AND is_numeric($_GET['section_id']) AND isset($_GET['post_id']) AND is_numeric($_GET['post_id']) AND isset($_POST['comment']) AND $_POST['comment'] != '') {
+	
+	// Insert the comment into db
+	$page_id = $_GET['page_id'];
+	$section_id = $_GET['section_id'];
+	$post_id = $_GET['post_id'];
+	$title = $admin->add_slashes(strip_tags($_POST['title']));
+	$comment = $admin->add_slashes(strip_tags($_POST['comment']));
+	$commented_when = mktime();
+	if(isset($admin) AND $admin->is_authenticated() == true) {
+		$commented_by = $admin->get_user_id();
+	} else {
+		$commented_by = '';
+	}
+	$query = $database->query("INSERT INTO ".TABLE_PREFIX."mod_news_comments (section_id,page_id,post_id,title,comment,commented_when,commented_by) VALUES ('$section_id','$page_id','$post_id','$title','$comment','$commented_when','$commented_by')");
+	// Get page link
+	$query_page = $database->query("SELECT link FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+	$page = $query_page->fetchRow();
+	header('Location: '.page_link($page['link']).'?id='.$post_id);
+	
+} else {
+	header('Location: '.WB_URL.'/pages/');
+}
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/submit_comment.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/add.php
===================================================================
--- trunk/wb/modules/news/add.php	(nonexistent)
+++ trunk/wb/modules/news/add.php	(revision 103)
@@ -0,0 +1,105 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+$header = '<style type=\"text/css\">
+.post_title, .post_date { border-bottom: 1px solid #DDDDDD; }
+.post_title { font-weight: bold; font-size: 12px; color: #000000; }
+.post_date { text-align: right; font-weight: bold; }
+.post_short { text-align: justify; padding-bottom: 5px; }
+</style>
+<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">';
+$post_loop = '<tr class=\"post_top\">
+<td class=\"post_title\"><a href=\"[LINK]\">[TITLE]</a></td>
+<td class=\"post_date\">[TIME], [DATE]</td>
+</tr>
+<tr>
+<td class=\"post_short\" colspan=\"2\">
+[SHORT] 
+<a href=\"[LINK]\">[TEXT_READ_MORE]</a>
+</td>
+</tr>';
+$footer = '</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" style="display: [DISPLAY_PREVIOUS_NEXT_LINKS]">
+<tr>
+<td width="35%" align="left">[PREVIOUS_PAGE_LINK]</td>
+<td width="30%" align="center">[OF]</td>
+<td width="35%" align="right">[NEXT_PAGE_LINK]</td>
+</tr>
+</table>';
+$post_header = $admin->add_slashes('<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+<td height="30"><h1>[TITLE]</h1></td>
+<td rowspan="3" style="display: [DISPLAY_IMAGE]"><img src="[GROUP_IMAGE]" alt="[GROUP_TITLE]" /></td>
+</tr>
+<tr>
+<td valign="top"><b>Posted by [DISPLAY_NAME] ([USERNAME]) on [DATE] at [TIME]</b></td>
+</tr>
+<tr style="display: [DISPLAY_GROUP]">
+<td valign="top"><a href="[BACK]">[PAGE_TITLE]</a> >> <a href="[BACK]?g=[GROUP_ID]">[GROUP_TITLE]</a></td>
+</tr>
+</table>
+<p style="text-align: justify;">');
+$post_footer = '</p>
+<a href=\"[BACK]\">Back</a>';
+$comments_header = $admin->add_slashes('<br /><br />
+<style type="text/css">
+.comment_title { font-weight: bold; }
+.comment_text { font-weight: bold; background-color: #FDFDFD; border-bottom: 1px solid #DDDDDD; padding-bottom: 15px; }
+.comment_title, .comment_text { border-left: 1px solid #DDDDDD; }
+.comment_info { text-align: right; border-right: 1px solid #DDDDDD; }
+.comment_title, .comment_info { border-top: 1px solid #DDDDDD; background-color: #EEEEEE; }
+</style>
+<h2>Comments</h2>
+<table cellpadding="2" cellspacing="0" border="0" width="100%">');
+$comments_loop = $admin->add_slashes('<tr>
+<td class="comment_title">[TITLE]</td>
+<td class="comment_info">By [DISPLAY_NAME] on [DATE] at [TIME]</td>
+</tr>
+<tr>
+<td colspan="2" class="comment_text">[COMMENT]</td>
+</tr>');
+$comments_footer = '</table>
+<br /><a href=\"[ADD_COMMENT_URL]\">Add Comment</a>';
+$comments_page = '<h1>Comment</h1>
+<h2>[POST_TITLE]</h2>
+<br />
+<form name=\"comment\" action=\"[ACTION_URL]\" method=\"post\">
+Title:
+<br />
+<input type=\"text\" name=\"title\" maxlength=\"255\" style=\"width: 90%;\" />
+<br /><br />
+Comment:
+<br />
+<textarea name=\"comment\" style=\"width: 90%; height: 150px;\"></textarea>
+<br /><br />
+<input type=\"submit\" name=\"submit\" value=\"Add Comment\" />';
+$commenting = 'none';
+
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_settings (section_id,page_id,header,post_loop,footer,post_header,post_footer,comments_header,comments_loop,comments_footer,comments_page,commenting) VALUES ('$section_id','$page_id','$header','$post_loop','$footer','$post_header','$post_footer','$comments_header','$comments_loop','$comments_footer','$comments_page','$commenting')");
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/news/index.php
===================================================================
--- trunk/wb/modules/news/index.php	(nonexistent)
+++ trunk/wb/modules/news/index.php	(revision 103)
@@ -0,0 +1,3 @@
+<?php
+header("Location: ../../index.php");
+?>
\ No newline at end of file

Property changes on: trunk/wb/modules/news/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/popups/insert_image.php
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/insert_image.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/insert_image.php	(revision 103)
@@ -0,0 +1,77 @@
+<?php
+
+// $Id: insert_image.php,v 1.3 2005/04/02 06:25:54 rdjurovich Exp $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include the config file
+require('../../../../config.php');
+
+// Create new admin object
+require(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify', false);
+
+// Setup the template
+$template = new Template(WB_PATH.'/modules/htmlarea/htmlarea/popups');
+$template->set_file('page', 'insert_image.html');
+$template->set_block('page', 'main_block', 'main');
+
+// Get the directory to browse
+$directory = $admin->get_post('folder');
+if($directory == '') {
+	$directory = '/media';
+}
+// If the directory contains ../ then set it to /media
+if(strstr($directory, '../')) {
+	$directory = '/media';
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Insert values into template
+$template->set_var('WB_URL', WB_URL);
+$template->set_var('POPUP', 'image');
+$template->set_var('DIRECTORY', str_replace(WB_URL, '', $directory));
+
+// Get home folder not to show
+$home_folders = get_home_folders();
+
+// Insert dirs into the dir list
+$template->set_block('main_block', 'dir_list_block', 'dir_list');
+foreach(directory_list(WB_PATH.MEDIA_DIRECTORY) AS $name) {
+	$template->set_var('NAME', str_replace(WB_PATH, '', $name));
+	if(!isset($home_folders[str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name)])) {
+		if($directory == str_replace(WB_PATH, '', $name)) {
+			$template->set_var('SELECTED', ' selected');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('dir_list', 'dir_list_block', true);
+	}
+}
+
+// Parse the template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/link.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/link.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/link.html	(revision 103)
@@ -0,0 +1,223 @@
+<!-- BEGIN main_block -->
+<html>
+
+<head>
+  <title>Insert/Modify Link</title>
+  <script type="text/javascript" src="popup.js"></script>
+  <script type="text/javascript">
+    window.resizeTo(700, 400);
+
+I18N = window.opener.HTMLArea.I18N.dialogs;
+
+function i18n(str) {
+  return (I18N[str] || str);
+};
+
+function onTargetChanged() {
+  var f = document.getElementById("f_other_target");
+  if (this.value == "_other") {
+    f.style.visibility = "visible";
+    f.select();
+    f.focus();
+  } else f.style.visibility = "hidden";
+};
+
+function Init() {
+  __dlg_translate(I18N);
+  __dlg_init();
+  var param = window.dialogArguments;
+  var target_select = document.getElementById("f_target");
+  if (param) {
+      document.getElementById("f_href").value = param["f_href"];
+      document.getElementById("f_title").value = param["f_title"];
+      comboSelectValue(target_select, param["f_target"]);
+      if (target_select.value != param.f_target) {
+        var opt = document.createElement("option");
+        opt.value = param.f_target;
+        opt.innerHTML = opt.value;
+        target_select.appendChild(opt);
+        opt.selected = true;
+      }
+  }
+  var opt = document.createElement("option");
+  opt.value = "_other";
+  opt.innerHTML = i18n("Other");
+  target_select.appendChild(opt);
+  target_select.onchange = onTargetChanged;
+  document.getElementById("f_href").focus();
+  document.getElementById("f_href").select();
+};
+
+function onOK() {
+  var required = {
+    "f_href": i18n("You must enter the URL where this link points to")
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  // pass data back to the calling window
+  var fields = ["f_href", "f_title", "f_target" ];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = el.value;
+  }
+  if (param.f_target == "_other")
+    param.f_target = document.getElementById("f_other_target").value;
+  __dlg_close(param);
+  return false;
+};
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+};
+
+</script>
+
+<style type="text/css">
+html, body {
+  background: #EEEEEE;
+  color: #000000;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding-bottom: 15px; }
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+table .label { text-align: right; width: 8em; }
+
+.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+letter-spacing: 2px;
+}
+
+#buttons {
+      margin-top: 1em; border-top: 1px solid #999;
+      padding: 2px; text-align: right;
+}
+</style>
+
+</head>
+
+<body onload="Init()">
+
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%" height="400">
+<tr>
+	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #FFFFFF;" valign="top" height="40">
+	
+		<div class="title" style="background: #003366;">Select Page</div>
+	
+		<form name="select_page" class="browser" onsubmit="javascript: document.link.url.value = document.select_page.pages.value; return false">
+			<select name="pages" style="width: 250px; font-family: Arial;">
+				<!-- BEGIN page_list_block -->
+				<option value="{LINK}"{SELECTED}>{TITLE}</option>
+				<!-- END page_list_block -->
+			</select>
+			<input type="submit" name="submit" value="Paste Page Link" style="width: 250px;" />
+			
+		</form>
+		
+	</td>
+	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
+	<td width="420" valign="top" rowspan="2">
+		
+		<div class="title">Insert/Modify Link</div>
+		
+		<form name="link" style="margin: 5px;">
+			
+			<table border="0" style="width: 97%;">
+			  <tr>
+			    <td class="label">URL:</td>
+			    <td><input type="text" name="url" id="f_href" style="width: 100%" /></td>
+			  </tr>
+			  <tr>
+			    <td class="label">Title (tooltip):</td>
+			    <td><input type="text" id="f_title" style="width: 100%" /></td>
+			  </tr>
+			  <tr>
+			    <td class="label">Target:</td>
+			    <td><select id="f_target">
+			      <option value="">None (use implicit)</option>
+			      <option value="_blank">New window (_blank)</option>
+			      <option value="_self">Same frame (_self)</option>
+			      <option value="_top">Top frame (_top)</option>
+			    </select>
+			    <input type="text" name="f_other_target" id="f_other_target" size="10" style="visibility: hidden" />
+			    </td>
+			  </tr>
+			</table>
+			
+			<div id="buttons">
+			  <button type="button" name="ok" onclick="return onOK();">OK</button>
+			  <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+			</div>
+		
+		</form>
+		
+	</td>
+	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
+</tr>
+<tr>
+	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #FFFFFF;" valign="top">
+	
+		<div class="title" style="background: #003366;">Browse Media</div>
+	
+		<form name="browser" action="link.php" method="post" class="browser">
+			<select name="folder" style="width: 250px; font-family: Arial;">
+				<option value="/media">/media</option>
+				<!-- BEGIN dir_list_block -->
+				<option value="{NAME}"{SELECTED}>{NAME}</option>
+				<!-- END dir_list_block -->
+			</select>
+			<input type="submit" name="submit" value="Browse Selected Folder" style="width: 250px;" />
+			
+			<br />
+			
+			<style type="text/css">
+			.browser {
+				padding: 5px;
+				padding-top: 0;
+			}
+			.browser ul, .browser li {
+				margin: 0;
+				padding: 0;
+				display: block;
+				list-style-type: none;
+			}
+			.browser li {
+				padding: 5px 0px 5px 0px;
+			}
+			</style>
+			
+			<iframe src="{WB_URL}/modules/htmlarea/htmlarea/popups/list_media.php?folder={DIRECTORY}&popup={POPUP}" style="width: 245px; height: 320px;"></iframe>
+			
+		</form>
+		
+	</td>
+	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
+</tr>
+<tr height="8">
+	<td colspan="3" style="background-color: #003366;"></td>
+	<td colspan="3" style="background-color: #336699;"></td>
+</tr>
+</table>
+
+</body>
+</html>
+<!-- END main_block -->
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/insert_image.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/insert_image.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/insert_image.html	(revision 103)
@@ -0,0 +1,246 @@
+<!-- BEGIN main_block -->
+<html>
+
+<head>
+  <title>Insert Image</title>
+
+<script type="text/javascript" src="popup.js"></script>
+
+<script type="text/javascript">
+
+window.resizeTo(700, 100);
+
+function Init() {
+  __dlg_init();
+  var param = window.dialogArguments;
+  if (param) {
+      document.getElementById("f_url").value = param["f_url"];
+      document.getElementById("f_alt").value = param["f_alt"];
+      document.getElementById("f_border").value = param["f_border"];
+      document.getElementById("f_align").value = param["f_align"];
+      document.getElementById("f_vert").value = param["f_vert"];
+      document.getElementById("f_horiz").value = param["f_horiz"];
+      window.ipreview.location.replace(param.f_url);
+  }
+  document.getElementById("f_url").focus();
+};
+
+function onOK() {
+  var required = {
+    "f_url": "You must enter the URL"
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  // pass data back to the calling window
+  var fields = ["f_url", "f_alt", "f_align", "f_border",
+                "f_horiz", "f_vert"];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = el.value;
+  }
+  __dlg_close(param);
+  return false;
+};
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+};
+
+function onPreview() {
+  var f_url = document.getElementById("f_url");
+  var url = f_url.value;
+  if (!url) {
+    alert("You have to enter an URL first");
+    f_url.focus();
+    return false;
+  }
+  window.ipreview.location.replace(url);
+  return false;
+};
+</script>
+
+<style type="text/css">
+html, body {
+  background: #EEEEEE;
+  color: #000000;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding: 0px; }
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+form p {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
+.fr { width: 6em; float: left; padding: 2px 5px; text-align: right; }
+fieldset { padding: 0px 10px 5px 5px; }
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+.space { padding: 2px; }
+
+.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+ letter-spacing: 2px;
+}
+form { padding: 0px; margin: 0px; }
+</style>
+
+</head>
+
+<body onload="Init()">
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #FFFFFF;" valign="top">
+	
+		<div class="title" style="background: #003366;">Browse Media</div>
+	
+		<form name="browser" action="insert_image.php" method="post" class="browser">
+			<select name="folder" style="width: 250px; font-family: Arial;">
+				<option value="/media">/media</option>
+				<!-- BEGIN dir_list_block -->
+				<option value="{NAME}"{SELECTED}>{NAME}</option>
+				<!-- END dir_list_block -->
+			</select>
+			<input type="submit" name="submit" value="Browse Selected Folder" style="width: 250px;" />
+			
+			<br />
+			
+			<style type="text/css">
+			.browser {
+				padding: 5px;
+				padding-top: 0;
+			}
+			.browser ul, .browser li {
+				margin: 0;
+				padding: 0;
+				display: block;
+				list-style-type: none;
+			}
+			.browser li {
+				padding: 5px 0px 5px 0px;
+			}
+			</style>
+			
+			<iframe src="{WB_URL}/modules/htmlarea/htmlarea/popups/list_media.php?folder={DIRECTORY}&popup={POPUP}" style="width: 245px; height: 320px;"></iframe>
+			
+		</form>
+		
+	</td>
+	<td style="background-color: #003366;" width="5">&nbsp;&nbsp;</td>
+	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
+	<td width="420" valign="top">
+
+		<div class="title">Insert Image</div>
+		<!--- new stuff --->
+		<form name="insert_image" action="" method="get" style="padding: 5px;">
+		<table border="0" width="100%" style="padding: 0px; margin: 0px">
+		  <tbody>
+		
+		  <tr>
+		    <td style="width: 7em; text-align: right">Image URL:</td>
+		    <td><input type="text" name="url" id="f_url" style="width:74%"
+		      title="Enter the image URL here" />
+		      <button name="preview" onclick="return onPreview();"
+		      title="Preview the image in a new window">Preview</button>
+		    </td>
+		  </tr>
+		  <tr>
+		    <td style="width: 80px; text-align: right">Alternate text:</td>
+		    <td><input type="text" name="alt" id="f_alt" style="width:74%"
+		      title="For browsers that don't support images" /></td>
+		  </tr>
+		
+		  </tbody>
+		</table>
+		
+		<p />
+		
+		<fieldset style="float: left; margin-left: 5px;">
+		<legend>Layout</legend>
+		
+		<div class="space"></div>
+		
+		<div class="fl">Alignment:</div>
+		<select size="1" name="align" id="f_align"
+		  title="Positioning of this image">
+		  <option value=""                             >Not set</option>
+		  <option value="left"                         >Left</option>
+		  <option value="right"                        >Right</option>
+		  <option value="texttop"                      >Texttop</option>
+		  <option value="absmiddle"                    >Absmiddle</option>
+		  <option value="baseline" selected="1"        >Baseline</option>
+		  <option value="absbottom"                    >Absbottom</option>
+		  <option value="bottom"                       >Bottom</option>
+		  <option value="middle"                       >Middle</option>
+		  <option value="top"                          >Top</option>
+		</select>
+		
+		<p />
+		
+		<div class="fl">Border thickness:</div>
+		<input type="text" name="border" id="f_border" size="5"
+		title="Leave empty for no border" />
+		
+		<div class="space"></div>
+		
+		</fieldset>
+		
+		<fieldset style="float:right; margin-right: 5px;">
+		<legend>Spacing</legend>
+		
+		<div class="space"></div>
+		
+		<div class="fr">Horizontal:</div>
+		<input type="text" name="horiz" id="f_horiz" size="5"
+		title="Horizontal padding" />
+		
+		<p />
+		
+		<div class="fr">Vertical:</div>
+		<input type="text" name="vert" id="f_vert" size="5"
+		title="Vertical padding" />
+		
+		<div class="space"></div>
+		
+		</fieldset>
+		<br clear="all" />
+		<table width="100%" style="margin-bottom: 0.2em">
+		 <tr>
+		  <td valign="bottom">
+		    Image Preview:<br />
+		    <iframe name="ipreview" id="ipreview" frameborder="0" style="border : 1px solid gray;" height="200" width="300" src=""></iframe>
+		  </td>
+		  <td valign="bottom" style="text-align: left; padding-right: 5px;">
+		    <button type="button" name="ok" onclick="return onOK();">OK</button><br>
+		    <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+		  </td>
+		 </tr>
+		</table>
+		</form>
+
+	</td>
+	<td style="background-color: #336699;" width="5">&nbsp;&nbsp;</td>
+</tr>
+<tr height="8">
+	<td colspan="3" style="background-color: #003366;"></td>
+	<td colspan="3" style="background-color: #336699;"></td>
+</tr>
+</table>
+
+</body>
+</html>
+<!-- END main_block -->
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/link.php
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/link.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/link.php	(revision 103)
@@ -0,0 +1,118 @@
+<?php
+
+// $Id: link.php 66 2005-09-11 10:19:10Z stefan $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include the config file
+require('../../../../config.php');
+
+// Create new admin object
+require(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify', false);
+
+// Setup the template
+$template = new Template(WB_PATH.'/modules/htmlarea/htmlarea/popups');
+$template->set_file('page', 'link.html');
+$template->set_block('page', 'main_block', 'main');
+
+// Get the directory to browse
+$directory = $admin->get_post('folder');
+if($directory == '') {
+	$directory = '/media';
+}
+// If the directory contains ../ then set it to /media
+if(strstr($directory, '../')) {
+	$directory = '/media';
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Insert values into template
+$template->set_var('WB_URL', WB_URL);
+$template->set_var('POPUP', 'link');
+$template->set_var('DIRECTORY', $directory);
+
+// Get home folder not to show
+$home_folders = get_home_folders();
+
+// Insert dirs into the dir list
+$template->set_block('main_block', 'dir_list_block', 'dir_list');
+foreach(directory_list(WB_PATH.MEDIA_DIRECTORY) AS $name) {
+	$template->set_var('NAME', str_replace(WB_PATH, '', $name));
+	if(!isset($home_folders[str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name)])) {
+		if($directory == str_replace(WB_PATH, '', $name)) {
+			$template->set_var('SELECTED', ' selected');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('dir_list', 'dir_list_block', true);
+	}
+}
+
+// Function to generate page list
+function gen_page_list($parent) {
+	global $template, $database;
+	$get_pages = $database->query("SELECT page_id,menu_title,link,level FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' AND visibility!='deleted' ORDER BY position ASC");
+	while($page = $get_pages->fetchRow()) {
+		$title = $page['menu_title'];
+		// Add leading -'s so we can tell what level a page is at
+		$leading_dashes = '';
+		for($i = 0; $i < $page['level']; $i++) {
+			$leading_dashes .= '- ';
+		}
+		$template->set_var('TITLE', $leading_dashes.' '.$title);
+		$template->set_var('LINK', '[wblink'.$page['page_id'].']');
+		$template->parse('page_list', 'page_list_block', true);
+		gen_page_list($page['page_id']);
+	}
+}
+
+// Get pages and put them into the pages list
+$template->set_block('main_block', 'page_list_block', 'page_list');
+$database = new database();
+$get_pages = $database->query("SELECT page_id,menu_title,link FROM ".TABLE_PREFIX."pages WHERE parent = '0' AND visibility!='deleted' ORDER BY position ASC");
+if($get_pages > 0) {
+	// Add 'Please select...'
+	$template->set_var('TITLE', 'Please select...');
+	$template->set_var('LINK', '');
+	$template->parse('page_list', 'page_list_block', true);
+	// Loop through pages
+	while($page = $get_pages->fetchRow()) {
+		$title = $page['menu_title'];
+		$template->set_var('TITLE', $title);
+		$template->set_var('LINK', '[wblink'.$page['page_id'].']');
+		$template->parse('page_list', 'page_list_block', true);
+		gen_page_list($page['page_id']);
+	}
+} else {
+	$template->set_var('TITLE', 'None found');
+	$template->set_var('LINK', 'None found');
+	$template->parse('page_list', 'page_list_block', false);
+}
+
+// Parse the template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
Index: trunk/wb/modules/htmlarea/htmlarea/popups/select_color.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/select_color.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/select_color.html	(revision 103)
@@ -0,0 +1,347 @@
+<!-- note: this version of the color picker is optimized for IE 5.5+ only -->
+
+<html><head><title>Select Color</title>
+
+<script type="text/javascript" src="popup.js"></script>
+
+<script type="text/javascript">
+
+window.resizeTo(240, 182);
+function _CloseOnEsc() {
+  if (event.keyCode == 27) { window.close(); return; }
+}
+
+function Init() {                                                       // run on page load
+  __dlg_init();    // <!-- this can be found in popup.js -->
+  document.body.onkeypress = _CloseOnEsc;
+
+  var color = window.dialogArguments;
+  color = ValidateColor(color) || '000000';
+  View(color);                                                          // set default color
+}
+
+function View(color) {                  // preview color
+  document.getElementById("ColorPreview").style.backgroundColor = '#' + color;
+  document.getElementById("ColorHex").value = '#' + color;
+}
+
+function Set(string) {                   // select color
+  var color = ValidateColor(string);
+  if (color == null) { alert("Invalid color code: " + string); }        // invalid color
+  else {                                                                // valid color
+    View(color);                          // show selected color
+    __dlg_close(color);
+  }
+}
+
+function ValidateColor(string) {                // return valid color code
+  string = string || '';
+  string = string + "";
+  string = string.toUpperCase();
+  var chars = '0123456789ABCDEF';
+  var out   = '';
+
+  for (var i=0; i<string.length; i++) {             // remove invalid color chars
+    var schar = string.charAt(i);
+    if (chars.indexOf(schar) != -1) { out += schar; }
+  }
+
+  if (out.length != 6) { return null; }            // check length
+  return out;
+}
+
+</script>
+</head>
+<body style="background:ButtonFace; margin:0px; padding:0px" onload="Init()">
+
+<form method="get" style="margin:0px; padding:0px" onSubmit="Set(document.getElementById('ColorHex').value); return false;">
+<table border="0px" cellspacing="0px" cellpadding="4" width="100%">
+ <tr>
+  <td style="background:buttonface" valign=center><div style="background-color: #000000; padding: 1; height: 21px; width: 50px"><div id="ColorPreview" style="height: 100%; width: 100%"></div></div></td>
+  <td style="background:buttonface" valign=center><input type="text" name="ColorHex"
+    id="ColorHex" value="" size=15 style="font-size: 12px"></td>
+  <td style="background:buttonface" width=100%></td>
+ </tr>
+</table>
+</form>
+
+<table border="0" cellspacing="1px" cellpadding="0px" width="100%" bgcolor="#000000" style="cursor: hand;">
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#003300 onMouseOver=View('003300') onClick=Set('003300') height="10px" width="10px"></td>
+<td bgcolor=#006600 onMouseOver=View('006600') onClick=Set('006600') height="10px" width="10px"></td>
+<td bgcolor=#009900 onMouseOver=View('009900') onClick=Set('009900') height="10px" width="10px"></td>
+<td bgcolor=#00CC00 onMouseOver=View('00CC00') onClick=Set('00CC00') height="10px" width="10px"></td>
+<td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td>
+<td bgcolor=#330000 onMouseOver=View('330000') onClick=Set('330000') height="10px" width="10px"></td>
+<td bgcolor=#333300 onMouseOver=View('333300') onClick=Set('333300') height="10px" width="10px"></td>
+<td bgcolor=#336600 onMouseOver=View('336600') onClick=Set('336600') height="10px" width="10px"></td>
+<td bgcolor=#339900 onMouseOver=View('339900') onClick=Set('339900') height="10px" width="10px"></td>
+<td bgcolor=#33CC00 onMouseOver=View('33CC00') onClick=Set('33CC00') height="10px" width="10px"></td>
+<td bgcolor=#33FF00 onMouseOver=View('33FF00') onClick=Set('33FF00') height="10px" width="10px"></td>
+<td bgcolor=#660000 onMouseOver=View('660000') onClick=Set('660000') height="10px" width="10px"></td>
+<td bgcolor=#663300 onMouseOver=View('663300') onClick=Set('663300') height="10px" width="10px"></td>
+<td bgcolor=#666600 onMouseOver=View('666600') onClick=Set('666600') height="10px" width="10px"></td>
+<td bgcolor=#669900 onMouseOver=View('669900') onClick=Set('669900') height="10px" width="10px"></td>
+<td bgcolor=#66CC00 onMouseOver=View('66CC00') onClick=Set('66CC00') height="10px" width="10px"></td>
+<td bgcolor=#66FF00 onMouseOver=View('66FF00') onClick=Set('66FF00') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#000033 onMouseOver=View('000033') onClick=Set('000033') height="10px" width="10px"></td>
+<td bgcolor=#003333 onMouseOver=View('003333') onClick=Set('003333') height="10px" width="10px"></td>
+<td bgcolor=#006633 onMouseOver=View('006633') onClick=Set('006633') height="10px" width="10px"></td>
+<td bgcolor=#009933 onMouseOver=View('009933') onClick=Set('009933') height="10px" width="10px"></td>
+<td bgcolor=#00CC33 onMouseOver=View('00CC33') onClick=Set('00CC33') height="10px" width="10px"></td>
+<td bgcolor=#00FF33 onMouseOver=View('00FF33') onClick=Set('00FF33') height="10px" width="10px"></td>
+<td bgcolor=#330033 onMouseOver=View('330033') onClick=Set('330033') height="10px" width="10px"></td>
+<td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td>
+<td bgcolor=#336633 onMouseOver=View('336633') onClick=Set('336633') height="10px" width="10px"></td>
+<td bgcolor=#339933 onMouseOver=View('339933') onClick=Set('339933') height="10px" width="10px"></td>
+<td bgcolor=#33CC33 onMouseOver=View('33CC33') onClick=Set('33CC33') height="10px" width="10px"></td>
+<td bgcolor=#33FF33 onMouseOver=View('33FF33') onClick=Set('33FF33') height="10px" width="10px"></td>
+<td bgcolor=#660033 onMouseOver=View('660033') onClick=Set('660033') height="10px" width="10px"></td>
+<td bgcolor=#663333 onMouseOver=View('663333') onClick=Set('663333') height="10px" width="10px"></td>
+<td bgcolor=#666633 onMouseOver=View('666633') onClick=Set('666633') height="10px" width="10px"></td>
+<td bgcolor=#669933 onMouseOver=View('669933') onClick=Set('669933') height="10px" width="10px"></td>
+<td bgcolor=#66CC33 onMouseOver=View('66CC33') onClick=Set('66CC33') height="10px" width="10px"></td>
+<td bgcolor=#66FF33 onMouseOver=View('66FF33') onClick=Set('66FF33') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#000066 onMouseOver=View('000066') onClick=Set('000066') height="10px" width="10px"></td>
+<td bgcolor=#003366 onMouseOver=View('003366') onClick=Set('003366') height="10px" width="10px"></td>
+<td bgcolor=#006666 onMouseOver=View('006666') onClick=Set('006666') height="10px" width="10px"></td>
+<td bgcolor=#009966 onMouseOver=View('009966') onClick=Set('009966') height="10px" width="10px"></td>
+<td bgcolor=#00CC66 onMouseOver=View('00CC66') onClick=Set('00CC66') height="10px" width="10px"></td>
+<td bgcolor=#00FF66 onMouseOver=View('00FF66') onClick=Set('00FF66') height="10px" width="10px"></td>
+<td bgcolor=#330066 onMouseOver=View('330066') onClick=Set('330066') height="10px" width="10px"></td>
+<td bgcolor=#333366 onMouseOver=View('333366') onClick=Set('333366') height="10px" width="10px"></td>
+<td bgcolor=#336666 onMouseOver=View('336666') onClick=Set('336666') height="10px" width="10px"></td>
+<td bgcolor=#339966 onMouseOver=View('339966') onClick=Set('339966') height="10px" width="10px"></td>
+<td bgcolor=#33CC66 onMouseOver=View('33CC66') onClick=Set('33CC66') height="10px" width="10px"></td>
+<td bgcolor=#33FF66 onMouseOver=View('33FF66') onClick=Set('33FF66') height="10px" width="10px"></td>
+<td bgcolor=#660066 onMouseOver=View('660066') onClick=Set('660066') height="10px" width="10px"></td>
+<td bgcolor=#663366 onMouseOver=View('663366') onClick=Set('663366') height="10px" width="10px"></td>
+<td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td>
+<td bgcolor=#669966 onMouseOver=View('669966') onClick=Set('669966') height="10px" width="10px"></td>
+<td bgcolor=#66CC66 onMouseOver=View('66CC66') onClick=Set('66CC66') height="10px" width="10px"></td>
+<td bgcolor=#66FF66 onMouseOver=View('66FF66') onClick=Set('66FF66') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#000099 onMouseOver=View('000099') onClick=Set('000099') height="10px" width="10px"></td>
+<td bgcolor=#003399 onMouseOver=View('003399') onClick=Set('003399') height="10px" width="10px"></td>
+<td bgcolor=#006699 onMouseOver=View('006699') onClick=Set('006699') height="10px" width="10px"></td>
+<td bgcolor=#009999 onMouseOver=View('009999') onClick=Set('009999') height="10px" width="10px"></td>
+<td bgcolor=#00CC99 onMouseOver=View('00CC99') onClick=Set('00CC99') height="10px" width="10px"></td>
+<td bgcolor=#00FF99 onMouseOver=View('00FF99') onClick=Set('00FF99') height="10px" width="10px"></td>
+<td bgcolor=#330099 onMouseOver=View('330099') onClick=Set('330099') height="10px" width="10px"></td>
+<td bgcolor=#333399 onMouseOver=View('333399') onClick=Set('333399') height="10px" width="10px"></td>
+<td bgcolor=#336699 onMouseOver=View('336699') onClick=Set('336699') height="10px" width="10px"></td>
+<td bgcolor=#339999 onMouseOver=View('339999') onClick=Set('339999') height="10px" width="10px"></td>
+<td bgcolor=#33CC99 onMouseOver=View('33CC99') onClick=Set('33CC99') height="10px" width="10px"></td>
+<td bgcolor=#33FF99 onMouseOver=View('33FF99') onClick=Set('33FF99') height="10px" width="10px"></td>
+<td bgcolor=#660099 onMouseOver=View('660099') onClick=Set('660099') height="10px" width="10px"></td>
+<td bgcolor=#663399 onMouseOver=View('663399') onClick=Set('663399') height="10px" width="10px"></td>
+<td bgcolor=#666699 onMouseOver=View('666699') onClick=Set('666699') height="10px" width="10px"></td>
+<td bgcolor=#669999 onMouseOver=View('669999') onClick=Set('669999') height="10px" width="10px"></td>
+<td bgcolor=#66CC99 onMouseOver=View('66CC99') onClick=Set('66CC99') height="10px" width="10px"></td>
+<td bgcolor=#66FF99 onMouseOver=View('66FF99') onClick=Set('66FF99') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#0000CC onMouseOver=View('0000CC') onClick=Set('0000CC') height="10px" width="10px"></td>
+<td bgcolor=#0033CC onMouseOver=View('0033CC') onClick=Set('0033CC') height="10px" width="10px"></td>
+<td bgcolor=#0066CC onMouseOver=View('0066CC') onClick=Set('0066CC') height="10px" width="10px"></td>
+<td bgcolor=#0099CC onMouseOver=View('0099CC') onClick=Set('0099CC') height="10px" width="10px"></td>
+<td bgcolor=#00CCCC onMouseOver=View('00CCCC') onClick=Set('00CCCC') height="10px" width="10px"></td>
+<td bgcolor=#00FFCC onMouseOver=View('00FFCC') onClick=Set('00FFCC') height="10px" width="10px"></td>
+<td bgcolor=#3300CC onMouseOver=View('3300CC') onClick=Set('3300CC') height="10px" width="10px"></td>
+<td bgcolor=#3333CC onMouseOver=View('3333CC') onClick=Set('3333CC') height="10px" width="10px"></td>
+<td bgcolor=#3366CC onMouseOver=View('3366CC') onClick=Set('3366CC') height="10px" width="10px"></td>
+<td bgcolor=#3399CC onMouseOver=View('3399CC') onClick=Set('3399CC') height="10px" width="10px"></td>
+<td bgcolor=#33CCCC onMouseOver=View('33CCCC') onClick=Set('33CCCC') height="10px" width="10px"></td>
+<td bgcolor=#33FFCC onMouseOver=View('33FFCC') onClick=Set('33FFCC') height="10px" width="10px"></td>
+<td bgcolor=#6600CC onMouseOver=View('6600CC') onClick=Set('6600CC') height="10px" width="10px"></td>
+<td bgcolor=#6633CC onMouseOver=View('6633CC') onClick=Set('6633CC') height="10px" width="10px"></td>
+<td bgcolor=#6666CC onMouseOver=View('6666CC') onClick=Set('6666CC') height="10px" width="10px"></td>
+<td bgcolor=#6699CC onMouseOver=View('6699CC') onClick=Set('6699CC') height="10px" width="10px"></td>
+<td bgcolor=#66CCCC onMouseOver=View('66CCCC') onClick=Set('66CCCC') height="10px" width="10px"></td>
+<td bgcolor=#66FFCC onMouseOver=View('66FFCC') onClick=Set('66FFCC') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td>
+<td bgcolor=#0033FF onMouseOver=View('0033FF') onClick=Set('0033FF') height="10px" width="10px"></td>
+<td bgcolor=#0066FF onMouseOver=View('0066FF') onClick=Set('0066FF') height="10px" width="10px"></td>
+<td bgcolor=#0099FF onMouseOver=View('0099FF') onClick=Set('0099FF') height="10px" width="10px"></td>
+<td bgcolor=#00CCFF onMouseOver=View('00CCFF') onClick=Set('00CCFF') height="10px" width="10px"></td>
+<td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td>
+<td bgcolor=#3300FF onMouseOver=View('3300FF') onClick=Set('3300FF') height="10px" width="10px"></td>
+<td bgcolor=#3333FF onMouseOver=View('3333FF') onClick=Set('3333FF') height="10px" width="10px"></td>
+<td bgcolor=#3366FF onMouseOver=View('3366FF') onClick=Set('3366FF') height="10px" width="10px"></td>
+<td bgcolor=#3399FF onMouseOver=View('3399FF') onClick=Set('3399FF') height="10px" width="10px"></td>
+<td bgcolor=#33CCFF onMouseOver=View('33CCFF') onClick=Set('33CCFF') height="10px" width="10px"></td>
+<td bgcolor=#33FFFF onMouseOver=View('33FFFF') onClick=Set('33FFFF') height="10px" width="10px"></td>
+<td bgcolor=#6600FF onMouseOver=View('6600FF') onClick=Set('6600FF') height="10px" width="10px"></td>
+<td bgcolor=#6633FF onMouseOver=View('6633FF') onClick=Set('6633FF') height="10px" width="10px"></td>
+<td bgcolor=#6666FF onMouseOver=View('6666FF') onClick=Set('6666FF') height="10px" width="10px"></td>
+<td bgcolor=#6699FF onMouseOver=View('6699FF') onClick=Set('6699FF') height="10px" width="10px"></td>
+<td bgcolor=#66CCFF onMouseOver=View('66CCFF') onClick=Set('66CCFF') height="10px" width="10px"></td>
+<td bgcolor=#66FFFF onMouseOver=View('66FFFF') onClick=Set('66FFFF') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#990000 onMouseOver=View('990000') onClick=Set('990000') height="10px" width="10px"></td>
+<td bgcolor=#993300 onMouseOver=View('993300') onClick=Set('993300') height="10px" width="10px"></td>
+<td bgcolor=#996600 onMouseOver=View('996600') onClick=Set('996600') height="10px" width="10px"></td>
+<td bgcolor=#999900 onMouseOver=View('999900') onClick=Set('999900') height="10px" width="10px"></td>
+<td bgcolor=#99CC00 onMouseOver=View('99CC00') onClick=Set('99CC00') height="10px" width="10px"></td>
+<td bgcolor=#99FF00 onMouseOver=View('99FF00') onClick=Set('99FF00') height="10px" width="10px"></td>
+<td bgcolor=#CC0000 onMouseOver=View('CC0000') onClick=Set('CC0000') height="10px" width="10px"></td>
+<td bgcolor=#CC3300 onMouseOver=View('CC3300') onClick=Set('CC3300') height="10px" width="10px"></td>
+<td bgcolor=#CC6600 onMouseOver=View('CC6600') onClick=Set('CC6600') height="10px" width="10px"></td>
+<td bgcolor=#CC9900 onMouseOver=View('CC9900') onClick=Set('CC9900') height="10px" width="10px"></td>
+<td bgcolor=#CCCC00 onMouseOver=View('CCCC00') onClick=Set('CCCC00') height="10px" width="10px"></td>
+<td bgcolor=#CCFF00 onMouseOver=View('CCFF00') onClick=Set('CCFF00') height="10px" width="10px"></td>
+<td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td>
+<td bgcolor=#FF3300 onMouseOver=View('FF3300') onClick=Set('FF3300') height="10px" width="10px"></td>
+<td bgcolor=#FF6600 onMouseOver=View('FF6600') onClick=Set('FF6600') height="10px" width="10px"></td>
+<td bgcolor=#FF9900 onMouseOver=View('FF9900') onClick=Set('FF9900') height="10px" width="10px"></td>
+<td bgcolor=#FFCC00 onMouseOver=View('FFCC00') onClick=Set('FFCC00') height="10px" width="10px"></td>
+<td bgcolor=#FFFF00 onMouseOver=View('FFFF00') onClick=Set('FFFF00') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#990033 onMouseOver=View('990033') onClick=Set('990033') height="10px" width="10px"></td>
+<td bgcolor=#993333 onMouseOver=View('993333') onClick=Set('993333') height="10px" width="10px"></td>
+<td bgcolor=#996633 onMouseOver=View('996633') onClick=Set('996633') height="10px" width="10px"></td>
+<td bgcolor=#999933 onMouseOver=View('999933') onClick=Set('999933') height="10px" width="10px"></td>
+<td bgcolor=#99CC33 onMouseOver=View('99CC33') onClick=Set('99CC33') height="10px" width="10px"></td>
+<td bgcolor=#99FF33 onMouseOver=View('99FF33') onClick=Set('99FF33') height="10px" width="10px"></td>
+<td bgcolor=#CC0033 onMouseOver=View('CC0033') onClick=Set('CC0033') height="10px" width="10px"></td>
+<td bgcolor=#CC3333 onMouseOver=View('CC3333') onClick=Set('CC3333') height="10px" width="10px"></td>
+<td bgcolor=#CC6633 onMouseOver=View('CC6633') onClick=Set('CC6633') height="10px" width="10px"></td>
+<td bgcolor=#CC9933 onMouseOver=View('CC9933') onClick=Set('CC9933') height="10px" width="10px"></td>
+<td bgcolor=#CCCC33 onMouseOver=View('CCCC33') onClick=Set('CCCC33') height="10px" width="10px"></td>
+<td bgcolor=#CCFF33 onMouseOver=View('CCFF33') onClick=Set('CCFF33') height="10px" width="10px"></td>
+<td bgcolor=#FF0033 onMouseOver=View('FF0033') onClick=Set('FF0033') height="10px" width="10px"></td>
+<td bgcolor=#FF3333 onMouseOver=View('FF3333') onClick=Set('FF3333') height="10px" width="10px"></td>
+<td bgcolor=#FF6633 onMouseOver=View('FF6633') onClick=Set('FF6633') height="10px" width="10px"></td>
+<td bgcolor=#FF9933 onMouseOver=View('FF9933') onClick=Set('FF9933') height="10px" width="10px"></td>
+<td bgcolor=#FFCC33 onMouseOver=View('FFCC33') onClick=Set('FFCC33') height="10px" width="10px"></td>
+<td bgcolor=#FFFF33 onMouseOver=View('FFFF33') onClick=Set('FFFF33') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#990066 onMouseOver=View('990066') onClick=Set('990066') height="10px" width="10px"></td>
+<td bgcolor=#993366 onMouseOver=View('993366') onClick=Set('993366') height="10px" width="10px"></td>
+<td bgcolor=#996666 onMouseOver=View('996666') onClick=Set('996666') height="10px" width="10px"></td>
+<td bgcolor=#999966 onMouseOver=View('999966') onClick=Set('999966') height="10px" width="10px"></td>
+<td bgcolor=#99CC66 onMouseOver=View('99CC66') onClick=Set('99CC66') height="10px" width="10px"></td>
+<td bgcolor=#99FF66 onMouseOver=View('99FF66') onClick=Set('99FF66') height="10px" width="10px"></td>
+<td bgcolor=#CC0066 onMouseOver=View('CC0066') onClick=Set('CC0066') height="10px" width="10px"></td>
+<td bgcolor=#CC3366 onMouseOver=View('CC3366') onClick=Set('CC3366') height="10px" width="10px"></td>
+<td bgcolor=#CC6666 onMouseOver=View('CC6666') onClick=Set('CC6666') height="10px" width="10px"></td>
+<td bgcolor=#CC9966 onMouseOver=View('CC9966') onClick=Set('CC9966') height="10px" width="10px"></td>
+<td bgcolor=#CCCC66 onMouseOver=View('CCCC66') onClick=Set('CCCC66') height="10px" width="10px"></td>
+<td bgcolor=#CCFF66 onMouseOver=View('CCFF66') onClick=Set('CCFF66') height="10px" width="10px"></td>
+<td bgcolor=#FF0066 onMouseOver=View('FF0066') onClick=Set('FF0066') height="10px" width="10px"></td>
+<td bgcolor=#FF3366 onMouseOver=View('FF3366') onClick=Set('FF3366') height="10px" width="10px"></td>
+<td bgcolor=#FF6666 onMouseOver=View('FF6666') onClick=Set('FF6666') height="10px" width="10px"></td>
+<td bgcolor=#FF9966 onMouseOver=View('FF9966') onClick=Set('FF9966') height="10px" width="10px"></td>
+<td bgcolor=#FFCC66 onMouseOver=View('FFCC66') onClick=Set('FFCC66') height="10px" width="10px"></td>
+<td bgcolor=#FFFF66 onMouseOver=View('FFFF66') onClick=Set('FFFF66') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#FFFF00 onMouseOver=View('FFFF00') onClick=Set('FFFF00') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#990099 onMouseOver=View('990099') onClick=Set('990099') height="10px" width="10px"></td>
+<td bgcolor=#993399 onMouseOver=View('993399') onClick=Set('993399') height="10px" width="10px"></td>
+<td bgcolor=#996699 onMouseOver=View('996699') onClick=Set('996699') height="10px" width="10px"></td>
+<td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td>
+<td bgcolor=#99CC99 onMouseOver=View('99CC99') onClick=Set('99CC99') height="10px" width="10px"></td>
+<td bgcolor=#99FF99 onMouseOver=View('99FF99') onClick=Set('99FF99') height="10px" width="10px"></td>
+<td bgcolor=#CC0099 onMouseOver=View('CC0099') onClick=Set('CC0099') height="10px" width="10px"></td>
+<td bgcolor=#CC3399 onMouseOver=View('CC3399') onClick=Set('CC3399') height="10px" width="10px"></td>
+<td bgcolor=#CC6699 onMouseOver=View('CC6699') onClick=Set('CC6699') height="10px" width="10px"></td>
+<td bgcolor=#CC9999 onMouseOver=View('CC9999') onClick=Set('CC9999') height="10px" width="10px"></td>
+<td bgcolor=#CCCC99 onMouseOver=View('CCCC99') onClick=Set('CCCC99') height="10px" width="10px"></td>
+<td bgcolor=#CCFF99 onMouseOver=View('CCFF99') onClick=Set('CCFF99') height="10px" width="10px"></td>
+<td bgcolor=#FF0099 onMouseOver=View('FF0099') onClick=Set('FF0099') height="10px" width="10px"></td>
+<td bgcolor=#FF3399 onMouseOver=View('FF3399') onClick=Set('FF3399') height="10px" width="10px"></td>
+<td bgcolor=#FF6699 onMouseOver=View('FF6699') onClick=Set('FF6699') height="10px" width="10px"></td>
+<td bgcolor=#FF9999 onMouseOver=View('FF9999') onClick=Set('FF9999') height="10px" width="10px"></td>
+<td bgcolor=#FFCC99 onMouseOver=View('FFCC99') onClick=Set('FFCC99') height="10px" width="10px"></td>
+<td bgcolor=#FFFF99 onMouseOver=View('FFFF99') onClick=Set('FFFF99') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#9900CC onMouseOver=View('9900CC') onClick=Set('9900CC') height="10px" width="10px"></td>
+<td bgcolor=#9933CC onMouseOver=View('9933CC') onClick=Set('9933CC') height="10px" width="10px"></td>
+<td bgcolor=#9966CC onMouseOver=View('9966CC') onClick=Set('9966CC') height="10px" width="10px"></td>
+<td bgcolor=#9999CC onMouseOver=View('9999CC') onClick=Set('9999CC') height="10px" width="10px"></td>
+<td bgcolor=#99CCCC onMouseOver=View('99CCCC') onClick=Set('99CCCC') height="10px" width="10px"></td>
+<td bgcolor=#99FFCC onMouseOver=View('99FFCC') onClick=Set('99FFCC') height="10px" width="10px"></td>
+<td bgcolor=#CC00CC onMouseOver=View('CC00CC') onClick=Set('CC00CC') height="10px" width="10px"></td>
+<td bgcolor=#CC33CC onMouseOver=View('CC33CC') onClick=Set('CC33CC') height="10px" width="10px"></td>
+<td bgcolor=#CC66CC onMouseOver=View('CC66CC') onClick=Set('CC66CC') height="10px" width="10px"></td>
+<td bgcolor=#CC99CC onMouseOver=View('CC99CC') onClick=Set('CC99CC') height="10px" width="10px"></td>
+<td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td>
+<td bgcolor=#CCFFCC onMouseOver=View('CCFFCC') onClick=Set('CCFFCC') height="10px" width="10px"></td>
+<td bgcolor=#FF00CC onMouseOver=View('FF00CC') onClick=Set('FF00CC') height="10px" width="10px"></td>
+<td bgcolor=#FF33CC onMouseOver=View('FF33CC') onClick=Set('FF33CC') height="10px" width="10px"></td>
+<td bgcolor=#FF66CC onMouseOver=View('FF66CC') onClick=Set('FF66CC') height="10px" width="10px"></td>
+<td bgcolor=#FF99CC onMouseOver=View('FF99CC') onClick=Set('FF99CC') height="10px" width="10px"></td>
+<td bgcolor=#FFCCCC onMouseOver=View('FFCCCC') onClick=Set('FFCCCC') height="10px" width="10px"></td>
+<td bgcolor=#FFFFCC onMouseOver=View('FFFFCC') onClick=Set('FFFFCC') height="10px" width="10px"></td>
+</tr>
+<tr>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#FF00FF onMouseOver=View('FF00FF') onClick=Set('FF00FF') height="10px" width="10px"></td>
+<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td>
+<td bgcolor=#9900FF onMouseOver=View('9900FF') onClick=Set('9900FF') height="10px" width="10px"></td>
+<td bgcolor=#9933FF onMouseOver=View('9933FF') onClick=Set('9933FF') height="10px" width="10px"></td>
+<td bgcolor=#9966FF onMouseOver=View('9966FF') onClick=Set('9966FF') height="10px" width="10px"></td>
+<td bgcolor=#9999FF onMouseOver=View('9999FF') onClick=Set('9999FF') height="10px" width="10px"></td>
+<td bgcolor=#99CCFF onMouseOver=View('99CCFF') onClick=Set('99CCFF') height="10px" width="10px"></td>
+<td bgcolor=#99FFFF onMouseOver=View('99FFFF') onClick=Set('99FFFF') height="10px" width="10px"></td>
+<td bgcolor=#CC00FF onMouseOver=View('CC00FF') onClick=Set('CC00FF') height="10px" width="10px"></td>
+<td bgcolor=#CC33FF onMouseOver=View('CC33FF') onClick=Set('CC33FF') height="10px" width="10px"></td>
+<td bgcolor=#CC66FF onMouseOver=View('CC66FF') onClick=Set('CC66FF') height="10px" width="10px"></td>
+<td bgcolor=#CC99FF onMouseOver=View('CC99FF') onClick=Set('CC99FF') height="10px" width="10px"></td>
+<td bgcolor=#CCCCFF onMouseOver=View('CCCCFF') onClick=Set('CCCCFF') height="10px" width="10px"></td>
+<td bgcolor=#CCFFFF onMouseOver=View('CCFFFF') onClick=Set('CCFFFF') height="10px" width="10px"></td>
+<td bgcolor=#FF00FF onMouseOver=View('FF00FF') onClick=Set('FF00FF') height="10px" width="10px"></td>
+<td bgcolor=#FF33FF onMouseOver=View('FF33FF') onClick=Set('FF33FF') height="10px" width="10px"></td>
+<td bgcolor=#FF66FF onMouseOver=View('FF66FF') onClick=Set('FF66FF') height="10px" width="10px"></td>
+<td bgcolor=#FF99FF onMouseOver=View('FF99FF') onClick=Set('FF99FF') height="10px" width="10px"></td>
+<td bgcolor=#FFCCFF onMouseOver=View('FFCCFF') onClick=Set('FFCCFF') height="10px" width="10px"></td>
+<td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td>
+</tr>
+</table>
+
+</body></html>
Index: trunk/wb/modules/htmlarea/htmlarea/popups/old-fullscreen.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/old-fullscreen.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/old-fullscreen.html	(revision 103)
@@ -0,0 +1,131 @@
+<html>
+<head><title>Fullscreen Editor</title>
+<style type="text/css"> body {	margin: 0px; border: 0px; background-color: buttonface; } </style>
+
+<script>
+
+// if we pass the "window" object as a argument and then set opener to
+// equal that we can refer to dialogWindows and popupWindows the same way
+if (window.dialogArguments) { opener = window.dialogArguments; }
+
+var _editor_url = "../";
+document.write('<scr'+'ipt src="' +_editor_url+ 'editor.js" language="Javascript1.2"></scr'+'ipt>');
+
+var parent_objname = location.search.substring(1,location.search.length);  // parent editor objname
+var parent_config  = opener.document.all[parent_objname].config;
+
+var config         = cloneObject( parent_config );
+var objname        = 'editor'; // name of this editor
+
+//  DOMViewerObj = config;
+//  DOMViewerName = 'config';
+//  window.open('/innerHTML/domviewer.htm');  
+
+/* ---------------------------------------------------------------------- *\
+  Function    : 
+  Description : 
+\* ---------------------------------------------------------------------- */
+
+function _CloseOnEsc() {
+  if (event.keyCode == 27) {
+    update_parent();
+    window.close();
+    return;
+  }
+}
+
+/* ---------------------------------------------------------------------- *\
+  Function    : cloneObject
+  Description : copy an object by value instead of by reference
+  Usage       : var newObj = cloneObject(oldObj);
+\* ---------------------------------------------------------------------- */
+
+function cloneObject(obj) {
+  var newObj          = new Object; 
+
+  // check for array objects
+  if (obj.constructor.toString().indexOf('function Array(') == 1) {
+    newObj = obj.constructor();
+  }
+
+  for (var n in obj) {
+    var node = obj[n];
+    if (typeof node == 'object') { newObj[n] = cloneObject(node); }
+    else                         { newObj[n] = node; }
+  }
+  
+  return newObj;
+}
+
+/* ---------------------------------------------------------------------- *\
+  Function    : resize_editor
+  Description : resize the editor when the user resizes the popup
+\* ---------------------------------------------------------------------- */
+
+function resize_editor() {  // resize editor to fix window
+  var editor = document.all['_editor_editor'];
+
+  newWidth  = document.body.offsetWidth;
+  newHeight = document.body.offsetHeight - editor.offsetTop;
+
+  if (newWidth < 0) { newWidth = 0; }
+  if (newHeight < 0) { newHeight = 0; }
+
+  editor.style.width  = newWidth;
+  editor.style.height = newHeight;
+}
+
+/* ---------------------------------------------------------------------- *\
+  Function    : init
+  Description : run this code on page load
+\* ---------------------------------------------------------------------- */
+
+function init() {
+  // change maximize button to minimize button
+  config.btnList["popupeditor"] = ['popupeditor', 'Minimize Editor',  'update_parent(); window.close();', 'fullscreen_minimize.gif'];
+
+  // set htmlmode button to refer to THIS editor
+  config.btnList["htmlmode"]    = ['HtmlMode',    'View HTML Source', 'editor_setmode(\'editor\')',  'ed_html.gif'];
+
+  // change image url to be relative to current path
+  config.imgURL = "../images/";
+  
+  // generate editor and resize it
+  editor_generate('editor', config);
+  resize_editor();
+
+  // switch mode if needed
+  if (parent_config.mode == 'textedit') { editor_setmode(objname, 'textedit'); }
+
+  // set child window contents
+  var parentHTML = opener.editor_getHTML(parent_objname);
+  editor_setHTML(objname, parentHTML);
+
+  // continuously update parent editor window
+  window.setInterval(update_parent, 333);
+
+  // setup event handlers
+  document.body.onkeypress = _CloseOnEsc;
+  window.onresize = resize_editor;
+}
+
+/* ---------------------------------------------------------------------- *\
+  Function    : update_parent
+  Description : update parent window editor field with contents from child window
+\* ---------------------------------------------------------------------- */
+
+function update_parent() {
+  var childHTML = editor_getHTML(objname);
+  opener.editor_setHTML(parent_objname, childHTML);
+}
+
+
+</script>
+</head>
+<body scroll="no" onload="init()" onunload="update_parent()">
+
+<div style="margin: 0 0 0 0; border-width: 1; border-style: solid; border-color: threedshadow threedhighlight threedhighlight threedshadow; "></div>
+
+<textarea name="editor" style="width:100%; height:300px"></textarea><br>
+
+</body></html>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/blank.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/blank.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/blank.html	(revision 103)
@@ -0,0 +1,2 @@
+<html>
+</html>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/custom2.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/custom2.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/custom2.html	(revision 103)
@@ -0,0 +1,35 @@
+<html style="width:300px; Height: 60px;">
+ <head>
+  <title>Select Phrase</title>
+<script language="javascript">
+
+var myTitle = window.dialogArguments;
+document.title = myTitle;
+
+
+function returnSelected() {
+  var idx  = document.all.textPulldown.selectedIndex;
+  var text = document.all.textPulldown[idx].text;
+
+  window.returnValue = text;          // set return value
+  window.close();                     // close dialog
+}
+
+</script>
+</head>
+<body bgcolor="#FFFFFF" topmargin=15 leftmargin=0>
+
+<form method=get onSubmit="Set(document.all.ColorHex.value); return false;">
+<div align=center>
+
+<select name="textPulldown">
+<option>The quick brown</option>
+<option>fox jumps over</option>
+<option>the lazy dog.</option>
+</select>
+
+<input type="button" value=" Go " onClick="returnSelected()">
+
+</div>
+</form>
+</body></html>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/list_media.php
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/list_media.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/list_media.php	(revision 103)
@@ -0,0 +1,114 @@
+<?php
+
+// $Id: list_media.php 10 2005-09-04 08:59:31Z ryan $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include the config file
+require('../../../../config.php');
+
+// Create new admin object
+require(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify', false);
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get popup type
+$popup = $admin->get_get('popup');
+if($popup == 'image') {
+	$popup = 'insert_image';
+} elseif($popup != 'link') {
+	$popup = 'link';
+}
+
+// Get the directory to browse
+$directory = $admin->get_get('folder');
+if($directory == '') {
+	$directory = '/media';
+}
+// If the directory contains ../ then set it to /media
+if(strstr($directory, '../')) {
+	$directory = '/media';
+}
+
+// Insert files into the file list
+$file_list = array();
+foreach(file_list(WB_PATH.$directory, array('index.php')) AS $name) {
+	$filename = str_replace(WB_PATH.$directory.'/', '', $name);
+	$file_list[] = array('name' => basename($name), 'url' => WB_URL.$directory.'/'.$filename);
+}
+
+?>
+<!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" xml:lang="en" lang="en">
+<head>
+<title>Browse Media</title>
+<style type="text/css">
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+	padding: 10px;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #0000FF;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: underline;
+	color: #0000FF;
+}
+ul, li {
+	margin: 0;
+	padding: 0;
+	display: block;
+	list-style-type: none;
+}
+li {
+	padding: 5px 0px 5px 0px;
+}
+</style>
+</head>
+<body>
+<?php
+
+// If list is an empty array, then say that no files are in the current dir
+if($file_list == array()) {
+	echo 'The selected folder is empty';
+} else {
+	echo '<ul>';
+	foreach($file_list AS $file) {
+		?>
+			<li><a href="#" onclick="javascript: window.parent.document.<?php echo $popup; ?>.url.value = '<?php echo $file['url']; ?>';"><?php echo $file['name']; ?></a></li>
+		<?php
+	}
+	echo '</ul>';
+}
+
+?>
+</body>
+</html>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/editor_help.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/editor_help.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/editor_help.html	(revision 103)
@@ -0,0 +1,16 @@
+<html>
+ <head>
+  <title>Editor Help</title>
+  <style>
+    body, td, p, div { font-family: arial; font-size: x-small; }
+  </style>
+ </head>
+<body>
+
+<h2>Editor Help<hr></h2>
+
+Todo...
+
+
+</body>
+</html>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/insert_table.php
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/insert_table.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/insert_table.php	(revision 103)
@@ -0,0 +1,174 @@
+<html>
+
+<head>
+  <title>Insert Table</title>
+
+<script type="text/javascript" src="popup.js"></script>
+
+<script type="text/javascript">
+
+window.resizeTo(400, 100);
+
+function Init() {
+  __dlg_init();
+  document.getElementById("f_rows").focus();
+};
+
+function onOK() {
+  var required = {
+    "f_rows": "You must enter a number of rows",
+    "f_cols": "You must enter a number of columns"
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  var fields = ["f_rows", "f_cols", "f_width", "f_unit",
+                "f_align", "f_border", "f_spacing", "f_padding"];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = el.value;
+  }
+  __dlg_close(param);
+  return false;
+};
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+};
+
+</script>
+
+<style type="text/css">
+html, body {
+  background: #EEEEEE;
+  color: #000000;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding: 0; }
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+form p {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
+.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
+fieldset { padding: 0px 10px 5px 5px; }
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+.space { padding: 2px; }
+
+.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+letter-spacing: 2px;
+}
+form { padding: 0px; margin: 0px; }
+</style>
+
+</head>
+
+<body onload="Init()">
+
+<div class="title">Insert Table</div>
+
+<form action="" method="get">
+<table border="0" style="padding: 0px; margin: 0px">
+  <tbody>
+
+  <tr>
+    <td style="width: 4em; text-align: right">Rows:</td>
+    <td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
+    <td></td>
+    <td></td>
+    <td></td>
+  </tr>
+  <tr>
+    <td style="width: 4em; text-align: right">Cols:</td>
+    <td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
+    <td style="width: 4em; text-align: right">Width:</td>
+    <td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
+    <td><select size="1" name="unit" id="f_unit" title="Width unit">
+      <option value="%" selected="1"  >Percent</option>
+      <option value="px"              >Pixels</option>
+      <option value="em"              >Em</option>
+    </select></td>
+  </tr>
+
+  </tbody>
+</table>
+
+<p />
+
+<fieldset style="float: left; margin-left: 5px;">
+<legend>Layout</legend>
+
+<div class="space"></div>
+
+<div class="fl">Alignment:</div>
+<select size="1" name="align" id="f_align"
+  title="Positioning of this image">
+  <option value="" selected="1"                >Not set</option>
+  <option value="left"                         >Left</option>
+  <option value="right"                        >Right</option>
+  <option value="texttop"                      >Texttop</option>
+  <option value="absmiddle"                    >Absmiddle</option>
+  <option value="baseline"                     >Baseline</option>
+  <option value="absbottom"                    >Absbottom</option>
+  <option value="bottom"                       >Bottom</option>
+  <option value="middle"                       >Middle</option>
+  <option value="top"                          >Top</option>
+</select>
+
+<p />
+
+<div class="fl">Border thickness:</div>
+<input type="text" name="border" id="f_border" size="5" value="1"
+title="Leave empty for no border" />
+<!--
+<p />
+
+<div class="fl">Collapse borders:</div>
+<input type="checkbox" name="collapse" id="f_collapse" />
+-->
+<div class="space"></div>
+
+</fieldset>
+
+<fieldset style="float:right; margin-right: 5px;">
+<legend>Spacing</legend>
+
+<div class="space"></div>
+
+<div class="fr">Cell spacing:</div>
+<input type="text" name="spacing" id="f_spacing" size="5" value="1"
+title="Space between adjacent cells" />
+
+<p />
+
+<div class="fr">Cell padding:</div>
+<input type="text" name="padding" id="f_padding" size="5" value="1"
+title="Space between content and border in cell" />
+
+<div class="space"></div>
+
+</fieldset>
+
+<div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;">
+<button type="button" name="ok" onclick="return onOK();">OK</button>
+<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+</div>
+
+</form>
+
+</body>
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/popups/fullscreen.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/fullscreen.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/fullscreen.html	(revision 103)
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html>
+  <head>
+    <title>Fullscreen HTMLArea</title>
+    <script type="text/javascript">
+      _editor_url = window.opener._editor_url;
+      _editor_lang = window.opener._editor_lang;
+      var BASE = window.opener.document.baseURI || window.opener.document.URL;
+      var head = document.getElementsByTagName("head")[0];
+      var base = document.createElement("base");
+      base.href = BASE;
+      head.appendChild(base);
+    </script>
+
+    <script type="text/javascript" src="../htmlarea.js"></script>
+
+    <script type="text/javascript">
+	// load HTMLArea scripts that are present in the opener frame
+	var scripts = window.opener.HTMLArea._scripts;
+	for (var i = 4; i < scripts.length; ++i) {
+           document.write("<scr" + "ipt type='text/javascript' src='" + scripts[i] + "'></scr" + "ipt>");
+        }
+    </script>
+
+    <!-- browser takes a coffee break here -->
+    <script type="text/javascript">
+var parent_object  = null;
+var editor	   = null;	// to be initialized later [ function init() ]
+
+/* ---------------------------------------------------------------------- *\
+   Function    : 
+   Description : 
+\* ---------------------------------------------------------------------- */
+
+function _CloseOnEsc(ev) {
+	ev || (ev = window.event);
+	if (ev.keyCode == 27) {
+		// update_parent();
+		window.close();
+		return;
+	}
+}
+
+/* ---------------------------------------------------------------------- *\
+   Function    : resize_editor
+   Description : resize the editor when the user resizes the popup
+\* ---------------------------------------------------------------------- */
+
+function resize_editor() {  // resize editor to fix window
+	var newHeight;
+	if (document.all) {
+		// IE
+		newHeight = document.body.offsetHeight - editor._toolbar.offsetHeight;
+		if (newHeight < 0) { newHeight = 0; }
+	} else {
+		// Gecko
+		newHeight = window.innerHeight - editor._toolbar.offsetHeight;
+	}
+	if (editor.config.statusBar) {
+		newHeight -= editor._statusBar.offsetHeight;
+	}
+	editor._textArea.style.height = editor._iframe.style.height = newHeight + "px";
+}
+
+/* ---------------------------------------------------------------------- *\
+   Function    : init
+   Description : run this code on page load
+\* ---------------------------------------------------------------------- */
+
+function init() {
+	parent_object	   = opener.HTMLArea._object;
+	var config	   = HTMLArea.cloneObject( parent_object.config );
+	config.width	   = "100%";
+	config.height	   = "auto";
+
+	// change maximize button to minimize button
+	config.btnList["popupeditor"] = [ 'Minimize Editor', _editor_url + 'images/fullscreen_minimize.gif', true,
+					  function() { window.close(); } ];
+
+	// generate editor and resize it
+	editor = new HTMLArea("editor", config);
+
+	// register the plugins, if any
+	for (var i in parent_object.plugins) {
+		var plugin = parent_object.plugins[i];
+		editor.registerPlugin2(plugin.name, plugin.args);
+	}
+	// and restore the original toolbar
+        config.toolbar = parent_object.config.toolbar;
+	editor.generate();
+	editor._iframe.style.width = "100%";
+	editor._textArea.style.width = "100%";
+	resize_editor();
+
+	editor.doctype = parent_object.doctype;
+
+	// set child window contents and event handlers, after a small delay
+	setTimeout(function() {
+			   editor.setHTML(parent_object.getInnerHTML());
+
+			   // switch mode if needed
+			   if (parent_object._mode == "textmode") { editor.setMode("textmode"); }
+
+			   // continuously update parent editor window
+			   setInterval(update_parent, 500);
+
+			   // setup event handlers
+			   document.body.onkeypress = _CloseOnEsc;
+			   editor._doc.body.onkeypress = _CloseOnEsc;
+			   editor._textArea.onkeypress = _CloseOnEsc;
+			   window.onresize = resize_editor;
+		   }, 333);			 // give it some time to meet the new frame
+}
+
+/* ---------------------------------------------------------------------- *\
+   Function    : update_parent
+   Description : update parent window editor field with contents from child window
+   \* ---------------------------------------------------------------------- */
+
+function update_parent() {
+	// use the fast version
+	parent_object.setHTML(editor.getInnerHTML());
+}
+
+    </script>
+    <style type="text/css"> html, body { height: 100%; margin: 0px; border: 0px; background-color: buttonface; } </style>
+  </head>
+  <body scroll="no" onload="setTimeout(function(){init();}, 500)" onunload="update_parent()">
+    <form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;">
+      <textarea name="editor" id="editor" style="width:100%; height:300px">&nbsp;</textarea>
+    </form>
+  </body>
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/popups/old_insert_image.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/old_insert_image.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/old_insert_image.html	(revision 103)
@@ -0,0 +1,206 @@
+<!-- based on insimage.dlg -->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN">
+<HTML  id=dlgImage STYLE="width: 432px; height: 194px; ">
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta http-equiv="MSThemeCompatible" content="Yes">
+<TITLE>Insert Image</TITLE>
+<style>
+  html, body, button, div, input, select, fieldset { font-family: MS Shell Dlg; font-size: 8pt; position: absolute; };
+</style>
+<SCRIPT defer>
+
+function _CloseOnEsc() {
+  if (event.keyCode == 27) { window.close(); return; }
+}
+
+function _getTextRange(elm) {
+  var r = elm.parentTextEdit.createTextRange();
+  r.moveToElementText(elm);
+  return r;
+}
+
+window.onerror = HandleError
+
+function HandleError(message, url, line) {
+  var str = "An error has occurred in this dialog." + "\n\n"
+  + "Error: " + line + "\n" + message;
+  alert(str);
+  window.close();
+  return true;
+}
+
+function Init() {
+  var elmSelectedImage;
+  var htmlSelectionControl = "Control";
+  var globalDoc = window.dialogArguments;
+  var grngMaster = globalDoc.selection.createRange();
+  
+  // event handlers  
+  document.body.onkeypress = _CloseOnEsc;
+  btnOK.onclick = new Function("btnOKClick()");
+
+  txtFileName.fImageLoaded = false;
+  txtFileName.intImageWidth = 0;
+  txtFileName.intImageHeight = 0;
+
+  if (globalDoc.selection.type == htmlSelectionControl) {
+    if (grngMaster.length == 1) {
+      elmSelectedImage = grngMaster.item(0);
+      if (elmSelectedImage.tagName == "IMG") {
+        txtFileName.fImageLoaded = true;
+        if (elmSelectedImage.src) {
+          txtFileName.value          = elmSelectedImage.src.replace(/^[^*]*(\*\*\*)/, "$1");  // fix placeholder src values that editor converted to abs paths
+          txtFileName.intImageHeight = elmSelectedImage.height;
+          txtFileName.intImageWidth  = elmSelectedImage.width;
+          txtVertical.value          = elmSelectedImage.vspace;
+          txtHorizontal.value        = elmSelectedImage.hspace;
+          txtBorder.value            = elmSelectedImage.border;
+          txtAltText.value           = elmSelectedImage.alt;
+          selAlignment.value         = elmSelectedImage.align;
+        }
+      }
+    }
+  }
+  txtFileName.value = txtFileName.value || "http://";
+  txtFileName.focus();
+}
+
+function _isValidNumber(txtBox) {
+  var val = parseInt(txtBox);
+  if (isNaN(val) || val < 0 || val > 999) { return false; }
+  return true;
+}
+
+function btnOKClick() {
+  var elmImage;
+  var intAlignment;
+  var htmlSelectionControl = "Control";
+  var globalDoc = window.dialogArguments;
+  var grngMaster = globalDoc.selection.createRange();
+  
+  // error checking
+
+  if (!txtFileName.value || txtFileName.value == "http://") { 
+    alert("Image URL must be specified.");
+    txtFileName.focus();
+    return;
+  }
+  if (txtHorizontal.value && !_isValidNumber(txtHorizontal.value)) {
+    alert("Horizontal spacing must be a number between 0 and 999.");
+    txtHorizontal.focus();
+    return;
+  }
+  if (txtBorder.value && !_isValidNumber(txtBorder.value)) {
+    alert("Border thickness must be a number between 0 and 999.");
+    txtBorder.focus();
+    return;
+  }
+  if (txtVertical.value && !_isValidNumber(txtVertical.value)) {
+    alert("Vertical spacing must be a number between 0 and 999.");
+    txtVertical.focus();
+    return;
+  }
+
+  // delete selected content and replace with image
+  if (globalDoc.selection.type == htmlSelectionControl && !txtFileName.fImageLoaded) {
+    grngMaster.execCommand('Delete');
+    grngMaster = globalDoc.selection.createRange();
+  }
+    
+  idstr = "\" id=\"556e697175657e537472696e67";     // new image creation ID
+  if (!txtFileName.fImageLoaded) {
+    grngMaster.execCommand("InsertImage", false, idstr);
+    elmImage = globalDoc.all['556e697175657e537472696e67'];
+    elmImage.removeAttribute("id");
+    elmImage.removeAttribute("src");
+    grngMaster.moveStart("character", -1);
+  } else {
+    elmImage = grngMaster.item(0);
+    if (elmImage.src != txtFileName.value) {
+      grngMaster.execCommand('Delete');
+      grngMaster = globalDoc.selection.createRange();
+      grngMaster.execCommand("InsertImage", false, idstr);
+      elmImage = globalDoc.all['556e697175657e537472696e67'];
+      elmImage.removeAttribute("id");
+      elmImage.removeAttribute("src");
+      grngMaster.moveStart("character", -1);
+      txtFileName.fImageLoaded = false;
+    }
+    grngMaster = _getTextRange(elmImage);
+  }
+
+  if (txtFileName.fImageLoaded) {
+    elmImage.style.width = txtFileName.intImageWidth;
+    elmImage.style.height = txtFileName.intImageHeight;
+  }
+
+  if (txtFileName.value.length > 2040) {
+    txtFileName.value = txtFileName.value.substring(0,2040);
+  }
+  
+  elmImage.src = txtFileName.value;
+  
+  if (txtHorizontal.value != "") { elmImage.hspace = parseInt(txtHorizontal.value); }
+  else                           { elmImage.hspace = 0; }
+
+  if (txtVertical.value != "") { elmImage.vspace = parseInt(txtVertical.value); }
+  else                         { elmImage.vspace = 0; }
+  
+  elmImage.alt = txtAltText.value;
+
+  if (txtBorder.value != "") { elmImage.border = parseInt(txtBorder.value); }
+  else                       { elmImage.border = 0; }
+
+  elmImage.align = selAlignment.value;
+  grngMaster.collapse(false);
+  grngMaster.select();
+  window.close();
+}
+</SCRIPT>
+</HEAD>
+<BODY id=bdy onload="Init()" style="background: threedface; color: windowtext;" scroll=no>
+
+<DIV id=divFileName style="left: 0.98em; top: 1.2168em; width: 7em; height: 1.2168em; ">Image URL:</DIV>
+<INPUT ID=txtFileName type=text style="left: 8.54em; top: 1.0647em; width: 21.5em;height: 2.1294em; " tabIndex=10 onfocus="select()">
+
+<DIV id=divAltText style="left: 0.98em; top: 4.1067em; width: 6.58em; height: 1.2168em; ">Alternate Text:</DIV>
+<INPUT type=text ID=txtAltText tabIndex=15 style="left: 8.54em; top: 3.8025em; width: 21.5em; height: 2.1294em; " onfocus="select()">
+
+<FIELDSET id=fldLayout style="left: .9em; top: 7.1em; width: 17.08em; height: 7.6em;">
+<LEGEND id=lgdLayout>Layout</LEGEND>
+</FIELDSET>
+
+<FIELDSET id=fldSpacing style="left: 18.9em; top: 7.1em; width: 11em; height: 7.6em;">
+<LEGEND id=lgdSpacing>Spacing</LEGEND>
+</FIELDSET>
+
+<DIV id=divAlign style="left: 1.82em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Alignment:</DIV>
+<SELECT size=1 ID=selAlignment tabIndex=20 style="left: 10.36em; top: 8.8218em; width: 6.72em; height: 1.2168em; ">
+<OPTION id=optNotSet value=""> Not set </OPTION>
+<OPTION id=optLeft value=left> Left </OPTION>
+<OPTION id=optRight value=right> Right </OPTION>
+<OPTION id=optTexttop value=textTop> Texttop </OPTION>
+<OPTION id=optAbsMiddle value=absMiddle> Absmiddle </OPTION>
+<OPTION id=optBaseline value=baseline SELECTED> Baseline </OPTION>
+<OPTION id=optAbsBottom value=absBottom> Absbottom </OPTION>
+<OPTION id=optBottom value=bottom> Bottom </OPTION>
+<OPTION id=optMiddle value=middle> Middle </OPTION>
+<OPTION id=optTop value=top> Top </OPTION>
+</SELECT>
+
+<DIV id=divHoriz style="left: 19.88em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Horizontal:</DIV>
+<INPUT ID=txtHorizontal style="left: 24.92em; top: 8.8218em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=25 onfocus="select()">
+
+<DIV id=divBorder style="left: 1.82em; top: 12.0159em; width: 8.12em; height: 1.2168em; ">Border Thickness:</DIV>
+<INPUT ID=txtBorder style="left: 10.36em; top: 11.5596em; width: 6.72em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=21 onfocus="select()">
+
+<DIV id=divVert style="left: 19.88em; top: 12.0159em; width: 3.64em; height: 1.2168em; ">Vertical:</DIV>
+<INPUT ID=txtVertical style="left: 24.92em; top: 11.5596em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=30 onfocus="select()">
+
+<BUTTON ID=btnOK style="left: 31.36em; top: 1.0647em; width: 7em; height: 2.2em; " type=submit tabIndex=40>OK</BUTTON>
+<BUTTON ID=btnCancel style="left: 31.36em; top: 3.6504em; width: 7em; height: 2.2em; " type=reset tabIndex=45 onClick="window.close();">Cancel</BUTTON>
+
+</BODY>
+</HTML>
\ No newline at end of file
Index: trunk/wb/modules/htmlarea/htmlarea/popups/about.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/about.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/about.html	(revision 103)
@@ -0,0 +1,378 @@
+<!--
+
+(c) dynarch.com, 2003-2004
+Author: Mihai Bazon, http://dynarch.com/mishoo
+Distributed as part of HTMLArea 3.0
+
+"You are not expected to understand this...  I don't neither."
+
+                      (from The Linux Kernel Source Code,
+                            ./arch/x86_64/ia32/ptrace.c:90)
+
+;-)
+
+-->
+
+<html style="height: 100%">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>About HTMLArea</title>
+<script type="text/javascript" src="popup.js"></script>
+<script type="text/javascript">
+window.resizeTo(450, 250);
+var TABS = [];
+var CURRENT_TAB = 0;
+var CONTENT_HEIGHT_DIFF = 0;
+var CONTENT_WIDTH_DIFF = 0;
+function selectTab(idx) {
+  var ct = TABS[CURRENT_TAB];
+  ct.className = ct.className.replace(/\s*tab-current\s*/, ' ');
+  ct = TABS[CURRENT_TAB = idx];
+  ct.className += ' tab-current';
+  for (var i = TABS.length; --i >= 0;) {
+    var area = document.getElementById("tab-area-" + i);
+    if (CURRENT_TAB == i) {
+      area.style.display = "block";
+    } else {
+      area.style.display = "none";
+    }
+  }
+  document.body.style.visibility = "hidden";
+  document.body.style.visibility = "visible";
+  document.cookie = "HTMLAREA-ABOUT-TAB=" + idx;
+}
+var editor = null;
+function initDocument() {
+  editor = window.dialogArguments;
+  HTMLArea = window.opener.HTMLArea;
+
+  var plugins = document.getElementById("plugins");
+  var j = 0;
+  var html = "<table width='99%' cellpadding='0' style='margin-top: 1em; collapse-borders: collapse; border: 1px solid #8b8;'>" +
+	  "<thead><tr>" +
+	  "<td>Name</td>" +
+	  "<td>Developer</td>" +
+	  "<td>Sponsored by</td>" +
+	  "<td>License<sup>*</sup></td>" +
+	  "</tr></thead><tbody>";
+  for (var i in editor.plugins) {
+    var info = editor.plugins[i];
+    html += "<tr><td>" + info.name + " v" + info.version + "</td>" + 
+            "<td><a href='" + info.developer_url + "' target='_blank' title='Visit developer website'>" +
+	    info.developer + "</a></td>" +
+	    "<td><a href='" + info.sponsor_url + "' target='_blank' title='Visit sponsor website'>" +
+	    info.sponsor + "</a></td>" +
+	    "<td>" + info.license + "</td></tr>";
+    ++j;
+  }
+
+  if (j) {
+          html += "</tbody></table>" +
+		  "<p><sup>*</sup> License \"htmlArea\" means that the plugin is distributed under the same terms " +
+		  "as HTMLArea itself.  Such plugins are likely to be those included in the official " +
+		  "HTMLArea distribution</p>";
+	  plugins.innerHTML = "<p>The following plugins have been loaded.</p>" + html;
+  } else {
+	  plugins.innerHTML = "<p>No plugins have been loaded</p>";
+  }
+
+  plugins.innerHTML += "<p>User agent reports:<br/>" + navigator.userAgent + "</p>";
+
+  var content = document.getElementById("content");
+  if (window.innerHeight) {
+    CONTENT_HEIGHT_DIFF = window.innerHeight - 250;
+    CONTENT_WIDTH_DIFF = window.innerWidth - content.offsetWidth;
+  } else {
+    CONTENT_HEIGHT_DIFF = document.body.offsetHeight - 250;
+    CONTENT_WIDTH_DIFF = document.body.offsetWidth - 400;
+  }
+  window.onresize();
+  var bar = document.getElementById("tabbar");
+  j = 0;
+  for (var i = bar.firstChild; i; i = i.nextSibling) {
+    TABS.push(i);
+    i.__msh_tab = j;
+    i.onmousedown = function(ev) { selectTab(this.__msh_tab); HTMLArea._stopEvent(ev || window.event); };
+    var area = document.getElementById("tab-area-" + j);
+    if (/tab-current/.test(i.className)) {
+      CURRENT_TAB = j;
+      area.style.display = "block";
+    } else {
+      area.style.display = "none";
+    }
+    ++j;
+  }
+  if (document.cookie.match(/HTMLAREA-ABOUT-TAB=([0-9]+)/))
+    selectTab(RegExp.$1);
+}
+window.onresize = function() {
+  var content = document.getElementById("content");
+  if (window.innerHeight) {
+    content.style.height = (window.innerHeight - CONTENT_HEIGHT_DIFF) + "px";
+    content.style.width = (window.innerWidth - CONTENT_WIDTH_DIFF) + "px";
+  } else {
+    content.style.height = (document.body.offsetHeight - CONTENT_HEIGHT_DIFF) + "px";
+    //content.style.width = (document.body.offsetWidth - CONTENT_WIDTH_DIFF) + "px";
+  }
+}
+</script>
+<style>
+  html,body,textarea,table { font-family: tahoma,verdana,arial; font-size: 11px;
+padding: 0px; margin: 0px; }
+  tt { font-size: 120%; }
+  body { padding: 0px; background: #cea; color: 000; }
+  a:link, a:visited { color: #00f; }
+  a:hover { color: #f00; }
+  a:active { color: #f80; }
+  button { font: 11px tahoma,verdana,sans-serif; background-color: #cea;
+      border-width: 1px; }
+
+  p { margin: 0.5em 0px; }
+
+  h1 { font: bold 130% georgia,"times new roman",serif; margin: 0px; border-bottom: 1px solid #6a6; }
+  h2 { font: bold 110% georgia,"times new roman",serif; margin: 0.7em 0px; }
+
+  thead {
+    font-weight: bold;
+    background-color: #dfb;
+  }
+
+  .logo, .logo-hover {
+    white-space: nowrap;
+    background-color: #8f4; color: #040; padding: 3px; border-bottom: 1px solid #555;
+    height: 5em;
+  }
+  .logo .brand, .logo-hover .brand {
+    margin-left: 0.5em; margin-right: 0.5em; padding-bottom: 0.1em;
+    font-family: impact,'arial black',arial,sans-serif; font-size: 28px;
+    border-bottom: 1px solid #595; text-align: center;
+    cursor: pointer;
+  }
+  .logo-hover {
+    background-color: #fff;
+  }
+  .logo-hover .brand {
+    color: #800;
+    border-color: #04f;
+  }
+  .logo .letter, .logo-hover .letter { position: relative; font-family: monospace; }
+  .logo .letter1 { top: 0.1em; }
+  .logo .letter2 { top: 0.05em; }
+  .logo .letter3 { top: -0.05em; }
+  .logo .letter4 { top: -0.1em; }
+
+  .logo-hover .letter1 { top: -0.1em; }
+  .logo-hover .letter2 { top: -0.05em; }
+  .logo-hover .letter3 { top: 0.05em; }
+  .logo-hover .letter4 { top: 0.1em; }
+  .logo .version, .logo-hover .version { font-family: georgia,"times new roman",serif; }
+  .logo .release {
+    font-size: 90%; margin-bottom: 1em;
+    text-align: center; color: #484;
+  }
+  .logo .visit { display: none; }
+  .logo-hover .release { display: none; }
+  .logo-hover .visit {
+    font-size: 90%; margin-bottom: 1em;
+    text-align: center; color: #448;
+  }
+  .buttons {
+    text-align: right; padding: 3px; background-color: #8f4;
+    border-top: 1px solid #555;
+  }
+  #tabbar {
+    position: relative;
+    left: 10px;
+  }
+  .tab {
+    color: #454;
+    cursor: pointer;
+    margin-left: -5px;
+    float: left; position: relative;
+    border: 1px solid #555;
+    top: -3px; left: -2px;
+    padding: 2px 10px 3px 10px;
+    border-top: none; background-color: #9b7;
+    -moz-border-radius: 0px 0px 4px 4px;
+    z-index: 0;
+  }
+  .tab-current {
+    color: #000;
+    top: -4px;
+    background-color: #cea;
+    padding: 3px 10px 4px 10px;
+    z-index: 10;
+  }
+  table.sponsors { border-top: 1px solid #aca; }
+  table.sponsors td {
+    border-bottom: 1px solid #aca; vertical-align: top;
+  }
+  table.sponsors tr td { padding: 2px 0px; }
+  table.sponsors tr td.sponsor { text-align: right; padding-right: 0.3em; white-space: nowrap; }
+  li, ol, ul { margin-top: 0px; margin-bottom: 0px; }
+</style></head>
+<body onload="__dlg_init(); initDocument();"
+><table cellspacing="0" cellpadding="0" style="border-collapse: collapse;
+      width: 100%; height: 100%;">
+
+<tr style="height: 1em"><td id="tdheader">
+
+<div class="logo">
+<div class="brand"
+onmouseover="this.parentNode.className='logo-hover';"
+onmouseout="this.parentNode.className='logo';"
+onclick="window.open('http://dynarch.com/htmlarea/');">
+<span class="letter letter1">&lt;H</span><span
+class="letter letter2">T</span><span
+class="letter letter3">M</span><span
+class="letter letter4">L</span>Area <span class="letter">/&gt;</span>
+<span class="version">3.0 <span style="position: relative; top: -0.6em; font-size: 50%; font-weight: normal">[ rev. rc1 ]</span></span></div>
+<div class="release">Compiled on Mar  1, 2004 19:37 GMT</div>
+<div class="visit">Go to http://dynarch.com/htmlarea/ [latest milestone release]</div>
+</div>
+
+</td></tr>
+<tr><td id="tdcontent" style="padding: 0.5em;">
+
+<div style="overflow: auto; height: 250px;" id="content">
+<div id="tab-areas">
+
+<div id="tab-area-0">
+
+  <h1>HTMLArea</h1>
+  
+  <p>A free WYSIWYG editor replacement for <tt>&lt;textarea&gt;</tt> fields.<br />
+  For Mozilla 1.3+ (any platform) or Internet Explorer 5.5+ (Windows).
+  </p>
+
+  <p style="text-align: center"
+  >&copy; 2002-2004 <a href="http://interactivetools.com" target="_blank">interactivetools.com</a>, inc.<br />
+  &copy; 2003-2004 <a href="http://dynarch.com" target="_blank">dynarch.com</a> LLC.<br />
+  All Rights Reserved.</p>
+
+  <h2>Project resources</h2>
+
+  <ul>
+  <li><a href="http://sourceforge.net/projects/itools-htmlarea/" target="_blank"
+  >Project page</a> (@ sourceforge.net)</li>
+  <li><a href="http://sourceforge.net/cvs/?group_id=69750" target="_blank"
+  >Anonymous CVS access</a> (@ sourceforge.net)</li>
+  <li><a href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse" target="_blank"
+  >Bug system</a> (@ sourceforge.net)</li>
+  <li><a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;" target="_blank"
+  >Forum</a> (@ interactivetools.com)</li>
+  <li><a href="http://www.dynarch.com/htmlarea/" target="_blank"
+  >Last public release</a> (@ dynarch.com)</li>
+  </ul>
+
+  <p>
+  For download section please see the <a href="http://sourceforge.net/projects/itools-htmlarea/" target="_blank"
+  >project page @ SourceForge</a>.
+  </p>
+
+<p style="margin-top: 1em; text-align: center;">Version 3.0 developed and maintained by <a
+href="http://dynarch.com/mishoo/" title="http://dynarch.com/mishoo/" target="_blank">Mihai Bazon</a> / <a
+href="http://dynarch.com" title="http://dynarch.com/" target="_blank">dynarch.com</a></p>
+
+</div>
+
+<div id="tab-area-1">
+<h1>Thank you</h1>
+
+  <p>
+  <a href="http://dynarch.com" target="_blank">dynarch.com</a> would like to thank the following
+  companies/persons for their <em>donations</em> to support development of HTMLArea (listed alphabetically):
+  </p>
+
+  <ul>
+    <li><a href="http://www.neomedia.ro">Neomedia</a> (Romania)</li>
+    <li><a href="http://www.os3.it" target="_blank">OS3</a> (Italy)</li>
+    <li><a href="http://www.softwerk.net">SoftWerk</a> (Italy)</li>
+  </ul>
+
+  <p>Also many thanks to all people at InteractiveTools.com
+  <a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">HTMLArea forums</a> for
+  contributing translations, feedback, bug reports and fixes.</p>
+
+  <p>
+  Last but not least, this project wouldn't have existed without
+  <a href="http://interactivetools.com" target="_blank">InteractiveTools.com</a>.
+  </p>
+
+</div>
+
+<div id="tab-area-2">
+<h1>htmlArea License (based on BSD license)</h1>
+
+<p style="text-align: center">© 2002-2004, interactivetools.com, inc.<br />
+  © 2003-2004 dynarch.com LLC<br />
+  All rights reserved.</p>
+
+<p>
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+</p>
+
+<ol>
+<li>
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+</li>
+
+<li>
+Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+</li>
+
+<li>
+Neither the name of interactivetools.com, inc. nor the names of its
+contributors may be used to endorse or promote products derived from this
+software without specific prior written permission.
+</li>
+</ol>
+
+<p>
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+</p>
+
+</div>
+
+<div id="tab-area-3">
+<h1>Plugins</h1>
+<div id="plugins">
+</div>
+</div>
+
+</div></div>
+
+
+</tr></td>
+<tr style="height: 1em"><td id="tdfooter">
+
+
+<div class="buttons">
+<div id="tabbar"
+><div class="tab tab-current"
+>About</div><div class="tab"
+>Thanks</div><div class="tab"
+>License</div><div class="tab"
+>Plugins</div></div>
+<button type="button" onclick="__dlg_close(null);">I agree it's cool</button>
+</div>
+
+</td></tr></table>
+
+</body></html>
+
+
Index: trunk/wb/modules/htmlarea/htmlarea/popups/insert_table.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/insert_table.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/insert_table.html	(revision 103)
@@ -0,0 +1,174 @@
+<html>
+
+<head>
+  <title>Insert Table</title>
+
+<script type="text/javascript" src="popup.js"></script>
+
+<script type="text/javascript">
+
+window.resizeTo(400, 100);
+
+function Init() {
+  __dlg_init();
+  document.getElementById("f_rows").focus();
+};
+
+function onOK() {
+  var required = {
+    "f_rows": "You must enter a number of rows",
+    "f_cols": "You must enter a number of columns"
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  var fields = ["f_rows", "f_cols", "f_width", "f_unit",
+                "f_align", "f_border", "f_spacing", "f_padding"];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = el.value;
+  }
+  __dlg_close(param);
+  return false;
+};
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+};
+
+</script>
+
+<style type="text/css">
+html, body {
+  background: #EEEEEE;
+  color: #000000;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding: 0; }
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+form p {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
+.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
+fieldset { padding: 0px 10px 5px 5px; }
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+.space { padding: 2px; }
+
+.title { background: #336699; color: #FFFFFF; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+letter-spacing: 2px;
+}
+form { padding: 0px; margin: 0px; }
+</style>
+
+</head>
+
+<body onload="Init()">
+
+<div class="title">Insert Table</div>
+
+<form action="" method="get">
+<table border="0" style="padding: 0px; margin: 0px">
+  <tbody>
+
+  <tr>
+    <td style="width: 4em; text-align: right">Rows:</td>
+    <td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
+    <td></td>
+    <td></td>
+    <td></td>
+  </tr>
+  <tr>
+    <td style="width: 4em; text-align: right">Cols:</td>
+    <td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
+    <td style="width: 4em; text-align: right">Width:</td>
+    <td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
+    <td><select size="1" name="unit" id="f_unit" title="Width unit">
+      <option value="%" selected="1">Percent</option>
+      <option value="px">Pixels</option>
+      <option value="em">Em</option>
+    </select></td>
+  </tr>
+
+  </tbody>
+</table>
+
+<p />
+
+<fieldset style="float: left; margin-left: 5px;">
+<legend>Layout</legend>
+
+<div class="space"></div>
+
+<div class="fl">Alignment:</div>
+<select size="1" name="align" id="f_align"
+  title="Positioning of this image">
+  <option value="" selected="1">Not set</option>
+  <option value="left">Left</option>
+  <option value="right">Right</option>
+  <option value="texttop">Texttop</option>
+  <option value="absmiddle">Absmiddle</option>
+  <option value="baseline">Baseline</option>
+  <option value="absbottom">Absbottom</option>
+  <option value="bottom">Bottom</option>
+  <option value="middle">Middle</option>
+  <option value="top">Top</option>
+</select>
+
+<p />
+
+<div class="fl">Border thickness:</div>
+<input type="text" name="border" id="f_border" size="5" value="1"
+title="Leave empty for no border" />
+<!--
+<p />
+
+<div class="fl">Collapse borders:</div>
+<input type="checkbox" name="collapse" id="f_collapse" />
+-->
+<div class="space"></div>
+
+</fieldset>
+
+<fieldset style="float:right; margin-right: 5px;">
+<legend>Spacing</legend>
+
+<div class="space"></div>
+
+<div class="fr">Cell spacing:</div>
+<input type="text" name="spacing" id="f_spacing" size="5" value="1"
+title="Space between adjacent cells" />
+
+<p />
+
+<div class="fr">Cell padding:</div>
+<input type="text" name="padding" id="f_padding" size="5" value="1"
+title="Space between content and border in cell" />
+
+<div class="space"></div>
+
+</fieldset>
+
+<div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;">
+<button type="button" name="ok" onclick="return onOK();">OK</button>
+<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+</div>
+
+</form>
+
+</body>
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/popups/popup.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popups/popup.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popups/popup.js	(revision 103)
@@ -0,0 +1,109 @@
+// 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.1.1 2005/01/30 10:31:16 rdjurovich Exp $
+
+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() {
+	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;
+	}
+	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;
+		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"];
+	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;
+			}
+		}
+	}
+	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;
+};
Index: trunk/wb/modules/htmlarea/htmlarea/license.txt
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/license.txt	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/license.txt	(revision 103)
@@ -0,0 +1,30 @@
+htmlArea License (based on BSD license)
+Copyright (c) 2002-2004, interactivetools.com, inc.
+Copyright (c) 2003-2004 dynarch.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1) Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2) Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3) Neither the name of interactivetools.com, inc. nor the names of its
+   contributors may be used to endorse or promote products derived from this
+   software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ja-euc.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ja-euc.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ja-euc.js	(revision 103)
@@ -0,0 +1,37 @@
+// I18N constants -- Japanese EUC
+// by Manabu Onoue -- tmocsys@tmocsys.com
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ja-euc",
+
+	tooltips: {
+		bold:           "",
+		italic:         "",
+		underline:      "",
+		strikethrough:  "Ǥä",
+		subscript:      "դź",
+		superscript:    "դź",
+		justifyleft:    "",
+		justifycenter:  "",
+		justifyright:   "",
+		justifyfull:    "",
+		orderedlist:    "ֹդվ",
+		unorderedlist:  "դվ",
+		outdent:        "ǥȲ",
+		indent:         "ǥ",
+		forecolor:      "ʸ",
+		backcolor:      "طʿ",
+		horizontalrule: "ʿ",
+		createlink:     "󥯺",
+		insertimage:    "",
+		inserttable:    "ơ֥",
+		htmlmode:       "HTMLɽ",
+		popupeditor:    "ǥ",
+		about:          "С",
+		help:           "إ",
+		textindicator:  "ߤΥ"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/pt_br.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/pt_br.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/pt_br.js	(revision 103)
@@ -0,0 +1,37 @@
+// I18N constants
+// Brazilian Portuguese Translation by Alex Piaz <webmaster@globalmap.com>
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "pt_br",
+
+	tooltips: {
+		bold:           "Negrito",
+		italic:         "Itlico",
+		underline:      "Sublinhado",
+		strikethrough:  "Tachado",
+		subscript:      "Subescrito",
+		superscript:    "Sobrescrito",
+		justifyleft:    "Alinhar  Esquerda",
+		justifycenter:  "Centralizar",
+		justifyright:   "Alinhar  Direita",
+		justifyfull:    "Justificar",
+		orderedlist:    "Lista Numerada",
+		unorderedlist:  "Lista Marcadores",
+		outdent:        "Diminuir Indentao",
+		indent:         "Aumentar Indentao",
+		forecolor:      "Cor da Fonte",
+		backcolor:      "Cor do Fundo",
+		horizontalrule: "Linha Horizontal",
+		createlink:     "Inserir Link",
+		insertimage:    "Inserir Imagem",
+		inserttable:    "Inserir Tabela",
+		htmlmode:       "Ver Cdigo-Fonte",
+		popupeditor:    "Expandir Editor",
+		about:          "Sobre",
+		help:           "Ajuda",
+		textindicator:  "Estilo Atual"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/b5.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/b5.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/b5.js	(revision 103)
@@ -0,0 +1,36 @@
+// I18N constants -- Chinese Big-5
+// by Dave Lo -- dlo@interactivetools.com
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "b5",
+
+	tooltips: {
+		bold:           "",
+		italic:         "",
+		underline:      "u",
+		strikethrough:  "Ru",
+		subscript:      "U",
+		superscript:    "W",
+		justifyleft:    "ma",
+		justifycenter:  "m~",
+		justifyright:   "mak",
+		justifyfull:    "mk",
+		orderedlist:    "ǲM",
+		unorderedlist:  "LǲM",
+		outdent:        "peť",
+		indent:         "[eeť",
+		forecolor:      "rC",
+		backcolor:      "IC",
+		horizontalrule: "u",
+		createlink:     "Js",
+		insertimage:    "Jϧ",
+		inserttable:    "J",
+		htmlmode:       "HTMLlX",
+		popupeditor:    "j",
+		about:          " HTMLArea",
+		help:           "",
+		textindicator:  "rҤl"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/se.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/se.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/se.js	(revision 103)
@@ -0,0 +1,38 @@
+// Swedish version for htmlArea v3.0 - Alpha Release
+// - translated by pat<pat@engvall.nu>
+// terms and licenses are equal to htmlarea!
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "se",
+
+	tooltips: {
+		bold:           "Fet",
+		italic:         "Kursiv",
+		underline:      "Understruken",
+		strikethrough:  "Genomstruken",
+		subscript:      "Nedsnkt",
+		superscript:    "Upphjd",
+		justifyleft:    "Vnsterjustera",
+		justifycenter:  "Centrera",
+		justifyright:   "Hgerjustera",
+		justifyfull:    "Marginaljustera",
+		orderedlist:    "Numrerad lista",
+		unorderedlist:  "Punktlista",
+		outdent:        "Minska indrag",
+		indent:         "ka indrag",
+		forecolor:      "Textfrg",
+		backcolor:      "Bakgrundsfrg",
+		horizontalrule: "Vgrt linje",
+		createlink:     "Infoga lnk",
+		insertimage:    "Infoga bild",
+		inserttable:    "Infoga tabell",
+		htmlmode:       "Visa kllkod",
+		popupeditor:    "Visa i eget fnster",
+		about:          "Om denna editor",
+		help:           "Hjlp",
+		textindicator:  "Nuvarande stil"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/es.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/es.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/es.js	(revision 103)
@@ -0,0 +1,51 @@
+// I18N constants
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "es",
+
+	tooltips: {
+		bold:           "Negrita",
+		italic:         "Cursiva",
+		underline:      "Subrayado",
+		strikethrough:  "Tachado",
+		subscript:      "Subndice",
+		superscript:    "Superndice",
+		justifyleft:    "Alinear a la Izquierda",
+		justifycenter:  "Centrar",
+		justifyright:   "Alinear a la Derecha",
+		justifyfull:    "Justificar",
+		insertorderedlist:    "Lista Ordenada",
+		insertunorderedlist:  "Lista No Ordenada",
+		outdent:        "Aumentar Sangra",
+		indent:         "Disminuir Sangra",
+		forecolor:      "Color del Texto",
+		hilitecolor:    "Color del Fondo",
+		inserthorizontalrule: "Lnea Horizontal",
+		createlink:     "Insertar Enlace",
+		insertimage:    "Insertar Imagen",
+		inserttable:    "Insertar Tabla",
+		htmlmode:       "Ver Documento en HTML",
+		popupeditor:    "Ampliar Editor",
+		about:          "Acerca del Editor",
+		showhelp:       "Ayuda",
+		textindicator:  "Estilo Actual",
+		undo:           "Deshacer",
+		redo:           "Rehacer",
+		cut:            "Cortar seleccin",
+		copy:           "Copiar seleccin",
+		paste:          "Pegar desde el portapapeles"
+	},
+
+	buttons: {
+		"ok":           "Aceptar",
+		"cancel":       "Cancelar"
+	},
+
+	msg: {
+		"Path":         "Ruta",
+		"TEXT_MODE":    "Esta en modo TEXTO. Use el boton [<>] para cambiar a WYSIWIG",
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/fr.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/fr.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/fr.js	(revision 103)
@@ -0,0 +1,61 @@
+// I18N constants
+// Author: Jonathan Ernst, <Jonathan.Ernst@NetOxygen.ch>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "fr",
+
+	tooltips: {
+		bold:           "Gras",
+		italic:         "Italique",
+		underline:      "Soulign",
+		strikethrough:  "Barr",
+		subscript:      "Subscript",
+		superscript:    "Superscript",
+		justifyleft:    "Align  gauche",
+		justifycenter:  "Centr",
+		justifyright:   "Align  droite",
+		justifyfull:    "Justifi",
+		orderedlist:    "Numrotation",
+		unorderedlist:  "Puces",
+		outdent:        "Augmenter le retrait",
+		indent:         "Diminuer le retrait",
+		forecolor:      "Couleur du texte",
+		hilitecolor:    "Couleur du fond",
+		horizontalrule: "Ligne horizontale",
+		createlink:     "Insrer un lien",
+		insertimage:    "Insrer une image",
+		inserttable:    "Insrer un tableau",
+		htmlmode:       "Passer au code source HTML",
+		popupeditor:    "Agrandir l'diteur",
+		about:          "A propos de cet diteur",
+		showhelp:       "Aide sur l'diteur",
+		textindicator:  "Style courant",
+		undo:           "Annule la dernire action",
+		redo:           "Refait la dernire action",
+		cut:            "Coupe la slection",
+		copy:           "Copie la slection",
+		paste:          "Colle depuis le presse papiers"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Annuler"
+	},
+
+	msg: {
+		"Path":         "Chemin",
+		"TEXT_MODE":    "Vous tes en mode texte.  Utilisez le bouton [<>] pour revenir au mode WYSIWIG."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/nl.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/nl.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/nl.js	(revision 103)
@@ -0,0 +1,90 @@
+// I18N constants
+
+// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
+// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "nl",
+
+	tooltips: {
+		bold:					"Vet",
+		italic:					"Cursief",
+		underline:				"Onderstrepen",
+		strikethrough:			"Doorhalen",
+		subscript:				"Subscript",
+		superscript:			"Superscript",
+		justifyleft:			"Links uitlijnen",
+		justifycenter:			"Centreren",
+		justifyright:			"Rechts uitlijnen",
+		justifyfull:			"Uitvullen",
+		insertorderedlist:		"Nummering",
+		insertunorderedlist:	"Opsommingstekens",
+		outdent:				"Inspringing verkleinen",
+		indent:					"Inspringing vergroten",
+		forecolor:				"Tekstkleur",
+		hilitecolor:			"Achtergrondkleur",
+		inserthorizontalrule:	"Horizontale lijn",
+		createlink:				"Hyperlink invoegen/aanpassen",
+		insertimage:			"Afbeelding invoegen/aanpassen",
+		inserttable:			"Tabel invoegen",
+		htmlmode:				"HTML broncode",
+		popupeditor:			"Vergroot Editor",
+		about:					"Over deze editor",
+		showhelp:				"HTMLArea help",
+		textindicator:			"Huidige stijl",
+		undo:					"Ongedaan maken",
+		redo:					"Herhalen",
+		cut:					"Knippen",
+		copy:					"Kopiren",
+		paste:					"Plakken",
+		lefttoright:			"Tekstrichting links naar rechts",
+		righttoleft:			"Tekstrichting rechts naar links"
+	},
+
+	buttons: {
+		"ok":					"OK",
+		"cancel":				"Annuleren"
+	},
+
+	msg: {
+		"Path":					"Pad",
+		"TEXT_MODE":			"Je bent in TEKST-mode. Gebruik de [<>] knop om terug te keren naar WYSIWYG-mode.",
+      
+		"IE-sucks-full-screen" :
+		// translate here
+		"Fullscreen-mode veroorzaakt problemen met Internet Explorer door bugs in de webbrowser " +
+		"die we niet kunnen omzeilen. Hierdoor kunnen de volgende effecten optreden: verknoeide teksten, " +
+		"een verlies aan editor-functionaliteit en/of willekeurig vastlopen van de webbrowser. " +
+		"Als u Windows 95 of 98 gebruikt, is het zeer waarschijnlijk dat u een algemene beschermingsfout " +
+		"('General Protection Fault') krijgt en de computer opnieuw zal moeten opstarten.\n\n" +
+		"U bent gewaarschuwd. Druk OK als u toch nog de Fullscreen-editor wil gebruiken."
+	},
+
+	dialogs: {
+		"Cancel"                                            : "Annuleren",
+		"Insert/Modify Link"                                : "Hyperlink invoegen/aanpassen",
+		"New window (_blank)"                               : "Nieuw venster (_blank)",
+		"None (use implicit)"                               : "Geen",
+		"OK"                                                : "OK",
+		"Other"                                             : "Ander",
+		"Same frame (_self)"                                : "Zelfde frame (_self)",
+		"Target:"                                           : "Doel:",
+		"Title (tooltip):"                                  : "Titel (tooltip):",
+		"Top frame (_top)"                                  : "Bovenste frame (_top)",
+		"URL:"                                              : "URL:",
+		"You must enter the URL where this link points to"  : "Geef de URL in waar de link naar verwijst"
+	}
+};
+
Index: trunk/wb/modules/htmlarea/htmlarea/lang/si.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/si.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/si.js	(revision 103)
@@ -0,0 +1,63 @@
+// I18N constants
+
+// LANG: "si", ENCODING: ISO-8859-2
+// Author: Tomaz Kregar, x_tomo_x@email.si
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "si",
+
+	tooltips: {
+		bold:           "Krepko",
+		italic:         "Leee",
+		underline:      "Podrtano",
+		strikethrough:  "Prertano",
+		subscript:      "Podpisano",
+		superscript:    "Nadpisano",
+		justifyleft:    "Poravnaj levo",
+		justifycenter:  "Na sredino",
+		justifyright:   "Poravnaj desno",
+		justifyfull:    "Porazdeli vsebino",
+		orderedlist:    "Otevilevanje",
+		unorderedlist:  "Oznaevanje",
+		outdent:        "Zmanjaj zamik",
+		indent:         "Poveaj zamik",
+		forecolor:      "Barva pisave",
+		hilitecolor:    "Barva ozadja",
+		horizontalrule: "Vodoravna rta",
+		createlink:     "Vstavi hiperpovezavo",
+		insertimage:    "Vstavi sliko",
+		inserttable:    "Vstavi tabelo",
+		htmlmode:       "Preklopi na HTML kodo",
+		popupeditor:    "Poveaj urejevalnik",
+		about:          "Vizitka za urejevalnik",
+		showhelp:       "Pomo za urejevalnik",
+		textindicator:  "Trenutni slog",
+		undo:           "Razveljavi zadnjo akcijo",
+		redo:           "Uveljavi zadnjo akcijo",
+		cut:            "Izrei",
+		copy:           "Kopiraj",
+		paste:          "Prilepi"
+	},
+
+	buttons: {
+		"ok":           "V redu",
+		"cancel":       "Preklii"
+	},
+
+	msg: {
+		"Path":         "Pot",
+		"TEXT_MODE":    "Si v tekstovnem nainu.  Uporabi [<>] gumb za prklop nazaj na WYSIWYG."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/pl.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/pl.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/pl.js	(revision 103)
@@ -0,0 +1,36 @@
+// I18N constants
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "pl",
+
+	tooltips: {
+		bold:           "Pogrubienie",
+		italic:         "Pochylenie",
+		underline:      "Podkrelenie",
+		strikethrough:  "Przekrelenie",
+		subscript:      "Indeks dolny",
+		superscript:    "Indeks grny",
+		justifyleft:    "Wyrwnaj do lewej",
+		justifycenter:  "Wyrodkuj",
+		justifyright:   "Wyrwnaj do prawej",
+		justifyfull:    "Wyjustuj",
+		orderedlist:    "Numerowanie",
+		unorderedlist:  "Wypunktowanie",
+		outdent:        "Zmniejsz wcicie",
+		indent:         "Zwiksz wcicie",
+		forecolor:      "Kolor czcionki",
+		backcolor:      "Kolor ta",
+		horizontalrule: "Linia pozioma",
+		createlink:     "Wstaw adres sieci Web",
+		insertimage:    "Wstaw obraz",
+		inserttable:    "Wstaw tabel",
+		htmlmode:       "Edycja WYSIWYG/w rdle strony",
+		popupeditor:    "Peny ekran",
+		about:          "Informacje o tym edytorze",
+		help:           "Pomoc",
+		textindicator:  "Obecny styl"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/no.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/no.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/no.js	(revision 103)
@@ -0,0 +1,79 @@
+// Norwegian version for htmlArea v3.0 - pre1
+// - translated by ses<ses@online.no>
+// Additional translations by Hvard Wigtil <havardw@extend.no>
+// terms and licenses are equal to htmlarea!
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "no",
+
+	tooltips: {
+		bold:                 "Fet",
+		italic:               "Kursiv",
+		underline:            "Understreket",
+		strikethrough:        "Gjennomstreket",
+		subscript:            "Nedsenket",
+		superscript:          "Opphyet",
+		justifyleft:          "Venstrejuster",
+		justifycenter:        "Midtjuster",
+		justifyright:         "Hyrejuster",
+		justifyfull:          "Blokkjuster",
+		insertorderedlist:    "Nummerert liste",
+		insertunorderedlist:  "Punktliste",
+		outdent:              "Reduser innrykk",
+		indent:               "ke innrykk",
+		forecolor:            "Tekstfarge",
+		hilitecolor:          "Bakgrundsfarge",
+		inserthorizontalrule: "Vannrett linje",
+		createlink:           "Lag lenke",
+		insertimage:          "Sett inn bilde",
+		inserttable:          "Sett inn tabell",
+		htmlmode:             "Vis kildekode",
+		popupeditor:          "Vis i eget vindu",
+		about:                "Om denne editor",
+		showhelp:             "Hjelp",
+		textindicator:        "Nvrende stil",
+                undo:                 "Angrer siste redigering",
+		redo:                 "Gjr om siste angring",
+		cut:                  "Klipp ut omrde",
+		copy:                 "Kopier omrde",
+		paste:                "Lim inn",
+		lefttoright:          "Fra venstre mot hyre",
+		righttoleft:          "Fra hyre mot venstre"
+	},
+    
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Avbryt"
+	},
+
+	msg: {
+		"Path":         "Tekstvelger",
+		"TEXT_MODE":    "Du er i tekstmodus  Klikk p [<>] for  g tilbake til WYSIWIG.",
+                "IE-sucks-full-screen" :
+		// translate here
+                "Visning i eget vindu har kjente problemer med Internet Explorer, " + 
+                "p grunn av problemer med denne nettleseren. Mulige problemer er et uryddig " + 
+                "skjermbilde, manglende editorfunksjoner og/eller at nettleseren crasher. Hvis du bruker Windows 95 eller Windows 98 " +
+                "er det ogs muligheter for at Windows will crashe.\n\n" +
+                "Trykk 'OK' hvis du vil bruke visning i eget vindu p tross av denne advarselen."
+	},
+
+	dialogs: {
+		"Cancel"                                            : "Avbryt",
+		"Insert/Modify Link"                                : "Rediger lenke",
+		"New window (_blank)"                               : "Eget vindu (_blank)",
+		"None (use implicit)"                               : "Ingen (bruk standardinnstilling)",
+		"OK"                                                : "OK",
+		"Other"                                             : "Annen",
+		"Same frame (_self)"                                : "Samme ramme (_self)",
+		"Target:"                                           : "Ml:",
+		"Title (tooltip):"                                  : "Tittel (tooltip):",
+		"Top frame (_top)"                                  : "Toppramme (_top)",
+		"URL:"                                              : "Adresse:",
+		"You must enter the URL where this link points to"  : "Du m skrive inn en adresse som denne lenken skal peke til"
+	}
+};
+
Index: trunk/wb/modules/htmlarea/htmlarea/lang/cz.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/cz.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/cz.js	(revision 103)
@@ -0,0 +1,63 @@
+﻿// I18N constants
+
+// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
+// Author: Jiri Löw, <jirilow@jirilow.com>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "cz",
+
+	tooltips: {
+		bold:           "Tučně",
+		italic:         "Kurzíva",
+		underline:      "Podtržení",
+		strikethrough:  "Přeškrtnutí",
+		subscript:      "Dolní index",
+		superscript:    "Horní index",
+		justifyleft:    "Zarovnat doleva",
+		justifycenter:  "Na střed",
+		justifyright:   "Zarovnat doprava",
+		justifyfull:    "Zarovnat do stran",
+		orderedlist:    "Seznam",
+		unorderedlist:  "Odrážky",
+		outdent:        "Předsadit",
+		indent:         "Odsadit",
+		forecolor:      "Barva písma",
+		hilitecolor:    "Barva pozadí",
+		horizontalrule: "Vodorovná čára",
+		createlink:     "Vložit odkaz",
+		insertimage:    "Vložit obrázek",
+		inserttable:    "Vložit tabulku",
+		htmlmode:       "Přepnout HTML",
+		popupeditor:    "Nové okno editoru",
+		about:          "O této aplikaci",
+		showhelp:       "Nápověda aplikace",
+		textindicator:  "Zvolený styl",
+		undo:           "Vrátí poslední akci",
+		redo:           "Opakuje poslední akci",
+		cut:            "Vyjmout",
+		copy:           "Kopírovat",
+		paste:          "Vložit"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Zrušit"
+	},
+
+	msg: {
+		"Path":         "Cesta",
+		"TEXT_MODE":    "Jste v TEXTOVÉM REŽIMU.  Použijte tlačítko [<>] pro přepnutí do WYSIWIG."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/hu.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/hu.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/hu.js	(revision 103)
@@ -0,0 +1,63 @@
+// I18N constants
+
+// LANG: "hu", ENCODING: UTF-8
+// Author: Miklós Somogyi, <somogyine@vnet.hu>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "hu",
+
+	tooltips: {
+		bold:           "Félkövér",
+		italic:         "Dőlt",
+		underline:      "Aláhúzott",
+		strikethrough:  "Áthúzott",
+		subscript:      "Alsó index",
+		superscript:    "Felső index",
+		justifyleft:    "Balra zárt",
+		justifycenter:  "Középre zárt",
+		justifyright:   "Jobbra zárt",
+		justifyfull:    "Sorkizárt",
+		orderedlist:    "Számozott lista",
+		unorderedlist:  "Számozatlan lista",
+		outdent:        "Behúzás csökkentése",
+		indent:         "Behúzás növelése",
+		forecolor:      "Karakterszín",
+		hilitecolor:    "Háttérszín",
+		horizontalrule: "Elválasztó vonal",
+		createlink:     "Hiperhivatkozás beszúrása",
+		insertimage:    "Kép beszúrása",
+		inserttable:    "Táblázat beszúrása",
+		htmlmode:       "HTML forrás be/ki",
+		popupeditor:    "Szerkesztő külön ablakban",
+		about:          "Névjegy",
+		showhelp:       "Súgó",
+		textindicator:  "Aktuális stílus",
+		undo:           "Visszavonás",
+		redo:           "Újra végrehajtás",
+		cut:            "Kivágás",
+		copy:           "Másolás",
+		paste:          "Beillesztés"
+	},
+
+	buttons: {
+		"ok":           "Rendben",
+		"cancel":       "Mégsem"
+	},
+
+	msg: {
+		"Path":         "Hierarchia",
+		"TEXT_MODE":    "Forrás mód. Visszaváltás [<>] gomb"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/it.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/it.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/it.js	(revision 103)
@@ -0,0 +1,54 @@
+// I18N constants
+
+// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
+// Author: Fabio Rotondo <fabio@rotondo.it>
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "it",
+
+	tooltips: {
+		bold:           "Grassetto",
+		italic:         "Italico",
+		underline:      "Sottolineato",
+		strikethrough:  "Barrato",
+		subscript:      "Pedice",
+		superscript:    "Apice",
+		justifyleft:    "Giustifica a Sinistra",
+		justifycenter:  "Giustifica in Centro",
+		justifyright:   "Giustifica a Destra",
+		justifyfull:    "Giustifica Completamente",
+		orderedlist:    "Lista Ordinata",
+		unorderedlist:  "Lista Puntata",
+		outdent:        "Decrementa Indentazione",
+		indent:         "Incrementa Indentazione",
+		forecolor:      "Colore del Carattere",
+		hilitecolor:    "Colore di Sfondo",
+		horizontalrule: "Linea Orizzontale",
+		createlink:     "Inserisci un Link",
+		insertimage:    "Inserisci un'Immagine",
+		inserttable:    "Inserisci una Tabella",
+		htmlmode:       "Attiva il codice HTML",
+		popupeditor:    "Allarga l'editor",
+		about:          "Info sull'editor",
+		showhelp:       "Aiuto sull'editor",
+		textindicator:  "Stile Attuale",
+		undo:           "Elimina l'ultima modifica",
+		redo:           "Ripristina l'ultima modifica",
+		cut:            "Taglia l'area selezionata",
+		copy:           "Copia l'area selezionata",
+		paste:          "Incolla dalla memoria"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Annulla"
+	},
+
+	msg: {
+		"Path":         "Percorso",
+		"TEXT_MODE":    "Sei in MODALITA' TESTO. Usa il bottone [<>] per tornare alla modalità WYSIWYG."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ja-jis.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ja-jis.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ja-jis.js	(revision 103)
@@ -0,0 +1,37 @@
+// I18N constants -- Japanese JIS
+// by Manabu Onoue -- tmocsys@tmocsys.com
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ja-jis",
+
+	tooltips: {
+		bold:           "$BB@;z(B",
+		italic:         "$B<PBN(B",
+		underline:      "$B2<@~(B",
+		strikethrough:  "$BBG$A>C$7@~(B",
+		subscript:      "$B2<IU$-E:$(;z(B",
+		superscript:    "$B>eIU$-E:$(;z(B",
+		justifyleft:    "$B:84s$;(B",
+		justifycenter:  "$BCf1{4s$;(B",
+		justifyright:   "$B1&4s$;(B",
+		justifyfull:    "$B6QEy3dIU(B",
+		orderedlist:    "$BHV9fIU$-2U>r=q$-(B",
+		unorderedlist:  "$B5-9fIU$-2U>r=q$-(B",
+		outdent:        "$B%$%s%G%s%H2r=|(B",
+		indent:         "$B%$%s%G%s%H@_Dj(B",
+		forecolor:      "$BJ8;z?'(B",
+		backcolor:      "$BGX7J?'(B",
+		horizontalrule: "$B?eJ?@~(B",
+		createlink:     "$B%j%s%/:n@.(B",
+		insertimage:    "$B2hA|A^F~(B",
+		inserttable:    "$B%F!<%V%kA^F~(B",
+		htmlmode:       "HTML$BI=<(@ZBX(B",
+		popupeditor:    "$B%(%G%#%?3HBg(B",
+		about:          "$B%P!<%8%g%s>pJs(B",
+		help:           "$B%X%k%W(B",
+		textindicator:  "$B8=:_$N%9%?%$%k(B"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ja-utf8.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ja-utf8.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ja-utf8.js	(revision 103)
@@ -0,0 +1,37 @@
+﻿// I18N constants -- Japanese UTF-8
+// by Manabu Onoue -- tmocsys@tmocsys.com
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ja-utf8",
+
+	tooltips: {
+		bold:           "太字",
+		italic:         "斜体",
+		underline:      "下線",
+		strikethrough:  "打ち消し線",
+		subscript:      "下付き添え字",
+		superscript:    "上付き添え字",
+		justifyleft:    "左寄せ",
+		justifycenter:  "中央寄せ",
+		justifyright:   "右寄せ",
+		justifyfull:    "均等割付",
+		orderedlist:    "番号付き箇条書き",
+		unorderedlist:  "記号付き箇条書き",
+		outdent:        "インデント解除",
+		indent:         "インデント設定",
+		forecolor:      "文字色",
+		backcolor:      "背景色",
+		horizontalrule: "水平線",
+		createlink:     "リンク作成",
+		insertimage:    "画像挿入",
+		inserttable:    "テーブル挿入",
+		htmlmode:       "HTML表示切替",
+		popupeditor:    "エディタ拡大",
+		about:          "バージョン情報",
+		help:           "ヘルプ",
+		textindicator:  "現在のスタイル"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/lt.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/lt.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/lt.js	(revision 103)
@@ -0,0 +1,55 @@
+// I18N constants
+
+// LANG: "lt", ENCODING: UTF-8
+// Author: Jaroslav Šatkevič, <jaro@akl.lt>
+
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "lt",
+
+	tooltips: {
+		bold:           "Paryškinti",
+		italic:         "Kursyvas",
+		underline:      "Pabraukti",
+		strikethrough:  "Perbraukti",
+		subscript:      "Apatinis indeksas",
+		superscript:    "Viršutinis indeksas",
+		justifyleft:    "Lygiavimas pagal kairę",
+		justifycenter:  "Lygiavimas pagal centrą",
+		justifyright:   "Lygiavimas pagal dešinę",
+		justifyfull:    "Lygiuoti pastraipą",
+		orderedlist:    "Numeruotas sąrašas",
+		unorderedlist:  "Suženklintas sąrašas",
+		outdent:        "Sumažinti paraštę",
+		indent:         "Padidinti paraštę",
+		forecolor:      "Šrifto spalva",
+		hilitecolor:    "Fono spalva",
+		horizontalrule: "Horizontali linija",
+		createlink:     "Įterpti nuorodą",
+		insertimage:    "Įterpti paveiksliuką",
+		inserttable:    "Įterpti lentelę",
+		htmlmode:       "Perjungti į HTML/WYSIWYG",
+		popupeditor:    "Išplėstas redagavimo ekranas/Enlarge Editor",
+		about:          "Apie redaktorių",
+		showhelp:       "Pagalba naudojant redaktorių",
+		textindicator:  "Dabartinis stilius",
+		undo:           "Atšaukia paskutini jūsų veiksmą",
+		redo:           "Pakartoja paskutinį atšauktą jūsų veiksmą",
+		cut:            "Iškirpti",
+		copy:           "Kopijuoti",
+		paste:          "Įterpti"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Atšaukti"
+	},
+
+	msg: {
+		"Path":         "Kelias",
+		"TEXT_MODE":    "Jūs esete teksto režime.  Naudokite [<>] mygtuką grįžimui į WYSIWYG."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ro.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ro.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ro.js	(revision 103)
@@ -0,0 +1,80 @@
+// I18N constants
+
+// LANG: "ro", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ro",
+
+	tooltips: {
+		bold:           "Îngroşat",
+		italic:         "Italic",
+		underline:      "Subliniat",
+		strikethrough:  "Tăiat",
+		subscript:      "Indice jos",
+		superscript:    "Indice sus",
+		justifyleft:    "Aliniere la stânga",
+		justifycenter:  "Aliniere pe centru",
+		justifyright:   "Aliniere la dreapta",
+		justifyfull:    "Aliniere în ambele părţi",
+		orderedlist:    "Listă ordonată",
+		unorderedlist:  "Listă marcată",
+		outdent:        "Micşorează alineatul",
+		indent:         "Măreşte alineatul",
+		forecolor:      "Culoarea textului",
+		hilitecolor:    "Culoare de fundal",
+		horizontalrule: "Linie orizontală",
+		createlink:     "Inserează/modifică link",
+		insertimage:    "Inserează/modifică imagine",
+		inserttable:    "Inserează un tabel",
+		htmlmode:       "Sursa HTML / WYSIWYG",
+		popupeditor:    "Maximizează editorul",
+		about:          "Despre editor",
+		showhelp:       "Documentaţie (devel)",
+		textindicator:  "Stilul curent",
+		undo:           "Anulează ultima acţiune",
+		redo:           "Reface ultima acţiune anulată",
+		cut:            "Taie în clipboard",
+		copy:           "Copie în clipboard",
+		paste:          "Aduce din clipboard",
+		lefttoright:    "Direcţia de scriere: stânga - dreapta",
+		righttoleft:    "Direcţia de scriere: dreapta - stânga"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Anulează"
+	},
+
+	msg: {
+		"Path":         "Calea",
+		"TEXT_MODE":    "Eşti în modul TEXT.  Apasă butonul [<>] pentru a te întoarce în modul WYSIWYG."
+	},
+
+	dialogs: {
+		"Cancel"                                            : "Renunţă",
+		"Insert/Modify Link"                                : "Inserează/modifcă link",
+		"New window (_blank)"                               : "Fereastră nouă (_blank)",
+		"None (use implicit)"                               : "Nimic (foloseşte ce-i implicit)",
+		"OK"                                                : "Acceptă",
+		"Other"                                             : "Alt target",
+		"Same frame (_self)"                                : "Aceeaşi fereastră (_self)",
+		"Target:"                                           : "Ţinta:",
+		"Title (tooltip):"                                  : "Titlul (tooltip):",
+		"Top frame (_top)"                                  : "Fereastra principală (_top)",
+		"URL:"                                              : "URL:",
+		"You must enter the URL where this link points to"  : "Trebuie să introduceţi un URL"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/lv.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/lv.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/lv.js	(revision 103)
@@ -0,0 +1,55 @@
+// I18N constants
+
+// LANG: "lv", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+// Translated by: Janis Klavins, <janis.klavins@devia.lv>
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "lv",
+
+	tooltips: {
+		bold:           "Trekniem burtiem",
+		italic:         "Kursv",
+		underline:      "Pasvtrots",
+		strikethrough:  "Prsvtrots",
+		subscript:      "Novietot zem rindas",
+		superscript:    "Novietot virs rindas",
+		justifyleft:    "Izldzint pa kreisi",
+		justifycenter:  "Izldzint centr",
+		justifyright:   "Izldzint pa labi",
+		justifyfull:    "Izldzint pa visu lapu",
+		orderedlist:    "Numurts saraksts",
+		unorderedlist:  "Saraksts",
+		outdent:        "Samazint atkpi",
+		indent:         "Palielint atkpi",
+		forecolor:      "Burtu krsa",
+		hilitecolor:    "Fona krsa",
+		horizontalrule: "Horizontla atdaltjsvtra",
+		createlink:     "Ievietot hipersaiti",
+		insertimage:    "Ievietot attlu",
+		inserttable:    "Ievietot tabulu",
+		htmlmode:       "Skatt HTML kodu",
+		popupeditor:    "Palielint Reditju",
+		about:          "Par o reditju",
+		showhelp:       "Reditja palgs",
+		textindicator:  "Patreizjais stils",
+		undo:           "Atcelt pdjo darbbu",
+		redo:           "Atkrtot pdjo darbbu",
+		cut:            "Izgriezt iezmto",
+		copy:           "Kopt iezmto",
+		paste:          "Ievietot iezmto"
+	},
+
+	buttons: {
+		"ok":           "Labi",
+		"cancel":       "Atcelt"
+	},
+
+	msg: {
+		"Path":         "Ce",
+		"TEXT_MODE":    "Js patlaban darbojaties TEKSTA REM. Lai prietu atpaka uz GRAFISKO REMU (WYSIWIG), lietojiet [<>] pogu."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/vn.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/vn.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/vn.js	(revision 103)
@@ -0,0 +1,51 @@
+// I18N constants : Vietnamese
+// LANG: "en", ENCODING: UTF-8
+// Author: Nguyễn Đình Nam, <hncryptologist@yahoo.com>
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "vn",
+
+	tooltips: {
+		bold:           "Đậm",
+		italic:         "Nghiêng",
+		underline:      "Gạch Chân",
+		strikethrough:  "Gạch Xóa",
+		subscript:      "Viết Xuống Dưới",
+		superscript:    "Viết Lên Trên",
+		justifyleft:    "Căn Trái",
+		justifycenter:  "Căn Giữa",
+		justifyright:   "Căn Phải",
+		justifyfull:    "Căn Đều",
+		orderedlist:    "Danh Sách Có Thứ Tự",
+		unorderedlist:  "Danh Sách Phi Thứ Tự",
+		outdent:        "Lùi Ra Ngoài",
+		indent:         "Thụt Vào Trong",
+		forecolor:      "Màu Chữ",
+		backcolor:      "Màu Nền",
+		horizontalrule: "Dòng Kẻ Ngang",
+		createlink:     "Tạo Liên Kết",
+		insertimage:    "Chèn Ảnh",
+		inserttable:    "Chèn Bảng",
+		htmlmode:       "Chế Độ Mã HTML",
+		popupeditor:    "Phóng To Ô Soạn Thảo",
+		about:          "Tự Giới Thiệu",
+		showhelp:       "Giúp Đỡ",
+		textindicator:  "Định Dạng Hiện Thời",
+		undo:           "Undo",
+		redo:           "Redo",
+		cut:            "Cắt",
+		copy:           "Copy",
+		paste:          "Dán"
+	},
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Hủy"
+	},
+	msg: {
+		"Path":         "Đường Dẫn",
+		"TEXT_MODE":    "Bạn đang ở chế độ text.  Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/da.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/da.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/da.js	(revision 103)
@@ -0,0 +1,38 @@
+// danish version for htmlArea v3.0 - Alpha Release
+// - translated by rene<rene@laerke.net>
+// terms and licenses are equal to htmlarea!
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "da",
+
+	tooltips: {
+		bold:           "Fed",
+		italic:         "Kursiv",
+		underline:      "Understregning",
+		strikethrough:  "Overstregning ",
+		subscript:      "Snket skrift",
+		superscript:    "Hvet skrift",
+		justifyleft:    "Venstrejuster",
+		justifycenter:  "Centrer",
+		justifyright:   "Hjrejuster",
+		justifyfull:    "Lige margener",
+		orderedlist:    "Opstilling med tal",
+		unorderedlist:  "Opstilling med punkttegn",
+		outdent:        "Formindsk indrykning",
+		indent:         "Forg indrykning",
+		forecolor:      "Skriftfarve",
+		backcolor:      "Baggrundsfarve",
+		horizontalrule: "Horisontal linie",
+		createlink:     "Indst hyperlink",
+		insertimage:    "Indst billede",
+		inserttable:    "Indst tabel",
+		htmlmode:       "HTML visning",
+		popupeditor:    "Vis editor i popup",
+		about:          "Om htmlarea",
+		help:           "Hjlp",
+		textindicator:  "Anvendt stil"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ru.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ru.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ru.js	(revision 103)
@@ -0,0 +1,63 @@
+﻿// I18N constants
+
+// LANG: "ru", ENCODING: UTF-8 | ISO-8859-1
+// Author: Yulya Shtyryakova, <yulya@vdcom.ru>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ru",
+
+	tooltips: {
+		bold:           "Полужирный",
+		italic:         "Наклонный",
+		underline:      "Подчеркнутый",
+		strikethrough:  "Перечеркнутый",
+		subscript:      "Нижний индекс",
+		superscript:    "Верхний индекс",
+		justifyleft:    "По левому краю",
+		justifycenter:  "По центру",
+		justifyright:   "По правому краю",
+		justifyfull:    "По ширине",
+		insertorderedlist:    "Нумерованный лист",
+		insertunorderedlist:  "Маркированный лист",
+		outdent:        "Уменьшить отступ",
+		indent:         "Увеличить отступ",
+		forecolor:      "Цвет шрифта",
+		hilitecolor:    "Цвет фона",
+		horizontalrule: "Горизонтальный разделитель",
+		createlink:     "Вставить гиперссылку",
+		insertimage:    "Вставить изображение",
+		inserttable:    "Вставить таблицу",
+		htmlmode:       "Показать Html-код",
+		popupeditor:    "Увеличить редактор",
+		about:          "О редакторе",
+		showhelp:       "Помощь",
+		textindicator:  "Текущий стиль",
+		undo:           "Отменить",
+		redo:           "Повторить",
+		cut:            "Вырезать",
+		copy:           "Копировать",
+		paste:          "Вставить"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Отмена"
+	},
+
+	msg: {
+		"Path":         "Путь",
+		"TEXT_MODE":    "Вы в режиме отображения Html-кода. нажмите кнопку [<>], чтобы переключиться в визуальный режим."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/gb.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/gb.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/gb.js	(revision 103)
@@ -0,0 +1,36 @@
+// I18N constants -- Chinese GB
+// by Dave Lo -- dlo@interactivetools.com
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "gb",
+
+	tooltips: {
+		bold:           "",
+		italic:         "б",
+		underline:      "",
+		strikethrough:  "ɾ",
+		subscript:      "±",
+		superscript:    "ϱ",
+		justifyleft:    "λÿ",
+		justifycenter:  "λþ",
+		justifyright:   "λÿ",
+		justifyfull:    "λƽ",
+		orderedlist:    "˳嵥",
+		unorderedlist:  "嵥",
+		outdent:        "Сǰհ",
+		indent:         "ӿǰհ",
+		forecolor:      "ɫ",
+		backcolor:      "ɫ",
+		horizontalrule: "ˮƽ",
+		createlink:     "",
+		insertimage:    "ͼ",
+		inserttable:    "",
+		htmlmode:       "лHTMLԭʼ",
+		popupeditor:    "Ŵ",
+		about:          " HTMLArea",
+		help:           "˵",
+		textindicator:  ""
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/de.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/de.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/de.js	(revision 103)
@@ -0,0 +1,54 @@
+// german version for htmlArea v3.0 - Alpha Release
+// - translated by AtK<atk@chello.at>
+// terms and licenses are equal to htmlarea!
+// translation improved by broxx<broxx@broxx.com>
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "de",
+
+	tooltips: {
+		bold:           "Fett",
+		italic:         "Kursiv",
+		underline:      "Unterstrichen",
+		strikethrough:  "Durchgestrichen",
+		subscript:      "Hochgestellt",
+		superscript:    "Tiefgestellt",
+		justifyleft:    "Links ausrichten",
+		justifycenter:  "Zentrieren",
+		justifyright:   "Rechts ausrichten",
+		justifyfull:    "Blocksatz",
+		orderedlist:    "Nummerierung",
+		unorderedlist:  "Aufzaehlungszeichen",
+		outdent:        "Einzug verkleinern",
+		indent:         "Einzug vergrssern",
+		forecolor:      "Text Farbe",
+		hilitecolor:    "Hintergrund Farbe",
+		horizontalrule: "Horizontale Linie",
+		createlink:     "Hyperlink einfuegen",
+		insertimage:    "Bild einfuegen",
+		inserttable:    "Tabelle einfuegen",
+		htmlmode:       "HTML Modus",
+		popupeditor:    "Editor im Popup ffnen",
+		about:          "Ueber HtmlArea",
+		showhelp:       "Hilfe",
+		textindicator:  "derzeitiger Stil",
+		undo:           "Rueckgaengig",
+		redo:           "Wiederholen",
+		cut:            "Ausschneiden",
+		copy:           "Kopieren",
+		paste:          "Einfuegen"
+	},
+  
+ buttons: {
+		"ok":           "OK",
+		"cancel":       "Abbrechen"
+	},
+
+	msg: {
+		"Path":         "Pfad",
+		"TEXT_MODE":    "Du befindest dich im HTML Modus.  Benuetze die [<>] Schaltflaeche um in den WYSIWIG-Modus zu wechseln."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ee.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ee.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ee.js	(revision 103)
@@ -0,0 +1,63 @@
+// I18N constants
+
+// LANG: "ee", ENCODING: UTF-8 | ISO-8859-1
+// Author: Martin Raie, <albertvill@hot.ee>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ee",
+
+	tooltips: {
+		bold:           "Paks",
+		italic:         "Kursiiv",
+		underline:      "Allakriipsutatud",
+		strikethrough:  "Lbikriipsutatud",
+		subscript:      "Allindeks",
+		superscript:    "laindeks",
+		justifyleft:    "Joonda vasakule",
+		justifycenter:  "Joonda keskele",
+		justifyright:   "Joonda paremale",
+		justifyfull:    "Rpjoonda",
+		insertorderedlist:    "Nummerdus",
+		insertunorderedlist:  "Tpploend",
+		outdent:        "Vhenda taanet",
+		indent:         "Suurenda taanet",
+		forecolor:      "Fondi vrv",
+		hilitecolor:    "Tausta vrv",
+		inserthorizontalrule: "Horisontaaljoon",
+		createlink:     "Lisa viit",
+		insertimage:    "Lisa pilt",
+		inserttable:    "Lisa tabel",
+		htmlmode:       "HTML/tavaline vaade",
+		popupeditor:    "Suurenda toimeti aken",
+		about:          "Teave toimeti kohta",
+		showhelp:       "Spikker",
+		textindicator:  "Kirjastiil",
+		undo:           "Vta tagasi",
+		redo:           "Tee uuesti",
+		cut:            "Lika",
+		copy:           "Kopeeri",
+		paste:          "Kleebi"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Loobu"
+	},
+
+	msg: {
+		"Path":         "Path",
+		"TEXT_MODE":    "Sa oled tekstireziimis.  Kasuta nuppu [<>] llitamaks tagasi WYSIWIG reziimi."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/he.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/he.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/he.js	(revision 103)
@@ -0,0 +1,63 @@
+// I18N constants
+
+// LANG: "he", ENCODING: UTF-8
+// Author: Liron Newman, <plastish@ultinet.org>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "he",
+
+	tooltips: {
+		bold:           "מודגש",
+		italic:         "נטוי",
+		underline:      "קו תחתי",
+		strikethrough:  "קו אמצע",
+		subscript:      "כתב עילי",
+		superscript:    "כתב תחתי",
+		justifyleft:    " ישור לשמאל",
+		justifycenter:  "ישור למרכז",
+		justifyright:   "ישור לימין",
+		justifyfull:    "יישור לשורה מלאה",
+		orderedlist:    "רשימה ממוספרת",
+		unorderedlist:  "רשימה לא ממוספרת",
+		outdent:        "הקטן כניסה",
+		indent:         "הגדל כניסה",
+		forecolor:      "צבע גופן",
+		hilitecolor:    "צבע רקע",
+		horizontalrule: "קו אנכי",
+		createlink:     "הכנס היפר-קישור",
+		insertimage:    "הכנס תמונה",
+		inserttable:    "הכנס טבלה",
+		htmlmode:       "שנה מצב קוד HTML",
+		popupeditor:    "הגדל את העורך",
+		about:          "אודות עורך זה",
+		showhelp:       "עזרה לשימוש בעורך",
+		textindicator:  "סגנון נוכחי",
+		undo:           "מבטל את פעולתך האחרונה",
+		redo:           "מבצע מחדש את הפעולה האחרונה שביטלת",
+		cut:            "גזור בחירה",
+		copy:           "העתק בחירה",
+		paste:          "הדבק מהלוח"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "ביטול"
+	},
+
+	msg: {
+		"Path":         "נתיב עיצוב",
+		"TEXT_MODE":    "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב)."
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/fi.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/fi.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/fi.js	(revision 103)
@@ -0,0 +1,46 @@
+// I18N constants
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "en",
+
+	tooltips: {
+		bold:           	"Lihavoitu",
+		italic:         	"Kursivoitu",
+		underline:      	"Alleviivattu",
+		strikethrough:  	"Yliviivattu",
+		subscript:      	"Alaindeksi",
+		superscript:    	"Ylindeksi",
+		justifyleft:    	"Tasaa vasemmat reunat",
+		justifycenter:  	"Keskit",
+		justifyright:   	"Tasaa oikeat reunat",
+		justifyfull:    	"Tasaa molemmat reunat",
+		insertorderedlist: 	"Numerointi",
+		insertunorderedlist: 	"Luettelomerkit",
+		outdent:        	"Lis sisennyst",
+		indent:         	"Pienenn sisennyst",
+		forecolor:      	"Fontin vri",
+		hilitecolor:    	"Taustavri",
+		inserthorizontalrule: 	"Vaakaviiva",
+		createlink:     	"Lis Linkki",
+		insertimage:    	"Lis Kuva",
+		inserttable:    	"Lis Taulu",
+		htmlmode:       	"HTML Lhdekoodi vs WYSIWYG",
+		popupeditor:    	"Suurenna Editori",
+		about:          	"Tietoja Editorista",
+		showhelp:           	"Nyt Ohje",
+		textindicator:  	"Nykyinen tyyli",
+		undo:           	"Peruuta viimeinen toiminto",
+		redo:           	"Palauta viimeinen toiminto",
+		cut:            	"Leikkaa maalattu",
+		copy:           	"Kopioi maalattu",
+		paste:          	"Liit leikepydlt"
+	},
+
+	buttons: {
+		"ok":           	"Hyvksy",
+		"cancel":       	"Peruuta"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/nb.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/nb.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/nb.js	(revision 103)
@@ -0,0 +1,36 @@
+// I18N constants
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "nb",
+
+	tooltips: {
+		bold:           "Fet",
+		italic:         "Kursiv",
+		underline:      "Understreket",
+		strikethrough:  "Gjennomstreket",
+		subscript:      "Senket",
+		superscript:    "Hevet",
+		justifyleft:    "Venstrejuster",
+		justifycenter:  "Midtjuster",
+		justifyright:   "Hyrejuster",
+		justifyfull:    "Blokkjuster",
+		orderedlist:    "Nummerert liste",
+		unorderedlist:  "Punktmerket liste",
+		outdent:        "ke innrykk",
+		indent:         "Reduser innrykk",
+		forecolor:      "Skriftfarge",
+		backcolor:      "Bakgrunnsfarge",
+		horizontalrule: "Horisontal linje",
+		createlink:     "Sett inn lenke",
+		insertimage:    "Sett inn bilde",
+		inserttable:    "Sett inn tabell",
+		htmlmode:       "Vis HTML kode",
+		popupeditor:    "Forstrr redigeringsvindu",
+		about:          "Om..",
+		help:           "Hjelp",
+		textindicator:  "Gjeldende stil"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/el.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/el.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/el.js	(revision 103)
@@ -0,0 +1,75 @@
+// I18N constants
+
+// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
+// Author: Dimitris Glezos, dimitris@glezos.com
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "el",
+
+	tooltips: {
+		bold:           "Έντονα",
+		italic:         "Πλάγια",
+		underline:      "Υπογραμμισμένα",
+		strikethrough:  "Διαγραμμένα",
+		subscript:      "Δείκτης",
+		superscript:    "Δείκτης",
+		justifyleft:    "Στοίχιση Αριστερά",
+		justifycenter:  "Στοίχιση Κέντρο",
+		justifyright:   "Στοίχιση Δεξιά",
+		justifyfull:    "Πλήρης Στοίχιση",
+		orderedlist:    "Αρίθμηση",
+		unorderedlist:  "Κουκκίδες",
+		outdent:        "Μείωση Εσοχής",
+		indent:         "Αύξηση Εσοχής",
+		forecolor:      "Χρώμα Γραμματοσειράς",
+		hilitecolor:    "Χρώμα Φόντου",
+		horizontalrule: "Οριζόντια Γραμμή",
+		createlink:     "Εισαγωγή Συνδέσμου",
+		insertimage:    "Εισαγωγή/Τροποποίηση Εικόνας",
+		inserttable:    "Εισαγωγή Πίνακα",
+		htmlmode:       "Εναλλαγή σε/από HTML",
+		popupeditor:    "Μεγένθυνση επεξεργαστή",
+		about:          "Πληροφορίες",
+		showhelp:       "Βοήθεια",
+		textindicator:  "Παρών στυλ",
+		undo:           "Αναίρεση τελευταίας ενέργειας",
+		redo:           "Επαναφορά από αναίρεση",
+		cut:            "Αποκοπή",
+		copy:           "Αντιγραφή",
+		paste:          "Επικόλληση",
+        lefttoright:    "Κατεύθυνση αριστερά προς δεξιά",
+        righttoleft:    "Κατεύθυνση από δεξιά προς τα αριστερά"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Ακύρωση"
+	},
+
+	msg: {
+		"Path":         "Διαδρομή",
+		"TEXT_MODE":    "Είστε σε TEXT MODE.  Χρησιμοποιήστε το κουμπί [<>] για να επανέρθετε στο WYSIWIG.",
+
+       "IE-sucks-full-screen":	"Η κατάσταση πλήρης οθόνης έχει προβλήματα με τον Internet Explorer, " +
+       							"λόγω σφαλμάτων στον ίδιο τον browser.  Αν το σύστημα σας είναι Windows 9x " +
+       							"μπορεί και να χρειαστείτε reboot. Αν είστε σίγουροι, πατήστε ΟΚ."
+       },
+
+       dialogs: {
+               "Cancel"                                            : "Ακύρωση",
+               "Insert/Modify Link"                                : "Εισαγωγή/Τροποποίηση σύνδεσμου",
+               "New window (_blank)"                               : "Νέο παράθυρο (_blank)",
+               "None (use implicit)"                               : "Κανένα (χρήση απόλυτου)",
+               "OK"                                                : "Εντάξει",
+               "Other"                                             : "Αλλο",
+               "Same frame (_self)"                                : "Ίδιο frame (_self)",
+               "Target:"                                           : "Target:",
+               "Title (tooltip):"                                  : "Τίτλος (tooltip):",
+               "Top frame (_top)"                                  : "Πάνω frame (_top)",
+               "URL:"                                              : "URL:",
+               "You must enter the URL where this link points to"  : "Πρέπει να εισάγετε το URL που οδηγεί αυτός ο σύνδεσμος"
+       }
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/ja-sjis.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/ja-sjis.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/ja-sjis.js	(revision 103)
@@ -0,0 +1,37 @@
+// I18N constants -- Japanese Shift-JIS
+// by Manabu Onoue -- tmocsys@tmocsys.com
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "ja-sjis",
+
+	tooltips: {
+		bold:           "",
+		italic:         "Α",
+		underline:      "",
+		strikethrough:  "ł",
+		subscript:      "tY",
+		superscript:    "tY",
+		justifyleft:    "",
+		justifycenter:  "",
+		justifyright:   "E",
+		justifyfull:    "ϓt",
+		orderedlist:    "ԍtӏ",
+		unorderedlist:  "Ltӏ",
+		outdent:        "Cfg",
+		indent:         "Cfgݒ",
+		forecolor:      "F",
+		backcolor:      "wiF",
+		horizontalrule: "",
+		createlink:     "N쐬",
+		insertimage:    "摜}",
+		inserttable:    "e[u}",
+		htmlmode:       "HTML\ؑ",
+		popupeditor:    "GfB^g",
+		about:          "o[W",
+		help:           "wv",
+		textindicator:  "݂̃X^C"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/lang/en.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/lang/en.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/lang/en.js	(revision 103)
@@ -0,0 +1,88 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "en",
+
+	tooltips: {
+		bold:           "Bold",
+		italic:         "Italic",
+		underline:      "Underline",
+		strikethrough:  "Strikethrough",
+		subscript:      "Subscript",
+		superscript:    "Superscript",
+		justifyleft:    "Justify Left",
+		justifycenter:  "Justify Center",
+		justifyright:   "Justify Right",
+		justifyfull:    "Justify Full",
+		orderedlist:    "Ordered List",
+		unorderedlist:  "Bulleted List",
+		outdent:        "Decrease Indent",
+		indent:         "Increase Indent",
+		forecolor:      "Font Color",
+		hilitecolor:    "Background Color",
+		horizontalrule: "Horizontal Rule",
+		createlink:     "Insert Web Link",
+		insertimage:    "Insert/Modify Image",
+		inserttable:    "Insert Table",
+		htmlmode:       "Toggle HTML Source",
+		popupeditor:    "Enlarge Editor",
+		about:          "About this editor",
+		showhelp:       "Help using editor",
+		textindicator:  "Current style",
+		undo:           "Undoes your last action",
+		redo:           "Redoes your last action",
+		cut:            "Cut selection",
+		copy:           "Copy selection",
+		paste:          "Paste from clipboard",
+		lefttoright:    "Direction left to right",
+		righttoleft:    "Direction right to left"
+	},
+
+	buttons: {
+		"ok":           "OK",
+		"cancel":       "Cancel"
+	},
+
+	msg: {
+		"Path":         "Path",
+		"TEXT_MODE":    "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.",
+
+		"IE-sucks-full-screen" :
+		// translate here
+		"The full screen mode is known to cause problems with Internet Explorer, " +
+		"due to browser bugs that we weren't able to workaround.  You might experience garbage " +
+		"display, lack of editor functions and/or random browser crashes.  If your system is Windows 9x " +
+		"it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
+		"You have been warned.  Please press OK if you still want to try the full screen editor."
+	},
+
+	dialogs: {
+		"Cancel"                                            : "Cancel",
+		"Insert/Modify Link"                                : "Insert/Modify Link",
+		"New window (_blank)"                               : "New window (_blank)",
+		"None (use implicit)"                               : "None (use implicit)",
+		"OK"                                                : "OK",
+		"Other"                                             : "Other",
+		"Same frame (_self)"                                : "Same frame (_self)",
+		"Target:"                                           : "Target:",
+		"Title (tooltip):"                                  : "Title (tooltip):",
+		"Top frame (_top)"                                  : "Top frame (_top)",
+		"URL:"                                              : "URL:",
+		"You must enter the URL where this link points to"  : "You must enter the URL where this link points to"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/lang/ro.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/lang/ro.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/lang/ro.js	(revision 103)
@@ -0,0 +1,25 @@
+// I18N for the FullPage plugin
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+FullPage.I18N = {
+	"Alternate style-sheet:":		"Template CSS alternativ:",
+	"Background color:":			"Culoare de fundal:",
+	"Cancel":				"Renunţă",
+	"DOCTYPE:":				"DOCTYPE:",
+	"Document properties":			"Proprietăţile documentului",
+	"Document title:":			"Titlul documentului:",
+	"OK":					"Acceptă",
+	"Primary style-sheet:":			"Template CSS principal:",
+	"Text color:":				"Culoare text:"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/lang/en.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/lang/en.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/lang/en.js	(revision 103)
@@ -0,0 +1,25 @@
+// I18N for the FullPage plugin
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+FullPage.I18N = {
+	"Alternate style-sheet:":		"Alternate style-sheet:",
+	"Background color:":			"Background color:",
+	"Cancel":				"Cancel",
+	"DOCTYPE:":				"DOCTYPE:",
+	"Document properties":			"Document properties",
+	"Document title:":			"Document title:",
+	"OK":					"OK",
+	"Primary style-sheet:":			"Primary style-sheet:",
+	"Text color:":				"Text color:"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/test.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/test.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/test.html	(revision 103)
@@ -0,0 +1,89 @@
+<html>
+  <head>
+    <title>Test of FullPage plugin</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <script type="text/javascript">
+      _editor_url = "../../";
+    </script>
+
+    <!-- load the main HTMLArea files -->
+    <script type="text/javascript" src="../../htmlarea.js"></script>
+    <script type="text/javascript" src="../../lang/en.js"></script>
+    <script type="text/javascript" src="../../dialog.js"></script>
+
+    <!-- <script type="text/javascript" src="popupdiv.js"></script> -->
+    <script type="text/javascript" src="../../popupwin.js"></script>
+
+    <script type="text/javascript">
+      HTMLArea.loadPlugin("TableOperations");
+      HTMLArea.loadPlugin("SpellChecker");
+      HTMLArea.loadPlugin("FullPage");
+
+      function initDocument() {
+        var editor = new HTMLArea("editor");
+        editor.registerPlugin(TableOperations);
+        editor.registerPlugin(SpellChecker);
+        editor.registerPlugin(FullPage);
+        editor.generate();
+      }
+    </script>
+
+    <style type="text/css">
+      @import url(../../htmlarea.css);
+    </style>
+
+  </head>
+
+  <body onload="initDocument()">
+    <h1>Test of FullPage plugin</h1>
+
+    <textarea id="editor" style="height: 30em; width: 100%;">
+      &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;
+      &lt;html&gt;
+        &lt;head&gt;
+          &lt;title&gt;FullPage plugin for HTMLArea&lt;/title&gt;
+          &lt;link rel="alternate stylesheet" href="http://dynarch.com/mishoo/css/dark.css" /&gt;
+          &lt;link rel="stylesheet" href="http://dynarch.com/mishoo/css/cool-light.css" /&gt;
+        &lt;/head&gt;
+        &lt;body style="background-color: #ddddee; color: #000077;"&gt;
+          &lt;table style="width:60%; height: 90%; margin: 2% auto 1% auto;" align="center" border="0" cellpadding="0" cellspacing="0"&gt;
+            &lt;tr&gt;
+              &lt;td style="background-color: #ddeedd; border: 2px solid #002; height: 1.5em; padding: 2px; font: bold 24px Verdana;"&gt;
+                FullPage plugin
+              &lt;/td&gt;
+            &lt;/tr&gt;
+            &lt;tr&gt;
+              &lt;td style="background-color: #fff; border: 1px solid #aab; padding: 1em 3em; font: 12px Verdana;"&gt;
+                &lt;p&gt;
+                  This plugin enables one to edit a full HTML file in &lt;a
+                    href="http://dynarch.com/htmlarea/"&gt;HTMLArea&lt;/a&gt;.  This is not
+                  normally possible with just the core editor since it only
+                  retrieves the HTML inside the &lt;code&gt;body&lt;/code&gt; tag.
+                &lt;/p&gt;
+                &lt;p&gt;
+                  It provides the ability to change the &lt;code&gt;DOCTYPE&lt;/code&gt; of
+                  the document, &lt;code&gt;body&lt;/code&gt; &lt;code&gt;bgcolor&lt;/code&gt; and
+                  &lt;code&gt;fgcolor&lt;/code&gt; attributes as well as to add additional
+                  &lt;code&gt;link&lt;/code&gt;-ed stylesheets.  Cool, eh?
+                &lt;/p&gt;
+                &lt;p&gt;
+                  The development of this plugin was initiated and sponsored by
+                  &lt;a href="http://thycotic.com"&gt;Thycotic Software Ltd.&lt;/a&gt;.
+                  That's also cool, isn't it? ;-)
+                &lt;/p&gt;
+              &lt;/td&gt;
+            &lt;/tr&gt;
+          &lt;/table&gt;
+        &lt;/body&gt;
+      &lt;/html&gt;
+    </textarea>
+
+    <hr />
+    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
+<!-- Created: Wed Oct  1 19:55:37 EEST 2003 -->
+<!-- hhmts start -->
+Last modified on Sat Oct 25 01:06:59 2003
+<!-- hhmts end -->
+<!-- doc-lang: English -->
+  </body>
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/popups/docprop.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/popups/docprop.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/popups/docprop.html	(revision 103)
@@ -0,0 +1,131 @@
+<html>
+
+<head>
+  <title>Document properties</title>
+
+<script type="text/javascript" src="../../../popups/popup.js"></script>
+
+<script type="text/javascript">
+
+FullPage = window.opener.FullPage; // load the FullPage plugin and lang file ;-)
+window.resizeTo(400, 100);
+
+  var accepted = {
+      f_doctype       : true,
+      f_title         : true,
+      f_body_bgcolor  : true,
+      f_body_fgcolor  : true,
+      f_base_style    : true,
+      f_alt_style     : true
+  };
+
+var editor = null;
+function Init() {
+  __dlg_translate(FullPage.I18N);
+  __dlg_init();
+  var params = window.dialogArguments;
+  for (var i in params) {
+      if (i in accepted) {
+        var el = document.getElementById(i);
+        el.value = params[i];
+      }
+  }
+  editor = params.editor;
+  document.getElementById("f_title").focus();
+  document.getElementById("f_title").select();
+};
+
+function onOK() {
+  var required = {
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+
+  var param = {};
+  for (var i in accepted) {
+    var el = document.getElementById(i);
+    param[i] = el.value;
+  }
+  __dlg_close(param);
+  return false;
+};
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+};
+
+</script>
+
+<style type="text/css">
+html, body {
+  background: ButtonFace;
+  color: ButtonText;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding: 5px; }
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+table .label { text-align: right; width: 12em; }
+
+.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;
+}
+
+#buttons {
+      margin-top: 1em; border-top: 1px solid #999;
+      padding: 2px; text-align: right;
+}
+</style>
+
+  </head>
+
+  <body onload="Init()">
+
+    <div class="title"><span>Document properties</span></div>
+
+    <table style="width: 100%">
+      <tr>
+        <td class="label"><span>Document title:</span></td>
+        <td><input type="text" id="f_title" style="width: 100%" /></td>
+      </tr>
+      <tr>
+        <td class="label"><span>DOCTYPE:</span></td>
+        <td><input type="text" id="f_doctype" style="width: 100%" /></td>
+      </tr>
+      <tr>
+        <td class="label"><span>Primary style-sheet:</span></td>
+        <td><input type="text" id="f_base_style" style="width: 100%" /></td>
+      </tr>
+      <tr>
+        <td class="label"><span>Alternate style-sheet:</span></td>
+        <td><input type="text" id="f_alt_style" style="width: 100%" /></td>
+      </tr>
+      <tr>
+        <td class="label"><span>Background color:</span></td>
+        <td><input type="text" id="f_body_bgcolor" size="7" /></td>
+      </tr>
+      <tr>
+        <td class="label"><span>Text color:</span></td>
+        <td><input type="text" id="f_body_fgcolor" size="7" /></td>
+      </tr>
+    </table>
+
+    <div id="buttons">
+      <button type="button" name="ok" onclick="return onOK();"><span>OK</span></button>
+      <button type="button" name="cancel" onclick="return onCancel();"><span>Cancel</span></button>
+    </div>
+
+  </body>
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/full-page.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/full-page.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/full-page.js	(revision 103)
@@ -0,0 +1,143 @@
+// FullPage Plugin for HTMLArea-3.0
+// Implementation by Mihai Bazon.  Sponsored by http://thycotic.com
+//
+// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
+// This notice MUST stay intact for use (see license.txt).
+//
+// 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 for InteractiveTools.
+//   http://dynarch.com/mishoo
+//
+// $Id: full-page.js,v 1.1.1.1 2005/01/30 10:31:38 rdjurovich Exp $
+
+function FullPage(editor) {
+	this.editor = editor;
+
+	var cfg = editor.config;
+	cfg.fullPage = true;
+	var tt = FullPage.I18N;
+	var self = this;
+
+	cfg.registerButton("FP-docprop", tt["Document properties"], editor.imgURL("docprop.gif", "FullPage"), false,
+			   function(editor, id) {
+				   self.buttonPress(editor, id);
+			   });
+
+	// add a new line in the toolbar
+	cfg.toolbar[0].splice(0, 0, "separator");
+	cfg.toolbar[0].splice(0, 0, "FP-docprop");
+};
+
+FullPage._pluginInfo = {
+	name          : "FullPage",
+	version       : "1.0",
+	developer     : "Mihai Bazon",
+	developer_url : "http://dynarch.com/mishoo/",
+	c_owner       : "Mihai Bazon",
+	sponsor       : "Thycotic Software Ltd.",
+	sponsor_url   : "http://thycotic.com",
+	license       : "htmlArea"
+};
+
+FullPage.prototype.buttonPress = function(editor, id) {
+	var self = this;
+	switch (id) {
+	    case "FP-docprop":
+		var doc = editor._doc;
+		var links = doc.getElementsByTagName("link");
+		var style1 = '';
+		var style2 = '';
+		for (var i = links.length; --i >= 0;) {
+			var link = links[i];
+			if (/stylesheet/i.test(link.rel)) {
+				if (/alternate/i.test(link.rel))
+					style2 = link.href;
+				else
+					style1 = link.href;
+			}
+		}
+		var title = doc.getElementsByTagName("title")[0];
+		title = title ? title.innerHTML : '';
+		var init = {
+			f_doctype      : editor.doctype,
+			f_title        : title,
+			f_body_bgcolor : HTMLArea._colorToRgb(doc.body.style.backgroundColor),
+			f_body_fgcolor : HTMLArea._colorToRgb(doc.body.style.color),
+			f_base_style   : style1,
+			f_alt_style    : style2,
+
+			editor         : editor
+		};
+		editor._popupDialog("plugin://FullPage/docprop", function(params) {
+			self.setDocProp(params);
+		}, init);
+		break;
+	}
+};
+
+FullPage.prototype.setDocProp = function(params) {
+	var txt = "";
+	var doc = this.editor._doc;
+	var head = doc.getElementsByTagName("head")[0];
+	var links = doc.getElementsByTagName("link");
+	var style1 = null;
+	var style2 = null;
+	for (var i = links.length; --i >= 0;) {
+		var link = links[i];
+		if (/stylesheet/i.test(link.rel)) {
+			if (/alternate/i.test(link.rel))
+				style2 = link;
+			else
+				style1 = link;
+		}
+	}
+	function createLink(alt) {
+		var link = doc.createElement("link");
+		link.rel = alt ? "alternate stylesheet" : "stylesheet";
+		head.appendChild(link);
+		return link;
+	};
+
+	if (!style1 && params.f_base_style)
+		style1 = createLink(false);
+	if (params.f_base_style)
+		style1.href = params.f_base_style;
+	else if (style1)
+		head.removeChild(style1);
+
+	if (!style2 && params.f_alt_style)
+		style2 = createLink(true);
+	if (params.f_alt_style)
+		style2.href = params.f_alt_style;
+	else if (style2)
+		head.removeChild(style2);
+
+	for (var i in params) {
+		var val = params[i];
+		switch (i) {
+		    case "f_title":
+			var title = doc.getElementsByTagName("title")[0];
+			if (!title) {
+				title = doc.createElement("title");
+				head.appendChild(title);
+			} else while (node = title.lastChild)
+				title.removeChild(node);
+			if (!HTMLArea.is_ie)
+				title.appendChild(doc.createTextNode(val));
+			else
+				doc.title = val;
+			break;
+		    case "f_doctype":
+			this.editor.setDoctype(val);
+			break;
+		    case "f_body_bgcolor":
+			doc.body.style.backgroundColor = val;
+			break;
+		    case "f_body_fgcolor":
+			doc.body.style.color = val;
+			break;
+		}
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/img/docprop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/FullPage/img/docprop.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-style.css
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-style.css	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-style.css	(revision 103)
@@ -0,0 +1,10 @@
+.HA-spellcheck-error { border-bottom: 1px dashed #f00; cursor: default; }
+.HA-spellcheck-same { background-color: #cef; color: #000; }
+.HA-spellcheck-hover { background-color: #433; color: white; }
+.HA-spellcheck-fixed { border-bottom: 1px dashed #0b8; }
+.HA-spellcheck-current { background-color: #9be; color: #000; }
+.HA-spellcheck-suggestions { display: none; }
+
+#HA-spellcheck-dictionaries { display: none; }
+
+a:link, a:visited { color: #55e; }
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js	(revision 103)
@@ -0,0 +1,397 @@
+// Spell Checker Plugin for HTMLArea-3.0
+// Sponsored by www.americanbible.org
+// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+//
+// (c) dynarch.com 2003.
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+//
+// $Id: spell-check-ui.js,v 1.1.1.1 2005/01/30 10:31:43 rdjurovich Exp $
+
+// internationalization file was already loaded in parent ;-)
+var SpellChecker = window.opener.SpellChecker;
+var i18n = SpellChecker.I18N;
+
+var HTMLArea = window.opener.HTMLArea;
+var is_ie = HTMLArea.is_ie;
+var editor = SpellChecker.editor;
+var frame = null;
+var currentElement = null;
+var wrongWords = null;
+var modified = false;
+var allWords = {};
+var fixedWords = [];
+var suggested_words = {};
+
+function makeCleanDoc(leaveFixed) {
+	// document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML';
+	var words = wrongWords.concat(fixedWords);
+	for (var i = words.length; --i >= 0;) {
+		var el = words[i];
+		if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) {
+			el.parentNode.insertBefore(el.firstChild, el);
+			el.parentNode.removeChild(el);
+		} else
+			el.className = "HA-spellcheck-fixed";
+	}
+	// we should use innerHTML here, but IE6's implementation fucks up the
+	// HTML to such extent that our poor Perl parser doesn't understand it
+	// anymore.
+	return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, false, editor);
+};
+
+function recheckClicked() {
+	document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".';
+	var field = document.getElementById("f_content");
+	field.value = makeCleanDoc(true);
+	field.form.submit();
+};
+
+function saveClicked() {
+	if (modified) {
+		editor.setHTML(makeCleanDoc(false));
+	}
+	window.close();
+	return false;
+};
+
+function cancelClicked() {
+	var ok = true;
+	if (modified) {
+		ok = confirm(i18n["QUIT_CONFIRMATION"]);
+	}
+	if (ok) {
+		window.close();
+	}
+	return false;
+};
+
+function replaceWord(el) {
+	var replacement = document.getElementById("v_replacement").value;
+	var this_word_modified = (el.innerHTML != replacement);
+	if (this_word_modified)
+		modified = true;
+	if (el) {
+		el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
+	}
+	el.className += " HA-spellcheck-fixed";
+	el.__msh_fixed = true;
+	if (!this_word_modified) {
+		return false;
+	}
+	el.innerHTML = replacement;
+};
+
+function replaceClicked() {
+	replaceWord(currentElement);
+	var start = currentElement.__msh_id;
+	var index = start;
+	do {
+		++index;
+		if (index == wrongWords.length) {
+			index = 0;
+		}
+	} while ((index != start) && wrongWords[index].__msh_fixed);
+	if (index == start) {
+		index = 0;
+		alert(i18n["Finished list of mispelled words"]);
+	}
+	wrongWords[index].__msh_wordClicked(true);
+	return false;
+};
+
+function revertClicked() {
+	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
+	replaceWord(currentElement);
+	currentElement.className = "HA-spellcheck-error HA-spellcheck-current";
+	return false;
+};
+
+function replaceAllClicked() {
+	var replacement = document.getElementById("v_replacement").value;
+	var ok = true;
+	var spans = allWords[currentElement.__msh_origWord];
+	if (spans.length == 0) {
+		alert("An impossible condition just happened.  Call FBI.  ;-)");
+	} else if (spans.length == 1) {
+		replaceClicked();
+		return false;
+	}
+	/*
+	var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n";
+	if (replacement == currentElement.__msh_origWord) {
+		ok = confirm(message + "Ignore all occurrences?");
+	} else {
+		ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?");
+	}
+	*/
+	if (ok) {
+		for (var i in spans) {
+			if (spans[i] != currentElement) {
+				replaceWord(spans[i]);
+			}
+		}
+		// replace current element the last, so that we jump to the next word ;-)
+		replaceClicked();
+	}
+	return false;
+};
+
+function ignoreClicked() {
+	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
+	replaceClicked();
+	return false;
+};
+
+function ignoreAllClicked() {
+	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
+	replaceAllClicked();
+	return false;
+};
+
+function learnClicked() {
+	alert("Not [yet] implemented");
+	return false;
+};
+
+function internationalizeWindow() {
+	var types = ["div", "span", "button"];
+	for (var i in types) {
+		var tag = types[i];
+		var els = document.getElementsByTagName(tag);
+		for (var j = els.length; --j >= 0;) {
+			var el = els[j];
+			if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) {
+				var txt = el.innerHTML;
+				if (typeof i18n[txt] != "undefined") {
+					el.innerHTML = i18n[txt];
+				}
+			}
+		}
+	}
+};
+
+function initDocument() {
+	internationalizeWindow();
+	modified = false;
+	frame = document.getElementById("i_framecontent");
+	var field = document.getElementById("f_content");
+	field.value = HTMLArea.getHTML(editor._doc.body, false, editor);
+	field.form.submit();
+	document.getElementById("f_init").value = "0";
+
+	// assign some global event handlers
+
+	var select = document.getElementById("v_suggestions");
+	select.onchange = function() {
+		document.getElementById("v_replacement").value = this.value;
+	};
+	if (is_ie) {
+		select.attachEvent("ondblclick", replaceClicked);
+	} else {
+		select.addEventListener("dblclick", replaceClicked, true);
+	}
+
+	document.getElementById("b_replace").onclick = replaceClicked;
+	// document.getElementById("b_learn").onclick = learnClicked;
+	document.getElementById("b_replall").onclick = replaceAllClicked;
+	document.getElementById("b_ignore").onclick = ignoreClicked;
+	document.getElementById("b_ignall").onclick = ignoreAllClicked;
+	document.getElementById("b_recheck").onclick = recheckClicked;
+	document.getElementById("b_revert").onclick = revertClicked;
+	document.getElementById("b_info").onclick = displayInfo;
+
+	document.getElementById("b_ok").onclick = saveClicked;
+	document.getElementById("b_cancel").onclick = cancelClicked;
+
+	select = document.getElementById("v_dictionaries");
+	select.onchange = function() {
+		document.getElementById("f_dictionary").value = this.value;
+	};
+};
+
+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 wordClicked(scroll) {
+	var self = this;
+	if (scroll) (function() {
+		var pos = getAbsolutePos(self);
+		var ws = { x: frame.offsetWidth - 4,
+			   y: frame.offsetHeight - 4 };
+		var wp = { x: frame.contentWindow.document.body.scrollLeft,
+			   y: frame.contentWindow.document.body.scrollTop };
+		pos.x -= Math.round(ws.x/2);
+		if (pos.x < 0) pos.x = 0;
+		pos.y -= Math.round(ws.y/2);
+		if (pos.y < 0) pos.y = 0;
+		frame.contentWindow.scrollTo(pos.x, pos.y);
+	})();
+	if (currentElement) {
+		var a = allWords[currentElement.__msh_origWord];
+		currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " ");
+		for (var i in a) {
+			var el = a[i];
+			if (el != currentElement) {
+				el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " ");
+			}
+		}
+	}
+	currentElement = this;
+	this.className += " HA-spellcheck-current";
+	var a = allWords[currentElement.__msh_origWord];
+	for (var i in a) {
+		var el = a[i];
+		if (el != currentElement) {
+			el.className += " HA-spellcheck-same";
+		}
+	}
+	// document.getElementById("b_replall").disabled = (a.length <= 1);
+	// document.getElementById("b_ignall").disabled = (a.length <= 1);
+	var txt;
+	if (a.length == 1) {
+		txt = "one occurrence";
+	} else if (a.length == 2) {
+		txt = "two occurrences";
+	} else {
+		txt = a.length + " occurrences";
+	}
+	var suggestions = suggested_words[this.__msh_origWord];
+	if (suggestions)
+		suggestions = suggestions.split(/,/);
+	else
+		suggestions = [];
+	var select = document.getElementById("v_suggestions");
+	document.getElementById("statusbar").innerHTML = "Found " + txt +
+		' for word "<b>' + currentElement.__msh_origWord + '</b>"';
+	for (var i = select.length; --i >= 0;) {
+		select.remove(i);
+	}
+	for (var i = 0; i < suggestions.length; ++i) {
+		var txt = suggestions[i];
+		var option = document.createElement("option");
+		option.value = txt;
+		option.appendChild(document.createTextNode(txt));
+		select.appendChild(option);
+	}
+	document.getElementById("v_currentWord").innerHTML = this.__msh_origWord;
+	if (suggestions.length > 0) {
+		select.selectedIndex = 0;
+		select.onchange();
+	} else {
+		document.getElementById("v_replacement").value = this.innerHTML;
+	}
+	select.style.display = "none";
+	select.style.display = "block";
+	return false;
+};
+
+function wordMouseOver() {
+	this.className += " HA-spellcheck-hover";
+};
+
+function wordMouseOut() {
+	this.className = this.className.replace(/\s*HA-spellcheck-hover\s*/g, " ");
+};
+
+function displayInfo() {
+	var info = frame.contentWindow.spellcheck_info;
+	if (!info)
+		alert("No information available");
+	else {
+		var txt = "** Document information **";
+		for (var i in info) {
+			txt += "\n" + i + " : " + info[i];
+		}
+		alert(txt);
+	}
+	return false;
+};
+
+function finishedSpellChecking() {
+	// initialization of global variables
+	currentElement = null;
+	wrongWords = null;
+	allWords = {};
+	fixedWords = [];
+	suggested_words = frame.contentWindow.suggested_words;
+
+	document.getElementById("status").innerHTML = "HTMLArea Spell Checker (<a href='readme-tech.html' target='_blank' title='Technical information'>info</a>)";
+	var doc = frame.contentWindow.document;
+        var spans = doc.getElementsByTagName("span");
+        var sps = [];
+	var id = 0;
+        for (var i = 0; i < spans.length; ++i) {
+                var el = spans[i];
+                if (/HA-spellcheck-error/.test(el.className)) {
+                        sps.push(el);
+			el.__msh_wordClicked = wordClicked;
+			el.onclick = function(ev) {
+				ev || (ev = window.event);
+				ev && HTMLArea._stopEvent(ev);
+				return this.__msh_wordClicked(false);
+			};
+			el.onmouseover = wordMouseOver;
+			el.onmouseout = wordMouseOut;
+			el.__msh_id = id++;
+			var txt = (el.__msh_origWord = el.firstChild.data);
+			el.__msh_fixed = false;
+			if (typeof allWords[txt] == "undefined") {
+				allWords[txt] = [el];
+			} else {
+				allWords[txt].push(el);
+			}
+                } else if (/HA-spellcheck-fixed/.test(el.className)) {
+			fixedWords.push(el);
+		}
+        }
+	wrongWords = sps;
+	if (sps.length == 0) {
+		if (!modified) {
+			alert(i18n["NO_ERRORS_CLOSING"]);
+			window.close();
+		} else {
+			alert(i18n["NO_ERRORS"]);
+		}
+		return false;
+	}
+	(currentElement = sps[0]).__msh_wordClicked(true);
+	var as = doc.getElementsByTagName("a");
+	for (var i = as.length; --i >= 0;) {
+		var a = as[i];
+		a.onclick = function() {
+			if (confirm(i18n["CONFIRM_LINK_CLICK"] + ":\n" +
+				    this.href + "\n" + i18n["I will open it in a new page."])) {
+				window.open(this.href);
+			}
+			return false;
+		};
+	}
+	var dicts = doc.getElementById("HA-spellcheck-dictionaries");
+	if (dicts) {
+		dicts.parentNode.removeChild(dicts);
+		dicts = dicts.innerHTML.split(/,/);
+		var select = document.getElementById("v_dictionaries");
+		for (var i = select.length; --i >= 0;) {
+			select.remove(i);
+		}
+		for (var i = 0; i < dicts.length; ++i) {
+			var txt = dicts[i];
+			var option = document.createElement("option");
+			if (/^@(.*)$/.test(txt)) {
+				txt = RegExp.$1;
+				option.selected = true;
+			}
+			option.value = txt;
+			option.appendChild(document.createTextNode(txt));
+			select.appendChild(option);
+		}
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/da.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/da.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/da.js	(revision 103)
@@ -0,0 +1,37 @@
+﻿// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Steen Sønderup, <steen@soenderup.com>
+
+// 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.)
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Vil du følge dette link?",
+	"Cancel"                                : "Anuler",
+	"Dictionary"                            : "Ordbog",
+	"Finished list of mispelled words"      : "Listen med stavefejl er gennemgået",
+	"I will open it in a new page."         : "Jeg vil åbne det i en ny side.",
+	"Ignore all"                            : "Ignorer alle",
+	"Ignore"                                : "Ignorer",
+	"NO_ERRORS"                             : "Der blev ikke fundet nogle stavefejl med den valgte ordbog.",
+	"NO_ERRORS_CLOSING"                     : "Stavekontrollen er gennemført, der blev ikke fundet nogle stavefejl.  Lukker...",
+	"OK"                                    : "OK",
+	"Original word"                         : "Oprindeligt ord",
+	"Please wait.  Calling spell checker."  : "Vent venligst.  Henter stavekontrol.",
+	"Please wait: changing dictionary to"   : "Vent venligst: skifter ordbog til",
+	"QUIT_CONFIRMATION"                     : "Alle dine ændringer vil gå tabt, vil du fortsætte?",
+	"Re-check"                              : "Tjek igen",
+	"Replace all"                           : "Erstat alle",
+	"Replace with"                          : "Erstat med",
+	"Replace"                               : "Erstat",
+	"SC-spell-check"                        : "Stavekontrol",
+	"Suggestions"                           : "Forslag",
+	"pliz weit ;-)"                         : "Vent venligst"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/de.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/de.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/de.js	(revision 103)
@@ -0,0 +1,28 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Broxx, <broxx@broxx.com>
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Wollen Sie diesen Link oeffnen",
+	"Cancel"                                : "Abbrechen",
+	"Dictionary"                            : "Woerterbuch",
+	"Finished list of mispelled words"      : "Liste der nicht bekannten Woerter",
+	"I will open it in a new page."         : "Wird auf neuer Seite geoeffnet",
+	"Ignore all"                            : "Alle ignorieren",
+	"Ignore"                                : "Ignorieren",
+	"NO_ERRORS"                             : "Keine falschen Woerter mit gewaehlten Woerterbuch gefunden",
+	"NO_ERRORS_CLOSING"                     : "Rechtsschreibpruefung wurde ohne Fehler fertiggestellt.  Wird nun geschlossen...",
+	"OK"                                    : "OK",
+	"Original word"                         : "Original Wort",
+	"Please wait.  Calling spell checker."  : "Bitte warten.  Woerterbuch wird durchsucht.",
+	"Please wait: changing dictionary to"   : "Bitte warten: Woerterbuch wechseln zu",
+	"QUIT_CONFIRMATION"                     : "Aenderungen werden nicht uebernommen.  Bitte bestaettigen.",
+	"Re-check"                              : "Neuueberpruefung",
+	"Replace all"                           : "Alle ersetzen",
+	"Replace with"                          : "Ersetzen mit",
+	"Replace"                               : "Ersetzen",
+	"SC-spell-check"                        : "Ueberpruefung",
+	"Suggestions"                           : "Vorschlag",
+	"pliz weit ;-)"                         : "bittsche wartn ;-)"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/cz.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/cz.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/cz.js	(revision 103)
@@ -0,0 +1,37 @@
+﻿// I18N constants
+
+// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
+// Author: Jiri Löw, <jirilow@jirilow.com>
+
+// 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.)
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Prosím potvrďte otevření tohoto odkazu",
+	"Cancel"                                : "Zrušit",
+	"Dictionary"                            : "Slovník",
+	"Finished list of mispelled words"      : "Dokončen seznam chybných slov",
+	"I will open it in a new page."         : "Bude otevřen jej v nové stránce.",
+	"Ignore all"                            : "Ignorovat vše",
+	"Ignore"                                : "Ignorovat",
+	"NO_ERRORS"                             : "Podle zvoleného slovníku nebyla nalezena žádná chybná slova.",
+	"NO_ERRORS_CLOSING"                     : "Kontrola správnosti slov dokončena, nebyla nalezena žádná chybná slova. Ukončování ...",
+	"OK"                                    : "OK",
+	"Original word"                         : "Původní slovo",
+	"Please wait.  Calling spell checker."  : "Prosím čekejte. Komunikuace s kontrolou správnosti slov.",
+	"Please wait: changing dictionary to"   : "Prosím čekejte: změna adresáře na",
+	"QUIT_CONFIRMATION"                     : "Změny budou zrušeny a kontrola správnosti slov ukončena. Prosím potvrďte.",
+	"Re-check"                              : "Překontrolovat",
+	"Replace all"                           : "Zaměnit všechno",
+	"Replace with"                          : "Zaměnit za",
+	"Replace"                               : "Zaměnit",
+	"SC-spell-check"                        : "Kontrola správnosti slov",
+	"Suggestions"                           : "Doporučení",
+	"pliz weit ;-)"                         : "strpení prosím ;-)"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/hu.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/hu.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/hu.js	(revision 103)
@@ -0,0 +1,37 @@
+// I18N constants
+
+// LANG: "hu", ENCODING: UTF-8
+// Author: Miklós Somogyi, <somogyine@vnet.hu>
+
+// 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.)
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Megerősítés",
+	"Cancel"                                : "Mégsem",
+	"Dictionary"                            : "Szótár",
+	"Finished list of mispelled words"      : "A tévesztett szavak listájának vége",
+	"I will open it in a new page."         : "Megnyitás új lapon",
+	"Ignore all"                            : "Minden elvetése",
+	"Ignore"                                : "Elvetés",
+	"NO_ERRORS"                             : "A választott szótár szerint nincs tévesztett szó.",
+	"NO_ERRORS_CLOSING"                     : "A helyesírásellenőrzés kész, tévesztett szó nem fordult elő. Bezárás...",
+	"OK"                                    : "Rendben",
+	"Original word"                         : "Eredeti szó",
+	"Please wait.  Calling spell checker."  : "Kis türelmet, a helyesírásellenőrző hívása folyamatban.",
+	"Please wait: changing dictionary to"   : "Kis türelmet, szótár cseréje",
+	"QUIT_CONFIRMATION"                     : "Kilépés a változások eldobásával. Jóváhagyja?",
+	"Re-check"                              : "Újraellenőrzés",
+	"Replace all"                           : "Mind cseréje",
+	"Replace with"                          : "Csere a következőre:",
+	"Replace"                               : "Csere",
+	"SC-spell-check"                        : "Helyesírásellenőrzés",
+	"Suggestions"                           : "Tippek",
+	"pliz weit ;-)"                         : "Kis türelmet ;-)"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/it.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/it.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/it.js	(revision 103)
@@ -0,0 +1,28 @@
+// I18N constants
+
+// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
+// Author: Fabio Rotondo, <fabio@rotondo.it>
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Devi confermare l'apertura di questo link",
+	"Cancel"                                : "Annulla",
+	"Dictionary"                            : "Dizionario",
+	"Finished list of mispelled words"      : "La lista delle parole scritte male è terminata",
+	"I will open it in a new page."         : "Lo aprirò in una nuova pagina.",
+	"Ignore all"                            : "Ignora sempre",
+	"Ignore"                                : "Ignora",
+	"NO_ERRORS"                             : "Non sono state trovate parole scritte male con il dizionario selezionato.",
+	"NO_ERRORS_CLOSING"                     : "Controllo completato, non sono state trovate parole scritte male. Sto chiudendo...",
+	"OK"                                    : "OK",
+	"Original word"                         : "Parola originale",
+	"Please wait.  Calling spell checker."  : "Attendere.  Sto invocando lo Spell Checker.",
+	"Please wait: changing dictionary to"   : "Attendere. Cambio il dizionario in",
+	"QUIT_CONFIRMATION"                     : "Questo annullerà le modifiche e chiuderà lo Spell Checker. Conferma.",
+	"Re-check"                              : "Ricontrolla",
+	"Replace all"                           : "Sostituisci sempre",
+	"Replace with"                          : "Stostituisci con",
+	"Replace"                               : "Sostituisci",
+	"SC-spell-check"                        : "Spell-check",
+	"Suggestions"                           : "Suggerimenti",
+	"pliz weit ;-)"                         : "Attendere Prego ;-)"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/ro.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/ro.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/ro.js	(revision 103)
@@ -0,0 +1,37 @@
+// I18N constants
+
+// LANG: "ro", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Vă rog confirmaţi că vreţi să deschideţi acest link",
+	"Cancel"                                : "Anulează",
+	"Dictionary"                            : "Dicţionar",
+	"Finished list of mispelled words"      : "Am terminat lista de cuvinte greşite",
+	"I will open it in a new page."         : "O voi deschide într-o altă fereastră.",
+	"Ignore all"                            : "Ignoră toate",
+	"Ignore"                                : "Ignoră",
+	"NO_ERRORS"                             : "Nu am găsit nici un cuvânt greşit cu acest dicţionar.",
+	"NO_ERRORS_CLOSING"                     : "Am terminat, nu am detectat nici o greşeală.  Acum închid fereastra...",
+	"OK"                                    : "OK",
+	"Original word"                         : "Cuvântul original",
+	"Please wait.  Calling spell checker."  : "Vă rog aşteptaţi.  Apelez spell-checker-ul.",
+	"Please wait: changing dictionary to"   : "Vă rog aşteptaţi.  Schimb dicţionarul cu",
+	"QUIT_CONFIRMATION"                     : "Doriţi să renunţaţi la modificări şi să închid spell-checker-ul?",
+	"Re-check"                              : "Scanează",
+	"Replace all"                           : "Înlocuieşte toate",
+	"Replace with"                          : "Înlocuieşte cu",
+	"Replace"                               : "Înlocuieşte",
+	"SC-spell-check"                        : "Detectează greşeli",
+	"Suggestions"                           : "Sugestii",
+	"pliz weit ;-)"                         : "va rog ashteptatzi ;-)"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/en.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/en.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/lang/en.js	(revision 103)
@@ -0,0 +1,38 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+SpellChecker.I18N = {
+	"CONFIRM_LINK_CLICK"                    : "Please confirm that you want to open this link",
+	"Cancel"                                : "Cancel",
+	"Dictionary"                            : "Dictionary",
+	"Finished list of mispelled words"      : "Finished list of mispelled words",
+	"I will open it in a new page."         : "I will open it in a new page.",
+	"Ignore all"                            : "Ignore all",
+	"Ignore"                                : "Ignore",
+	"NO_ERRORS"                             : "No mispelled words found with the selected dictionary.",
+	"NO_ERRORS_CLOSING"                     : "Spell check complete, didn't find any mispelled words.  Closing now...",
+	"OK"                                    : "OK",
+	"Original word"                         : "Original word",
+	"Please wait.  Calling spell checker."  : "Please wait.  Calling spell checker.",
+	"Please wait: changing dictionary to"   : "Please wait: changing dictionary to",
+	"QUIT_CONFIRMATION"                     : "This will drop changes and quit spell checker.  Please confirm.",
+	"Re-check"                              : "Re-check",
+	"Replace all"                           : "Replace all",
+	"Replace with"                          : "Replace with",
+	"Replace"                               : "Replace",
+	"Revert"                                : "Revert",
+	"SC-spell-check"                        : "Spell-check",
+	"Suggestions"                           : "Suggestions",
+	"pliz weit ;-)"                         : "pliz weit ;-)"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/readme-tech.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/readme-tech.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/readme-tech.html	(revision 103)
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
+<html>
+  <head>
+    <title>HTMLArea Spell Checker</title>
+  </head>
+
+  <body>
+    <h1>HTMLArea Spell Checker</h1>
+
+    <p>The HTMLArea Spell Checker subsystem consists of the following
+      files:</p>
+
+    <ul>
+
+      <li>spell-checker.js &mdash; the spell checker plugin interface for
+        HTMLArea</li>
+
+      <li>spell-checker-ui.html &mdash; the HTML code for the user
+        interface</li>
+
+      <li>spell-checker-ui.js &mdash; functionality of the user
+        interface</li>
+
+      <li>spell-checker-logic.cgi &mdash; Perl CGI script that checks a text
+        given through POST for spelling errors</li>
+
+      <li>spell-checker-style.css &mdash; style for mispelled words</li>
+
+      <li>lang/en.js &mdash; main language file (English).</li>
+
+    </ul>
+
+    <h2>Process overview</h2>
+
+    <p>
+      When an end-user clicks the "spell-check" button in the HTMLArea
+      editor, a new window is opened with the URL of "spell-check-ui.html".
+      This window initializes itself with the text found in the editor (uses
+      <tt>window.opener.SpellChecker.editor</tt> global variable) and it
+      submits the text to the server-side script "spell-check-logic.cgi".
+      The target of the FORM is an inline frame which is used both to
+      display the text and correcting.
+    </p>
+
+    <p>
+      Further, spell-check-logic.cgi calls Aspell for each portion of plain
+      text found in the given HTML.  It rebuilds an HTML file that contains
+      clear marks of which words are incorrect, along with suggestions for
+      each of them.  This file is then loaded in the inline frame.  Upon
+      loading, a JavaScript function from "spell-check-ui.js" is called.
+      This function will retrieve all mispelled words from the HTML of the
+      iframe and will setup the user interface so that it allows correction.
+    </p>
+
+    <h2>The server-side script (spell-check-logic.cgi)</h2>
+
+    <p>
+      <strong>Unicode safety</strong> &mdash; the program <em>is</em>
+      Unicode safe.  HTML entities are expanded into their corresponding
+      Unicode characters.  These characters will be matched as part of the
+      word passed to Aspell.  All texts passed to Aspell are in Unicode
+      (when appropriate).  <strike>However, Aspell seems to not support Unicode
+      yet (<a
+        href="http://mail.gnu.org/archive/html/aspell-user/2000-11/msg00007.html">thread concerning Aspell and Unicode</a>).
+      This mean that words containing Unicode
+      characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell.</strike>
+    </p>
+
+    <p>
+      <strong style="font-variant: small-caps; color:
+      red;">Update:</strong> though I've never seen it mentioned
+      anywhere, it looks that Aspell <em>does</em>, in fact, speak
+      Unicode.  Or else, maybe <code>Text::Aspell</code> does
+      transparent conversion; anyway, this new version of our
+      SpellChecker plugin is, as tests show so far, fully
+      Unicode-safe... well, probably the <em>only</em> freeware
+      Web-based spell-checker which happens to have Unicode support.
+    </p>
+
+    <p>
+      The Perl Unicode manual (man perluniintro) states:
+    </p>
+
+    <blockquote>
+      <em>
+        Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode
+        natively.  Perl 5.8.0, however, is the first recommended release for
+        serious Unicode work.  The maintenance release 5.6.1 fixed many of the
+        problems of the initial Unicode implementation, but for example regular
+        expressions still do not work with Unicode in 5.6.1.
+      </em>
+    </blockquote>
+
+    <p>In other words, do <em>not</em> assume that this script is
+      Unicode-safe on Perl interpreters older than 5.8.0.</p>
+
+    <p>The following Perl modules are required:</p>
+
+    <ul>
+      <li><a href="http://search.cpan.org/search?query=Text%3A%3AAspell&mode=all" target="_blank">Text::Aspell</a></li>
+      <li><a href="http://search.cpan.org/search?query=XML%3A%3ADOM&mode=all" target="_blank">XML::DOM</a></li>
+      <li><a href="http://search.cpan.org/search?query=CGI&mode=all" target="_blank">CGI</a></li>
+    </ul>
+
+    <p>Of these, only Text::Aspell might need to be installed manually.  The
+      others are likely to be available by default in most Perl distributions.</p>
+
+    <hr />
+    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
+<!-- Created: Thu Jul 17 13:22:27 EEST 2003 -->
+<!-- hhmts start --> Last modified: Fri Jan 30 19:14:11 EET 2004 <!-- hhmts end -->
+<!-- doc-lang: English -->
+  </body>
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.cgi
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.cgi	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.cgi	(revision 103)
@@ -0,0 +1,210 @@
+#! /usr/bin/perl -w
+
+# Spell Checker Plugin for HTMLArea-3.0
+# Sponsored by www.americanbible.org
+# Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+#
+# (c) dynarch.com 2003.
+# Distributed under the same terms as HTMLArea itself.
+# This notice MUST stay intact for use (see license.txt).
+#
+# $Id: spell-check-logic.cgi,v 1.1.1.1 2005/01/30 10:31:43 rdjurovich Exp $
+
+use strict;
+use utf8;
+use Encode;
+use Text::Aspell;
+use XML::DOM;
+use CGI;
+
+my $TIMER_start = undef;
+eval {
+    use Time::HiRes qw( gettimeofday tv_interval );
+    $TIMER_start = [gettimeofday()];
+};
+# use POSIX qw( locale_h );
+
+binmode STDIN, ':utf8';
+binmode STDOUT, ':utf8';
+
+my $debug = 0;
+
+my $speller = new Text::Aspell;
+my $cgi = new CGI;
+
+my $total_words = 0;
+my $total_mispelled = 0;
+my $total_suggestions = 0;
+my $total_words_suggested = 0;
+
+# FIXME: report a nice error...
+die "Can't create speller!" unless $speller;
+
+my $dict = $cgi->param('dictionary') || $cgi->cookie('dictionary') || 'en';
+
+# add configurable option for this
+$speller->set_option('lang', $dict);
+$speller->set_option('encoding', 'UTF-8');
+#setlocale(LC_CTYPE, $dict);
+
+# ultra, fast, normal, bad-spellers
+# bad-spellers seems to cause segmentation fault
+$speller->set_option('sug-mode', 'normal');
+
+my %suggested_words = ();
+keys %suggested_words = 128;
+
+my $file_content = decode('UTF-8', $cgi->param('content'));
+$file_content = parse_with_dom($file_content);
+
+my $ck_dictionary = $cgi->cookie(-name     => 'dictionary',
+                                 -value    => $dict,
+                                 -expires  => '+30d');
+
+print $cgi->header(-type    => 'text/html; charset: utf-8',
+                   -cookie  => $ck_dictionary);
+
+my $js_suggested_words = make_js_hash(\%suggested_words);
+my $js_spellcheck_info = make_js_hash_from_array
+  ([
+    [ 'Total words'           , $total_words ],
+    [ 'Mispelled words'       , $total_mispelled . ' in dictionary \"'.$dict.'\"' ],
+    [ 'Total suggestions'     , $total_suggestions ],
+    [ 'Total words suggested' , $total_words_suggested ],
+    [ 'Spell-checked in'      , defined $TIMER_start ? (tv_interval($TIMER_start) . ' seconds') : 'n/a' ]
+   ]);
+
+print qq^<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link rel="stylesheet" type="text/css" media="all" href="spell-check-style.css" />
+<script type="text/javascript">
+  var suggested_words = { $js_suggested_words };
+  var spellcheck_info = { $js_spellcheck_info }; </script>
+</head>
+<body onload="window.parent.finishedSpellChecking();">^;
+
+print $file_content;
+if ($cgi->param('init') eq '1') {
+    my @dicts = $speller->dictionary_info();
+    my $dictionaries = '';
+    foreach my $i (@dicts) {
+        next if $i->{jargon};
+        my $name = $i->{name};
+        if ($name eq $dict) {
+            $name = '@'.$name;
+        }
+        $dictionaries .= ',' . $name;
+    }
+    $dictionaries =~ s/^,//;
+    print qq^<div id="HA-spellcheck-dictionaries">$dictionaries</div>^;
+}
+
+print '</body></html>';
+
+# Perl is beautiful.
+sub spellcheck {
+    my $node = shift;
+    my $doc = $node->getOwnerDocument;
+    my $check = sub {                 # called for each word in the text
+        # input is in UTF-8
+        my $word = shift;
+        my $already_suggested = defined $suggested_words{$word};
+        ++$total_words;
+        if (!$already_suggested && $speller->check($word)) {
+            return undef;
+        } else {
+            # we should have suggestions; give them back to browser in UTF-8
+            ++$total_mispelled;
+            if (!$already_suggested) {
+                # compute suggestions for this word
+                my @suggestions = $speller->suggest($word);
+                my $suggestions = decode($speller->get_option('encoding'), join(',', @suggestions));
+                $suggested_words{$word} = $suggestions;
+                ++$total_suggestions;
+                $total_words_suggested += scalar @suggestions;
+            }
+            # HA-spellcheck-error
+            my $err = $doc->createElement('span');
+            $err->setAttribute('class', 'HA-spellcheck-error');
+            my $tmp = $doc->createTextNode;
+            $tmp->setNodeValue($word);
+            $err->appendChild($tmp);
+            return $err;
+        }
+    };
+    while ($node->getNodeValue =~ /([\p{IsWord}']+)/) {
+        my $word = $1;
+        my $before = $`;
+        my $after = $';
+        my $df = &$check($word);
+        if (!$df) {
+            $before .= $word;
+        }
+        {
+            my $parent = $node->getParentNode;
+            my $n1 = $doc->createTextNode;
+            $n1->setNodeValue($before);
+            $parent->insertBefore($n1, $node);
+            $parent->insertBefore($df, $node) if $df;
+            $node->setNodeValue($after);
+        }
+    }
+};
+
+sub check_inner_text {
+    my $node = shift;
+    my $text = '';
+    for (my $i = $node->getFirstChild; defined $i; $i = $i->getNextSibling) {
+        if ($i->getNodeType == TEXT_NODE) {
+            spellcheck($i);
+        }
+    }
+};
+
+sub parse_with_dom {
+    my ($text) = @_;
+    $text = '<spellchecker>'.$text.'</spellchecker>';
+
+    my $parser = new XML::DOM::Parser;
+    if ($debug) {
+        open(FOO, '>:utf8', '/tmp/foo');
+        print FOO $text;
+        close FOO;
+    }
+    my $doc = $parser->parse($text);
+    my $nodes = $doc->getElementsByTagName('*');
+    my $n = $nodes->getLength;
+
+    for (my $i = 0; $i < $n; ++$i) {
+        my $node = $nodes->item($i);
+        if ($node->getNodeType == ELEMENT_NODE) {
+            check_inner_text($node);
+        }
+    }
+
+    my $ret = $doc->toString;
+    $ret =~ s{<spellchecker>(.*)</spellchecker>}{$1}sg;
+    return $ret;
+};
+
+sub make_js_hash {
+    my ($hash) = @_;
+    my $js_hash = '';
+    while (my ($key, $val) = each %$hash) {
+        $js_hash .= ',' if $js_hash;
+        $js_hash .= '"'.$key.'":"'.$val.'"';
+    }
+    return $js_hash;
+};
+
+sub make_js_hash_from_array {
+    my ($array) = @_;
+    my $js_hash = '';
+    foreach my $i (@$array) {
+        $js_hash .= ',' if $js_hash;
+        $js_hash .= '"'.$i->[0].'":"'.$i->[1].'"';
+    }
+    return $js_hash;
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.html	(revision 103)
@@ -0,0 +1,122 @@
+<!--
+
+  Strangely, IE sucks with or without the DOCTYPE switch.
+  I thought it would only suck without it.
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+   Spell Checker Plugin for HTMLArea-3.0
+   Sponsored by www.americanbible.org
+   Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+  
+   (c) dynarch.com 2003.
+   Distributed under the same terms as HTMLArea itself.
+   This notice MUST stay intact for use (see license.txt).
+
+   $Id: spell-check-ui.html,v 1.1.1.1 2005/01/30 10:31:42 rdjurovich Exp $
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+  <head>
+    <title>Spell Checker</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <script type="text/javascript" src="spell-check-ui.js"></script>
+
+    <style type="text/css">
+      html, body { height: 100%; margin: 0px; padding: 0px; background-color: #fff;
+      color: #000; }
+      a:link, a:visited { color: #00f; text-decoration: none; }
+      a:hover { color: #f00; text-decoration: underline; }
+
+      table { background-color: ButtonFace; color: ButtonText;
+      font-family: tahoma,verdana,sans-serif; font-size: 11px; }
+
+      iframe { background-color: #fff; color: #000; height: 100%; width: 100%; }
+
+      .controls { width: 13em; }
+      .controls .sectitle { /* background-color: #736c6c; color: #fff;
+      border-top: 1px solid #000; border-bottom: 1px solid #fff; */
+      text-align: center;
+      font-weight: bold; padding: 2px 4px; }
+      .controls .secbody { margin-bottom: 10px; }
+
+      button, select { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
+      button { width: 6em; padding: 0px; }
+
+      input, select { font-family: fixed,"andale mono",monospace; }
+
+      #v_currentWord { color: #f00; font-weight: bold; }
+      #statusbar { padding: 7px 0px 0px 5px; }
+      #status { font-weight: bold; }
+    </style>
+
+  </head>
+
+  <body onload="initDocument()">
+
+    <form style="display: none;" action="spell-check-logic.cgi"
+          method="post" target="framecontent"
+          accept-charset="UTF-8"
+          ><input type="hidden" name="content" id="f_content"
+          /><input type="hidden" name="dictionary" id="f_dictionary"
+          /><input type="hidden" name="init" id="f_init" value="1"
+    /></form>
+
+    <table style="height: 100%; width: 100%; border-collapse: collapse;" cellspacing="0" cellpadding="0">
+      <tr>
+        <td colspan="2" style="height: 1em; padding: 2px;">
+          <div style="float: right; padding: 2px;"><span>Dictionary</span>
+            <select id="v_dictionaries" style="width: 10em"></select>
+            <button id="b_recheck">Re-check</button>
+          </div>
+          <span id="status">Please wait.  Calling spell checker.</span>
+        </td>
+      </tr>
+      <tr>
+        <td valign="top" class="controls">
+          <div class="secbody" style="text-align: center">
+            <button id="b_info">Info</button>
+          </div>
+          <div class="sectitle">Original word</div>
+          <div class="secbody" id="v_currentWord" style="text-align:
+          center; margin-bottom: 0px;">pliz weit ;-)</div>
+          <div class="secbody" style="text-align: center">
+            <button id="b_revert">Revert</button>
+          </div>
+          <div class="sectitle">Replace with</div>
+          <div class="secbody">
+            <input type="text" id="v_replacement" style="width: 94%; margin-left: 3%;" /><br />
+            <div style="text-align: center; margin-top: 2px;">
+              <button id="b_replace">Replace</button><button
+                id="b_replall">Replace all</button><br /><button
+                id="b_ignore">Ignore</button><button
+                id="b_ignall">Ignore all</button>
+            </div>
+          </div>
+          <div class="sectitle">Suggestions</div>
+          <div class="secbody">
+            <select size="11" style="width: 94%; margin-left: 3%;" id="v_suggestions"></select>
+          </div>
+        </td>
+
+        <td>
+          <iframe src="about:blank" width="100%" height="100%"
+            id="i_framecontent" name="framecontent"></iframe>
+        </td>
+      </tr>
+      <tr>
+        <td style="height: 1em;" colspan="2">
+          <div style="padding: 4px 2px 2px 2px; float: right;">
+            <button id="b_ok">OK</button>
+            <button id="b_cancel">Cancel</button>
+          </div>
+          <div id="statusbar"></div>
+        </td>
+      </tr>
+    </table>
+
+  </body>
+
+</html>
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/img/spell-check.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/img/spell-check.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-checker.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-checker.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/SpellChecker/spell-checker.js	(revision 103)
@@ -0,0 +1,79 @@
+// Spell Checker Plugin for HTMLArea-3.0
+// Sponsored by www.americanbible.org
+// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+//
+// (c) dynarch.com 2003.
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+//
+// $Id: spell-checker.js,v 1.1.1.1 2005/01/30 10:31:42 rdjurovich Exp $
+
+function SpellChecker(editor) {
+	this.editor = editor;
+
+	var cfg = editor.config;
+	var tt = SpellChecker.I18N;
+	var bl = SpellChecker.btnList;
+	var self = this;
+
+	// register the toolbar buttons provided by this plugin
+	var toolbar = [];
+	for (var i in bl) {
+		var btn = bl[i];
+		if (!btn) {
+			toolbar.push("separator");
+		} else {
+			var id = "SC-" + btn[0];
+			cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "SpellChecker"), false,
+					   function(editor, id) {
+						   // dispatch button press event
+						   self.buttonPress(editor, id);
+					   }, btn[1]);
+			toolbar.push(id);
+		}
+	}
+
+	for (var i in toolbar) {
+		cfg.toolbar[0].push(toolbar[i]);
+	}
+};
+
+SpellChecker._pluginInfo = {
+	name          : "SpellChecker",
+	version       : "1.0",
+	developer     : "Mihai Bazon",
+	developer_url : "http://dynarch.com/mishoo/",
+	c_owner       : "Mihai Bazon",
+	sponsor       : "American Bible Society",
+	sponsor_url   : "http://www.americanbible.org",
+	license       : "htmlArea"
+};
+
+SpellChecker.btnList = [
+	null, // separator
+	["spell-check"]
+	];
+
+SpellChecker.prototype.buttonPress = function(editor, id) {
+	switch (id) {
+	    case "SC-spell-check":
+		SpellChecker.editor = editor;
+		SpellChecker.init = true;
+		var uiurl = _editor_url + "plugins/SpellChecker/spell-check-ui.html";
+		var win;
+		if (HTMLArea.is_ie) {
+			win = window.open(uiurl, "SC_spell_checker",
+					  "toolbar=no,location=no,directories=no,status=no,menubar=no," +
+					  "scrollbars=no,resizable=yes,width=600,height=450");
+		} else {
+			win = window.open(uiurl, "SC_spell_checker",
+					  "toolbar=no,menubar=no,personalbar=no,width=600,height=450," +
+					  "scrollbars=no,resizable=yes");
+		}
+		win.focus();
+		break;
+	}
+};
+
+// this needs to be global, it's accessed from spell-check-ui.html
+SpellChecker.editor = null;
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/CSS/lang/en.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/CSS/lang/en.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/CSS/lang/en.js	(revision 103)
@@ -0,0 +1,2 @@
+// none yet; this file is a stub.
+CSS.I18N = {};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/CSS/css.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/CSS/css.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/CSS/css.js	(revision 103)
@@ -0,0 +1,116 @@
+// Simple CSS (className) plugin for the editor
+// Sponsored by http://www.miro.com.au
+// Implementation by Mihai Bazon, http://dynarch.com/mishoo.
+//
+// (c) dynarch.com 2003
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+//
+// $Id: css.js,v 1.1.1.1 2005/01/30 10:31:22 rdjurovich Exp $
+
+function CSS(editor, params) {
+	this.editor = editor;
+	var cfg = editor.config;
+	var toolbar = cfg.toolbar;
+	var self = this;
+	var i18n = CSS.I18N;
+	var plugin_config = params[0];
+	var combos = plugin_config.combos;
+
+	var first = true;
+	for (var i = combos.length; --i >= 0;) {
+		var combo = combos[i];
+		var id = "CSS-class" + i;
+		var css_class = {
+			id         : id,
+			options    : combo.options,
+			action     : function(editor) { self.onSelect(editor, this, combo.context, combo.updatecontextclass); },
+			refresh    : function(editor) { self.updateValue(editor, this); },
+			context    : combo.context
+		};
+		cfg.registerDropdown(css_class);
+
+		// prepend to the toolbar
+		toolbar[1].splice(0, 0, first ? "separator" : "space");
+		toolbar[1].splice(0, 0, id);
+		if (combo.label)
+			toolbar[1].splice(0, 0, "T[" + combo.label + "]");
+		first = false;
+	}
+};
+
+CSS._pluginInfo = {
+	name          : "CSS",
+	version       : "1.0",
+	developer     : "Mihai Bazon",
+	developer_url : "http://dynarch.com/mishoo/",
+	c_owner       : "Mihai Bazon",
+	sponsor       : "Miro International",
+	sponsor_url   : "http://www.miro.com.au",
+	license       : "htmlArea"
+};
+
+CSS.prototype.onSelect = function(editor, obj, context, updatecontextclass) {
+	var tbobj = editor._toolbarObjects[obj.id];
+	var index = tbobj.element.selectedIndex;
+	var className = tbobj.element.value;
+
+	// retrieve parent element of the selection
+	var parent = editor.getParentElement();
+	var surround = true;
+
+	var is_span = (parent && parent.tagName.toLowerCase() == "span");
+	var update_parent = (context && updatecontextclass && parent && parent.tagName.toLowerCase() == context);
+
+	if (update_parent) {
+		parent.className = className;
+		editor.updateToolbar();
+		return;
+	}
+
+	if (is_span && index == 0 && !/\S/.test(parent.style.cssText)) {
+		while (parent.firstChild) {
+			parent.parentNode.insertBefore(parent.firstChild, parent);
+		}
+		parent.parentNode.removeChild(parent);
+		editor.updateToolbar();
+		return;
+	}
+
+	if (is_span) {
+		// maybe we could simply change the class of the parent node?
+		if (parent.childNodes.length == 1) {
+			parent.className = className;
+			surround = false;
+			// in this case we should handle the toolbar updation
+			// ourselves.
+			editor.updateToolbar();
+		}
+	}
+
+	// Other possibilities could be checked but require a lot of code.  We
+	// can't afford to do that now.
+	if (surround) {
+		// shit happens ;-) most of the time.  this method works, but
+		// it's dangerous when selection spans multiple block-level
+		// elements.
+		editor.surroundHTML("<span class='" + className + "'>", "</span>");
+	}
+};
+
+CSS.prototype.updateValue = function(editor, obj) {
+	var select = editor._toolbarObjects[obj.id].element;
+	var parent = editor.getParentElement();
+	if (typeof parent.className != "undefined" && /\S/.test(parent.className)) {
+		var options = select.options;
+		var value = parent.className;
+		for (var i = options.length; --i >= 0;) {
+			var option = options[i];
+			if (value == option.value) {
+				select.selectedIndex = i;
+				return;
+			}
+		}
+	}
+	select.selectedIndex = 0;
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/context-menu.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/context-menu.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/context-menu.js	(revision 103)
@@ -0,0 +1,416 @@
+// Context Menu Plugin for HTMLArea-3.0
+// Sponsored by www.americanbible.org
+// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+//
+// (c) dynarch.com 2003.
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+//
+// $Id: context-menu.js,v 1.1.1.1 2005/01/30 10:31:40 rdjurovich Exp $
+
+HTMLArea.loadStyle("menu.css", "ContextMenu");
+
+function ContextMenu(editor) {
+	this.editor = editor;
+};
+
+ContextMenu._pluginInfo = {
+	name          : "ContextMenu",
+	version       : "1.0",
+	developer     : "Mihai Bazon",
+	developer_url : "http://dynarch.com/mishoo/",
+	c_owner       : "dynarch.com",
+	sponsor       : "American Bible Society",
+	sponsor_url   : "http://www.americanbible.org",
+	license       : "htmlArea"
+};
+
+ContextMenu.prototype.onGenerate = function() {
+	var self = this;
+	var doc = this.editordoc = this.editor._iframe.contentWindow.document;
+	HTMLArea._addEvents(doc, ["contextmenu"],
+			    function (event) {
+				    return self.popupMenu(HTMLArea.is_ie ? self.editor._iframe.contentWindow.event : event);
+			    });
+	this.currentMenu = null;
+};
+
+ContextMenu.prototype.getContextMenu = function(target) {
+	var self = this;
+	var editor = this.editor;
+	var config = editor.config;
+	var menu = [];
+	var tbo = this.editor.plugins.TableOperations;
+	if (tbo) tbo = tbo.instance;
+	var i18n = ContextMenu.I18N;
+
+	var selection = editor.hasSelectedText();
+	if (selection)
+		menu.push([ i18n["Cut"], function() { editor.execCommand("cut"); }, null, config.btnList["cut"][1] ],
+			  [ i18n["Copy"], function() { editor.execCommand("copy"); }, null, config.btnList["copy"][1] ]);
+	menu.push([ i18n["Paste"], function() { editor.execCommand("paste"); }, null, config.btnList["paste"][1] ]);
+
+	var currentTarget = target;
+	var elmenus = [];
+
+	var link = null;
+	var table = null;
+	var tr = null;
+	var td = null;
+	var img = null;
+
+	function tableOperation(opcode) {
+		tbo.buttonPress(editor, opcode);
+	};
+
+	for (; target; target = target.parentNode) {
+		var tag = target.tagName;
+		if (!tag)
+			continue;
+		tag = tag.toLowerCase();
+		switch (tag) {
+		    case "img":
+			img = target;
+			elmenus.push(null,
+				     [ i18n["Image Properties"],
+				       function() {
+					       editor._insertImage(img);
+				       },
+				       i18n["Show the image properties dialog"],
+				       config.btnList["insertimage"][1] ]
+				);
+			break;
+		    case "a":
+			link = target;
+			elmenus.push(null,
+				     [ i18n["Modify Link"],
+				       function() { editor.execCommand("createlink", true); },
+				       i18n["Current URL is"] + ': ' + link.href,
+				       config.btnList["createlink"][1] ],
+
+				     [ i18n["Check Link"],
+				       function() { window.open(link.href); },
+				       i18n["Opens this link in a new window"] ],
+
+				     [ i18n["Remove Link"],
+				       function() {
+					       if (confirm(i18n["Please confirm that you want to unlink this element."] + "\n" +
+							   i18n["Link points to:"] + " " + link.href)) {
+						       while (link.firstChild)
+							       link.parentNode.insertBefore(link.firstChild, link);
+						       link.parentNode.removeChild(link);
+					       }
+				       },
+				       i18n["Unlink the current element"] ]
+				);
+			break;
+		    case "td":
+			td = target;
+			if (!tbo) break;
+			elmenus.push(null,
+				     [ i18n["Cell Properties"],
+				       function() { tableOperation("TO-cell-prop"); },
+				       i18n["Show the Table Cell Properties dialog"],
+				       config.btnList["TO-cell-prop"][1] ]
+				);
+			break;
+		    case "tr":
+			tr = target;
+			if (!tbo) break;
+			elmenus.push(null,
+				     [ i18n["Row Properties"],
+				       function() { tableOperation("TO-row-prop"); },
+				       i18n["Show the Table Row Properties dialog"],
+				       config.btnList["TO-row-prop"][1] ],
+
+				     [ i18n["Insert Row Before"],
+				       function() { tableOperation("TO-row-insert-above"); },
+				       i18n["Insert a new row before the current one"],
+				       config.btnList["TO-row-insert-above"][1] ],
+
+				     [ i18n["Insert Row After"],
+				       function() { tableOperation("TO-row-insert-under"); },
+				       i18n["Insert a new row after the current one"],
+				       config.btnList["TO-row-insert-under"][1] ],
+
+				     [ i18n["Delete Row"],
+				       function() { tableOperation("TO-row-delete"); },
+				       i18n["Delete the current row"],
+				       config.btnList["TO-row-delete"][1] ]
+				);
+			break;
+		    case "table":
+			table = target;
+			if (!tbo) break;
+			elmenus.push(null,
+				     [ i18n["Table Properties"],
+				       function() { tableOperation("TO-table-prop"); },
+				       i18n["Show the Table Properties dialog"],
+				       config.btnList["TO-table-prop"][1] ],
+
+				     [ i18n["Insert Column Before"],
+				       function() { tableOperation("TO-col-insert-before"); },
+				       i18n["Insert a new column before the current one"],
+				       config.btnList["TO-col-insert-before"][1] ],
+
+				     [ i18n["Insert Column After"],
+				       function() { tableOperation("TO-col-insert-after"); },
+				       i18n["Insert a new column after the current one"],
+				       config.btnList["TO-col-insert-after"][1] ],
+
+				     [ i18n["Delete Column"],
+				       function() { tableOperation("TO-col-delete"); },
+				       i18n["Delete the current column"],
+				       config.btnList["TO-col-delete"][1] ]
+				);
+			break;
+		    case "body":
+			elmenus.push(null,
+				     [ i18n["Justify Left"],
+				       function() { editor.execCommand("justifyleft"); }, null,
+				       config.btnList["justifyleft"][1] ],
+				     [ i18n["Justify Center"],
+				       function() { editor.execCommand("justifycenter"); }, null,
+				       config.btnList["justifycenter"][1] ],
+				     [ i18n["Justify Right"],
+				       function() { editor.execCommand("justifyright"); }, null,
+				       config.btnList["justifyright"][1] ],
+				     [ i18n["Justify Full"],
+				       function() { editor.execCommand("justifyfull"); }, null,
+				       config.btnList["justifyfull"][1] ]
+				);
+			break;
+		}
+	}
+
+	if (selection && !link)
+		menu.push(null, [ i18n["Make link"],
+				  function() { editor.execCommand("createlink", true); },
+				  i18n["Create a link"],
+				  config.btnList["createlink"][1] ]);
+
+	for (var i in elmenus)
+		menu.push(elmenus[i]);
+
+	menu.push(null,
+		  [ i18n["Remove the"] + " &lt;" + currentTarget.tagName + "&gt; " + i18n["Element"],
+		    function() {
+			    if (confirm(i18n["Please confirm that you want to remove this element:"] + " " + currentTarget.tagName)) {
+				    var el = currentTarget;
+				    var p = el.parentNode;
+				    p.removeChild(el);
+				    if (HTMLArea.is_gecko) {
+					    if (p.tagName.toLowerCase() == "td" && !p.hasChildNodes())
+						    p.appendChild(editor._doc.createElement("br"));
+					    editor.forceRedraw();
+					    editor.focusEditor();
+					    editor.updateToolbar();
+					    if (table) {
+						    var save_collapse = table.style.borderCollapse;
+						    table.style.borderCollapse = "collapse";
+						    table.style.borderCollapse = "separate";
+						    table.style.borderCollapse = save_collapse;
+					    }
+				    }
+			    }
+		    },
+		    i18n["Remove this node from the document"] ]);
+	return menu;
+};
+
+ContextMenu.prototype.popupMenu = function(ev) {
+	var self = this;
+	var i18n = ContextMenu.I18N;
+	if (this.currentMenu)
+		this.currentMenu.parentNode.removeChild(this.currentMenu);
+	function getPos(el) {
+		var r = { x: el.offsetLeft, y: el.offsetTop };
+		if (el.offsetParent) {
+			var tmp = getPos(el.offsetParent);
+			r.x += tmp.x;
+			r.y += tmp.y;
+		}
+		return r;
+	};
+	function documentClick(ev) {
+		ev || (ev = window.event);
+		if (!self.currentMenu) {
+			alert(i18n["How did you get here? (Please report!)"]);
+			return false;
+		}
+		var el = HTMLArea.is_ie ? ev.srcElement : ev.target;
+		for (; el != null && el != self.currentMenu; el = el.parentNode);
+		if (el == null)
+			self.closeMenu();
+		//HTMLArea._stopEvent(ev);
+		//return false;
+	};
+	var keys = [];
+	function keyPress(ev) {
+		ev || (ev = window.event);
+		HTMLArea._stopEvent(ev);
+		if (ev.keyCode == 27) {
+			self.closeMenu();
+			return false;
+		}
+		var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase();
+		for (var i = keys.length; --i >= 0;) {
+			var k = keys[i];
+			if (k[0].toLowerCase() == key)
+				k[1].__msh.activate();
+		}
+	};
+	self.closeMenu = function() {
+		self.currentMenu.parentNode.removeChild(self.currentMenu);
+		self.currentMenu = null;
+		HTMLArea._removeEvent(document, "mousedown", documentClick);
+		HTMLArea._removeEvent(self.editordoc, "mousedown", documentClick);
+		if (keys.length > 0)
+			HTMLArea._removeEvent(self.editordoc, "keypress", keyPress);
+		if (HTMLArea.is_ie)
+			self.iePopup.hide();
+	};
+	var target = HTMLArea.is_ie ? ev.srcElement : ev.target;
+	var ifpos = getPos(self.editor._iframe);
+	var x = ev.clientX + ifpos.x;
+	var y = ev.clientY + ifpos.y;
+
+	var div;
+	var doc;
+	if (!HTMLArea.is_ie) {
+		doc = document;
+	} else {
+		// IE stinks
+		var popup = this.iePopup = window.createPopup();
+		doc = popup.document;
+		doc.open();
+		doc.write("<html><head><style type='text/css'>@import url(" + _editor_url + "plugins/ContextMenu/menu.css); html, body { padding: 0px; margin: 0px; overflow: hidden; border: 0px; }</style></head><body unselectable='yes'></body></html>");
+		doc.close();
+	}
+	div = doc.createElement("div");
+	if (HTMLArea.is_ie)
+		div.unselectable = "on";
+	div.oncontextmenu = function() { return false; };
+	div.className = "htmlarea-context-menu";
+	if (!HTMLArea.is_ie)
+		div.style.left = div.style.top = "0px";
+	doc.body.appendChild(div);
+
+	var table = doc.createElement("table");
+	div.appendChild(table);
+	table.cellSpacing = 0;
+	table.cellPadding = 0;
+	var parent = doc.createElement("tbody");
+	table.appendChild(parent);
+
+	var options = this.getContextMenu(target);
+	for (var i = 0; i < options.length; ++i) {
+		var option = options[i];
+		var item = doc.createElement("tr");
+		parent.appendChild(item);
+		if (HTMLArea.is_ie)
+			item.unselectable = "on";
+		else item.onmousedown = function(ev) {
+			HTMLArea._stopEvent(ev);
+			return false;
+		};
+		if (!option) {
+			item.className = "separator";
+			var td = doc.createElement("td");
+			td.className = "icon";
+			var IE_IS_A_FUCKING_SHIT = '>';
+			if (HTMLArea.is_ie) {
+				td.unselectable = "on";
+				IE_IS_A_FUCKING_SHIT = " unselectable='on' style='height=1px'>&nbsp;";
+			}
+			td.innerHTML = "<div" + IE_IS_A_FUCKING_SHIT + "</div>";
+			var td1 = td.cloneNode(true);
+			td1.className = "label";
+			item.appendChild(td);
+			item.appendChild(td1);
+		} else {
+			var label = option[0];
+			item.className = "item";
+			item.__msh = {
+				item: item,
+				label: label,
+				action: option[1],
+				tooltip: option[2] || null,
+				icon: option[3] || null,
+				activate: function() {
+					self.closeMenu();
+					self.editor.focusEditor();
+					this.action();
+				}
+			};
+			label = label.replace(/_([a-zA-Z0-9])/, "<u>$1</u>");
+			if (label != option[0])
+				keys.push([ RegExp.$1, item ]);
+			label = label.replace(/__/, "_");
+			var td1 = doc.createElement("td");
+			if (HTMLArea.is_ie)
+				td1.unselectable = "on";
+			item.appendChild(td1);
+			td1.className = "icon";
+			if (item.__msh.icon)
+				td1.innerHTML = "<img align='middle' src='" + item.__msh.icon + "' />";
+			var td2 = doc.createElement("td");
+			if (HTMLArea.is_ie)
+				td2.unselectable = "on";
+			item.appendChild(td2);
+			td2.className = "label";
+			td2.innerHTML = label;
+			item.onmouseover = function() {
+				this.className += " hover";
+				self.editor._statusBarTree.innerHTML = this.__msh.tooltip || '&nbsp;';
+			};
+			item.onmouseout = function() { this.className = "item"; };
+			item.oncontextmenu = function(ev) {
+				this.__msh.activate();
+				if (!HTMLArea.is_ie)
+					HTMLArea._stopEvent(ev);
+				return false;
+			};
+			item.onmouseup = function(ev) {
+				var timeStamp = (new Date()).getTime();
+				if (timeStamp - self.timeStamp > 500)
+					this.__msh.activate();
+				if (!HTMLArea.is_ie)
+					HTMLArea._stopEvent(ev);
+				return false;
+			};
+			//if (typeof option[2] == "string")
+			//item.title = option[2];
+		}
+	}
+
+	if (!HTMLArea.is_ie) {
+		var dx = x + div.offsetWidth - window.innerWidth + 4;
+		var dy = y + div.offsetHeight - window.innerHeight + 4;
+		if (dx > 0) x -= dx;
+		if (dy > 0) y -= dy;
+		div.style.left = x + "px";
+		div.style.top = y + "px";
+	} else {
+		// determine the size (did I mention that IE stinks?)
+		var foobar = document.createElement("div");
+		foobar.className = "htmlarea-context-menu";
+		foobar.innerHTML = div.innerHTML;
+		document.body.appendChild(foobar);
+		var w = foobar.offsetWidth;
+		var h = foobar.offsetHeight;
+		document.body.removeChild(foobar);
+		this.iePopup.show(ev.screenX, ev.screenY, w, h);
+	}
+
+	this.currentMenu = div;
+	this.timeStamp = (new Date()).getTime();
+
+	HTMLArea._addEvent(document, "mousedown", documentClick);
+	HTMLArea._addEvent(this.editordoc, "mousedown", documentClick);
+	if (keys.length > 0)
+		HTMLArea._addEvent(this.editordoc, "keypress", keyPress);
+
+	HTMLArea._stopEvent(ev);
+	return false;
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/de.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/de.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/de.js	(revision 103)
@@ -0,0 +1,59 @@
+﻿// I18N constants
+
+// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
+
+// translated: <]{MJ}[>  i@student.ethz.ch
+
+
+ContextMenu.I18N = {
+	// Items that appear in menu.  Please note that an underscore (_)
+	// character in the translation (right column) will cause the following
+	// letter to become underlined and be shortcut for that menu option.
+
+	"Cut"                                                   : "Ausschneiden",
+	"Copy"                                                  : "Kopieren",
+	"Paste"                                                 : "Einfügen",
+	"Image Properties"                                      : "_Bild Einstellungen...",
+	"Modify Link"                                           : "_Link ändern...",
+	"Check Link"                                            : "Link testen...",
+	"Remove Link"                                           : "Link entfernen...",
+	"Cell Properties"                                       : "Z_ellen Einstellungen...",
+	"Row Properties"                                        : "Ze_ilen Einstellungen...",
+	"Insert Row Before"                                     : "Zeile einfügen v_or Position",
+	"Insert Row After"                                      : "Zeile einfügen n_ach Position",
+	"Delete Row"                                            : "Zeile löschen",
+	"Table Properties"                                      : "_Tabellen Einstellungen...",
+	"Insert Column Before"                                  : "Spalte einfügen vo_r Position",
+	"Insert Column After"                                   : "Spalte einfügen na_ch Position",
+	"Delete Column"                                         : "Spalte löschen",
+	"Justify Left"                                          : "Links ausrichten",
+	"Justify Center"                                        : "Zentriert",
+	"Justify Right"                                         : "Rechts ausrichten",
+	"Justify Full"                                          : "Blocksatz",
+	"Make link"                                             : "Lin_k erstellen...",
+	"Remove the"                                            : "",
+	"Element"                                               : "Element entfernen...",
+
+	// Other labels (tooltips and alert/confirm box messages)
+
+	"Please confirm that you want to remove this element:"  : "Wollen sie dieses Element wirklich entfernen ?",
+	"Remove this node from the document"                    : "Dieses Element aus dem Dokument entfernen",
+	"How did you get here? (Please report!)"                : "How did you get here? (Please report!)",
+	"Show the image properties dialog"                      : "Fenster für die Bild-Einstellungen anzeigen",
+	"Modify URL"                                            : "URL ändern",
+	"Current URL is"                                        : "Aktuelle URL ist",
+	"Opens this link in a new window"                       : "Diesen Link in neuem Fenster öffnen",
+	"Please confirm that you want to unlink this element."  : "Wollen sie diesen Link wirklich entfernen ?",
+	"Link points to:"                                       : "Link zeigt auf:",
+	"Unlink the current element"                            : "Link auf Element entfernen",
+	"Show the Table Cell Properties dialog"                 : "Zellen-Einstellungen anzeigen",
+	"Show the Table Row Properties dialog"                  : "Zeilen-Einstellungen anzeigen",
+	"Insert a new row before the current one"               : "Zeile einfügen vor der aktuellen Position",
+	"Insert a new row after the current one"                : "Zeile einfügen nach der aktuellen Position",
+	"Delete the current row"                                : "Zeile löschen",
+	"Show the Table Properties dialog"                      : "Show the Table Properties dialog",
+	"Insert a new column before the current one"            : "Spalte einfügen vor der aktuellen Position",
+	"Insert a new column after the current one"             : "Spalte einfügen nach der aktuellen Position",
+	"Delete the current column"                             : "Spalte löschen",
+	"Create a link"                                         : "Link erstellen"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/nl.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/nl.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/nl.js	(revision 103)
@@ -0,0 +1,66 @@
+// I18N constants
+
+// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
+// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
+
+// 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.)
+
+ContextMenu.I18N = {
+	// Items that appear in menu.  Please note that an underscore (_)
+	// character in the translation (right column) will cause the following
+	// letter to become underlined and be shortcut for that menu option.
+
+	"Cut"                                                   : "Knippen",
+	"Copy"                                                  : "Kopiren",
+	"Paste"                                                 : "Plakken",
+	"Image Properties"                                      : "Eigenschappen afbeelding...",
+	"Modify Link"                                           : "Hyperlin_k aanpassen...",
+	"Check Link"                                            : "Controleer hyperlin_k...",
+	"Remove Link"                                           : "Ve_rwijder hyperlink...",
+	"Cell Properties"                                       : "C_eleigenschappen...",
+	"Row Properties"                                        : "Rijeigenscha_ppen...",
+	"Insert Row Before"                                     : "Rij invoegen boven",
+	"Insert Row After"                                      : "Rij invoegen onder",
+	"Delete Row"                                            : "Rij _verwijderen",
+	"Table Properties"                                      : "_Tabeleigenschappen...",
+	"Insert Column Before"                                  : "Kolom invoegen voor",
+	"Insert Column After"                                   : "Kolom invoegen na",
+	"Delete Column"                                         : "Kolom verwijderen",
+	"Justify Left"                                          : "Links uitlijnen",
+	"Justify Center"                                        : "Centreren",
+	"Justify Right"                                         : "Rechts uitlijnen",
+	"Justify Full"                                          : "Uitvullen",
+	"Make link"                                             : "Maak hyperlin_k...",
+	"Remove the"                                            : "Verwijder het",
+	"Element"                                               : "element...",
+
+	// Other labels (tooltips and alert/confirm box messages)
+
+	"Please confirm that you want to remove this element:"  : "Is het werkelijk de bedoeling dit element te verwijderen:",
+	"Remove this node from the document"                    : "Verwijder dit punt van het document",
+	"How did you get here? (Please report!)"                : "Hoe kwam je hier? (A.U.B. doorgeven!)",
+	"Show the image properties dialog"                      : "Laat het afbeeldingseigenschappen dialog zien",
+	"Modify URL"                                            : "Aanpassen URL",
+	"Current URL is"                                        : "Huidig URL is",
+	"Opens this link in a new window"                       : "Opend deze hyperlink in een nieuw venster",
+	"Please confirm that you want to unlink this element."  : "Is het werkelijk de bedoeling dit element te unlinken.",
+	"Link points to:"                                       : "Hyperlink verwijst naar:",
+	"Unlink the current element"                            : "Unlink het huidige element",
+	"Show the Table Cell Properties dialog"                 : "Laat de tabel celeigenschappen dialog zien",
+	"Show the Table Row Properties dialog"                  : "Laat de tabel rijeigenschappen dialog zien",
+	"Insert a new row before the current one"               : "Voeg een nieuwe rij in boven de huidige",
+	"Insert a new row after the current one"                : "Voeg een nieuwe rij in onder de huidige",
+	"Delete the current row"                                : "Verwijder de huidige rij",
+	"Show the Table Properties dialog"                      : "Laat de tabel eigenschappen dialog zien",
+	"Insert a new column before the current one"            : "Voeg een nieuwe kolom in voor de huidige",
+	"Insert a new column after the current one"             : "Voeg een nieuwe kolom in na de huidige",
+	"Delete the current column"                             : "Verwijder de huidige kolom",
+	"Create a link"                                         : "Maak een hyperlink"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/el.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/el.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/el.js	(revision 103)
@@ -0,0 +1,57 @@
+// I18N constants
+
+// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
+// Author: Dimitris Glezos, dimitris@glezos.com
+
+ContextMenu.I18N = {
+	// Items that appear in menu.  Please note that an underscore (_)
+	// character in the translation (right column) will cause the following
+	// letter to become underlined and be shortcut for that menu option.
+
+	"Cut"                                                   : "Αποκοπή",
+	"Copy"                                                  : "Αντιγραφή",
+	"Paste"                                                 : "Επικόλληση",
+	"Image Properties"                                      : "Ιδιότητες Εικόνας...",
+	"Modify Link"                                           : "Τροποποίηση συνδέσμου...",
+	"Check Link"                                            : "Έλεγχος συνδέσμων...",
+	"Remove Link"                                           : "Διαγραφή συνδέσμου...",
+	"Cell Properties"                                       : "Ιδιότητες κελιού...",
+	"Row Properties"                                        : "Ιδιότητες γραμμής...",
+	"Insert Row Before"                                     : "Εισαγωγή γραμμής πριν",
+	"Insert Row After"                                      : "Εισαγωγή γραμμής μετά",
+	"Delete Row"                                            : "Διαγραφή γραμμής",
+	"Table Properties"                                      : "Ιδιότητες πίνακα...",
+	"Insert Column Before"                                  : "Εισαγωγή στήλης πριν",
+	"Insert Column After"                                   : "Εισαγωγή στήλης μετά",
+	"Delete Column"                                         : "Διαγραφή στήλης",
+	"Justify Left"                                          : "Στοίχηση Αριστερά",
+	"Justify Center"                                        : "Στοίχηση Κέντρο",
+	"Justify Right"                                         : "Στοίχηση Δεξιά",
+	"Justify Full"                                          : "Πλήρης Στοίχηση",
+	"Make link"                                             : "Δημιουργία συνδέσμου...",
+	"Remove the"                                            : "Αφαίρεση",
+	"Element"                                               : "στοιχείου...",
+
+	// Other labels (tooltips and alert/confirm box messages)
+
+	"Please confirm that you want to remove this element:"  : "Είστε βέβαιος πως θέλετε να αφαιρέσετε το στοιχείο ",
+	"Remove this node from the document"                    : "Αφαίρεση αυτού του κόμβου από το έγγραφο",
+	"How did you get here? (Please report!)"                : "Πώς ήρθατε μέχρι εδώ; (Παρακαλούμε αναφέρετε το!)",
+	"Show the image properties dialog"                      : "Εμφάνιση διαλόγου με τις Ιδιότητες εικόνας",
+	"Modify URL"                                            : "Τροποποίηση URL",
+	"Current URL is"                                        : "Το τρέχων URL είναι",
+	"Opens this link in a new window"                       : "Ανοίγει αυτό τον σύνδεσμο σε ένα νέο παράθυρο",
+	"Please confirm that you want to unlink this element."  : "Είστε βέβαιος πως θέλετε να αφαιρέσετε τον σύνδεσμο από αυτό το στοιχείο:",
+	"Link points to:"                                       : "Ο σύνδεμος οδηγεί εδώ:",
+	"Unlink the current element"                            : "Αφαίρεση συνδέσμου από το παρών στοιχείο",
+	"Show the Table Cell Properties dialog"                 : "Εμφάνιση διαλόγου με τις Ιδιότητες κελιού Πίνακα",
+	"Show the Table Row Properties dialog"                  : "Εμφάνιση διαλόγου με τις Ιδιότητες γραμμής Πίνακα",
+	"Insert a new row before the current one"               : "Εισαγωγή μιας νέας γραμμής πριν την επιλεγμένη",
+	"Insert a new row after the current one"                : "Εισαγωγή μιας νέας γραμμής μετά την επιλεγμένη",
+	"Delete the current row"                                : "Διαγραφή επιλεγμένης γραμμής",
+	"Show the Table Properties dialog"                      : "Εμφάνιση διαλόγου με τις Ιδιότητες Πίνακα",
+	"Insert a new column before the current one"            : "Εισαγωγή νέας στήλης πριν την επιλεγμένη",
+	"Insert a new column after the current one"             : "Εισαγωγή νέας στήλης μετά την επιλεγμένη",
+	"Delete the current column"                             : "Διαγραφή επιλεγμένης στήλης",
+	"Create a link"                                         : "Δημιουργία συνδέσμου"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/en.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/en.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/lang/en.js	(revision 103)
@@ -0,0 +1,66 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+ContextMenu.I18N = {
+	// Items that appear in menu.  Please note that an underscore (_)
+	// character in the translation (right column) will cause the following
+	// letter to become underlined and be shortcut for that menu option.
+
+	"Cut"                                                   : "Cut",
+	"Copy"                                                  : "Copy",
+	"Paste"                                                 : "Paste",
+	"Image Properties"                                      : "_Image Properties...",
+	"Modify Link"                                           : "_Modify Link...",
+	"Check Link"                                            : "Chec_k Link...",
+	"Remove Link"                                           : "_Remove Link...",
+	"Cell Properties"                                       : "C_ell Properties...",
+	"Row Properties"                                        : "Ro_w Properties...",
+	"Insert Row Before"                                     : "I_nsert Row Before",
+	"Insert Row After"                                      : "In_sert Row After",
+	"Delete Row"                                            : "_Delete Row",
+	"Table Properties"                                      : "_Table Properties...",
+	"Insert Column Before"                                  : "Insert _Column Before",
+	"Insert Column After"                                   : "Insert C_olumn After",
+	"Delete Column"                                         : "De_lete Column",
+	"Justify Left"                                          : "Justify Left",
+	"Justify Center"                                        : "Justify Center",
+	"Justify Right"                                         : "Justify Right",
+	"Justify Full"                                          : "Justify Full",
+	"Make link"                                             : "Make lin_k...",
+	"Remove the"                                            : "Remove the",
+	"Element"                                               : "Element...",
+
+	// Other labels (tooltips and alert/confirm box messages)
+
+	"Please confirm that you want to remove this element:"  : "Please confirm that you want to remove this element:",
+	"Remove this node from the document"                    : "Remove this node from the document",
+	"How did you get here? (Please report!)"                : "How did you get here? (Please report!)",
+	"Show the image properties dialog"                      : "Show the image properties dialog",
+	"Modify URL"                                            : "Modify URL",
+	"Current URL is"                                        : "Current URL is",
+	"Opens this link in a new window"                       : "Opens this link in a new window",
+	"Please confirm that you want to unlink this element."  : "Please confirm that you want to unlink this element.",
+	"Link points to:"                                       : "Link points to:",
+	"Unlink the current element"                            : "Unlink the current element",
+	"Show the Table Cell Properties dialog"                 : "Show the Table Cell Properties dialog",
+	"Show the Table Row Properties dialog"                  : "Show the Table Row Properties dialog",
+	"Insert a new row before the current one"               : "Insert a new row before the current one",
+	"Insert a new row after the current one"                : "Insert a new row after the current one",
+	"Delete the current row"                                : "Delete the current row",
+	"Show the Table Properties dialog"                      : "Show the Table Properties dialog",
+	"Insert a new column before the current one"            : "Insert a new column before the current one",
+	"Insert a new column after the current one"             : "Insert a new column after the current one",
+	"Delete the current column"                             : "Delete the current column",
+	"Create a link"                                         : "Create a link"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/menu.css
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/menu.css	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/ContextMenu/menu.css	(revision 103)
@@ -0,0 +1,64 @@
+/* styles for the ContextMenu /HTMLArea */
+/* The ContextMenu plugin is (c) dynarch.com 2003. */
+/* Distributed under the same terms as HTMLArea itself */
+
+div.htmlarea-context-menu {
+  position: absolute;
+  border: 1px solid #aca899;
+  padding: 2px;
+  background-color: #fff;
+  cursor: default;
+  z-index: 1000;
+}
+
+div.htmlarea-context-menu table {
+  font: 11px tahoma,verdana,sans-serif;
+  border-collapse: collapse;
+}
+
+div.htmlarea-context-menu tr.item td.icon img {
+  width: 18px;
+  height: 18px;
+}
+
+div.htmlarea-context-menu tr.item td.icon {
+  padding: 0px 3px;
+  height: 18px;
+  background-color: #cdf;
+}
+
+div.htmlarea-context-menu tr.item td.label {
+  padding: 1px 10px 1px 3px;
+}
+
+div.htmlarea-context-menu tr.separator td {
+  padding: 2px 0px;
+}
+
+div.htmlarea-context-menu tr.separator td div {
+  border-top: 1px solid #aca899;
+  overflow: hidden;
+  position: relative;
+}
+
+div.htmlarea-context-menu tr.separator td.icon {
+  background-color: #cdf;
+}
+
+div.htmlarea-context-menu tr.separator td.icon div {
+/*  margin-left: 3px; */
+  border-color: #fff;
+}
+
+div.htmlarea-context-menu tr.separator td.label div {
+  margin-right: 3px;
+}
+
+div.htmlarea-context-menu tr.item.hover {
+  background-color: #316ac5;
+  color: #fff;
+}
+
+div.htmlarea-context-menu tr.item.hover td.icon {
+  background-color: #619af5;
+}
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/da.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/da.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/da.js	(revision 103)
@@ -0,0 +1,90 @@
+﻿// I18N constants
+
+// LANG: "da", ENCODING: UTF-8 | ISO-8859-1
+// Author: Steen Sønderup, <steen@soenderup.com>
+
+// 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.)
+
+TableOperations.I18N = {
+	"Align":											"Placer",
+	"All four sides":									"Alle fire sider",
+	"Background":										"Baggrund",
+	"Baseline":											"Bundlinie",
+	"Border":											"Kant",
+	"Borders":											"Kanter",
+	"Bottom":											"Bund",
+	"CSS Style":										"Stil [CSS]",
+	"Caption":											"Titel",
+	"Cell Properties":									"Celle egenskaber",
+	"Center":											"Centrer",
+	"Char":												"Plads",
+	"Collapsed borders":								"Sammensmelt rammer",
+	"Color":											"Farve",
+	"Description":										"Beskrivelse",
+	"FG Color":											"Font farve",
+	"Float":											"Justering",
+	"Frames":											"Udvendig",
+	"Height":											"Højde",
+	"How many columns would you like to merge?":		"Hvor mange kollonner vil du samle?",
+	"How many rows would you like to merge?":			"Hvor mange rækker vil du samle?",
+	"Image URL":										"Billede URL",
+	"Justify":											"Lige margener",
+	"Layout":											"Opsætning",
+	"Left":												"Venstre",
+	"Margin":											"Margen",
+	"Middle":											"Centrer",
+	"No rules":											"Ingen rammer",
+	"No sides":											"Ingen sider",
+	"None":												"Ingen",
+	"Padding":											"Margen",
+	"Please click into some cell":						"Klik på en celle",
+	"Right":											"Højre",
+	"Row Properties":									"Række egenskaber",
+	"Rules will appear between all rows and columns":	"Rammer mellem rækker og kolonner",
+	"Rules will appear between columns only":			"Kun rammer mellem kolonner",
+	"Rules will appear between rows only":				"Kun rammer mellem rækker",
+	"Rules":											"Invendig",
+	"Spacing and padding":								"Afstand og margen",
+	"Spacing":											"Afstand",
+	"Summary":											"Beskrivelse",
+	"TO-cell-delete":									"Slet celle",
+	"TO-cell-insert-after":								"Indsæt celle efter",
+	"TO-cell-insert-before":							"Indsæt celle før",
+	"TO-cell-merge":									"Sammensæt celler",
+	"TO-cell-prop":										"Celle egenskaber",
+	"TO-cell-split":									"Opdel celle",
+	"TO-col-delete":									"Slet kollonne",
+	"TO-col-insert-after":								"Indsæt kolonne efter",
+	"TO-col-insert-before":								"Indsæt kolonne før",
+	"TO-col-split":										"Opdel kolonne",
+	"TO-row-delete":									"Slet række",
+	"TO-row-insert-above":								"Indsæt række før",
+	"TO-row-insert-under":								"Indsæt række efter",
+	"TO-row-prop":										"Række egenskaber",
+	"TO-row-split":										"Opdel række",
+	"TO-table-prop":									"Tabel egenskaber",
+	"Table Properties":									"Tabel egenskaber",
+	"Text align":										"Tekst",
+	"The bottom side only":								"Kun i bunden",
+	"The left-hand side only":							"Kun i højre side",
+	"The right and left sides only":					"Kun i siderne",
+	"The right-hand side only":							"Kun i venstre side",
+	"The top and bottom sides only":					"Kun i top og bund",
+	"The top side only":								"Kun i toppen",
+	"Top":												"Top",	
+	"Unset color":										"Farve ikke valgt",
+	"Vertical align":									"Vertikal placering",
+	"Width":											"Bredde",
+	"not-del-last-cell":								"Du kan ikke slette den sidste celle i en række.",
+	"not-del-last-col":									"Du kan ikke slette den sidste kolonne i en tabel.",
+	"not-del-last-row":									"Du kan ikke slette den sidste række i en tabel.",
+	"percent":											"procent",
+	"pixels":											"pixel"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/de.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/de.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/de.js	(revision 103)
@@ -0,0 +1,81 @@
+// I18N constants
+
+// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
+// Author: broxx, <broxx@broxx.com>
+
+TableOperations.I18N = {
+	"Align":					  "Ausrichten",
+	"All four sides":				  "Alle 4 Seiten",
+	"Background":					  "Hintergrund",
+	"Baseline":                                       "Basislinie",
+	"Border":					  "Rand",
+	"Borders":					  "Raender",
+	"Bottom":                                         "Unten",
+	"CSS Style":					  "Style [CSS]",
+	"Caption":					  "Ueberschrift",
+	"Cell Properties":                                "Zellen",
+	"Center":					  "Zentrieren",
+	"Char":                                           "Zeichen",
+	"Collapsed borders":                              "Collapsed borders",
+	"Color":					  "Farbe",
+	"Description":					  "Beschreibung",
+	"FG Color":					  "FG Farbe",
+	"Float":                                          "Ausrichtung",
+	"Frames":					  "Rahmen",
+	"Height":                                         "Hoehe",
+	"How many columns would you like to merge?":      "Wieviele Spalten willst du verbinden?",
+	"How many rows would you like to merge?":         "Wieviele Zeilen willst du verbinden?",
+	"Image URL":					  "Bild URL",
+	"Justify":                                        "Justieren",
+	"Layout":					  "Layout",
+	"Left":						  "Links",
+	"Margin":                                         "Rand",
+	"Middle":                                         "Mitte",
+	"No rules":					  "Keine Balken",
+	"No sides":					  "Keine Seiten",
+	"None":                                           "Keine",
+	"Padding":					  "Auffuellung",
+	"Please click into some cell":                    "Waehle eine Zelle",
+	"Right":					  "Rechts",
+	"Row Properties":                                 "Reihen",
+	"Rules will appear between all rows and columns": "Balken zwischen Reihen und Spalten",
+	"Rules will appear between columns only":	  "Balken zwischen Spalten",
+	"Rules will appear between rows only":		  "Balken zwischen Reihen",
+	"Rules":					  "Balken",
+	"Spacing and padding":                            "Abstaende",
+	"Spacing":					  "Abstand",
+	"Summary":					  "Zusammenfassung",
+	"TO-cell-delete":				  "Zelle loeschen",
+	"TO-cell-insert-after":				  "Zelle einfuegen nach",
+	"TO-cell-insert-before":			  "Zelle einfuegen bevor",
+	"TO-cell-merge":				  "Zellen zusammenfuegen",
+	"TO-cell-prop":					  "Zelleinstellungen",
+	"TO-cell-split":				  "Zellen aufteilen",
+	"TO-col-delete":				  "Spalte loeschen",
+	"TO-col-insert-after":				  "Spalte einfuegen nach",
+	"TO-col-insert-before":				  "Spalte einfuegen bevor",
+	"TO-col-split":					  "Spalte aufteilen",
+	"TO-row-delete":				  "Reihe loeschen",
+	"TO-row-insert-above":				  "Reihe einfuegen vor",
+	"TO-row-insert-under":				  "Reihe einfuegen nach",
+	"TO-row-prop":					  "Reiheneinstellungen",
+	"TO-row-split":					  "Reihen aufteilen",
+	"TO-table-prop":				  "Tabelle",
+	"Table Properties":				  "Tabelle",
+	"Text align":                                     "Ausrichtung",
+	"The bottom side only":				  "Nur untere Seite",
+	"The left-hand side only":			  "Nur linke Seite",
+	"The right and left sides only":		  "Nur linke und rechte Seite",
+	"The right-hand side only":			  "Nur rechte Seite",
+	"The top and bottom sides only":		  "Nur obere und untere Seite",
+	"The top side only":				  "Nur obere Seite",
+	"Top":                                            "Oben",	
+	"Unset color":                                    "Farbe",
+	"Vertical align":                                 "Ausrichtung",
+	"Width":					  "Breite",
+	"not-del-last-cell":				  "Letzte Zelle in dieser Reihe!",
+	"not-del-last-col":				  "Letzte Spalte in dieser Tabelle!",
+	"not-del-last-row":				  "Letzte Reihe in dieser Tabelle",
+	"percent":					  "%",
+	"pixels":					  "pixels"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/nl.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/nl.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/nl.js	(revision 103)
@@ -0,0 +1,90 @@
+// I18N constants
+
+// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1
+// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
+
+// 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.)
+
+TableOperations.I18N = {
+	"Align":											"Uitlijning",
+	"All four sides":									"Alle 4 zijden",
+	"Background":										"Achtergrond",
+	"Baseline":											"Basis",
+	"Border":											"Rand",
+	"Borders":											"Randen",
+	"Bottom":											"Onder",
+	"CSS Style":										"CSS Style",
+	"Caption":											"Opmerking",
+	"Cell Properties":									"Celeigenschappen",
+	"Center":											"Centreren",
+	"Char":												"Karakter",
+	"Collapsed borders":								"Geen randen",
+	"Color":											"Kleur",
+	"Description":										"Omschrijving",
+	"FG Color":											"Voorgrond",
+	"Float":											"Zwevend",
+	"Frames":											"Frames",
+	"Height":											"Hoogte",
+	"How many columns would you like to merge?":		"Hoeveel kolommen wilt u samenvoegen?",
+	"How many rows would you like to merge?":			"Hoeveel rijen wilt u samenvoegen?",
+	"Image URL":										"Afbeelding URL",
+	"Justify":											"Uitvullen",
+	"Layout":											"Opmaak",
+	"Left":												"Links",
+	"Margin":											"Marge",
+	"Middle":											"Midden",
+	"No rules":											"Geen regels",
+	"No sides":											"Geen zijlijnen",
+	"None":												"Geen",
+	"Padding":											"Celmarge",
+	"Please click into some cell":						"Klik in een cel a.u.b.",
+	"Right":											"Rechts",
+	"Row Properties":									"Rijeigenschappen",
+	"Rules will appear between all rows and columns":	"Regels verschijnen tussen alle rijen en kolommen",
+	"Rules will appear between columns only":	  		"Regels verschijnen enkel tussen de kolommen",
+	"Rules will appear between rows only":				"Regels verschijnen enkel tussen de rijen",
+	"Rules":					  						"Regels",
+	"Spacing and padding":                           	"Celmarge en afstand tussen cellen",
+	"Spacing":											"marge",
+	"Summary":											"Overzicht",
+	"TO-cell-delete":				  					"Cel verwijderen",
+	"TO-cell-insert-after":				  				"Voeg cel toe achter",
+	"TO-cell-insert-before":			  				"Voeg cel toe voor",
+	"TO-cell-merge":									"Cellen samenvoegen",
+	"TO-cell-prop":										"Celeigenschappen",
+	"TO-cell-split":									"Cel splitsen",
+	"TO-col-delete":									"Kolom verwijderen",
+	"TO-col-insert-after":								"Kolom invoegen achter",
+	"TO-col-insert-before":								"Kolom invoegen voor",
+	"TO-col-split":										"Kolom splitsen",
+	"TO-row-delete":									"Rij verwijderen",
+	"TO-row-insert-above":								"Rij invoegen boven",
+	"TO-row-insert-under":								"Rij invoegen onder",
+	"TO-row-prop":										"Rij eigenschappen",
+	"TO-row-split":										"Rij splitsen",
+	"TO-table-prop":				  					"Tabel eigenschappen",
+	"Table Properties":				  					"Tabel eigenschappen",
+	"Text align":                                     	"Text uitlijning",
+	"The bottom side only":				  				"Enkel aan de onderkant",
+	"The left-hand side only":			 				"Enkel aan de linkerkant",
+	"The right and left sides only":		 			"Enkel aan de linker en rechterkant",
+	"The right-hand side only":							"Enkel aan de rechterkant",
+	"The top and bottom sides only":					"Enkel aan de bovenen onderkant",
+	"The top side only":								"Enkel aan de bovenkant",
+	"Top":												"Boven",
+	"Unset color":										"Wis kleur",
+	"Vertical align":									"Vertikale uitlijning",
+	"Width":					 						"Breedte",
+	"not-del-last-cell":								"HTMLArea kan de laatste cel in deze tabel niet verwijderen.",
+	"not-del-last-col":									"HTMLArea kan de laatste kolom in deze tabel niet verwijderen.",
+	"not-del-last-row":									"HTMLArea kan de laatste rij in deze tabel niet verwijderen.",
+	"percent":											"procent",
+	"pixels":											"pixels"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/cz.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/cz.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/cz.js	(revision 103)
@@ -0,0 +1,90 @@
+﻿// I18N constants
+
+// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2
+// Author: Jiri Löw, <jirilow@jirilow.com>
+
+// 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.)
+
+TableOperations.I18N = {
+	"Align":					  "Zarovnání",
+	"All four sides":				  "Všechny čtyři strany",
+	"Background":					  "Pozadí",
+	"Baseline":                                       "Základní linka",
+	"Border":					  "Obrys",
+	"Borders":					  "Obrysy",
+	"Bottom":                                         "Dolů",
+	"CSS Style":					  "Kaskádové styly (CSS)",
+	"Caption":					  "Titulek",
+	"Cell Properties":                                "Vlastnosti buňky",
+	"Center":					  "Na střed",
+	"Char":                                           "Znak",
+	"Collapsed borders":                              "Stlačené okraje",
+	"Color":					  "Barva",
+	"Description":					  "Popis",
+	"FG Color":					  "Barva popředí",
+	"Float":                                          "Obtékání",
+	"Frames":					  "Rámečky",
+	"Height":                                         "Výška",
+	"How many columns would you like to merge?":      "Kolik sloupců si přejete spojit?",
+	"How many rows would you like to merge?":         "Kolik řádků si přejete spojit?",
+	"Image URL":					  "Adresa obrázku",
+	"Justify":                                        "Do stran",
+	"Layout":					  "Rozložení",
+	"Left":						  "Vlevo",
+	"Margin":                                         "Okraj",
+	"Middle":                                         "Na střed",
+	"No rules":					  "Žádné čáry",
+	"No sides":					  "Žádné strany",
+	"None":                                           "Žádné",
+	"Padding":					  "Odsazování",
+	"Please click into some cell":                    "Prosím klikněte do některé buňky",
+	"Right":					  "Vpravo",
+	"Row Properties":                                 "Vlastnosti řádku",
+	"Rules will appear between all rows and columns": "Čáry mezi všemi řádky i sloupci",
+	"Rules will appear between columns only":	  "Čáry pouze mezi sloupci",
+	"Rules will appear between rows only":		  "Čáry pouze mezi řádky",
+	"Rules":					  "Čáry",
+	"Spacing and padding":                            "Mezery a odsazování",
+	"Spacing":					  "Mezery",
+	"Summary":					  "Shrnutí",
+	"TO-cell-delete":				  "Smazat buňku",
+	"TO-cell-insert-after":				  "Vložit buňku za",
+	"TO-cell-insert-before":			  "Vložit buňku před",
+	"TO-cell-merge":				  "Spojit buňky",
+	"TO-cell-prop":					  "Vlastnosti buňky",
+	"TO-cell-split":				  "Rozdělit buňku",
+	"TO-col-delete":				  "Smazat sloupec",
+	"TO-col-insert-after":				  "Vložit sloupec za",
+	"TO-col-insert-before":				  "Vložit sloupec před",
+	"TO-col-split":					  "Rozdělit sloupec",
+	"TO-row-delete":				  "Smazat řádek",
+	"TO-row-insert-above":				  "Smazat řádek nad",
+	"TO-row-insert-under":				  "Smazat řádek pod",
+	"TO-row-prop":					  "Vlastnosti řádku",
+	"TO-row-split":					  "Rozdělit řádek",
+	"TO-table-prop":				  "Vlastnosti tabulky",
+	"Table Properties":				  "Vlastnosti tabulky",
+	"Text align":                                     "Zarovnání textu",
+	"The bottom side only":				  "Pouze spodní strana",
+	"The left-hand side only":			  "Pouze levá strana",
+	"The right and left sides only":		  "Pouze levá a pravá strana",
+	"The right-hand side only":			  "Pouze pravá strana",
+	"The top and bottom sides only":		  "Pouze horní a dolní strana",
+	"The top side only":				  "Pouze horní strana",
+	"Top":                                            "Nahoru",	
+	"Unset color":                                    "Zrušit barvu",
+	"Vertical align":                                 "Svislé zarovnání",
+	"Width":					  "Šířka",
+	"not-del-last-cell":				  "HTMLArea zbaběle odmítá smazat poslední buňku v řádku.",
+	"not-del-last-col":				  "HTMLArea zbaběle odmítá smazat poslední sloupec v tabulce.",
+	"not-del-last-row":				  "HTMLArea zbaběle odmítá smazat poslední řádek v tabulce.",
+	"percent":					  "procent",
+	"pixels":					  "pixelů"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/hu.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/hu.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/hu.js	(revision 103)
@@ -0,0 +1,63 @@
+// I18N constants
+
+// LANG: "hu", ENCODING: UTF-8
+// Author: Miklós Somogyi, <somogyine@vnet.hu>
+
+// 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.)
+
+HTMLArea.I18N = {
+
+	// the following should be the filename without .js extension
+	// it will be used for automatically load plugin language.
+	lang: "hu",
+
+	tooltips: {
+		bold:           "Félkövér",
+		italic:         "Dőlt",
+		underline:      "Aláhúzott",
+		strikethrough:  "Áthúzott",
+		subscript:      "Alsó index",
+		superscript:    "Felső index",
+		justifyleft:    "Balra zárt",
+		justifycenter:  "Középre zárt",
+		justifyright:   "Jobbra zárt",
+		justifyfull:    "Sorkizárt",
+		orderedlist:    "Számozott lista",
+		unorderedlist:  "Számozatlan lista",
+		outdent:        "Behúzás csökkentése",
+		indent:         "Behúzás növelése",
+		forecolor:      "Karakterszín",
+		hilitecolor:    "Háttérszín",
+		horizontalrule: "Elválasztó vonal",
+		createlink:     "Hiperhivatkozás beszúrása",
+		insertimage:    "Kép beszúrása",
+		inserttable:    "Táblázat beszúrása",
+		htmlmode:       "HTML forrás be/ki",
+		popupeditor:    "Szerkesztő külön ablakban",
+		about:          "Névjegy",
+		showhelp:       "Súgó",
+		textindicator:  "Aktuális stílus",
+		undo:           "Visszavonás",
+		redo:           "Újra végrehajtás",
+		cut:            "Kivágás",
+		copy:           "Másolás",
+		paste:          "Beillesztés"
+	},
+
+	buttons: {
+		"ok":           "Rendben",
+		"cancel":       "Mégsem"
+	},
+
+	msg: {
+		"Path":         "Hierarchia",
+		"TEXT_MODE":    "Forrás mód. Visszaváltás [<>] gomb"
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/it.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/it.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/it.js	(revision 103)
@@ -0,0 +1,81 @@
+// I18N constants
+
+// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
+// Author: Fabio Rotondo <fabio@rotondo.it>
+
+TableOperations.I18N = {
+	"Align":					  "Allinea",
+	"All four sides":				  "Tutti e quattro i lati",
+	"Background":					  "Sfondo",
+	"Baseline":                                       "Allineamento",
+	"Border":					  "Bordo",
+	"Borders":					  "Bordi",
+	"Bottom":                                         "Basso",
+	"CSS Style":					  "Stile [CSS]",
+	"Caption":					  "Titolo",
+	"Cell Properties":                                "Proprietà della Cella",
+	"Center":					  "Centra",
+	"Char":                                           "Carattere",
+	"Collapsed borders":                              "Bordi chiusi",
+	"Color":					  "Colore",
+	"Description":					  "Descrizione",
+	"FG Color":					  "Colore Principale",
+	"Float":                                          "Fluttuante",
+	"Frames":					  "Frames",
+	"Height":                                         "Altezza",
+	"How many columns would you like to merge?":      "Quante colonne vuoi unire?",
+	"How many rows would you like to merge?":         "Quante righe vuoi unire?",
+	"Image URL":					  "URL dell'Immagine",
+	"Justify":                                        "Justifica",
+	"Layout":					  "Layout",
+	"Left":						  "Sinistra",
+	"Margin":                                         "Margine",
+	"Middle":                                         "Centrale",
+	"No rules":					  "Nessun righello",
+	"No sides":					  "Nessun lato",
+	"None":                                           "Nulla",
+	"Padding":					  "Padding",
+	"Please click into some cell":                    "Per favore, clicca in una cella",
+	"Right":					  "Destra",
+	"Row Properties":                                 "Proprietà della Riga",
+	"Rules will appear between all rows and columns": "Le linee appariranno tra tutte le righe e colonne",
+	"Rules will appear between columns only":	  "Le linee appariranno solo tra le colonne",
+	"Rules will appear between rows only":		  "Le linee appariranno solo tra le righe",
+	"Rules":					  "Linee",
+	"Spacing and padding":                            "Spaziatura e Padding",
+	"Spacing":					  "Spaziatura",
+	"Summary":					  "Sommario",
+	"TO-cell-delete":				  "Cancella cella",
+	"TO-cell-insert-after":				  "Inserisci cella dopo",
+	"TO-cell-insert-before":			  "Inserisci cella prima",
+	"TO-cell-merge":				  "Unisci celle",
+	"TO-cell-prop":					  "Proprietà della cella",
+	"TO-cell-split":				  "Dividi cella",
+	"TO-col-delete":				  "Cancella colonna",
+	"TO-col-insert-after":				  "Inserisci colonna dopo",
+	"TO-col-insert-before":				  "Inserisci colonna prima",
+	"TO-col-split":					  "Dividi colonna",
+	"TO-row-delete":				  "Cancella riga",
+	"TO-row-insert-above":				  "Inserisci riga prima",
+	"TO-row-insert-under":				  "Inserisci riga dopo",
+	"TO-row-prop":					  "Proprietà della riga",
+	"TO-row-split":					  "Dividi riga",
+	"TO-table-prop":				  "Proprietà della Tabella",
+	"Table Properties":				  "Proprietà della Tabella",
+	"Text align":                                     "Allineamento del Testo",
+	"The bottom side only":				  "Solo la parte inferiore",
+	"The left-hand side only":			  "Solo la parte sinistra",
+	"The right and left sides only":		  "Solo destra e sinistra",
+	"The right-hand side only":			  "Solo la parte destra",
+	"The top and bottom sides only":		  "Solo sopra e sotto",
+	"The top side only":				  "Solo la parte sopra",
+	"Top":                                            "Alto",	
+	"Unset color":                                    "Rimuovi colore",
+	"Vertical align":                                 "Allineamento verticale",
+	"Width":					  "Larghezza",
+	"not-del-last-cell":				  "HTMLArea si rifiuta codardamente di cancellare l'ultima cella nella riga.",
+	"not-del-last-col":				  "HTMLArea si rifiuta codardamente di cancellare l'ultima colonna nella tabella.",
+	"not-del-last-row":				  "HTMLArea si rifiuta codardamente di cancellare l'ultima riga nella tabella.",
+	"percent":					  "percento",
+	"pixels":					  "pixels"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/no.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/no.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/no.js	(revision 103)
@@ -0,0 +1,91 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, <mishoo@infoiasi.ro>
+// translated into Norwegia: ses@online.no  11.11.03
+
+// 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.)
+
+TableOperations.I18N = {
+	"Align":					  	"Juster",
+	"All four sides":			  	"Alle fire sider",
+	"Background":					"Bakgrund",
+	"Baseline":                   	"Grunnlinje",
+	"Border":					  	"Kantlinje",
+	"Borders":					  	"Kantlinjer",
+	"Bottom":                     	"Bunn",
+	"CSS Style":					"Stil [CSS]",
+	"Caption":					  	"Overskrift",
+	"Cell Properties":              "Celleegenskaper",
+	"Center":					  	"Sentrer",
+	"Char":                         "Tegn",
+	"Collapsed borders":            "Fjern kantlinjer",
+	"Color":					  	"Farge",
+	"Description":					"Beskrivelse",
+	"FG Color":					  	"FG farge",
+	"Float":                        "Flytende",
+	"Frames":					  	"rammer",
+	"Height":                       "Hyde",
+	"How many columns would you like to merge?":      "Hvor mange kolonner vil du sl sammen?",
+	"How many rows would you like to merge?":         "Hvor mange rader vil du sl sammen?",
+	"Image URL":					"Bildets URL",
+	"Justify":                      "Juster",
+	"Layout":					  	"Layout",
+	"Left":						  	"Venstre",
+	"Margin":                       "Marg",
+	"Middle":                       "Midten",
+	"No rules":					  	"Ingen linjal",
+	"No sides":					  	"Ingen sider",
+	"None":                         "Ingen",
+	"Padding":					  	"Luft",
+	"Please click into some cell":  "Klikk i en eller annen celle",
+	"Right":					  	"Hyre",
+	"Row Properties":               "Egenskaper for rad",
+	"Rules will appear between all rows and columns": "Linjer vil synes mellom alle rader og kolonner",
+	"Rules will appear between columns only":	  "Linjer vil synes kun mellom kolonner",
+	"Rules will appear between rows only":		  "Linjer vil synes kun mellom rader",
+	"Rules":					  	"Linjer",
+	"Spacing and padding":          "Luft",
+	"Spacing":					  	"Luft",
+	"Summary":					  	"Sammendrag",
+	"TO-cell-delete":				"Slett celle",
+	"TO-cell-insert-after":			"Sett inn celle etter",
+	"TO-cell-insert-before":		"Sett inn celle foran",
+	"TO-cell-merge":				"Sl sammen celler",
+	"TO-cell-prop":					"Egenskaper for celle",
+	"TO-cell-split":				"Del celle",
+	"TO-col-delete":				"Slett kolonne",
+	"TO-col-insert-after":			"Skyt inn kolonne etter",
+	"TO-col-insert-before":			"Skyt inn kolonne fr",
+	"TO-col-split":					"Del kolonne",
+	"TO-row-delete":				"Slett rad",
+	"TO-row-insert-above":			"Skyt inn rad foran",
+	"TO-row-insert-under":			"Skyt inn rad etter",
+	"TO-row-prop":					"Egenskaper for rad",
+	"TO-row-split":					"Del rad",
+	"TO-table-prop":				"Tabellegenskaper",
+	"Table Properties":				"Tabellegenskaper",
+	"Text align":                   "Juster tekst",
+	"The bottom side only":			"Bunnen kun",
+	"The left-hand side only":		"Venstresiden kun",
+	"The right and left sides only":	"Hyre- og venstresiden kun",
+	"The right-hand side only":			"Hyresiden kun",
+	"The top and bottom sides only":	"The top and bottom sides only",
+	"The top side only":				"Overkanten kun",
+	"Top":                          "Overkant",	
+	"Unset color":                  "Ikke-bestemt farge",
+	"Vertical align":               "Vertikal justering",
+	"Width":					  	"Bredde",
+	"not-del-last-cell":			"HTMLArea nekter  slette siste cellen i tabellen.",
+	"not-del-last-col":				"HTMLArea nekter  slette siste kolonnen i tabellen.",
+	"not-del-last-row":				"HTMLArea nekter  slette siste raden i tabellen.",
+	"percent":					  	"prosent",
+	"pixels":					  	"billedpunkter"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/fi.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/fi.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/fi.js	(revision 103)
@@ -0,0 +1,66 @@
+TableOperations.I18N = {
+	"Align":					  "Kohdistus",
+	"All four sides":				  "Kaikki nelj sivua",
+	"Background":					  "Tausta",
+	"Baseline":                                       "Takaraja",
+	"Border":					  "Reuna",
+	"Borders":					  "Reunat",
+	"Bottom":                                         "Alle",
+	"CSS Style":					  "Tyyli [CSS]",
+	"Caption":					  "Otsikko",
+	"Cell Properties":                                "Solun asetukset",
+	"Center":					  "Keskelle",
+	"Char":                                           "Merkki",
+	"Collapsed borders":                              "Luhistetut reunat",
+	"Color":					  "Vri",
+	"Description":					  "Kuvaus",
+	"FG Color":					  "FG Vri",
+	"Frames":					  "Kehykset",
+	"Image URL":					  "Kuvan osoite",
+	"Layout":					  "Sommittelu",
+	"Left":						  "Vasen",
+	"Margin":                                         "Marginaali",
+	"Middle":                                         "Keskelle",
+	"No rules":					  "Ei viivoja",
+	"No sides":					  "Ei sivuja",
+	"Padding":					  "Palstantyte",
+	"Right":					  "Oikea",
+	"Row Properties":                                 "Rivin asetukset",
+	"Rules will appear between all rows and columns": "Viivat jokaisen rivin ja sarakkeen vlill",
+	"Rules will appear between columns only":	  "Viivat ainoastaan sarakkeiden vlill",
+	"Rules will appear between rows only":		  "Viivat ainoastaan rivien vlill",
+	"Rules":					  "Viivat",
+	"Spacing":					  "Palstatila",
+	"Summary":					  "Yhteenveto",
+	"TO-cell-delete":				  "Poista solu",
+	"TO-cell-insert-after":				  "Lis solu pern",
+	"TO-cell-insert-before":			  "Lis solu ennen",
+	"TO-cell-merge":				  "Yhdist solut",
+	"TO-cell-prop":					  "Solun asetukset",
+	"TO-cell-split":				  "Jaa solu",
+	"TO-col-delete":				  "Poista sarake",
+	"TO-col-insert-after":				  "Lis sarake pern",
+	"TO-col-insert-before":				  "Lis sarake ennen",
+	"TO-col-split":					  "Jaa sarake",
+	"TO-row-delete":				  "Poista rivi",
+	"TO-row-insert-above":				  "Lis rivi ylpuolelle",
+	"TO-row-insert-under":				  "Lis rivi alapuolelle",
+	"TO-row-prop":					  "Rivin asetukset",
+	"TO-row-split":					  "Jaa rivi",
+	"TO-table-prop":				  "Taulukon asetukset",
+	"Top":                                            "Yls",	
+	"Table Properties":				  "Taulukon asetukset",
+	"The bottom side only":				  "Ainoastaan alapuolelle",
+	"The left-hand side only":			  "Ainoastaan vasenreuna",
+	"The right and left sides only":		  "Oikea- ja vasenreuna",
+	"The right-hand side only":			  "Ainoastaan oikeareuna",
+	"The top and bottom sides only":		  "Yl- ja alapuoli.",
+	"The top side only":				  "Ainoastaan ylpuoli",
+	"Vertical align":                                 "Vertikaali kohdistus",
+	"Width":					  "Leveys",
+	"not-del-last-cell":				  "Ei voida poistaa viimeist solua rivist.",
+	"not-del-last-col":				  "Ei voida poistaa viimeist saraketta taulusta.",
+	"not-del-last-row":				  "Ei voida poistaa viimeist rivi taulusta.",
+	"percent":					  "prosenttia",
+	"pixels":					  "pikseli"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/el.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/el.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/el.js	(revision 103)
@@ -0,0 +1,81 @@
+// I18N constants
+
+// LANG: "el", ENCODING: UTF-8 | ISO-8859-7
+// Author: Dimitris Glezos, dimitris@glezos.com
+
+TableOperations.I18N = {
+	"Align":					  "Στοίχηση",
+	"All four sides":				  "Και οι 4 πλευρές",
+	"Background":					  "Φόντο",
+	"Baseline":                                       "Baseline",
+	"Border":					  "Περίγραμμα",
+	"Borders":					  "Περιγράμματα",
+	"Bottom":                                         "Κάτω μέρος",
+	"CSS Style":					  "Στυλ [CSS]",
+	"Caption":					  "Λεζάντα",
+	"Cell Properties":                                "Ιδιότητες Κελιού",
+	"Center":					  "Κέντρο",
+	"Char":                                           "Χαρακτήρας",
+	"Collapsed borders":                              "Συμπτυγμένα περιγράμματα",
+	"Color":					  "Χρώμα",
+	"Description":					  "Περιγραφή",
+	"FG Color":					  "Χρώμα αντικειμένων",
+	"Float":                                          "Float",
+	"Frames":					  "Frames",
+	"Height":                                         "Ύψος",
+	"How many columns would you like to merge?":      "Πόσες στήλες θέλετε να ενώσετε;",
+	"How many rows would you like to merge?":         "Πόσες γραμμές θέλετε να ενώσετε;",
+	"Image URL":					  "URL εικόνας",
+	"Justify":                                        "Πλήρης στοίχηση",
+	"Layout":					  "Διάταξη",
+	"Left":						  "Αριστερά",
+	"Margin":                                         "Περιθώριο",
+	"Middle":                                         "Κέντρο",
+	"No rules":					  "Χωρίς Γραμμές",
+	"No sides":					  "No sides",
+	"None":                                           "Τίποτα",
+	"Padding":					  "Εσοχή",
+	"Please click into some cell":                    "Κάντε κλικ μέσα σε κάποιο κελί",
+	"Right":					  "Δεξιά",
+	"Row Properties":                                 "Ιδιότητες Γραμμής",
+	"Rules will appear between all rows and columns": "Γραμμές θα εμφανίζονται μεταξύ όλων των γραμμών και στηλών",
+	"Rules will appear between columns only":	  "Γραμμές θα εμφανίζονται μόνο μεταξύ στηλών",
+	"Rules will appear between rows only":		  "Γραμμές θα εμφανίζονται μόνο μεταξύ γραμμών",
+	"Rules":					  "Γραμμές",
+	"Spacing and padding":                            "Αποστάσεις και εσοχές",
+	"Spacing":					  "Αποστάσεις",
+	"Summary":					  "Σύνοψη",
+	"TO-cell-delete":				  "Διαγραφή κελιού",
+	"TO-cell-insert-after":				  "Εισαγωγή κελιού μετά",
+	"TO-cell-insert-before":			  "Εισαγωγή κελιού πριν",
+	"TO-cell-merge":				  "Συγχώνευση κελιών",
+	"TO-cell-prop":					  "Ιδιότητες κελιού",
+	"TO-cell-split":				  "Διαίρεση κελιού",
+	"TO-col-delete":				  "Διαγραφή στήλης",
+	"TO-col-insert-after":				  "Εισαγωγή στήλης μετά",
+	"TO-col-insert-before":				  "Εισαγωγή στήλης πριν",
+	"TO-col-split":					  "Διαίρεση στήλης",
+	"TO-row-delete":				  "Διαγραφή γραμμής",
+	"TO-row-insert-above":				  "Εισαγωγή γραμμής μετά",
+	"TO-row-insert-under":				  "Εισαγωγή γραμμής πριν",
+	"TO-row-prop":					  "Ιδιότητες γραμμής",
+	"TO-row-split":					  "Διαίρεση γραμμής",
+	"TO-table-prop":				  "Ιδιότητες πίνακα",
+	"Table Properties":				  "Ιδιότητες πίνακα",
+	"Text align":                                     "Στοίχηση κειμένου",
+	"The bottom side only":				  "Η κάτω πλευρά μόνο",
+	"The left-hand side only":			  "Η αριστερή πλευρά μόνο",
+	"The right and left sides only":		  "Οι δεξιές και αριστερές πλευρές μόνο",
+	"The right-hand side only":			  "Η δεξιά πλευρά μόνο",
+	"The top and bottom sides only":		  "Οι πάνω και κάτω πλευρές μόνο",
+	"The top side only":				  "Η πάνω πλευρά μόνο",
+	"Top":                                            "Πάνω",	
+	"Unset color":                                    "Αναίρεση χρώματος",
+	"Vertical align":                                 "Κατακόρυφη στοίχηση",
+	"Width":					  "Πλάτος",
+	"not-del-last-cell":				  "Δεν μπορεί να διαγραφεί το τελευταίο κελί σε μια γραμμή.",
+	"not-del-last-col":				  "Δεν μπορεί να διαγραφεί η τελευταία στήλη σε ένα πίνακα.",
+	"not-del-last-row":				  "Δεν μπορεί να διαγραφεί η τελευταία γραμμή σε ένα πίνακα.",
+	"percent":					  "τοις εκατόν",
+	"pixels":					  "pixels"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/ro.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/ro.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/ro.js	(revision 103)
@@ -0,0 +1,90 @@
+// I18N constants
+
+// LANG: "ro", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+TableOperations.I18N = {
+	"Align":					  "Aliniere",
+	"All four sides":				  "Toate părţile",
+	"Background":					  "Fundal",
+	"Baseline":                                       "Baseline",
+	"Border":					  "Chenar",
+	"Borders":					  "Chenare",
+	"Bottom":                                         "Jos",
+	"CSS Style":					  "Stil [CSS]",
+	"Caption":					  "Titlu de tabel",
+	"Cell Properties":                                "Proprietăţile celulei",
+	"Center":					  "Centru",
+	"Char":                                           "Caracter",
+	"Collapsed borders":                              "Chenare asimilate",
+	"Color":					  "Culoare",
+	"Description":					  "Descriere",
+	"FG Color":					  "Culoare text",
+	"Float":                                          "Poziţie",
+	"Frames":					  "Chenare",
+	"Height":                                         "Înălţimea",
+	"How many columns would you like to merge?":      "Câte coloane vrei să uneşti?",
+	"How many rows would you like to merge?":         "Câte linii vrei să uneşti?",
+	"Image URL":					  "URL-ul imaginii",
+	"Justify":                                        "Justify",
+	"Layout":					  "Aranjament",
+	"Left":						  "Stânga",
+	"Margin":                                         "Margine",
+	"Middle":                                         "Mijloc",
+	"No rules":					  "Fără linii",
+	"No sides":					  "Fără părţi",
+	"None":                                           "Nimic",
+	"Padding":					  "Spaţiere",
+	"Please click into some cell":                    "Vă rog să daţi click într-o celulă",
+	"Right":					  "Dreapta",
+	"Row Properties":                                 "Proprietăţile liniei",
+	"Rules will appear between all rows and columns": "Vor apărea linii între toate rândurile şi coloanele",
+	"Rules will appear between columns only":	  "Vor apărea doar linii verticale",
+	"Rules will appear between rows only":		  "Vor apărea doar linii orizontale",
+	"Rules":					  "Linii",
+	"Spacing and padding":                            "Spaţierea",
+	"Spacing":					  "Între celule",
+	"Summary":					  "Sumar",
+	"TO-cell-delete":				  "Şterge celula",
+	"TO-cell-insert-after":				  "Inserează o celulă la dreapta",
+	"TO-cell-insert-before":			  "Inserează o celulă la stânga",
+	"TO-cell-merge":				  "Uneşte celulele",
+	"TO-cell-prop":					  "Proprietăţile celulei",
+	"TO-cell-split":				  "Împarte celula",
+	"TO-col-delete":				  "Şterge coloana",
+	"TO-col-insert-after":				  "Inserează o coloană la dreapta",
+	"TO-col-insert-before":				  "Inserează o coloană la stânga",
+	"TO-col-split":					  "Împarte coloana",
+	"TO-row-delete":				  "Şterge rândul",
+	"TO-row-insert-above":				  "Inserează un rând înainte",
+	"TO-row-insert-under":				  "Inserează un rând după",
+	"TO-row-prop":					  "Proprietăţile rândului",
+	"TO-row-split":					  "Împarte rândul",
+	"TO-table-prop":				  "Proprietăţile tabelei",
+	"Table Properties":				  "Proprietăţile tabelei",
+	"Text align":                                     "Aliniere",
+	"The bottom side only":				  "Doar partea de jos",
+	"The left-hand side only":			  "Doar partea din stânga",
+	"The right and left sides only":		  "Partea din stânga şi cea din dreapta",
+	"The right-hand side only":			  "Doar partea din dreapta",
+	"The top and bottom sides only":		  "Partea de sus si cea de jos",
+	"The top side only":				  "Doar partea de sus",
+	"Top":                                            "Sus",	
+	"Unset color":                                    "Dezactivează culoarea",
+	"Vertical align":                                 "Aliniere pe verticală",
+	"Width":					  "Lăţime",
+	"not-del-last-cell":				  "HTMLArea refuză cu laşitate să şteargă ultima celulă din rând.",
+	"not-del-last-col":				  "HTMLArea refuză cu laşitate să şteargă ultima coloamă din tabela.",
+	"not-del-last-row":				  "HTMLArea refuză cu laşitate să şteargă ultimul rând din tabela.",
+	"percent":					  "procente",
+	"pixels":					  "pixeli"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/en.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/en.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/lang/en.js	(revision 103)
@@ -0,0 +1,90 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// 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.)
+
+TableOperations.I18N = {
+	"Align":					  "Align",
+	"All four sides":				  "All four sides",
+	"Background":					  "Background",
+	"Baseline":                                       "Baseline",
+	"Border":					  "Border",
+	"Borders":					  "Borders",
+	"Bottom":                                         "Bottom",
+	"CSS Style":					  "Style [CSS]",
+	"Caption":					  "Caption",
+	"Cell Properties":                                "Cell Properties",
+	"Center":					  "Center",
+	"Char":                                           "Char",
+	"Collapsed borders":                              "Collapsed borders",
+	"Color":					  "Color",
+	"Description":					  "Description",
+	"FG Color":					  "FG Color",
+	"Float":                                          "Float",
+	"Frames":					  "Frames",
+	"Height":                                         "Height",
+	"How many columns would you like to merge?":      "How many columns would you like to merge?",
+	"How many rows would you like to merge?":         "How many rows would you like to merge?",
+	"Image URL":					  "Image URL",
+	"Justify":                                        "Justify",
+	"Layout":					  "Layout",
+	"Left":						  "Left",
+	"Margin":                                         "Margin",
+	"Middle":                                         "Middle",
+	"No rules":					  "No rules",
+	"No sides":					  "No sides",
+	"None":                                           "None",
+	"Padding":					  "Padding",
+	"Please click into some cell":                    "Please click into some cell",
+	"Right":					  "Right",
+	"Row Properties":                                 "Row Properties",
+	"Rules will appear between all rows and columns": "Rules will appear between all rows and columns",
+	"Rules will appear between columns only":	  "Rules will appear between columns only",
+	"Rules will appear between rows only":		  "Rules will appear between rows only",
+	"Rules":					  "Rules",
+	"Spacing and padding":                            "Spacing and padding",
+	"Spacing":					  "Spacing",
+	"Summary":					  "Summary",
+	"TO-cell-delete":				  "Delete cell",
+	"TO-cell-insert-after":				  "Insert cell after",
+	"TO-cell-insert-before":			  "Insert cell before",
+	"TO-cell-merge":				  "Merge cells",
+	"TO-cell-prop":					  "Cell properties",
+	"TO-cell-split":				  "Split cell",
+	"TO-col-delete":				  "Delete column",
+	"TO-col-insert-after":				  "Insert column after",
+	"TO-col-insert-before":				  "Insert column before",
+	"TO-col-split":					  "Split column",
+	"TO-row-delete":				  "Delete row",
+	"TO-row-insert-above":				  "Insert row before",
+	"TO-row-insert-under":				  "Insert row after",
+	"TO-row-prop":					  "Row properties",
+	"TO-row-split":					  "Split row",
+	"TO-table-prop":				  "Table properties",
+	"Table Properties":				  "Table Properties",
+	"Text align":                                     "Text align",
+	"The bottom side only":				  "The bottom side only",
+	"The left-hand side only":			  "The left-hand side only",
+	"The right and left sides only":		  "The right and left sides only",
+	"The right-hand side only":			  "The right-hand side only",
+	"The top and bottom sides only":		  "The top and bottom sides only",
+	"The top side only":				  "The top side only",
+	"Top":                                            "Top",	
+	"Unset color":                                    "Unset color",
+	"Vertical align":                                 "Vertical align",
+	"Width":					  "Width",
+	"not-del-last-cell":				  "HTMLArea cowardly refuses to delete the last cell in row.",
+	"not-del-last-col":				  "HTMLArea cowardly refuses to delete the last column in table.",
+	"not-del-last-row":				  "HTMLArea cowardly refuses to delete the last row in table.",
+	"percent":					  "percent",
+	"pixels":					  "pixels"
+};
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/table-operations.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/table-operations.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/table-operations.js	(revision 103)
@@ -0,0 +1,1160 @@
+// Table Operations Plugin for HTMLArea-3.0
+// Implementation by Mihai Bazon.  Sponsored by http://www.bloki.com
+//
+// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
+// This notice MUST stay intact for use (see license.txt).
+//
+// 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 for InteractiveTools.
+//   http://dynarch.com/mishoo
+//
+// $Id: table-operations.js,v 1.1.1.1 2005/01/30 10:31:35 rdjurovich Exp $
+
+// Object that will encapsulate all the table operations provided by
+// HTMLArea-3.0 (except "insert table" which is included in the main file)
+function TableOperations(editor) {
+	this.editor = editor;
+
+	var cfg = editor.config;
+	var tt = TableOperations.I18N;
+	var bl = TableOperations.btnList;
+	var self = this;
+
+	// register the toolbar buttons provided by this plugin
+	var toolbar = ["linebreak"];
+	for (var i in bl) {
+		var btn = bl[i];
+		if (!btn) {
+			toolbar.push("separator");
+		} else {
+			var id = "TO-" + btn[0];
+			cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "TableOperations"), false,
+					   function(editor, id) {
+						   // dispatch button press event
+						   self.buttonPress(editor, id);
+					   }, btn[1]);
+			toolbar.push(id);
+		}
+	}
+
+	// add a new line in the toolbar
+	cfg.toolbar.push(toolbar);
+};
+
+TableOperations._pluginInfo = {
+	name          : "TableOperations",
+	version       : "1.0",
+	developer     : "Mihai Bazon",
+	developer_url : "http://dynarch.com/mishoo/",
+	c_owner       : "Mihai Bazon",
+	sponsor       : "Zapatec Inc.",
+	sponsor_url   : "http://www.bloki.com",
+	license       : "htmlArea"
+};
+
+/************************
+ * UTILITIES
+ ************************/
+
+// retrieves the closest element having the specified tagName in the list of
+// ancestors of the current selection/caret.
+TableOperations.prototype.getClosest = function(tagName) {
+	var editor = this.editor;
+	var ancestors = editor.getAllAncestors();
+	var ret = null;
+	tagName = ("" + tagName).toLowerCase();
+	for (var i in ancestors) {
+		var el = ancestors[i];
+		if (el.tagName.toLowerCase() == tagName) {
+			ret = el;
+			break;
+		}
+	}
+	return ret;
+};
+
+// this function requires the file PopupDiv/PopupWin to be loaded from browser
+TableOperations.prototype.dialogTableProperties = function() {
+	var i18n = TableOperations.I18N;
+	// retrieve existing values
+	var table = this.getClosest("table");
+	// this.editor.selectNodeContents(table);
+	// this.editor.updateToolbar();
+
+	var dialog = new PopupWin(this.editor, i18n["Table Properties"], function(dialog, params) {
+		TableOperations.processStyle(params, table);
+		for (var i in params) {
+			var val = params[i];
+			switch (i) {
+			    case "f_caption":
+				if (/\S/.test(val)) {
+					// contains non white-space characters
+					var caption = table.getElementsByTagName("caption")[0];
+					if (!caption) {
+						caption = dialog.editor._doc.createElement("caption");
+						table.insertBefore(caption, table.firstChild);
+					}
+					caption.innerHTML = val;
+				} else {
+					// search for caption and delete it if found
+					var caption = table.getElementsByTagName("caption")[0];
+					if (caption) {
+						caption.parentNode.removeChild(caption);
+					}
+				}
+				break;
+			    case "f_summary":
+				table.summary = val;
+				break;
+			    case "f_width":
+				table.style.width = ("" + val) + params.f_unit;
+				break;
+			    case "f_align":
+				table.align = val;
+				break;
+			    case "f_spacing":
+				table.cellSpacing = val;
+				break;
+			    case "f_padding":
+				table.cellPadding = val;
+				break;
+			    case "f_borders":
+				table.border = val;
+				break;
+			    case "f_frames":
+				table.frame = val;
+				break;
+			    case "f_rules":
+				table.rules = val;
+				break;
+			}
+		}
+		// various workarounds to refresh the table display (Gecko,
+		// what's going on?! do not disappoint me!)
+		dialog.editor.forceRedraw();
+		dialog.editor.focusEditor();
+		dialog.editor.updateToolbar();
+		var save_collapse = table.style.borderCollapse;
+		table.style.borderCollapse = "collapse";
+		table.style.borderCollapse = "separate";
+		table.style.borderCollapse = save_collapse;
+	},
+
+	// this function gets called when the dialog needs to be initialized
+	function (dialog) {
+
+		var f_caption = "";
+		var capel = table.getElementsByTagName("caption")[0];
+		if (capel) {
+			f_caption = capel.innerHTML;
+		}
+		var f_summary = table.summary;
+		var f_width = parseInt(table.style.width);
+		isNaN(f_width) && (f_width = "");
+		var f_unit = /%/.test(table.style.width) ? 'percent' : 'pixels';
+		var f_align = table.align;
+		var f_spacing = table.cellSpacing;
+		var f_padding = table.cellPadding;
+		var f_borders = table.border;
+		var f_frames = table.frame;
+		var f_rules = table.rules;
+
+		function selected(val) {
+			return val ? " selected" : "";
+		};
+
+		// dialog contents
+		dialog.content.style.width = "400px";
+		dialog.content.innerHTML = " \
+<div class='title'\
+ style='background: url(" + dialog.baseURL + dialog.editor.imgURL("table-prop.gif", "TableOperations") + ") #fff 98% 50% no-repeat'>" + i18n["Table Properties"] + "\
+</div> \
+<table style='width:100%'> \
+  <tr> \
+    <td> \
+      <fieldset><legend>" + i18n["Description"] + "</legend> \
+       <table style='width:100%'> \
+        <tr> \
+          <td class='label'>" + i18n["Caption"] + ":</td> \
+          <td class='value'><input type='text' name='f_caption' value='" + f_caption + "'/></td> \
+        </tr><tr> \
+          <td class='label'>" + i18n["Summary"] + ":</td> \
+          <td class='value'><input type='text' name='f_summary' value='" + f_summary + "'/></td> \
+        </tr> \
+       </table> \
+      </fieldset> \
+    </td> \
+  </tr> \
+  <tr><td id='--HA-layout'></td></tr> \
+  <tr> \
+    <td> \
+      <fieldset><legend>" + i18n["Spacing and padding"] + "</legend> \
+       <table style='width:100%'> \
+"+//        <tr> \
+//           <td class='label'>" + i18n["Width"] + ":</td> \
+//           <td><input type='text' name='f_width' value='" + f_width + "' size='5' /> \
+//             <select name='f_unit'> \
+//               <option value='%'" + selected(f_unit == "percent") + ">" + i18n["percent"] + "</option> \
+//               <option value='px'" + selected(f_unit == "pixels") + ">" + i18n["pixels"] + "</option> \
+//             </select> &nbsp;&nbsp;" + i18n["Align"] + ": \
+//             <select name='f_align'> \
+//               <option value='left'" + selected(f_align == "left") + ">" + i18n["Left"] + "</option> \
+//               <option value='center'" + selected(f_align == "center") + ">" + i18n["Center"] + "</option> \
+//               <option value='right'" + selected(f_align == "right") + ">" + i18n["Right"] + "</option> \
+//             </select> \
+//           </td> \
+//         </tr> \
+"        <tr> \
+          <td class='label'>" + i18n["Spacing"] + ":</td> \
+          <td><input type='text' name='f_spacing' size='5' value='" + f_spacing + "' /> &nbsp;" + i18n["Padding"] + ":\
+            <input type='text' name='f_padding' size='5' value='" + f_padding + "' /> &nbsp;&nbsp;" + i18n["pixels"] + "\
+          </td> \
+        </tr> \
+       </table> \
+      </fieldset> \
+    </td> \
+  </tr> \
+  <tr> \
+    <td> \
+      <fieldset><legend>Frame and borders</legend> \
+        <table width='100%'> \
+          <tr> \
+            <td class='label'>" + i18n["Borders"] + ":</td> \
+            <td><input name='f_borders' type='text' size='5' value='" + f_borders + "' /> &nbsp;&nbsp;" + i18n["pixels"] + "</td> \
+          </tr> \
+          <tr> \
+            <td class='label'>" + i18n["Frames"] + ":</td> \
+            <td> \
+              <select name='f_frames'> \
+                <option value='void'" + selected(f_frames == "void") + ">" + i18n["No sides"] + "</option> \
+                <option value='above'" + selected(f_frames == "above") + ">" + i18n["The top side only"] + "</option> \
+                <option value='below'" + selected(f_frames == "below") + ">" + i18n["The bottom side only"] + "</option> \
+                <option value='hsides'" + selected(f_frames == "hsides") + ">" + i18n["The top and bottom sides only"] + "</option> \
+                <option value='vsides'" + selected(f_frames == "vsides") + ">" + i18n["The right and left sides only"] + "</option> \
+                <option value='lhs'" + selected(f_frames == "lhs") + ">" + i18n["The left-hand side only"] + "</option> \
+                <option value='rhs'" + selected(f_frames == "rhs") + ">" + i18n["The right-hand side only"] + "</option> \
+                <option value='box'" + selected(f_frames == "box") + ">" + i18n["All four sides"] + "</option> \
+              </select> \
+            </td> \
+          </tr> \
+          <tr> \
+            <td class='label'>" + i18n["Rules"] + ":</td> \
+            <td> \
+              <select name='f_rules'> \
+                <option value='none'" + selected(f_rules == "none") + ">" + i18n["No rules"] + "</option> \
+                <option value='rows'" + selected(f_rules == "rows") + ">" + i18n["Rules will appear between rows only"] + "</option> \
+                <option value='cols'" + selected(f_rules == "cols") + ">" + i18n["Rules will appear between columns only"] + "</option> \
+                <option value='all'" + selected(f_rules == "all") + ">" + i18n["Rules will appear between all rows and columns"] + "</option> \
+              </select> \
+            </td> \
+          </tr> \
+        </table> \
+      </fieldset> \
+    </td> \
+  </tr> \
+  <tr> \
+    <td id='--HA-style'></td> \
+  </tr> \
+</table> \
+";
+		var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, table);
+		var p = dialog.doc.getElementById("--HA-style");
+		p.appendChild(st_prop);
+		var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, table);
+		p = dialog.doc.getElementById("--HA-layout");
+		p.appendChild(st_layout);
+		dialog.modal = true;
+		dialog.addButtons("ok", "cancel");
+		dialog.showAtElement(dialog.editor._iframe, "c");
+	});
+};
+
+// this function requires the file PopupDiv/PopupWin to be loaded from browser
+TableOperations.prototype.dialogRowCellProperties = function(cell) {
+	var i18n = TableOperations.I18N;
+	// retrieve existing values
+	var element = this.getClosest(cell ? "td" : "tr");
+	var table = this.getClosest("table");
+	// this.editor.selectNodeContents(element);
+	// this.editor.updateToolbar();
+
+	var dialog = new PopupWin(this.editor, i18n[cell ? "Cell Properties" : "Row Properties"], function(dialog, params) {
+		TableOperations.processStyle(params, element);
+		for (var i in params) {
+			var val = params[i];
+			switch (i) {
+			    case "f_align":
+				element.align = val;
+				break;
+			    case "f_char":
+				element.ch = val;
+				break;
+			    case "f_valign":
+				element.vAlign = val;
+				break;
+			}
+		}
+		// various workarounds to refresh the table display (Gecko,
+		// what's going on?! do not disappoint me!)
+		dialog.editor.forceRedraw();
+		dialog.editor.focusEditor();
+		dialog.editor.updateToolbar();
+		var save_collapse = table.style.borderCollapse;
+		table.style.borderCollapse = "collapse";
+		table.style.borderCollapse = "separate";
+		table.style.borderCollapse = save_collapse;
+	},
+
+	// this function gets called when the dialog needs to be initialized
+	function (dialog) {
+
+		var f_align = element.align;
+		var f_valign = element.vAlign;
+		var f_char = element.ch;
+
+		function selected(val) {
+			return val ? " selected" : "";
+		};
+
+		// dialog contents
+		dialog.content.style.width = "400px";
+		dialog.content.innerHTML = " \
+<div class='title'\
+ style='background: url(" + dialog.baseURL + dialog.editor.imgURL(cell ? "cell-prop.gif" : "row-prop.gif", "TableOperations") + ") #fff 98% 50% no-repeat'>" + i18n[cell ? "Cell Properties" : "Row Properties"] + "</div> \
+<table style='width:100%'> \
+  <tr> \
+    <td id='--HA-layout'> \
+"+//      <fieldset><legend>" + i18n["Layout"] + "</legend> \
+//        <table style='width:100%'> \
+//         <tr> \
+//           <td class='label'>" + i18n["Align"] + ":</td> \
+//           <td> \
+//             <select name='f_align'> \
+//               <option value='left'" + selected(f_align == "left") + ">" + i18n["Left"] + "</option> \
+//               <option value='center'" + selected(f_align == "center") + ">" + i18n["Center"] + "</option> \
+//               <option value='right'" + selected(f_align == "right") + ">" + i18n["Right"] + "</option> \
+//               <option value='char'" + selected(f_align == "char") + ">" + i18n["Char"] + "</option> \
+//             </select> \
+//             &nbsp;&nbsp;" + i18n["Char"] + ": \
+//             <input type='text' style='font-family: monospace; text-align: center' name='f_char' size='1' value='" + f_char + "' /> \
+//           </td> \
+//         </tr><tr> \
+//           <td class='label'>" + i18n["Vertical align"] + ":</td> \
+//           <td> \
+//             <select name='f_valign'> \
+//               <option value='top'" + selected(f_valign == "top") + ">" + i18n["Top"] + "</option> \
+//               <option value='middle'" + selected(f_valign == "middle") + ">" + i18n["Middle"] + "</option> \
+//               <option value='bottom'" + selected(f_valign == "bottom") + ">" + i18n["Bottom"] + "</option> \
+//               <option value='baseline'" + selected(f_valign == "baseline") + ">" + i18n["Baseline"] + "</option> \
+//             </select> \
+//           </td> \
+//         </tr> \
+//        </table> \
+//       </fieldset> \
+"    </td> \
+  </tr> \
+  <tr> \
+    <td id='--HA-style'></td> \
+  </tr> \
+</table> \
+";
+		var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, element);
+		var p = dialog.doc.getElementById("--HA-style");
+		p.appendChild(st_prop);
+		var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, element);
+		p = dialog.doc.getElementById("--HA-layout");
+		p.appendChild(st_layout);
+		dialog.modal = true;
+		dialog.addButtons("ok", "cancel");
+		dialog.showAtElement(dialog.editor._iframe, "c");
+	});
+};
+
+// this function gets called when some button from the TableOperations toolbar
+// was pressed.
+TableOperations.prototype.buttonPress = function(editor, button_id) {
+	this.editor = editor;
+	var mozbr = HTMLArea.is_gecko ? "<br />" : "";
+	var i18n = TableOperations.I18N;
+
+	// helper function that clears the content in a table row
+	function clearRow(tr) {
+		var tds = tr.getElementsByTagName("td");
+		for (var i = tds.length; --i >= 0;) {
+			var td = tds[i];
+			td.rowSpan = 1;
+			td.innerHTML = mozbr;
+		}
+	};
+
+	function splitRow(td) {
+		var n = parseInt("" + td.rowSpan);
+		var nc = parseInt("" + td.colSpan);
+		td.rowSpan = 1;
+		tr = td.parentNode;
+		var itr = tr.rowIndex;
+		var trs = tr.parentNode.rows;
+		var index = td.cellIndex;
+		while (--n > 0) {
+			tr = trs[++itr];
+			var otd = editor._doc.createElement("td");
+			otd.colSpan = td.colSpan;
+			otd.innerHTML = mozbr;
+			tr.insertBefore(otd, tr.cells[index]);
+		}
+		editor.forceRedraw();
+		editor.updateToolbar();
+	};
+
+	function splitCol(td) {
+		var nc = parseInt("" + td.colSpan);
+		td.colSpan = 1;
+		tr = td.parentNode;
+		var ref = td.nextSibling;
+		while (--nc > 0) {
+			var otd = editor._doc.createElement("td");
+			otd.rowSpan = td.rowSpan;
+			otd.innerHTML = mozbr;
+			tr.insertBefore(otd, ref);
+		}
+		editor.forceRedraw();
+		editor.updateToolbar();
+	};
+
+	function splitCell(td) {
+		var nc = parseInt("" + td.colSpan);
+		splitCol(td);
+		var items = td.parentNode.cells;
+		var index = td.cellIndex;
+		while (nc-- > 0) {
+			splitRow(items[index++]);
+		}
+	};
+
+	function selectNextNode(el) {
+		var node = el.nextSibling;
+		while (node && node.nodeType != 1) {
+			node = node.nextSibling;
+		}
+		if (!node) {
+			node = el.previousSibling;
+			while (node && node.nodeType != 1) {
+				node = node.previousSibling;
+			}
+		}
+		if (!node) {
+			node = el.parentNode;
+		}
+		editor.selectNodeContents(node);
+	};
+
+	switch (button_id) {
+		// ROWS
+
+	    case "TO-row-insert-above":
+	    case "TO-row-insert-under":
+		var tr = this.getClosest("tr");
+		if (!tr) {
+			break;
+		}
+		var otr = tr.cloneNode(true);
+		clearRow(otr);
+		tr.parentNode.insertBefore(otr, /under/.test(button_id) ? tr.nextSibling : tr);
+		editor.forceRedraw();
+		editor.focusEditor();
+		break;
+	    case "TO-row-delete":
+		var tr = this.getClosest("tr");
+		if (!tr) {
+			break;
+		}
+		var par = tr.parentNode;
+		if (par.rows.length == 1) {
+			alert(i18n["not-del-last-row"]);
+			break;
+		}
+		// set the caret first to a position that doesn't
+		// disappear.
+		selectNextNode(tr);
+		par.removeChild(tr);
+		editor.forceRedraw();
+		editor.focusEditor();
+		editor.updateToolbar();
+		break;
+	    case "TO-row-split":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		splitRow(td);
+		break;
+
+		// COLUMNS
+
+	    case "TO-col-insert-before":
+	    case "TO-col-insert-after":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		var rows = td.parentNode.parentNode.rows;
+		var index = td.cellIndex;
+		for (var i = rows.length; --i >= 0;) {
+			var tr = rows[i];
+			var ref = tr.cells[index + (/after/.test(button_id) ? 1 : 0)];
+			var otd = editor._doc.createElement("td");
+			otd.innerHTML = mozbr;
+			tr.insertBefore(otd, ref);
+		}
+		editor.focusEditor();
+		break;
+	    case "TO-col-split":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		splitCol(td);
+		break;
+	    case "TO-col-delete":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		var index = td.cellIndex;
+		if (td.parentNode.cells.length == 1) {
+			alert(i18n["not-del-last-col"]);
+			break;
+		}
+		// set the caret first to a position that doesn't disappear
+		selectNextNode(td);
+		var rows = td.parentNode.parentNode.rows;
+		for (var i = rows.length; --i >= 0;) {
+			var tr = rows[i];
+			tr.removeChild(tr.cells[index]);
+		}
+		editor.forceRedraw();
+		editor.focusEditor();
+		editor.updateToolbar();
+		break;
+
+		// CELLS
+
+	    case "TO-cell-split":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		splitCell(td);
+		break;
+	    case "TO-cell-insert-before":
+	    case "TO-cell-insert-after":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		var tr = td.parentNode;
+		var otd = editor._doc.createElement("td");
+		otd.innerHTML = mozbr;
+		tr.insertBefore(otd, /after/.test(button_id) ? td.nextSibling : td);
+		editor.forceRedraw();
+		editor.focusEditor();
+		break;
+	    case "TO-cell-delete":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		if (td.parentNode.cells.length == 1) {
+			alert(i18n["not-del-last-cell"]);
+			break;
+		}
+		// set the caret first to a position that doesn't disappear
+		selectNextNode(td);
+		td.parentNode.removeChild(td);
+		editor.forceRedraw();
+		editor.updateToolbar();
+		break;
+	    case "TO-cell-merge":
+		// !! FIXME: Mozilla specific !!
+		var sel = editor._getSelection();
+		var range, i = 0;
+		var rows = [];
+		var row = null;
+		var cells = null;
+		if (!HTMLArea.is_ie) {
+			try {
+				while (range = sel.getRangeAt(i++)) {
+					var td = range.startContainer.childNodes[range.startOffset];
+					if (td.parentNode != row) {
+						row = td.parentNode;
+						(cells) && rows.push(cells);
+						cells = [];
+					}
+					cells.push(td);
+				}
+			} catch(e) {/* finished walking through selection */}
+			rows.push(cells);
+		} else {
+			// Internet Explorer "browser"
+			var td = this.getClosest("td");
+			if (!td) {
+				alert(i18n["Please click into some cell"]);
+				break;
+			}
+			var tr = td.parentElement;
+			var no_cols = prompt(i18n["How many columns would you like to merge?"], 2);
+			if (!no_cols) {
+				// cancelled
+				break;
+			}
+			var no_rows = prompt(i18n["How many rows would you like to merge?"], 2);
+			if (!no_rows) {
+				// cancelled
+				break;
+			}
+			var cell_index = td.cellIndex;
+			while (no_rows-- > 0) {
+				td = tr.cells[cell_index];
+				cells = [td];
+				for (var i = 1; i < no_cols; ++i) {
+					td = td.nextSibling;
+					if (!td) {
+						break;
+					}
+					cells.push(td);
+				}
+				rows.push(cells);
+				tr = tr.nextSibling;
+				if (!tr) {
+					break;
+				}
+			}
+		}
+		var HTML = "";
+		for (i = 0; i < rows.length; ++i) {
+			// i && (HTML += "<br />");
+			var cells = rows[i];
+			for (var j = 0; j < cells.length; ++j) {
+				// j && (HTML += "&nbsp;");
+				var cell = cells[j];
+				HTML += cell.innerHTML;
+				(i || j) && (cell.parentNode.removeChild(cell));
+			}
+		}
+		var td = rows[0][0];
+		td.innerHTML = HTML;
+		td.rowSpan = rows.length;
+		td.colSpan = rows[0].length;
+		editor.selectNodeContents(td);
+		editor.forceRedraw();
+		editor.focusEditor();
+		break;
+
+		// PROPERTIES
+
+	    case "TO-table-prop":
+		this.dialogTableProperties();
+		break;
+
+	    case "TO-row-prop":
+		this.dialogRowCellProperties(false);
+		break;
+
+	    case "TO-cell-prop":
+		this.dialogRowCellProperties(true);
+		break;
+
+	    default:
+		alert("Button [" + button_id + "] not yet implemented");
+	}
+};
+
+// the list of buttons added by this plugin
+TableOperations.btnList = [
+	// table properties button
+	["table-prop",       "table"],
+	null,			// separator
+
+	// ROWS
+	["row-prop",         "tr"],
+	["row-insert-above", "tr"],
+	["row-insert-under", "tr"],
+	["row-delete",       "tr"],
+	["row-split",        "td[rowSpan!=1]"],
+	null,
+
+	// COLS
+	["col-insert-before", "td"],
+	["col-insert-after",  "td"],
+	["col-delete",        "td"],
+	["col-split",         "td[colSpan!=1]"],
+	null,
+
+	// CELLS
+	["cell-prop",          "td"],
+	["cell-insert-before", "td"],
+	["cell-insert-after",  "td"],
+	["cell-delete",        "td"],
+	["cell-merge",         "tr"],
+	["cell-split",         "td[colSpan!=1,rowSpan!=1]"]
+	];
+
+
+
+//// GENERIC CODE [style of any element; this should be moved into a separate
+//// file as it'll be very useful]
+//// BEGIN GENERIC CODE -----------------------------------------------------
+
+TableOperations.getLength = function(value) {
+	var len = parseInt(value);
+	if (isNaN(len)) {
+		len = "";
+	}
+	return len;
+};
+
+// Applies the style found in "params" to the given element.
+TableOperations.processStyle = function(params, element) {
+	var style = element.style;
+	for (var i in params) {
+		var val = params[i];
+		switch (i) {
+		    case "f_st_backgroundColor":
+			style.backgroundColor = val;
+			break;
+		    case "f_st_color":
+			style.color = val;
+			break;
+		    case "f_st_backgroundImage":
+			if (/\S/.test(val)) {
+				style.backgroundImage = "url(" + val + ")";
+			} else {
+				style.backgroundImage = "none";
+			}
+			break;
+		    case "f_st_borderWidth":
+			style.borderWidth = val;
+			break;
+		    case "f_st_borderStyle":
+			style.borderStyle = val;
+			break;
+		    case "f_st_borderColor":
+			style.borderColor = val;
+			break;
+		    case "f_st_borderCollapse":
+			style.borderCollapse = val ? "collapse" : "";
+			break;
+		    case "f_st_width":
+			if (/\S/.test(val)) {
+				style.width = val + params["f_st_widthUnit"];
+			} else {
+				style.width = "";
+			}
+			break;
+		    case "f_st_height":
+			if (/\S/.test(val)) {
+				style.height = val + params["f_st_heightUnit"];
+			} else {
+				style.height = "";
+			}
+			break;
+		    case "f_st_textAlign":
+			if (val == "char") {
+				var ch = params["f_st_textAlignChar"];
+				if (ch == '"') {
+					ch = '\\"';
+				}
+				style.textAlign = '"' + ch + '"';
+			} else {
+				style.textAlign = val;
+			}
+			break;
+		    case "f_st_verticalAlign":
+			style.verticalAlign = val;
+			break;
+		    case "f_st_float":
+			style.cssFloat = val;
+			break;
+// 		    case "f_st_margin":
+// 			style.margin = val + "px";
+// 			break;
+// 		    case "f_st_padding":
+// 			style.padding = val + "px";
+// 			break;
+		}
+	}
+};
+
+// Returns an HTML element for a widget that allows color selection.  That is,
+// a button that contains the given color, if any, and when pressed will popup
+// the sooner-or-later-to-be-rewritten select_color.html dialog allowing user
+// to select some color.  If a color is selected, an input field with the name
+// "f_st_"+name will be updated with the color value in #123456 format.
+TableOperations.createColorButton = function(doc, editor, color, name) {
+	if (!color) {
+		color = "";
+	} else if (!/#/.test(color)) {
+		color = HTMLArea._colorToRgb(color);
+	}
+
+	var df = doc.createElement("span");
+ 	var field = doc.createElement("input");
+	field.type = "hidden";
+	df.appendChild(field);
+ 	field.name = "f_st_" + name;
+	field.value = color;
+	var button = doc.createElement("span");
+	button.className = "buttonColor";
+	df.appendChild(button);
+	var span = doc.createElement("span");
+	span.className = "chooser";
+	// span.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
+	span.style.backgroundColor = color;
+	button.appendChild(span);
+	button.onmouseover = function() { if (!this.disabled) { this.className += " buttonColor-hilite"; }};
+	button.onmouseout = function() { if (!this.disabled) { this.className = "buttonColor"; }};
+	span.onclick = function() {
+		if (this.parentNode.disabled) {
+			return false;
+		}
+		editor._popupDialog("select_color.html", function(color) {
+			if (color) {
+				span.style.backgroundColor = "#" + color;
+				field.value = "#" + color;
+			}
+		}, color);
+	};
+	var span2 = doc.createElement("span");
+	span2.innerHTML = "&#x00d7;";
+	span2.className = "nocolor";
+	span2.title = TableOperations.I18N["Unset color"];
+	button.appendChild(span2);
+	span2.onmouseover = function() { if (!this.parentNode.disabled) { this.className += " nocolor-hilite"; }};
+	span2.onmouseout = function() { if (!this.parentNode.disabled) { this.className = "nocolor"; }};
+	span2.onclick = function() {
+		span.style.backgroundColor = "";
+		field.value = "";
+	};
+	return df;
+};
+
+TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
+	var i18n = TableOperations.I18N;
+	var fieldset = doc.createElement("fieldset");
+	var legend = doc.createElement("legend");
+	fieldset.appendChild(legend);
+	legend.innerHTML = i18n["Layout"];
+	var table = doc.createElement("table");
+	fieldset.appendChild(table);
+	table.style.width = "100%";
+	var tbody = doc.createElement("tbody");
+	table.appendChild(tbody);
+
+	var tagname = el.tagName.toLowerCase();
+	var tr, td, input, select, option, options, i;
+
+	if (tagname != "td" && tagname != "tr" && tagname != "th") {
+		tr = doc.createElement("tr");
+		tbody.appendChild(tr);
+		td = doc.createElement("td");
+		td.className = "label";
+		tr.appendChild(td);
+		td.innerHTML = i18n["Float"] + ":";
+		td = doc.createElement("td");
+		tr.appendChild(td);
+		select = doc.createElement("select");
+		td.appendChild(select);
+		select.name = "f_st_float";
+		options = ["None", "Left", "Right"];
+		for (i in options) {
+			var Val = options[i];
+			var val = options[i].toLowerCase();
+			option = doc.createElement("option");
+			option.innerHTML = i18n[Val];
+			option.value = val;
+			option.selected = (("" + el.style.cssFloat).toLowerCase() == val);
+			select.appendChild(option);
+		}
+	}
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	td.className = "label";
+	tr.appendChild(td);
+	td.innerHTML = i18n["Width"] + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	input = doc.createElement("input");
+	input.type = "text";
+	input.value = TableOperations.getLength(el.style.width);
+	input.size = "5";
+	input.name = "f_st_width";
+	input.style.marginRight = "0.5em";
+	td.appendChild(input);
+	select = doc.createElement("select");
+	select.name = "f_st_widthUnit";
+	option = doc.createElement("option");
+	option.innerHTML = i18n["percent"];
+	option.value = "%";
+	option.selected = /%/.test(el.style.width);
+	select.appendChild(option);
+	option = doc.createElement("option");
+	option.innerHTML = i18n["pixels"];
+	option.value = "px";
+	option.selected = /px/.test(el.style.width);
+	select.appendChild(option);
+	td.appendChild(select);
+
+	select.style.marginRight = "0.5em";
+	td.appendChild(doc.createTextNode(i18n["Text align"] + ":"));
+	select = doc.createElement("select");
+	select.style.marginLeft = select.style.marginRight = "0.5em";
+	td.appendChild(select);
+	select.name = "f_st_textAlign";
+	options = ["Left", "Center", "Right", "Justify"];
+	if (tagname == "td") {
+		options.push("Char");
+	}
+	input = doc.createElement("input");
+	input.name = "f_st_textAlignChar";
+	input.size = "1";
+	input.style.fontFamily = "monospace";
+	td.appendChild(input);
+	for (i in options) {
+		var Val = options[i];
+		var val = Val.toLowerCase();
+		option = doc.createElement("option");
+		option.value = val;
+		option.innerHTML = i18n[Val];
+		option.selected = (el.style.textAlign.toLowerCase() == val);
+		select.appendChild(option);
+	}
+	function setCharVisibility(value) {
+		input.style.visibility = value ? "visible" : "hidden";
+		if (value) {
+			input.focus();
+			input.select();
+		}
+	};
+	select.onchange = function() { setCharVisibility(this.value == "char"); };
+	setCharVisibility(select.value == "char");
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	td.className = "label";
+	tr.appendChild(td);
+	td.innerHTML = i18n["Height"] + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	input = doc.createElement("input");
+	input.type = "text";
+	input.value = TableOperations.getLength(el.style.height);
+	input.size = "5";
+	input.name = "f_st_height";
+	input.style.marginRight = "0.5em";
+	td.appendChild(input);
+	select = doc.createElement("select");
+	select.name = "f_st_heightUnit";
+	option = doc.createElement("option");
+	option.innerHTML = i18n["percent"];
+	option.value = "%";
+	option.selected = /%/.test(el.style.height);
+	select.appendChild(option);
+	option = doc.createElement("option");
+	option.innerHTML = i18n["pixels"];
+	option.value = "px";
+	option.selected = /px/.test(el.style.height);
+	select.appendChild(option);
+	td.appendChild(select);
+
+	select.style.marginRight = "0.5em";
+	td.appendChild(doc.createTextNode(i18n["Vertical align"] + ":"));
+	select = doc.createElement("select");
+	select.name = "f_st_verticalAlign";
+	select.style.marginLeft = "0.5em";
+	td.appendChild(select);
+	options = ["Top", "Middle", "Bottom", "Baseline"];
+	for (i in options) {
+		var Val = options[i];
+		var val = Val.toLowerCase();
+		option = doc.createElement("option");
+		option.value = val;
+		option.innerHTML = i18n[Val];
+		option.selected = (el.style.verticalAlign.toLowerCase() == val);
+		select.appendChild(option);
+	}
+
+	return fieldset;
+};
+
+// Returns an HTML element containing the style attributes for the given
+// element.  This can be easily embedded into any dialog; the functionality is
+// also provided.
+TableOperations.createStyleFieldset = function(doc, editor, el) {
+	var i18n = TableOperations.I18N;
+	var fieldset = doc.createElement("fieldset");
+	var legend = doc.createElement("legend");
+	fieldset.appendChild(legend);
+	legend.innerHTML = i18n["CSS Style"];
+	var table = doc.createElement("table");
+	fieldset.appendChild(table);
+	table.style.width = "100%";
+	var tbody = doc.createElement("tbody");
+	table.appendChild(tbody);
+
+	var tr, td, input, select, option, options, i;
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.className = "label";
+	td.innerHTML = i18n["Background"] + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	var df = TableOperations.createColorButton(doc, editor, el.style.backgroundColor, "backgroundColor");
+	df.firstChild.nextSibling.style.marginRight = "0.5em";
+	td.appendChild(df);
+	td.appendChild(doc.createTextNode(i18n["Image URL"] + ": "));
+	input = doc.createElement("input");
+	input.type = "text";
+	input.name = "f_st_backgroundImage";
+	if (el.style.backgroundImage.match(/url\(\s*(.*?)\s*\)/)) {
+		input.value = RegExp.$1;
+	}
+	// input.style.width = "100%";
+	td.appendChild(input);
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.className = "label";
+	td.innerHTML = i18n["FG Color"] + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.appendChild(TableOperations.createColorButton(doc, editor, el.style.color, "color"));
+
+	// for better alignment we include an invisible field.
+	input = doc.createElement("input");
+	input.style.visibility = "hidden";
+	input.type = "text";
+	td.appendChild(input);
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.className = "label";
+	td.innerHTML = i18n["Border"] + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+
+	var colorButton = TableOperations.createColorButton(doc, editor, el.style.borderColor, "borderColor");
+	var btn = colorButton.firstChild.nextSibling;
+	td.appendChild(colorButton);
+	// borderFields.push(btn);
+	btn.style.marginRight = "0.5em";
+
+	select = doc.createElement("select");
+	var borderFields = [];
+	td.appendChild(select);
+	select.name = "f_st_borderStyle";
+	options = ["none", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"];
+	var currentBorderStyle = el.style.borderStyle;
+	// Gecko reports "solid solid solid solid" for "border-style: solid".
+	// That is, "top right bottom left" -- we only consider the first
+	// value.
+	(currentBorderStyle.match(/([^\s]*)\s/)) && (currentBorderStyle = RegExp.$1);
+	for (i in options) {
+		var val = options[i];
+		option = doc.createElement("option");
+		option.value = val;
+		option.innerHTML = val;
+		(val == currentBorderStyle) && (option.selected = true);
+		select.appendChild(option);
+	}
+	select.style.marginRight = "0.5em";
+	function setBorderFieldsStatus(value) {
+		for (i in borderFields) {
+			var el = borderFields[i];
+			el.style.visibility = value ? "hidden" : "visible";
+			if (!value && (el.tagName.toLowerCase() == "input")) {
+				el.focus();
+				el.select();
+			}
+		}
+	};
+	select.onchange = function() { setBorderFieldsStatus(this.value == "none"); };
+
+	input = doc.createElement("input");
+	borderFields.push(input);
+	input.type = "text";
+	input.name = "f_st_borderWidth";
+	input.value = TableOperations.getLength(el.style.borderWidth);
+	input.size = "5";
+	td.appendChild(input);
+	input.style.marginRight = "0.5em";
+	var span = doc.createElement("span");
+	span.innerHTML = i18n["pixels"];
+	td.appendChild(span);
+	borderFields.push(span);
+
+	setBorderFieldsStatus(select.value == "none");
+
+	if (el.tagName.toLowerCase() == "table") {
+		// the border-collapse style is only for tables
+		tr = doc.createElement("tr");
+		tbody.appendChild(tr);
+		td = doc.createElement("td");
+		td.className = "label";
+		tr.appendChild(td);
+		input = doc.createElement("input");
+		input.type = "checkbox";
+		input.name = "f_st_borderCollapse";
+		input.id = "f_st_borderCollapse";
+		var val = (/collapse/i.test(el.style.borderCollapse));
+		input.checked = val ? 1 : 0;
+		td.appendChild(input);
+
+		td = doc.createElement("td");
+		tr.appendChild(td);
+		var label = doc.createElement("label");
+		label.htmlFor = "f_st_borderCollapse";
+		label.innerHTML = i18n["Collapsed borders"];
+		td.appendChild(label);
+	}
+
+// 	tr = doc.createElement("tr");
+// 	tbody.appendChild(tr);
+// 	td = doc.createElement("td");
+// 	td.className = "label";
+// 	tr.appendChild(td);
+// 	td.innerHTML = i18n["Margin"] + ":";
+// 	td = doc.createElement("td");
+// 	tr.appendChild(td);
+// 	input = doc.createElement("input");
+// 	input.type = "text";
+// 	input.size = "5";
+// 	input.name = "f_st_margin";
+// 	td.appendChild(input);
+// 	input.style.marginRight = "0.5em";
+// 	td.appendChild(doc.createTextNode(i18n["Padding"] + ":"));
+
+// 	input = doc.createElement("input");
+// 	input.type = "text";
+// 	input.size = "5";
+// 	input.name = "f_st_padding";
+// 	td.appendChild(input);
+// 	input.style.marginLeft = "0.5em";
+// 	input.style.marginRight = "0.5em";
+// 	td.appendChild(doc.createTextNode(i18n["pixels"]));
+
+	return fieldset;
+};
+
+//// END GENERIC CODE -------------------------------------------------------
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-merge.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-merge.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-delete.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-after.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-after.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-delete.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-before.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-insert-before.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-after.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-after.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-before.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-insert-before.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-under.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-under.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-prop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-prop.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-prop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-prop.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-split.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-split.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-above.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-insert-above.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/table-prop.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/table-prop.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-split.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/col-split.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/row-delete.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-split.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/plugins/TableOperations/img/cell-split.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/popupdiv.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popupdiv.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popupdiv.js	(revision 103)
@@ -0,0 +1,369 @@
+/** This file is derived from PopupDiv, developed by Mihai Bazon for
+ * SamWare.net.  Modifications were needed to make it usable in HTMLArea.
+ * HTMLArea is a free WYSIWYG online HTML editor from InteractiveTools.com.
+ *
+ * This file does not function standalone.  It is dependent of global functions
+ * defined in HTMLArea-3.0 (htmlarea.js).
+ *
+ * Please see file htmlarea.js for further details.
+ **/
+
+var is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) &&
+	      (navigator.userAgent.toLowerCase().indexOf("opera") == -1) );
+var is_compat = (document.compatMode == "BackCompat");
+
+function PopupDiv(editor, titleText, handler, initFunction) {
+	var self = this;
+
+	this.editor = editor;
+	this.doc = editor._mdoc;
+	this.handler = handler;
+
+	var el = this.doc.createElement("div");
+	el.className = "content";
+
+	var popup = this.doc.createElement("div");
+	popup.className = "dialog popupdiv";
+	this.element = popup;
+	var s = popup.style;
+	s.position = "absolute";
+	s.left = "0px";
+	s.top = "0px";
+
+	var title = this.doc.createElement("div");
+	title.className = "title";
+	this.title = title;
+	popup.appendChild(title);
+
+	HTMLArea._addEvent(title, "mousedown", function(ev) {
+		self._dragStart(is_ie ? window.event : ev);
+	});
+
+	var button = this.doc.createElement("div");
+	button.className = "button";
+	title.appendChild(button);
+	button.innerHTML = "&#x00d7;";
+	title.appendChild(this.doc.createTextNode(titleText));
+	this.titleText = titleText;
+
+	button.onmouseover = function() {
+		this.className += " button-hilite";
+	};
+	button.onmouseout = function() {
+		this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
+	};
+	button.onclick = function() {
+		this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
+		self.close();
+	};
+
+	popup.appendChild(el);
+	this.content = el;
+
+	this.doc.body.appendChild(popup);
+
+	this.dragging = false;
+	this.onShow = null;
+	this.onClose = null;
+	this.modal = false;
+
+	initFunction(this);
+};
+
+PopupDiv.currentPopup = null;
+
+PopupDiv.prototype.showAtElement = function(el, mode) {
+	this.defaultSize();
+	var pos, ew, eh;
+	var popup = this.element;
+	popup.style.display = "block";
+	var w = popup.offsetWidth;
+	var h = popup.offsetHeight;
+	popup.style.display = "none";
+	if (el != window) {
+		pos = PopupDiv.getAbsolutePos(el);
+		ew = el.offsetWidth;
+		eh = el.offsetHeight;
+	} else {
+		pos = {x:0, y:0};
+		var size = PopupDiv.getWindowSize();
+		ew = size.x;
+		eh = size.y;
+	}
+	var FX = false, FY = false;
+	if (mode.indexOf("l") != -1) {
+		pos.x -= w;
+		FX = true;
+	}
+	if (mode.indexOf("r") != -1) {
+		pos.x += ew;
+		FX = true;
+	}
+	if (mode.indexOf("t") != -1) {
+		pos.y -= h;
+		FY = true;
+	}
+	if (mode.indexOf("b") != -1) {
+		pos.y += eh;
+		FY = true;
+	}
+	if (mode.indexOf("c") != -1) {
+		FX || (pos.x += Math.round((ew - w) / 2));
+		FY || (pos.y += Math.round((eh - h) / 2));
+	}
+	this.showAt(pos.x, pos.y);
+};
+
+PopupDiv.prototype.defaultSize = function() {
+	var s = this.element.style;
+	var cs = this.element.currentStyle;
+	var addX = (is_ie && is_compat) ? (parseInt(cs.borderLeftWidth) +
+					   parseInt(cs.borderRightWidth) +
+					   parseInt(cs.paddingLeft) +
+					   parseInt(cs.paddingRight)) : 0;
+	var addY = (is_ie && is_compat) ? (parseInt(cs.borderTopWidth) +
+					   parseInt(cs.borderBottomWidth) +
+					   parseInt(cs.paddingTop) +
+					   parseInt(cs.paddingBottom)) : 0;
+	s.display = "block";
+	s.width = (this.content.offsetWidth + addX) + "px";
+	s.height = (this.content.offsetHeight + this.title.offsetHeight) + "px";
+	s.display = "none";
+};
+
+PopupDiv.prototype.showAt = function(x, y) {
+	this.defaultSize();
+	var s = this.element.style;
+	s.display = "block";
+	s.left = x + "px";
+	s.top = y + "px";
+	this.hideShowCovered();
+
+	PopupDiv.currentPopup = this;
+	HTMLArea._addEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
+	HTMLArea._addEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
+	if (is_ie && this.modal) {
+		this.doc.body.setCapture(false);
+		this.doc.body.onlosecapture = function() {
+			(PopupDiv.currentPopup) && (this.doc.body.setCapture(false));
+		};
+	}
+	window.event && HTMLArea._stopEvent(window.event);
+
+	if (typeof this.onShow == "function") {
+		this.onShow();
+	} else if (typeof this.onShow == "string") {
+		eval(this.onShow);
+	}
+
+	var field = this.element.getElementsByTagName("input")[0];
+	if (!field) {
+		field = this.element.getElementsByTagName("select")[0];
+	}
+	if (!field) {
+		field = this.element.getElementsByTagName("textarea")[0];
+	}
+	if (field) {
+		field.focus();
+	}
+};
+
+PopupDiv.prototype.close = function() {
+	this.element.style.display = "none";
+	PopupDiv.currentPopup = null;
+	this.hideShowCovered();
+	HTMLArea._removeEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
+	HTMLArea._removeEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
+	is_ie && this.modal && this.doc.body.releaseCapture();
+	if (typeof this.onClose == "function") {
+		this.onClose();
+	} else if (typeof this.onClose == "string") {
+		eval(this.onClose);
+	}
+	this.element.parentNode.removeChild(this.element);
+};
+
+PopupDiv.prototype.getForm = function() {
+	var forms = this.content.getElementsByTagName("form");
+	return (forms.length > 0) ? forms[0] : null;
+};
+
+PopupDiv.prototype.callHandler = function() {
+	var tags = ["input", "textarea", "select"];
+	var params = new Object();
+	for (var ti in tags) {
+		var tag = tags[ti];
+		var els = this.content.getElementsByTagName(tag);
+		for (var j = 0; j < els.length; ++j) {
+			var el = els[j];
+			params[el.name] = el.value;
+		}
+	}
+	this.handler(this, params);
+	return false;
+};
+
+PopupDiv.getAbsolutePos = function(el) {
+	var r = { x: el.offsetLeft, y: el.offsetTop };
+	if (el.offsetParent) {
+		var tmp = PopupDiv.getAbsolutePos(el.offsetParent);
+		r.x += tmp.x;
+		r.y += tmp.y;
+	}
+	return r;
+};
+
+PopupDiv.getWindowSize = function() {
+	if (window.innerHeight) {
+		return { y: window.innerHeight, x: window.innerWidth };
+	}
+	if (this.doc.body.clientHeight) {
+		return { y: this.doc.body.clientHeight, x: this.doc.body.clientWidth };
+	}
+	return { y: this.doc.documentElement.clientHeight, x: this.doc.documentElement.clientWidth };
+};
+
+PopupDiv.prototype.hideShowCovered = function () {
+	var self = this;
+	function isContained(el) {
+		while (el) {
+			if (el == self.element) {
+				return true;
+			}
+			el = el.parentNode;
+		}
+		return false;
+	};
+	var tags = new Array("applet", "select");
+	var el = this.element;
+
+	var p = PopupDiv.getAbsolutePos(el);
+	var EX1 = p.x;
+	var EX2 = el.offsetWidth + EX1;
+	var EY1 = p.y;
+	var EY2 = el.offsetHeight + EY1;
+
+	if (el.style.display == "none") {
+		EX1 = EX2 = EY1 = EY2 = 0;
+	}
+
+	for (var k = tags.length; k > 0; ) {
+		var ar = this.doc.getElementsByTagName(tags[--k]);
+		var cc = null;
+
+		for (var i = ar.length; i > 0;) {
+			cc = ar[--i];
+			if (isContained(cc)) {
+				cc.style.visibility = "visible";
+				continue;
+			}
+
+			p = PopupDiv.getAbsolutePos(cc);
+			var CX1 = p.x;
+			var CX2 = cc.offsetWidth + CX1;
+			var CY1 = p.y;
+			var CY2 = cc.offsetHeight + CY1;
+
+			if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
+				cc.style.visibility = "visible";
+			} else {
+				cc.style.visibility = "hidden";
+			}
+		}
+	}
+};
+
+PopupDiv.prototype._dragStart = function (ev) {
+	if (this.dragging) {
+		return false;
+	}
+	this.dragging = true;
+	PopupDiv.currentPopup = this;
+	var posX = ev.clientX;
+	var posY = ev.clientY;
+	if (is_ie) {
+		posY += this.doc.body.scrollTop;
+		posX += this.doc.body.scrollLeft;
+	} else {
+		posY += window.scrollY;
+		posX += window.scrollX;
+	}
+	var st = this.element.style;
+	this.xOffs = posX - parseInt(st.left);
+	this.yOffs = posY - parseInt(st.top);
+	HTMLArea._addEvent(this.doc, "mousemove", PopupDiv.dragIt);
+	HTMLArea._addEvent(this.doc, "mouseover", HTMLArea._stopEvent);
+	HTMLArea._addEvent(this.doc, "mouseup", PopupDiv.dragEnd);
+	HTMLArea._stopEvent(ev);
+};
+
+PopupDiv.dragIt = function (ev) {
+	var popup = PopupDiv.currentPopup;
+	if (!(popup && popup.dragging)) {
+		return false;
+	}
+	is_ie && (ev = window.event);
+	var posX = ev.clientX;
+	var posY = ev.clientY;
+	if (is_ie) {
+		posY += this.doc.body.scrollTop;
+		posX += this.doc.body.scrollLeft;
+	} else {
+		posY += window.scrollY;
+		posX += window.scrollX;
+	}
+	popup.hideShowCovered();
+	var st = popup.element.style;
+	st.left = (posX - popup.xOffs) + "px";
+	st.top = (posY - popup.yOffs) + "px";
+	HTMLArea._stopEvent(ev);
+};
+
+PopupDiv.dragEnd = function () {
+	var popup = PopupDiv.currentPopup;
+	if (!popup) {
+		return false;
+	}
+	popup.dragging = false;
+	HTMLArea._removeEvent(popup.doc, "mouseup", PopupDiv.dragEnd);
+	HTMLArea._removeEvent(popup.doc, "mouseover", HTMLArea._stopEvent);
+	HTMLArea._removeEvent(popup.doc, "mousemove", PopupDiv.dragIt);
+	popup.hideShowCovered();
+};
+
+PopupDiv.checkPopup = function (ev) {
+	is_ie && (ev = window.event);
+	var el = is_ie ? ev.srcElement : ev.target;
+	var cp = PopupDiv.currentPopup;
+	for (; (el != null) && (el != cp.element); el = el.parentNode);
+	if (el == null) {
+		cp.modal || ev.type == "mouseover" || cp.close();
+		HTMLArea._stopEvent(ev);
+	}
+};
+
+PopupDiv.prototype.addButtons = function() {
+	var self = this;
+	var div = this.doc.createElement("div");
+	this.content.appendChild(div);
+	div.className = "buttons";
+	for (var i = 0; i < arguments.length; ++i) {
+		var btn = arguments[i];
+		var button = this.doc.createElement("button");
+		div.appendChild(button);
+		button.innerHTML = HTMLArea.I18N.buttons[btn];
+		switch (btn) {
+		    case "ok":
+			button.onclick = function() {
+				self.callHandler();
+				self.close();
+			};
+			break;
+		    case "cancel":
+			button.onclick = function() {
+				self.close();
+			};
+			break;
+		}
+	}
+};
Index: trunk/wb/modules/htmlarea/htmlarea/reference.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/reference.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/reference.html	(revision 103)
@@ -0,0 +1,523 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
+<html> <head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>HTMLArea-3.0 Reference</title>
+
+<style type="text/css">
+  @import url(htmlarea.css);
+  body { font: 14px verdana,sans-serif; background: #fff; color: #000; }
+  h1, h2 { font-family:tahoma,sans-serif; }
+  h1 { border-bottom: 2px solid #000; }
+  h2 { border-bottom: 1px solid #aaa; }
+  h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; }
+  h4 { font-size: 90%; margin-left: 1em; }
+  acronym { border-bottom: 1px dotted #063; color: #063; }
+  p { margin-left: 2em; margin-top: 0.3em; }
+  li p { margin-left: 0px; }
+  .abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;}
+  li { margin-left: 2em; }
+  em { color: #042; }
+  a { color: #00f; }
+  a:hover { color: #f00; }
+  a:active { color: #f80; }
+  span.browser { font-weight: bold; color: #864; }
+  .fixme { font-size: 20px; font-weight: bold; color: red; background: #fab;
+padding: 5px; text-align: center; }
+  .code {
+   background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em;
+   font-family: fixed,"lucidux mono","andale mono","courier new",monospace;
+  }
+  .note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; }
+  .warning { color: #a00; }
+
+.string {
+  color: #06c;
+} /* font-lock-string-face */
+.comment {
+  color: #840;
+} /* font-lock-comment-face */
+.variable-name {
+  color: #000;
+} /* font-lock-variable-name-face */
+.type {
+  color: #008;
+  font-weight: bold;
+} /* font-lock-type-face */
+.reference {
+  color: #048;
+} /* font-lock-reference-face */
+.preprocessor {
+  color: #808;
+} /* font-lock-preprocessor-face */
+.keyword {
+  color: #00f;
+  font-weight: bold;
+} /* font-lock-keyword-face */
+.function-name {
+  color: #044;
+} /* font-lock-function-name-face */
+.html-tag {
+  font-weight: bold;
+} /* html-tag-face */
+.html-helper-italic {
+  font-style: italic;
+} /* html-helper-italic-face */
+.html-helper-bold {
+  font-weight: bold;
+} /* html-helper-bold-face */
+
+</style>
+
+<script type="text/javascript">
+  _editor_url = './';
+  _editor_lang = 'en';
+</script>
+<script type="text/javascript" src="htmlarea.js"></script>
+<script type="text/javascript" src="dialog.js"></script>
+<script tyle="text/javascript" src="lang/en.js"></script>
+
+</head>
+
+<body onload="HTMLArea.replace('TA')">
+
+
+<h1>HTMLArea-3.0 Documentation</h1>
+
+<div class="abstract" style="color: red; font-weight: bold">
+
+      This documentation contains valid information, but is outdated in the
+      terms that it does not covers all the features of HTMLArea.  A new
+      documentation project will be started, based on LaTeX.
+
+</div>
+
+
+<h2>Introduction</h2>
+
+<h3>What is HTMLArea?</h3>
+
+<p>HTMLArea is a free <acronym title="What You See Is What You Get"
+>WYSIWYG</acronym> editor replacement for <code>&lt;textarea&gt;</code>
+fields.  By adding a few simple lines of JavaScript code to your web page
+you can replace a regular textarea with a rich text editor that lets your
+users do the following:</p>
+
+<ul>
+  <li>Format text to be bold, italicized, or underlined.</li>
+  <li>Change the face, size, style and color.</li>
+  <li>Left, center, or right-justify paragraphs.</li>
+  <li>Make bulleted or numbered lists.</li>
+  <li>Indent or un-indent paragraphs.</li>
+  <li>Insert a horizontal line.</li>
+  <li>Insert hyperlinks and images.</li>
+  <li>View the raw HTML source of what they're editing.</li>
+  <li>and much more...</li>
+</ul>
+
+<p>Some of the interesting features of HTMLArea that set's it apart from
+other web based WYSIWYG editors are as follows:</p>
+
+<ul>
+  <li>It's lightweight, fast loading and can transform a regular textarea
+  into a rich-text editor with a single line of JavaScript.</li>
+  <li>Generates clean, valid HTML.</li>
+  <li>It degrades gracefully to older or non-supported browsers
+  (they get the original textarea field).</li>
+  <li>It's free and can be incorporated into any free or commercial
+  program.</li>
+  <li>It works with any server-side languages (ASP, PHP, Perl, Java,
+  etc).</li>
+  <li>It's written in JavaScript and can be easily viewed, modified or
+  extended.</li>
+  <li>It remembers entered content when a user navigates away and then hits
+  "back" in their browser.</li>
+  <li>Since it replaces existing textareas it doesn't require a lot of code
+  to add it to your pages (just one line).</li>
+  <li>Did we mention it was free? ;-)</li>
+</ul>
+
+<h3>Is it really free?  What's the catch?</h3>
+
+<p>Yes! It's really free. You can use it, modify it, distribute it with your
+software, or do just about anything you like with it.</p>
+
+<h3>What are the browser requirements?</h3>
+
+<p>HTMLArea requires <span class="browser"><a
+href="http://www.microsoft.com/ie">Internet Explorer</a> &gt;= 5.5</span>
+(Windows only), or <span class="browser"><a
+href="http://mozilla.org">Mozilla</a> &gt;= 1.3-Beta</span> on any platform.
+Any browser based on <a href="http://mozilla.org/newlayout">Gecko</a> will
+also work, provided that Gecko version is at least the one included in
+Mozilla-1.3-Beta (for example, <a
+href="http://galeon.sf.net">Galeon-1.2.8</a>).  However, it degrades
+gracefully to other browsers. They will get a regular textarea field
+instead of a WYSIWYG editor.</p>
+
+<h3>Can I see an example of what it looks like?</h3>
+
+<p>Just make sure you're using one of the browsers mentioned above and see
+below.</p>
+
+<form onsubmit="return false;">
+<textarea id="TA" style="width: 100%; height: 15em;">
+<p>Here is some sample text in textarea that's been transformed with <font
+color="#0000CC"><b>HTMLArea</b></font>.<br />
+You can make things <b>bold</b>, <i>italic</i>, <u>underline</u>.  You can change the
+<font size="3">size</font> and <b><font color="#0000CC">c</font><font color="#00CC00">o</font><font color="#00CCCC">l</font><font color="#CC0000">o</font><font color="#CC00CC">r</font><font color="#CCCC00">s</font><font color="#CCCCCC">!</font></b>
+And lots more...</p>
+
+<p align="center"><font size="4" color="#ff0000"><b><u>Try HTMLArea
+today!</u></b></font><br /></p>
+</textarea>
+</form>
+
+<h3>Where can I find out more info, download the latest version and talk to
+other HTMLArea users?</h3>
+
+<p>You can find out more about HTMLArea and download the latest version on
+the <a href="http://dynarch.com/htmlarea/">HTMLArea
+homepage</a> and you can talk to other HTMLArea users and post any comments
+or suggestions you have in the <a
+href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/"
+>HTMLArea forum</a>.</p>
+
+<h2>Keyboard shortcuts</h2>
+
+<p>The editor provides the following key combinations:</p>
+
+<ul>
+  <li>CTRL-A -- select all</li>
+  <li>CTRL-B -- bold</li>
+  <li>CTRL-I -- italic</li>
+  <li>CTRL-U -- underline</li>
+  <li>CTRL-S -- strikethrough</li>
+  <li>CTRL-L -- justify left</li>
+  <li>CTRL-E -- justify center</li>
+  <li>CTRL-R -- justify right</li>
+  <li>CTRL-J -- justify full</li>
+  <li>CTRL-1 .. CTRL-6 -- headings (&lt;h1&gt; .. &lt;h6&gt;)</li>
+  <li>CTRL-0 (zero) -- clean content pasted from Word</li>
+</ul>
+
+<h2>Installation</h2>
+
+<h3>How do I add HTMLArea to my web page?</h3>
+
+<p>It's easy.  First you need to upload HTMLArea files to your website.
+Just follow these steps.</p>
+
+<ol>
+  <li>Download the latest version from the <a
+  href="http://www.interactivetools.com/products/htmlarea/">htmlArea
+  homepage</a>.</li>
+  <li>Unzip the files onto your local computer (making sure to maintain the
+  directory structure contained in the zip).</li>
+  <li>Create a new folder on your website called /htmlarea/ (make sure it's
+  NOT inside the cgi-bin).</li>
+  <li>Transfer all the HTMLArea files from your local computer into the
+  /htmlarea/ folder on your website.</li>
+  <li>Open the example page /htmlarea/examples/core.html with your browser to make
+  sure everything works.</li>
+</ol>
+
+<p>Once htmlArea is on your website all you need to do is add some
+JavaScript to any pages that you want to add WYSIWYG editors to.  Here's how
+to do that.</p>
+
+<ol>
+
+  <li>Define some global variables.  "_editor_url" has to be the absolute
+  URL where HTMLArea resides within your
+  website; as we discussed, this would be “/htmlarea/”.  "_editor_lang" must
+  be the language code in which you want HTMLArea to appear.  This defaults
+  to "en" (English); for a list of supported languages, please look into
+  the "lang" subdirectory in the distribution.
+  <pre class="code"
+  ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span><span class="function-name">&gt;</span>
+   _editor_url = <span class="string">&quot;/htmlarea/&quot;</span>;
+   _editor_lang = <span class="string">&quot;en&quot;</span>;
+<span class="function-name">&lt;</span><span class="html-tag">/script</span><span class="function-name">&gt;</span></pre>
+
+  <li>Include the "htmlarea.js" script:
+  <pre class="code"
+  ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/htmlarea.js&quot;</span><span class="function-name">&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
+  </li>
+
+  <li><p>If you want to change all your &lt;textarea&gt;-s into
+  HTMLArea-s then you can use the simplest way to create HTMLArea:</p>
+  <pre class="code"
+  ><span class="function-name">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">defer=</span><span class="string">&quot;1&quot;</span><span class="function-name">&gt;</span>
+    HTMLArea.replaceAll<span class="function-name">()</span>;
+<span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</span></pre>
+  <p><span class="note">Note:</span> you can also add the
+  <code>HTMLArea.replaceAll()</code> code to the <code>onload</code>
+  event handler for the <code>body</code> element, if you find it more appropriate.</p>
+
+  <p>A different approach, if you have more than one textarea and only want
+  to change one of them, is to use <code>HTMLArea.replace("id")</code> --
+  pass the <code>id</code> of your textarea.  Do not use the
+  <code>name</code> attribute anymore, it's not a standard solution!</p>
+
+</ol>
+
+<p>This section applies to HTMLArea-3.0 release candidate 1 or later; prior
+to this version, one needed to include more files; however, now HTMLArea is
+able to include other files too (such as stylesheet, language definition
+file, etc.) so you only need to define the editor path and load
+"htmlarea.js".  Nice, eh? ;-)</p>
+
+<h3>I want to change the editor settings, how do I do that?</h3>
+
+<p>While it's true that all you need is one line of JavaScript to create an
+htmlArea WYSIWYG editor, you can also specify more config settings in the
+code to control how the editor works and looks.  Here's an example of some of
+the available settings:</p>
+
+<pre class="code"
+><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config(); <span class="comment">// create a new configuration object
+</span>                                    <span class="comment">// having all the default values
+</span>config.width = '<span class="string">90%</span>';
+config.height = '<span class="string">200px</span>';
+
+<span class="comment">// the following sets a style for the page body (black text on yellow page)
+// and makes all paragraphs be bold by default
+</span>config.pageStyle =
+  '<span class="string">body { background-color: yellow; color: black; font-family: verdana,sans-serif } </span>' +
+  '<span class="string">p { font-width: bold; } </span>';
+
+<span class="comment">// the following replaces the textarea with the given id with a new
+// HTMLArea object having the specified configuration
+</span>HTMLArea.replace('<span class="string">id</span>', config);</pre>
+
+<p><span class="warning">Important:</span> It's recommended that you add
+custom features and configuration to a separate file.  This will ensure you
+that when we release a new official version of HTMLArea you'll have less
+trouble upgrading it.</p>
+
+<h3>How do I customize the toolbar?</h3>
+
+<p>Using the configuration object introduced above allows you to completely
+control what the toolbar contains.  Following is an example of a one-line,
+customized toolbar, much simpler than the default one:</p>
+
+<pre class="code"
+><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
+config.toolbar = [
+  ['<span class="string">fontname</span>', '<span class="string">space</span>',
+   '<span class="string">fontsize</span>', '<span class="string">space</span>',
+   '<span class="string">formatblock</span>', '<span class="string">space</span>',
+   '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>']
+];
+HTMLArea.replace('<span class="string">id</span>', config);</pre>
+
+<p>The toolbar is an Array of Array objects.  Each array in the toolbar
+defines a new line.  The default toolbar looks like this:</p>
+
+<pre class="code"
+>config.toolbar = [
+[ &quot;<span class="string">fontname</span>&quot;, &quot;<span class="string">space</span>&quot;,
+  &quot;<span class="string">fontsize</span>&quot;, &quot;<span class="string">space</span>&quot;,
+  &quot;<span class="string">formatblock</span>&quot;, &quot;<span class="string">space</span>&quot;,
+  &quot;<span class="string">bold</span>&quot;, &quot;<span class="string">italic</span>&quot;, &quot;<span class="string">underline</span>&quot;, &quot;<span class="string">separator</span>&quot;,
+  &quot;<span class="string">strikethrough</span>&quot;, &quot;<span class="string">subscript</span>&quot;, &quot;<span class="string">superscript</span>&quot;, &quot;<span class="string">separator</span>&quot;,
+  &quot;<span class="string">copy</span>&quot;, &quot;<span class="string">cut</span>&quot;, &quot;<span class="string">paste</span>&quot;, &quot;<span class="string">space</span>&quot;, &quot;<span class="string">undo</span>&quot;, &quot;<span class="string">redo</span>&quot; ],
+		
+[ &quot;<span class="string">justifyleft</span>&quot;, &quot;<span class="string">justifycenter</span>&quot;, &quot;<span class="string">justifyright</span>&quot;, &quot;<span class="string">justifyfull</span>&quot;, &quot;<span class="string">separator</span>&quot;,
+  &quot;<span class="string">insertorderedlist</span>&quot;, &quot;<span class="string">insertunorderedlist</span>&quot;, &quot;<span class="string">outdent</span>&quot;, &quot;<span class="string">indent</span>&quot;, &quot;<span class="string">separator</span>&quot;,
+  &quot;<span class="string">forecolor</span>&quot;, &quot;<span class="string">hilitecolor</span>&quot;, &quot;<span class="string">textindicator</span>&quot;, &quot;<span class="string">separator</span>&quot;,
+  &quot;<span class="string">inserthorizontalrule</span>&quot;, &quot;<span class="string">createlink</span>&quot;, &quot;<span class="string">insertimage</span>&quot;, &quot;<span class="string">inserttable</span>&quot;, &quot;<span class="string">htmlmode</span>&quot;, &quot;<span class="string">separator</span>&quot;,
+  &quot;<span class="string">popupeditor</span>&quot;, &quot;<span class="string">separator</span>&quot;, &quot;<span class="string">showhelp</span>&quot;, &quot;<span class="string">about</span>&quot; ]
+];</pre>
+
+<p>Except three strings, all others in the examples above need to be defined
+in the <code>config.btnList</code> object (detailed a bit later in this
+document).  The three exceptions are: 'space', 'separator' and 'linebreak'.
+These three have the following meaning, and need not be present in
+<code>btnList</code>:</p>
+
+<ul>
+  <li>'space' -- Inserts a space of 5 pixels (the width is configurable by external
+  <acronym title="Cascading Style Sheets">CSS</acronym>) at the current
+  position in the toolbar.</li>
+  <li>'separator' -- Inserts a small vertical separator, for visually grouping related
+  buttons.</li>
+  <li>'linebreak' -- Starts a new line in the toolbar.  Subsequent controls will be
+  inserted on the new line.</li>
+</ul>
+
+<p><span class="warning">Important:</span> It's recommended that you add
+custom features and configuration to a separate file.  This will ensure you
+that when we release a new official version of HTMLArea you'll have less
+trouble upgrading it.</p>
+
+<h3>How do I create custom buttons?</h3>
+
+<p>By design, the toolbar is easily extensible.  For adding a custom button
+one needs to follow two steps.</p>
+
+<h4 id="regbtn">1. Register the button in <code>config.btnList</code>.</h4>
+
+<p>For each button in the toolbar, HTMLArea needs to know the following
+information:</p>
+<ul>
+  <li>a name for it (we call it the ID of the button);</li>
+  <li>the path to an image to be displayed in the toolbar;</li>
+  <li>a tooltip for it;</li>
+  <li>whether the button is enabled or not in text mode;</li>
+  <li>what to do when the button is clicked;</li>
+</ul>
+<p>You need to provide all this information for registering a new button
+too.  The button ID can be any string identifier and it's used when
+defining the toolbar, as you saw above.  We recommend starting
+it with "my-" so that it won't clash with the standard ID-s (those from
+the default toolbar).</p>
+
+<p class="note">Register button example #1</p>
+
+<pre class="code"
+><span class="comment">// get a default configuration
+</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
+<span class="comment">// register the new button using Config.registerButton.
+// parameters:        button ID,   tooltip,          image,           textMode,
+</span>config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Highlight text</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>,
+<span class="comment">// function that gets called when the button is clicked
+</span>  <span class="keyword">function</span>(editor, id) {
+    editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
+  }
+);</pre>
+
+<p>An alternate way of calling registerButton is exemplified above.  Though
+the code might be a little bit larger, using this form makes your code more
+maintainable.  It doesn't even needs comments as it's pretty clear.</p>
+
+<p class="note">Register button example #2</p>
+
+<pre class="code"
+><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
+config.registerButton({
+  id        : &quot;<span class="string">my-hilite</span>&quot;,
+  tooltip   : &quot;<span class="string">Highlight text</span>&quot;,
+  image     : &quot;<span class="string">my-hilite.gif</span>&quot;,
+  textMode  : <span class="keyword">false</span>,
+  action    : <span class="keyword">function</span>(editor, id) {
+                editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</span>');
+              }
+});</pre>
+
+<p>You might notice that the "action" function receives two parameters:
+<b>editor</b> and <b>id</b>.  In the examples above we only used the
+<b>editor</b> parameter.  But it could be helpful for you to understand
+both:</p>
+
+<ul>
+  <li><b>editor</b> is a reference to the HTMLArea object.  Since our entire
+  code now has an <acronym title="Object Oriented Programming">OOP</acronym>-like
+  design, you need to have a reference to
+  the editor object in order to do things with it.  In previous versions of
+  HTMLArea, in order to identify the object an ID was used -- the ID of the
+  HTML element.  In this version ID-s are no longer necessary.</li>
+
+  <li><b>id</b> is the button ID.  Wondering why is this useful?  Well, you
+  could use the same handler function (presuming that it's not an anonymous
+  function like in the examples above) for more buttons.  You can <a
+  href="#btnex">see an example</a> a bit later in this document.</li>
+</ul>
+
+<h4>2. Inserting it into the toolbar</h4>
+
+<p>At this step you need to specify where in the toolbar to insert the
+button, or just create the whole toolbar again as you saw in the previous
+section.  You use the button ID, as shown in the examples of customizing the
+toolbar in the previous section.</p>
+
+<p>For the sake of completion, following there are another examples.</p>
+
+<p class="note">Append your button to the default toolbar</p>
+
+<pre class="code"
+>config.toolbar.push([ &quot;<span class="string">my-hilite</span>&quot; ]);</pre>
+
+<p class="note">Customized toolbar</p>
+
+<pre class="code"
+>config.toolbar = [
+  ['<span class="string">fontname</span>', '<span class="string">space</span>',
+   '<span class="string">fontsize</span>', '<span class="string">space</span>',
+   '<span class="string">formatblock</span>', '<span class="string">space</span>',
+   '<span class="string">separator</span>', '<span class="string">my-hilite</span>', '<span class="string">separator</span>', '<span class="string">space</span>', <span class="comment">// here's your button
+</span>   '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>', '<span class="string">space</span>']
+];</pre>
+
+<p><span class="note">Note:</span> in the example above our new button is
+between two vertical separators.  But this is by no means required.  You can
+put it wherever you like.  Once registered in the btnList (<a
+href="#regbtn">step 1</a>) your custom button behaves just like a default
+button.</p>
+
+<p><span class="warning">Important:</span> It's recommended that you add
+custom features and configuration to a separate file.  This will ensure you
+that when we release a new official version of HTMLArea you'll have less
+trouble upgrading it.</p>
+
+<h4 id="btnex">A complete example</h4>
+
+<p>Please note that it is by no means necessary to include the following
+code into the htmlarea.js file.  On the contrary, it might not work there.
+The configuration system is designed such that you can always customize the
+editor <em>from outside files</em>, thus keeping the htmlarea.js file
+intact.  This will make it easy for you to upgrade your HTMLArea when we
+release a new official version.  OK, I promise it's the last time I said
+this. ;)</p>
+
+<pre class="code"
+><span class="comment">// All our custom buttons will call this function when clicked.
+// We use the <b>buttonId</b> parameter to determine what button
+// triggered the call.
+</span><span class="keyword">function</span> <span class="function-name">clickHandler</span>(editor, buttonId) {
+  <span class="keyword">switch</span> (buttonId) {
+    <span class="keyword">case</span> &quot;<span class="string">my-toc</span>&quot;:
+      editor.insertHTML(&quot;<span class="string">&lt;h1&gt;Table Of Contents&lt;/h1&gt;</span>&quot;);
+      <span class="keyword">break</span>;
+    <span class="keyword">case</span> &quot;<span class="string">my-date</span>&quot;:
+      editor.insertHTML((<span class="keyword">new</span> Date()).toString());
+      <span class="keyword">break</span>;
+    <span class="keyword">case</span> &quot;<span class="string">my-bold</span>&quot;:
+      editor.execCommand(&quot;<span class="string">bold</span>&quot;);
+      editor.execCommand(&quot;<span class="string">italic</span>&quot;);
+      <span class="keyword">break</span>;
+    <span class="keyword">case</span> &quot;<span class="string">my-hilite</span>&quot;:
+      editor.surroundHTML(&quot;<span class="string">&lt;span class=\&quot;hilite\&quot;&gt;</span>&quot;, &quot;<span class="string">&lt;/span&gt;</span>&quot;);
+      <span class="keyword">break</span>;
+  }
+};
+
+<span class="comment">// Create a new configuration object
+</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
+
+<span class="comment">// Register our custom buttons
+</span>config.registerButton(&quot;<span class="string">my-toc</span>&quot;,  &quot;<span class="string">Insert TOC</span>&quot;, &quot;<span class="string">my-toc.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
+config.registerButton(&quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">Insert date/time</span>&quot;, &quot;<span class="string">my-date.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
+config.registerButton(&quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">Toggle bold/italic</span>&quot;, &quot;<span class="string">my-bold.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
+config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Hilite selection</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
+
+<span class="comment">// Append the buttons to the default toolbar
+</span>config.toolbar.push([&quot;<span class="string">linebreak</span>&quot;, &quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">my-hilite</span>&quot;]);
+
+<span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
+</span>HTMLArea.replace(&quot;<span class="string">textAreaID</span>&quot;, config);</pre>
+
+
+<hr />
+<address>&copy; <a href="http://interactivetools.com" title="Visit our website"
+>InteractiveTools.com</a> 2002-2004.
+<br />
+© <a href="http://dynarch.com">dynarch.com</a> 2003-2004<br />
+HTMLArea v3.0 developed by <a
+href="http://dynarch.com/mishoo/">Mihai Bazon</a>.
+<br />
+Documentation written by Mihai Bazon.
+</address>
+<!-- hhmts start --> Last modified: Wed Jan 28 12:18:23 EET 2004 <!-- hhmts end -->
+<!-- doc-lang: English -->
+</body> </html>
Index: trunk/wb/modules/htmlarea/htmlarea/htmlarea.css
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/htmlarea.css	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/htmlarea.css	(revision 103)
@@ -0,0 +1,180 @@
+.htmlarea { background: #fff; }
+
+.htmlarea .toolbar {
+  cursor: default;
+  background: ButtonFace;
+  padding: 1px 1px 2px 1px;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+.htmlarea .toolbar table { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
+.htmlarea .toolbar img { border: none; }
+.htmlarea .toolbar .label { padding: 0px 3px; }
+
+.htmlarea .toolbar .button {
+  background: ButtonFace;
+  color: ButtonText;
+  border: 1px solid ButtonFace;
+  padding: 1px;
+  margin: 0px;
+  width: 18px;
+  height: 18px;
+}
+.htmlarea .toolbar .buttonHover {
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+.htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed {
+  padding: 2px 0px 0px 2px;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+.htmlarea .toolbar .buttonPressed {
+  background: ButtonHighlight;
+}
+.htmlarea .toolbar .indicator {
+  padding: 0px 3px;
+  overflow: hidden;
+  width: 20px;
+  text-align: center;
+  cursor: default;
+  border: 1px solid ButtonShadow;
+}
+
+.htmlarea .toolbar .buttonDisabled img {
+  filter: alpha(opacity = 25);
+  -moz-opacity: 0.25;
+}
+
+.htmlarea .toolbar .separator {
+  position: relative;
+  margin: 3px;
+  border-left: 1px solid ButtonShadow;
+  border-right: 1px solid ButtonHighlight;
+  width: 0px;
+  height: 16px;
+  padding: 0px;
+}
+
+.htmlarea .toolbar .space { width: 5px; }
+
+.htmlarea .toolbar select { font: 11px Tahoma,Verdana,sans-serif; }
+
+.htmlarea .toolbar select,
+.htmlarea .toolbar select:hover,
+.htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; }
+
+.htmlarea .statusBar {
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+  padding: 2px 4px;
+  background-color: ButtonFace;
+  color: ButtonText;
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+
+.htmlarea .statusBar .statusBarTree a {
+  padding: 2px 5px;
+  color: #00f;
+}
+
+.htmlarea .statusBar .statusBarTree a:visited { color: #00f; }
+.htmlarea .statusBar .statusBarTree a:hover {
+  background-color: Highlight;
+  color: HighlightText;
+  padding: 1px 4px;
+  border: 1px solid HighlightText;
+}
+
+
+/* Hidden DIV popup dialogs (PopupDiv) */
+
+.dialog {
+  color: ButtonText;
+  background: ButtonFace;
+}
+
+.dialog .content { padding: 2px; }
+
+.dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+
+.dialog table { border-collapse: collapse; }
+
+.dialog .title {
+  background: #008;
+  color: #ff8;
+  border-bottom: 1px solid #000;
+  padding: 1px 0px 2px 5px;
+  font-size: 12px;
+  font-weight: bold;
+  cursor: default;
+}
+
+.dialog .title .button {
+  float: right;
+  border: 1px solid #66a;
+  padding: 0px 1px 0px 2px;
+  margin-right: 1px;
+  color: #fff;
+  text-align: center;
+}
+
+.dialog .title .button-hilite { border-color: #88f; background: #44c; }
+
+.dialog button {
+  width: 5em;
+  padding: 0px;
+}
+
+.dialog .buttonColor {
+  padding: 1px;
+  cursor: default;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.dialog .buttonColor-hilite {
+  border-color: #000;
+}
+
+.dialog .buttonColor .chooser, .dialog .buttonColor .nocolor {
+  height: 0.6em;
+  border: 1px solid;
+  padding: 0px 1em;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+.dialog .buttonColor .nocolor { padding: 0px; }
+.dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; }
+
+.dialog .label { text-align: right; width: 6em; }
+.dialog .value input { width: 100%; }
+.dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; }
+
+.dialog legend { font-weight: bold; }
+.dialog fieldset table { margin: 2px 0px; }
+
+.popupdiv {
+  border: 2px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.popupwin {
+  padding: 0px;
+  margin: 0px;
+}
+
+.popupwin .title {
+  background: #fff;
+  color: #000;
+  font-weight: bold;
+  font-size: 120%;
+  padding: 3px 10px;
+  margin-bottom: 10px;
+  border-bottom: 1px solid black;
+  letter-spacing: 2px;
+}
+
+form { margin: 0px; border: none; }
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_indent_more.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_indent_more.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/insert_table.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/insert_table.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_html.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_html.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_left.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_left.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_undo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_undo.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_indent_less.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_indent_less.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_justify.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_justify.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_hr.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_hr.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_copy.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_copy.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_show_border.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_show_border.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_sup.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_sup.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_splitcel.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_splitcel.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_list_bullet.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_list_bullet.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_color_bg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_color_bg.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_right.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_right.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_help.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_help.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_redo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_redo.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_color_fg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_color_fg.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_center.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_align_center.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/fullscreen_minimize.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/fullscreen_minimize.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_cut.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_cut.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/fullscreen_maximize.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/fullscreen_maximize.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_delete.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_delete.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_strike.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_strike.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_custom.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_custom.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_about.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_about.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_charmap.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_charmap.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_paste.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_paste.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_italic.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_italic.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_image.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_image.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_blank.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_blank.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_bold.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_bold.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_right_to_left.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_right_to_left.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_left_to_right.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_left_to_right.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_list_num.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_list_num.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_underline.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_underline.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_save.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_save.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_sub.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/modules/htmlarea/htmlarea/images/ed_format_sub.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/modules/htmlarea/htmlarea/htmlarea.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/htmlarea.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/htmlarea.js	(revision 103)
@@ -0,0 +1,2175 @@
+// htmlArea v3.0 - Copyright (c) 2002-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: htmlarea.js,v 1.1.1.1 2005/01/30 10:30:55 rdjurovich Exp $
+
+if (typeof _editor_url == "string") {
+	// Leave exactly one backslash at the end of _editor_url
+	_editor_url = _editor_url.replace(/\x2f*$/, '/');
+} else {
+	alert("WARNING: _editor_url is not set!  You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea', but it can be relative if you prefer.  Further we will try to load the editor files correctly but we'll probably fail.");
+	_editor_url = '';
+}
+
+// make sure we have a language
+if (typeof _editor_lang == "string") {
+	_editor_lang = _editor_lang.toLowerCase();
+} else {
+	_editor_lang = "en";
+}
+
+// Creates a new HTMLArea object.  Tries to replace the textarea with the given
+// ID with it.
+function HTMLArea(textarea, config) {
+	if (HTMLArea.checkSupportedBrowser()) {
+		if (typeof config == "undefined") {
+			this.config = new HTMLArea.Config();
+		} else {
+			this.config = config;
+		}
+		this._htmlArea = null;
+		this._textArea = textarea;
+		this._editMode = "wysiwyg";
+		this.plugins = {};
+		this._timerToolbar = null;
+		this._timerUndo = null;
+		this._undoQueue = new Array(this.config.undoSteps);
+		this._undoPos = -1;
+		this._customUndo = false;
+		this._mdoc = document; // cache the document, we need it in plugins
+		this.doctype = '';
+	}
+};
+
+// load some scripts
+(function() {
+	var scripts = HTMLArea._scripts = [ _editor_url + "htmlarea.js",
+					    _editor_url + "dialog.js",
+					    _editor_url + "popupwin.js",
+					    _editor_url + "lang/" + _editor_lang + ".js" ];
+	var head = document.getElementsByTagName("head")[0];
+	// start from 1, htmlarea.js is already loaded
+	for (var i = 1; i < scripts.length; ++i) {
+		var script = document.createElement("script");
+		script.src = scripts[i];
+		head.appendChild(script);
+	}
+})();
+
+// cache some regexps
+HTMLArea.RE_tagName = /(<\/|<)\s*([^ \t\n>]+)/ig;
+HTMLArea.RE_doctype = /(<!doctype((.|\n)*?)>)\n?/i;
+HTMLArea.RE_head    = /<head>((.|\n)*?)<\/head>/i;
+HTMLArea.RE_body    = /<body>((.|\n)*?)<\/body>/i;
+
+HTMLArea.Config = function () {
+	this.version = "3.0";
+
+	this.width = "auto";
+	this.height = "auto";
+
+	// enable creation of a status bar?
+	this.statusBar = true;
+
+	// maximum size of the undo queue
+	this.undoSteps = 20;
+
+	// the time interval at which undo samples are taken
+	this.undoTimeout = 500;	// 1/2 sec.
+
+	// the next parameter specifies whether the toolbar should be included
+	// in the size or not.
+	this.sizeIncludesToolbar = true;
+
+	// if true then HTMLArea will retrieve the full HTML, starting with the
+	// <HTML> tag.
+	this.fullPage = false;
+
+	// style included in the iframe document
+	this.pageStyle = "";
+
+	// set to true if you want Word code to be cleaned upon Paste
+	this.killWordOnPaste = false;
+
+	// BaseURL included in the iframe document
+	this.baseURL = document.baseURI || document.URL;
+	if (this.baseURL && this.baseURL.match(/(.*)\/([^\/]+)/))
+		this.baseURL = RegExp.$1 + "/";
+
+	// URL-s
+	this.imgURL = "images/";
+	this.popupURL = "popups/";
+
+	/** CUSTOMIZING THE TOOLBAR
+	 * -------------------------
+	 *
+	 * It is recommended that you customize the toolbar contents in an
+	 * external file (i.e. the one calling HTMLArea) and leave this one
+	 * unchanged.  That's because when we (InteractiveTools.com) release a
+	 * new official version, it's less likely that you will have problems
+	 * upgrading HTMLArea.
+	 */
+	this.toolbar = [
+		[ "fontname", "space",
+		  "fontsize", "space",
+		  "formatblock", "space",
+		  "bold", "italic", "underline", "strikethrough", "separator",
+		  "subscript", "superscript", "separator",
+		  "copy", "cut", "paste", "space", "undo", "redo" ],
+
+		[ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
+		  "lefttoright", "righttoleft", "separator",
+		  "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator",
+		  "forecolor", "hilitecolor", "separator",
+		  "inserthorizontalrule", "createlink", "insertimage", "inserttable", "htmlmode", "separator",
+		  "popupeditor", "separator", "showhelp", "about" ]
+	];
+
+	this.fontname = {
+		"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'
+	};
+
+	this.fontsize = {
+		"1 (8 pt)":  "1",
+		"2 (10 pt)": "2",
+		"3 (12 pt)": "3",
+		"4 (14 pt)": "4",
+		"5 (18 pt)": "5",
+		"6 (24 pt)": "6",
+		"7 (36 pt)": "7"
+	};
+
+	this.formatblock = {
+		"Heading 1": "h1",
+		"Heading 2": "h2",
+		"Heading 3": "h3",
+		"Heading 4": "h4",
+		"Heading 5": "h5",
+		"Heading 6": "h6",
+		"Normal": "p",
+		"Address": "address",
+		"Formatted": "pre"
+	};
+
+	this.customSelects = {};
+
+	function cut_copy_paste(e, cmd, obj) {
+		e.execCommand(cmd);
+	};
+
+	// ADDING CUSTOM BUTTONS: please read below!
+	// format of the btnList elements is "ID: [ ToolTip, Icon, Enabled in text mode?, ACTION ]"
+	//    - ID: unique ID for the button.  If the button calls document.execCommand
+	//	    it's wise to give it the same name as the called command.
+	//    - ACTION: function that gets called when the button is clicked.
+	//              it has the following prototype:
+	//                 function(editor, buttonName)
+	//              - editor is the HTMLArea object that triggered the call
+	//              - buttonName is the ID of the clicked button
+	//              These 2 parameters makes it possible for you to use the same
+	//              handler for more HTMLArea objects or for more different buttons.
+	//    - ToolTip: default tooltip, for cases when it is not defined in the -lang- file (HTMLArea.I18N)
+	//    - Icon: path to an icon image file for the button (TODO: use one image for all buttons!)
+	//    - Enabled in text mode: if false the button gets disabled for text-only mode; otherwise enabled all the time.
+	this.btnList = {
+		bold: [ "Bold", "ed_format_bold.gif", false, function(e) {e.execCommand("bold");} ],
+		italic: [ "Italic", "ed_format_italic.gif", false, function(e) {e.execCommand("italic");} ],
+		underline: [ "Underline", "ed_format_underline.gif", false, function(e) {e.execCommand("underline");} ],
+		strikethrough: [ "Strikethrough", "ed_format_strike.gif", false, function(e) {e.execCommand("strikethrough");} ],
+		subscript: [ "Subscript", "ed_format_sub.gif", false, function(e) {e.execCommand("subscript");} ],
+		superscript: [ "Superscript", "ed_format_sup.gif", false, function(e) {e.execCommand("superscript");} ],
+		justifyleft: [ "Justify Left", "ed_align_left.gif", false, function(e) {e.execCommand("justifyleft");} ],
+		justifycenter: [ "Justify Center", "ed_align_center.gif", false, function(e) {e.execCommand("justifycenter");} ],
+		justifyright: [ "Justify Right", "ed_align_right.gif", false, function(e) {e.execCommand("justifyright");} ],
+		justifyfull: [ "Justify Full", "ed_align_justify.gif", false, function(e) {e.execCommand("justifyfull");} ],
+		insertorderedlist: [ "Ordered List", "ed_list_num.gif", false, function(e) {e.execCommand("insertorderedlist");} ],
+		insertunorderedlist: [ "Bulleted List", "ed_list_bullet.gif", false, function(e) {e.execCommand("insertunorderedlist");} ],
+		outdent: [ "Decrease Indent", "ed_indent_less.gif", false, function(e) {e.execCommand("outdent");} ],
+		indent: [ "Increase Indent", "ed_indent_more.gif", false, function(e) {e.execCommand("indent");} ],
+		forecolor: [ "Font Color", "ed_color_fg.gif", false, function(e) {e.execCommand("forecolor");} ],
+		hilitecolor: [ "Background Color", "ed_color_bg.gif", false, function(e) {e.execCommand("hilitecolor");} ],
+		inserthorizontalrule: [ "Horizontal Rule", "ed_hr.gif", false, function(e) {e.execCommand("inserthorizontalrule");} ],
+		createlink: [ "Insert Web Link", "ed_link.gif", false, function(e) {e.execCommand("createlink", true);} ],
+		insertimage: [ "Insert/Modify Image", "ed_image.gif", false, function(e) {e.execCommand("insertimage");} ],
+		inserttable: [ "Insert Table", "insert_table.gif", false, function(e) {e.execCommand("inserttable");} ],
+		htmlmode: [ "Toggle HTML Source", "ed_html.gif", true, function(e) {e.execCommand("htmlmode");} ],
+		popupeditor: [ "Enlarge Editor", "fullscreen_maximize.gif", true, function(e) {e.execCommand("popupeditor");} ],
+		about: [ "About this editor", "ed_about.gif", true, function(e) {e.execCommand("about");} ],
+		showhelp: [ "Help using editor", "ed_help.gif", true, function(e) {e.execCommand("showhelp");} ],
+		undo: [ "Undoes your last action", "ed_undo.gif", false, function(e) {e.execCommand("undo");} ],
+		redo: [ "Redoes your last action", "ed_redo.gif", false, function(e) {e.execCommand("redo");} ],
+		cut: [ "Cut selection", "ed_cut.gif", false, cut_copy_paste ],
+		copy: [ "Copy selection", "ed_copy.gif", false, cut_copy_paste ],
+		paste: [ "Paste from clipboard", "ed_paste.gif", false, cut_copy_paste ],
+		lefttoright: [ "Direction left to right", "ed_left_to_right.gif", false, function(e) {e.execCommand("lefttoright");} ],
+		righttoleft: [ "Direction right to left", "ed_right_to_left.gif", false, function(e) {e.execCommand("righttoleft");} ]
+	};
+	/* ADDING CUSTOM BUTTONS
+	 * ---------------------
+	 *
+	 * It is recommended that you add the custom buttons in an external
+	 * file and leave this one unchanged.  That's because when we
+	 * (InteractiveTools.com) release a new official version, it's less
+	 * likely that you will have problems upgrading HTMLArea.
+	 *
+	 * Example on how to add a custom button when you construct the HTMLArea:
+	 *
+	 *   var editor = new HTMLArea("your_text_area_id");
+	 *   var cfg = editor.config; // this is the default configuration
+	 *   cfg.btnList["my-hilite"] =
+	 *	[ function(editor) { editor.surroundHTML('<span style="background:yellow">', '</span>'); }, // action
+	 *	  "Highlight selection", // tooltip
+	 *	  "my_hilite.gif", // image
+	 *	  false // disabled in text mode
+	 *	];
+	 *   cfg.toolbar.push(["linebreak", "my-hilite"]); // add the new button to the toolbar
+	 *
+	 * An alternate (also more convenient and recommended) way to
+	 * accomplish this is to use the registerButton function below.
+	 */
+	// initialize tooltips from the I18N module and generate correct image path
+	for (var i in this.btnList) {
+		var btn = this.btnList[i];
+		btn[1] = _editor_url + this.imgURL + btn[1];
+		if (typeof HTMLArea.I18N.tooltips[i] != "undefined") {
+			btn[0] = HTMLArea.I18N.tooltips[i];
+		}
+	}
+};
+
+/** Helper function: register a new button with the configuration.  It can be
+ * called with all 5 arguments, or with only one (first one).  When called with
+ * only one argument it must be an object with the following properties: id,
+ * tooltip, image, textMode, action.  Examples:
+ *
+ * 1. config.registerButton("my-hilite", "Hilite text", "my-hilite.gif", false, function(editor) {...});
+ * 2. config.registerButton({
+ *      id       : "my-hilite",      // the ID of your button
+ *      tooltip  : "Hilite text",    // the tooltip
+ *      image    : "my-hilite.gif",  // image to be displayed in the toolbar
+ *      textMode : false,            // disabled in text mode
+ *      action   : function(editor) { // called when the button is clicked
+ *                   editor.surroundHTML('<span class="hilite">', '</span>');
+ *                 },
+ *      context  : "p"               // will be disabled if outside a <p> element
+ *    });
+ */
+HTMLArea.Config.prototype.registerButton = function(id, tooltip, image, textMode, action, context) {
+	var the_id;
+	if (typeof id == "string") {
+		the_id = id;
+	} else if (typeof id == "object") {
+		the_id = id.id;
+	} else {
+		alert("ERROR [HTMLArea.Config::registerButton]:\ninvalid arguments");
+		return false;
+	}
+	// check for existing id
+	if (typeof this.customSelects[the_id] != "undefined") {
+		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists.");
+	}
+	if (typeof this.btnList[the_id] != "undefined") {
+		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists.");
+	}
+	switch (typeof id) {
+	    case "string": this.btnList[id] = [ tooltip, image, textMode, action, context ]; break;
+	    case "object": this.btnList[id.id] = [ id.tooltip, id.image, id.textMode, id.action, id.context ]; break;
+	}
+};
+
+/** The following helper function registers a dropdown box with the editor
+ * configuration.  You still have to add it to the toolbar, same as with the
+ * buttons.  Call it like this:
+ *
+ * FIXME: add example
+ */
+HTMLArea.Config.prototype.registerDropdown = function(object) {
+	// check for existing id
+	if (typeof this.customSelects[object.id] != "undefined") {
+		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA dropdown with the same ID already exists.");
+	}
+	if (typeof this.btnList[object.id] != "undefined") {
+		// alert("WARNING [HTMLArea.Config::registerDropdown]:\nA button with the same ID already exists.");
+	}
+	this.customSelects[object.id] = object;
+};
+
+/** Call this function to remove some buttons/drop-down boxes from the toolbar.
+ * Pass as the only parameter a string containing button/drop-down names
+ * delimited by spaces.  Note that the string should also begin with a space
+ * and end with a space.  Example:
+ *
+ *   config.hideSomeButtons(" fontname fontsize textindicator ");
+ *
+ * It's useful because it's easier to remove stuff from the defaul toolbar than
+ * create a brand new toolbar ;-)
+ */
+HTMLArea.Config.prototype.hideSomeButtons = function(remove) {
+	var toolbar = this.toolbar;
+	for (var i in toolbar) {
+		var line = toolbar[i];
+		for (var j = line.length; --j >= 0; ) {
+			if (remove.indexOf(" " + line[j] + " ") >= 0) {
+				var len = 1;
+				if (/separator|space/.test(line[j + 1])) {
+					len = 2;
+				}
+				line.splice(j, len);
+			}
+		}
+	}
+};
+
+/** Helper function: replace all TEXTAREA-s in the document with HTMLArea-s. */
+HTMLArea.replaceAll = function(config) {
+	var tas = document.getElementsByTagName("textarea");
+	for (var i = tas.length; i > 0; (new HTMLArea(tas[--i], config)).generate());
+};
+
+/** Helper function: replaces the TEXTAREA with the given ID with HTMLArea. */
+HTMLArea.replace = function(id, config) {
+	var ta = HTMLArea.getElementById("textarea", id);
+	return ta ? (new HTMLArea(ta, config)).generate() : null;
+};
+
+// Creates the toolbar and appends it to the _htmlarea
+HTMLArea.prototype._createToolbar = function () {
+	var editor = this;	// to access this in nested functions
+
+	var toolbar = document.createElement("div");
+	this._toolbar = toolbar;
+	toolbar.className = "toolbar";
+	toolbar.unselectable = "1";
+	var tb_row = null;
+	var tb_objects = new Object();
+	this._toolbarObjects = tb_objects;
+
+	// creates a new line in the toolbar
+	function newLine() {
+		var table = document.createElement("table");
+		table.border = "0px";
+		table.cellSpacing = "0px";
+		table.cellPadding = "0px";
+		toolbar.appendChild(table);
+		// TBODY is required for IE, otherwise you don't see anything
+		// in the TABLE.
+		var tb_body = document.createElement("tbody");
+		table.appendChild(tb_body);
+		tb_row = document.createElement("tr");
+		tb_body.appendChild(tb_row);
+	}; // END of function: newLine
+	// init first line
+	newLine();
+
+	// updates the state of a toolbar element.  This function is member of
+	// a toolbar element object (unnamed objects created by createButton or
+	// createSelect functions below).
+	function setButtonStatus(id, newval) {
+		var oldval = this[id];
+		var el = this.element;
+		if (oldval != newval) {
+			switch (id) {
+			    case "enabled":
+				if (newval) {
+					HTMLArea._removeClass(el, "buttonDisabled");
+					el.disabled = false;
+				} else {
+					HTMLArea._addClass(el, "buttonDisabled");
+					el.disabled = true;
+				}
+				break;
+			    case "active":
+				if (newval) {
+					HTMLArea._addClass(el, "buttonPressed");
+				} else {
+					HTMLArea._removeClass(el, "buttonPressed");
+				}
+				break;
+			}
+			this[id] = newval;
+		}
+	}; // END of function: setButtonStatus
+
+	// this function will handle creation of combo boxes.  Receives as
+	// parameter the name of a button as defined in the toolBar config.
+	// This function is called from createButton, above, if the given "txt"
+	// doesn't match a button.
+	function createSelect(txt) {
+		var options = null;
+		var el = null;
+		var cmd = null;
+		var customSelects = editor.config.customSelects;
+		var context = null;
+		switch (txt) {
+		    case "fontsize":
+		    case "fontname":
+		    case "formatblock":
+			// the following line retrieves the correct
+			// configuration option because the variable name
+			// inside the Config object is named the same as the
+			// button/select in the toolbar.  For instance, if txt
+			// == "formatblock" we retrieve config.formatblock (or
+			// a different way to write it in JS is
+			// config["formatblock"].
+			options = editor.config[txt];
+			cmd = txt;
+			break;
+		    default:
+			// try to fetch it from the list of registered selects
+			cmd = txt;
+			var dropdown = customSelects[cmd];
+			if (typeof dropdown != "undefined") {
+				options = dropdown.options;
+				context = dropdown.context;
+			} else {
+				alert("ERROR [createSelect]:\nCan't find the requested dropdown definition");
+			}
+			break;
+		}
+		if (options) {
+			el = document.createElement("select");
+			var obj = {
+				name	: txt, // field name
+				element : el,	// the UI element (SELECT)
+				enabled : true, // is it enabled?
+				text	: false, // enabled in text mode?
+				cmd	: cmd, // command ID
+				state	: setButtonStatus, // for changing state
+				context : context
+			};
+			tb_objects[txt] = obj;
+			for (var i in options) {
+				var op = document.createElement("option");
+				op.appendChild(document.createTextNode(i));
+				op.value = options[i];
+				el.appendChild(op);
+			}
+			HTMLArea._addEvent(el, "change", function () {
+				editor._comboSelected(el, txt);
+			});
+		}
+		return el;
+	}; // END of function: createSelect
+
+	// appends a new button to toolbar
+	function createButton(txt) {
+		// the element that will be created
+		var el = null;
+		var btn = null;
+		switch (txt) {
+		    case "separator":
+			el = document.createElement("div");
+			el.className = "separator";
+			break;
+		    case "space":
+			el = document.createElement("div");
+			el.className = "space";
+			break;
+		    case "linebreak":
+			newLine();
+			return false;
+		    case "textindicator":
+			el = document.createElement("div");
+			el.appendChild(document.createTextNode("A"));
+			el.className = "indicator";
+			el.title = HTMLArea.I18N.tooltips.textindicator;
+			var obj = {
+				name	: txt, // the button name (i.e. 'bold')
+				element : el, // the UI element (DIV)
+				enabled : true, // is it enabled?
+				active	: false, // is it pressed?
+				text	: false, // enabled in text mode?
+				cmd	: "textindicator", // the command ID
+				state	: setButtonStatus // for changing state
+			};
+			tb_objects[txt] = obj;
+			break;
+		    default:
+			btn = editor.config.btnList[txt];
+		}
+		if (!el && btn) {
+			el = document.createElement("div");
+			el.title = btn[0];
+			el.className = "button";
+			// let's just pretend we have a button object, and
+			// assign all the needed information to it.
+			var obj = {
+				name	: txt, // the button name (i.e. 'bold')
+				element : el, // the UI element (DIV)
+				enabled : true, // is it enabled?
+				active	: false, // is it pressed?
+				text	: btn[2], // enabled in text mode?
+				cmd	: btn[3], // the command ID
+				state	: setButtonStatus, // for changing state
+				context : btn[4] || null // enabled in a certain context?
+			};
+			tb_objects[txt] = obj;
+			// handlers to emulate nice flat toolbar buttons
+			HTMLArea._addEvent(el, "mouseover", function () {
+				if (obj.enabled) {
+					HTMLArea._addClass(el, "buttonHover");
+				}
+			});
+			HTMLArea._addEvent(el, "mouseout", function () {
+				if (obj.enabled) with (HTMLArea) {
+					_removeClass(el, "buttonHover");
+					_removeClass(el, "buttonActive");
+					(obj.active) && _addClass(el, "buttonPressed");
+				}
+			});
+			HTMLArea._addEvent(el, "mousedown", function (ev) {
+				if (obj.enabled) with (HTMLArea) {
+					_addClass(el, "buttonActive");
+					_removeClass(el, "buttonPressed");
+					_stopEvent(is_ie ? window.event : ev);
+				}
+			});
+			// when clicked, do the following:
+			HTMLArea._addEvent(el, "click", function (ev) {
+				if (obj.enabled) with (HTMLArea) {
+					_removeClass(el, "buttonActive");
+					_removeClass(el, "buttonHover");
+					obj.cmd(editor, obj.name, obj);
+					_stopEvent(is_ie ? window.event : ev);
+				}
+			});
+			var img = document.createElement("img");
+			img.src = btn[1];
+			img.style.width = "18px";
+			img.style.height = "18px";
+			el.appendChild(img);
+		} else if (!el) {
+			el = createSelect(txt);
+		}
+		if (el) {
+			var tb_cell = document.createElement("td");
+			tb_row.appendChild(tb_cell);
+			tb_cell.appendChild(el);
+		} else {
+			alert("FIXME: Unknown toolbar item: " + txt);
+		}
+		return el;
+	};
+
+	var first = true;
+	for (var i in this.config.toolbar) {
+		if (!first) {
+			createButton("linebreak");
+		} else {
+			first = false;
+		}
+		var group = this.config.toolbar[i];
+		for (var j in group) {
+			var code = group[j];
+			if (/^([IT])\[(.*?)\]/.test(code)) {
+				// special case, create text label
+				var l7ed = RegExp.$1 == "I"; // localized?
+				var label = RegExp.$2;
+				if (l7ed) {
+					label = HTMLArea.I18N.custom[label];
+				}
+				var tb_cell = document.createElement("td");
+				tb_row.appendChild(tb_cell);
+				tb_cell.className = "label";
+				tb_cell.innerHTML = label;
+			} else {
+				createButton(code);
+			}
+		}
+	}
+
+	this._htmlArea.appendChild(toolbar);
+};
+
+HTMLArea.prototype._createStatusBar = function() {
+	var statusbar = document.createElement("div");
+	statusbar.className = "statusBar";
+	this._htmlArea.appendChild(statusbar);
+	this._statusBar = statusbar;
+	// statusbar.appendChild(document.createTextNode(HTMLArea.I18N.msg["Path"] + ": "));
+	// creates a holder for the path view
+	div = document.createElement("span");
+	div.className = "statusBarTree";
+	div.innerHTML = HTMLArea.I18N.msg["Path"] + ": ";
+	this._statusBarTree = div;
+	this._statusBar.appendChild(div);
+	if (!this.config.statusBar) {
+		// disable it...
+		statusbar.style.display = "none";
+	}
+};
+
+// Creates the HTMLArea object and replaces the textarea with it.
+HTMLArea.prototype.generate = function () {
+	var editor = this;	// we'll need "this" in some nested functions
+	// get the textarea
+	var textarea = this._textArea;
+	if (typeof textarea == "string") {
+		// it's not element but ID
+		this._textArea = textarea = HTMLArea.getElementById("textarea", textarea);
+	}
+	this._ta_size = {
+		w: textarea.offsetWidth,
+		h: textarea.offsetHeight
+	};
+	textarea.style.display = "none";
+
+	// create the editor framework
+	var htmlarea = document.createElement("div");
+	htmlarea.className = "htmlarea";
+	this._htmlArea = htmlarea;
+
+	// insert the editor before the textarea.
+	textarea.parentNode.insertBefore(htmlarea, textarea);
+
+	if (textarea.form) {
+		// we have a form, on submit get the HTMLArea content and
+		// update original textarea.
+		var f = textarea.form;
+		if (typeof f.onsubmit == "function") {
+			var funcref = f.onsubmit;
+			if (typeof f.__msh_prevOnSubmit == "undefined") {
+				f.__msh_prevOnSubmit = [];
+			}
+			f.__msh_prevOnSubmit.push(funcref);
+		}
+		f.onsubmit = function() {
+			editor._textArea.value = editor.getHTML();
+			var a = this.__msh_prevOnSubmit;
+			// call previous submit methods if they were there.
+			if (typeof a != "undefined") {
+				for (var i in a) {
+					a[i]();
+				}
+			}
+		};
+	}
+
+	// add a handler for the "back/forward" case -- on body.unload we save
+	// the HTML content into the original textarea.
+	window.onunload = function() {
+		editor._textArea.value = editor.getHTML();
+	};
+
+	// creates & appends the toolbar
+	this._createToolbar();
+
+	// create the IFRAME
+	var iframe = document.createElement("iframe");
+	htmlarea.appendChild(iframe);
+
+	this._iframe = iframe;
+
+	// creates & appends the status bar, if the case
+	this._createStatusBar();
+
+	// remove the default border as it keeps us from computing correctly
+	// the sizes.  (somebody tell me why doesn't this work in IE)
+
+	if (!HTMLArea.is_ie) {
+		iframe.style.borderWidth = "1px";
+	// iframe.frameBorder = "1";
+	// iframe.marginHeight = "0";
+	// iframe.marginWidth = "0";
+	}
+
+	// size the IFRAME according to user's prefs or initial textarea
+	var height = (this.config.height == "auto" ? (this._ta_size.h + "px") : this.config.height);
+	height = parseInt(height);
+	var width = (this.config.width == "auto" ? (this._ta_size.w + "px") : this.config.width);
+	width = parseInt(width);
+
+	if (!HTMLArea.is_ie) {
+		height -= 2;
+		width -= 2;
+	}
+
+	iframe.style.width = width + "px";
+	if (this.config.sizeIncludesToolbar) {
+		// substract toolbar height
+		height -= this._toolbar.offsetHeight;
+		height -= this._statusBar.offsetHeight;
+	}
+	if (height < 0) {
+		height = 0;
+	}
+	iframe.style.height = height + "px";
+
+	// the editor including the toolbar now have the same size as the
+	// original textarea.. which means that we need to reduce that a bit.
+	textarea.style.width = iframe.style.width;
+ 	textarea.style.height = iframe.style.height;
+
+	// IMPORTANT: we have to allow Mozilla a short time to recognize the
+	// new frame.  Otherwise we get a stupid exception.
+	function initIframe() {
+		var doc = editor._iframe.contentWindow.document;
+		if (!doc) {
+			// Try again..
+			// FIXME: don't know what else to do here.  Normally
+			// we'll never reach this point.
+			if (HTMLArea.is_gecko) {
+				setTimeout(initIframe, 100);
+				return false;
+			} else {
+				alert("ERROR: IFRAME can't be initialized.");
+			}
+		}
+		if (HTMLArea.is_gecko) {
+			// enable editable mode for Mozilla
+			doc.designMode = "on";
+		}
+		editor._doc = doc;
+		if (!editor.config.fullPage) {
+			doc.open();
+			var html = "<html>\n";
+			html += "<head>\n";
+			if (editor.config.baseURL)
+				html += '<base href="' + editor.config.baseURL + '" />';
+			html += "<style> html,body { border: 0px; } " +
+				editor.config.pageStyle + "</style>\n";
+			html += "</head>\n";
+			html += "<body>\n";
+			html += editor._textArea.value;
+			html += "</body>\n";
+			html += "</html>";
+			doc.write(html);
+			doc.close();
+		} else {
+			var html = editor._textArea.value;
+			if (html.match(HTMLArea.RE_doctype)) {
+				editor.setDoctype(RegExp.$1);
+				html = html.replace(HTMLArea.RE_doctype, "");
+			}
+			doc.open();
+			doc.write(html);
+			doc.close();
+		}
+
+		if (HTMLArea.is_ie) {
+			// enable editable mode for IE.	 For some reason this
+			// doesn't work if done in the same place as for Gecko
+			// (above).
+			doc.body.contentEditable = true;
+		}
+
+		editor.focusEditor();
+		// intercept some events; for updating the toolbar & keyboard handlers
+		HTMLArea._addEvents
+			(doc, ["keydown", "keypress", "mousedown", "mouseup", "drag"],
+			 function (event) {
+				 return editor._editorEvent(HTMLArea.is_ie ? editor._iframe.contentWindow.event : event);
+			 });
+
+		// check if any plugins have registered refresh handlers
+		for (var i in editor.plugins) {
+			var plugin = editor.plugins[i].instance;
+			if (typeof plugin.onGenerate == "function")
+				plugin.onGenerate();
+		}
+
+		setTimeout(function() {
+			editor.updateToolbar();
+		}, 250);
+
+		if (typeof editor.onGenerate == "function")
+			editor.onGenerate();
+	};
+	setTimeout(initIframe, 100);
+};
+
+// Switches editor mode; parameter can be "textmode" or "wysiwyg".  If no
+// parameter was passed this function toggles between modes.
+HTMLArea.prototype.setMode = function(mode) {
+	if (typeof mode == "undefined") {
+		mode = ((this._editMode == "textmode") ? "wysiwyg" : "textmode");
+	}
+	switch (mode) {
+	    case "textmode":
+		this._textArea.value = this.getHTML();
+		this._iframe.style.display = "none";
+		this._textArea.style.display = "block";
+		if (this.config.statusBar) {
+			this._statusBar.innerHTML = HTMLArea.I18N.msg["TEXT_MODE"];
+		}
+		break;
+	    case "wysiwyg":
+		if (HTMLArea.is_gecko) {
+			// disable design mode before changing innerHTML
+			try {
+				this._doc.designMode = "off";
+			} catch(e) {};
+		}
+		if (!this.config.fullPage)
+			this._doc.body.innerHTML = this.getHTML();
+		else
+			this.setFullHTML(this.getHTML());
+		this._iframe.style.display = "block";
+		this._textArea.style.display = "none";
+		if (HTMLArea.is_gecko) {
+			// we need to refresh that info for Moz-1.3a
+			try {
+				this._doc.designMode = "on";
+			} catch(e) {};
+		}
+		if (this.config.statusBar) {
+			this._statusBar.innerHTML = '';
+			this._statusBar.appendChild(document.createTextNode(HTMLArea.I18N.msg["Path"] + ": "));
+			this._statusBar.appendChild(this._statusBarTree);
+		}
+		break;
+	    default:
+		alert("Mode <" + mode + "> not defined!");
+		return false;
+	}
+	this._editMode = mode;
+	this.focusEditor();
+};
+
+HTMLArea.prototype.setFullHTML = function(html) {
+	var save_multiline = RegExp.multiline;
+	RegExp.multiline = true;
+	if (html.match(HTMLArea.RE_doctype)) {
+		this.setDoctype(RegExp.$1);
+		html = html.replace(HTMLArea.RE_doctype, "");
+	}
+	RegExp.multiline = save_multiline;
+	if (!HTMLArea.is_ie) {
+		if (html.match(HTMLArea.RE_head))
+			this._doc.getElementsByTagName("head")[0].innerHTML = RegExp.$1;
+		if (html.match(HTMLArea.RE_body))
+			this._doc.getElementsByTagName("body")[0].innerHTML = RegExp.$1;
+	} else {
+		var html_re = /<html>((.|\n)*?)<\/html>/i;
+		html = html.replace(html_re, "$1");
+		this._doc.open();
+		this._doc.write(html);
+		this._doc.close();
+		this._doc.body.contentEditable = true;
+		return true;
+	}
+};
+
+/***************************************************
+ *  Category: PLUGINS
+ ***************************************************/
+
+// this is the variant of the function above where the plugin arguments are
+// already packed in an array.  Externally, it should be only used in the
+// full-screen editor code, in order to initialize plugins with the same
+// parameters as in the opener window.
+HTMLArea.prototype.registerPlugin2 = function(plugin, args) {
+	if (typeof plugin == "string")
+		plugin = eval(plugin);
+	var obj = new plugin(this, args);
+	if (obj) {
+		var clone = {};
+		var info = plugin._pluginInfo;
+		for (var i in info)
+			clone[i] = info[i];
+		clone.instance = obj;
+		clone.args = args;
+		this.plugins[plugin._pluginInfo.name] = clone;
+	} else
+		alert("Can't register plugin " + plugin.toString() + ".");
+};
+
+// Create the specified plugin and register it with this HTMLArea
+HTMLArea.prototype.registerPlugin = function() {
+	var plugin = arguments[0];
+	var args = [];
+	for (var i = 1; i < arguments.length; ++i)
+		args.push(arguments[i]);
+	this.registerPlugin2(plugin, args);
+};
+
+// static function that loads the required plugin and lang file, based on the
+// language loaded already for HTMLArea.  You better make sure that the plugin
+// _has_ that language, otherwise shit might happen ;-)
+HTMLArea.loadPlugin = function(pluginName) {
+	var dir = _editor_url + "plugins/" + pluginName;
+	var plugin = pluginName.replace(/([a-z])([A-Z])([a-z])/g,
+					function (str, l1, l2, l3) {
+						return l1 + "-" + l2.toLowerCase() + l3;
+					}).toLowerCase() + ".js";
+	var plugin_file = dir + "/" + plugin;
+	var plugin_lang = dir + "/lang/" + HTMLArea.I18N.lang + ".js";
+	HTMLArea._scripts.push(plugin_file, plugin_lang);
+	document.write("<script type='text/javascript' src='" + plugin_file + "'></script>");
+	document.write("<script type='text/javascript' src='" + plugin_lang + "'></script>");
+};
+
+HTMLArea.loadStyle = function(style, plugin) {
+	var url = _editor_url || '';
+	if (typeof plugin != "undefined") {
+		url += "plugins/" + plugin + "/";
+	}
+	url += style;
+	document.write("<style type='text/css'>@import url(" + url + ");</style>");
+};
+HTMLArea.loadStyle("htmlarea.css");
+
+/***************************************************
+ *  Category: EDITOR UTILITIES
+ ***************************************************/
+
+// The following function is a slight variation of the word cleaner code posted
+// by Weeezl (user @ InteractiveTools forums).
+HTMLArea.prototype._wordClean = function() {
+	var D = this.getInnerHTML();
+	if (D.indexOf('class=Mso') >= 0) {
+
+		// make one line
+		D = D.replace(/\r\n/g, ' ').
+			replace(/\n/g, ' ').
+			replace(/\r/g, ' ').
+			replace(/\&nbsp\;/g,' ');
+
+		// keep tags, strip attributes
+		D = D.replace(/ class=[^\s|>]*/gi,'').
+			//replace(/<p [^>]*TEXT-ALIGN: justify[^>]*>/gi,'<p align="justify">').
+			replace(/ style=\"[^>]*\"/gi,'').
+			replace(/ align=[^\s|>]*/gi,'');
+
+		//clean up tags
+		D = D.replace(/<b [^>]*>/gi,'<b>').
+			replace(/<i [^>]*>/gi,'<i>').
+			replace(/<li [^>]*>/gi,'<li>').
+			replace(/<ul [^>]*>/gi,'<ul>');
+
+		// replace outdated tags
+		D = D.replace(/<b>/gi,'<strong>').
+			replace(/<\/b>/gi,'</strong>');
+
+		// mozilla doesn't like <em> tags
+		D = D.replace(/<em>/gi,'<i>').
+			replace(/<\/em>/gi,'</i>');
+
+		// kill unwanted tags
+		D = D.replace(/<\?xml:[^>]*>/g, '').       // Word xml
+			replace(/<\/?st1:[^>]*>/g,'').     // Word SmartTags
+			replace(/<\/?[a-z]\:[^>]*>/g,'').  // All other funny Word non-HTML stuff
+			replace(/<\/?font[^>]*>/gi,'').    // Disable if you want to keep font formatting
+			replace(/<\/?span[^>]*>/gi,' ').
+			replace(/<\/?div[^>]*>/gi,' ').
+			replace(/<\/?pre[^>]*>/gi,' ').
+			replace(/<\/?h[1-6][^>]*>/gi,' ');
+
+		//remove empty tags
+		//D = D.replace(/<strong><\/strong>/gi,'').
+		//replace(/<i><\/i>/gi,'').
+		//replace(/<P[^>]*><\/P>/gi,'');
+
+		// nuke double tags
+		oldlen = D.length + 1;
+		while(oldlen > D.length) {
+			oldlen = D.length;
+			// join us now and free the tags, we'll be free hackers, we'll be free... ;-)
+			D = D.replace(/<([a-z][a-z]*)> *<\/\1>/gi,' ').
+				replace(/<([a-z][a-z]*)> *<([a-z][^>]*)> *<\/\1>/gi,'<$2>');
+		}
+		D = D.replace(/<([a-z][a-z]*)><\1>/gi,'<$1>').
+			replace(/<\/([a-z][a-z]*)><\/\1>/gi,'<\/$1>');
+
+		// nuke double spaces
+		D = D.replace(/  */gi,' ');
+
+		this.setHTML(D);
+		this.updateToolbar();
+	}
+};
+
+HTMLArea.prototype.forceRedraw = function() {
+	this._doc.body.style.visibility = "hidden";
+	this._doc.body.style.visibility = "visible";
+	// this._doc.body.innerHTML = this.getInnerHTML();
+};
+
+// focuses the iframe window.  returns a reference to the editor document.
+HTMLArea.prototype.focusEditor = function() {
+	switch (this._editMode) {
+	    case "wysiwyg" : this._iframe.contentWindow.focus(); break;
+	    case "textmode": this._textArea.focus(); break;
+	    default	   : alert("ERROR: mode " + this._editMode + " is not defined");
+	}
+	return this._doc;
+};
+
+// takes a snapshot of the current text (for undo)
+HTMLArea.prototype._undoTakeSnapshot = function() {
+	++this._undoPos;
+	if (this._undoPos >= this.config.undoSteps) {
+		// remove the first element
+		this._undoQueue.shift();
+		--this._undoPos;
+	}
+	// use the fasted method (getInnerHTML);
+	var take = true;
+	var txt = this.getInnerHTML();
+	if (this._undoPos > 0)
+		take = (this._undoQueue[this._undoPos - 1] != txt);
+	if (take) {
+		this._undoQueue[this._undoPos] = txt;
+	} else {
+		this._undoPos--;
+	}
+};
+
+HTMLArea.prototype.undo = function() {
+	if (this._undoPos > 0) {
+		var txt = this._undoQueue[--this._undoPos];
+		if (txt) this.setHTML(txt);
+		else ++this._undoPos;
+	}
+};
+
+HTMLArea.prototype.redo = function() {
+	if (this._undoPos < this._undoQueue.length - 1) {
+		var txt = this._undoQueue[++this._undoPos];
+		if (txt) this.setHTML(txt);
+		else --this._undoPos;
+	}
+};
+
+// updates enabled/disable/active state of the toolbar elements
+HTMLArea.prototype.updateToolbar = function(noStatus) {
+	var doc = this._doc;
+	var text = (this._editMode == "textmode");
+	var ancestors = null;
+	if (!text) {
+		ancestors = this.getAllAncestors();
+		if (this.config.statusBar && !noStatus) {
+			this._statusBarTree.innerHTML = HTMLArea.I18N.msg["Path"] + ": "; // clear
+			for (var i = ancestors.length; --i >= 0;) {
+				var el = ancestors[i];
+				if (!el) {
+					// hell knows why we get here; this
+					// could be a classic example of why
+					// it's good to check for conditions
+					// that are impossible to happen ;-)
+					continue;
+				}
+				var a = document.createElement("a");
+				a.href = "#";
+				a.el = el;
+				a.editor = this;
+				a.onclick = function() {
+					this.blur();
+					this.editor.selectNodeContents(this.el);
+					this.editor.updateToolbar(true);
+					return false;
+				};
+				a.oncontextmenu = function() {
+					// TODO: add context menu here
+					this.blur();
+					var info = "Inline style:\n\n";
+					info += this.el.style.cssText.split(/;\s*/).join(";\n");
+					alert(info);
+					return false;
+				};
+				var txt = el.tagName.toLowerCase();
+				a.title = el.style.cssText;
+				if (el.id) {
+					txt += "#" + el.id;
+				}
+				if (el.className) {
+					txt += "." + el.className;
+				}
+				a.appendChild(document.createTextNode(txt));
+				this._statusBarTree.appendChild(a);
+				if (i != 0) {
+					this._statusBarTree.appendChild(document.createTextNode(String.fromCharCode(0xbb)));
+				}
+			}
+		}
+	}
+	for (var i in this._toolbarObjects) {
+		var btn = this._toolbarObjects[i];
+		var cmd = i;
+		var inContext = true;
+		if (btn.context && !text) {
+			inContext = false;
+			var context = btn.context;
+			var attrs = [];
+			if (/(.*)\[(.*?)\]/.test(context)) {
+				context = RegExp.$1;
+				attrs = RegExp.$2.split(",");
+			}
+			context = context.toLowerCase();
+			var match = (context == "*");
+			for (var k in ancestors) {
+				if (!ancestors[k]) {
+					// the impossible really happens.
+					continue;
+				}
+				if (match || (ancestors[k].tagName.toLowerCase() == context)) {
+					inContext = true;
+					for (var ka in attrs) {
+						if (!eval("ancestors[k]." + attrs[ka])) {
+							inContext = false;
+							break;
+						}
+					}
+					if (inContext) {
+						break;
+					}
+				}
+			}
+		}
+		btn.state("enabled", (!text || btn.text) && inContext);
+		if (typeof cmd == "function") {
+			continue;
+		}
+		// look-it-up in the custom dropdown boxes
+		var dropdown = this.config.customSelects[cmd];
+		if ((!text || btn.text) && (typeof dropdown != "undefined")) {
+			dropdown.refresh(this);
+			continue;
+		}
+		switch (cmd) {
+		    case "fontname":
+		    case "fontsize":
+		    case "formatblock":
+			if (!text) try {
+				var value = ("" + doc.queryCommandValue(cmd)).toLowerCase();
+				if (!value) {
+					// FIXME: what do we do here?
+					break;
+				}
+				// HACK -- retrieve the config option for this
+				// combo box.  We rely on the fact that the
+				// variable in config has the same name as
+				// button name in the toolbar.
+				var options = this.config[cmd];
+				var k = 0;
+				// btn.element.selectedIndex = 0;
+				for (var j in options) {
+					// FIXME: the following line is scary.
+					if ((j.toLowerCase() == value) ||
+					    (options[j].substr(0, value.length).toLowerCase() == value)) {
+						btn.element.selectedIndex = k;
+						break;
+					}
+					++k;
+				}
+			} catch(e) {};
+			break;
+		    case "textindicator":
+			if (!text) {
+				try {with (btn.element.style) {
+					backgroundColor = HTMLArea._makeColor(
+						doc.queryCommandValue(HTMLArea.is_ie ? "backcolor" : "hilitecolor"));
+					if (/transparent/i.test(backgroundColor)) {
+						// Mozilla
+						backgroundColor = HTMLArea._makeColor(doc.queryCommandValue("backcolor"));
+					}
+					color = HTMLArea._makeColor(doc.queryCommandValue("forecolor"));
+					fontFamily = doc.queryCommandValue("fontname");
+					fontWeight = doc.queryCommandState("bold") ? "bold" : "normal";
+					fontStyle = doc.queryCommandState("italic") ? "italic" : "normal";
+				}} catch (e) {
+					// alert(e + "\n\n" + cmd);
+				}
+			}
+			break;
+		    case "htmlmode": btn.state("active", text); break;
+		    case "lefttoright":
+		    case "righttoleft":
+			var el = this.getParentElement();
+			while (el && !HTMLArea.isBlockElement(el))
+				el = el.parentNode;
+			if (el)
+				btn.state("active", (el.style.direction == ((cmd == "righttoleft") ? "rtl" : "ltr")));
+			break;
+		    default:
+			try {
+				btn.state("active", (!text && doc.queryCommandState(cmd)));
+			} catch (e) {}
+		}
+	}
+	// take undo snapshots
+	if (this._customUndo && !this._timerUndo) {
+		this._undoTakeSnapshot();
+		var editor = this;
+		this._timerUndo = setTimeout(function() {
+			editor._timerUndo = null;
+		}, this.config.undoTimeout);
+	}
+	// check if any plugins have registered refresh handlers
+	for (var i in this.plugins) {
+		var plugin = this.plugins[i].instance;
+		if (typeof plugin.onUpdateToolbar == "function")
+			plugin.onUpdateToolbar();
+	}
+};
+
+/** Returns a node after which we can insert other nodes, in the current
+ * selection.  The selection is removed.  It splits a text node, if needed.
+ */
+HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) {
+	if (!HTMLArea.is_ie) {
+		var sel = this._getSelection();
+		var range = this._createRange(sel);
+		// remove the current selection
+		sel.removeAllRanges();
+		range.deleteContents();
+		var node = range.startContainer;
+		var pos = range.startOffset;
+		switch (node.nodeType) {
+		    case 3: // Node.TEXT_NODE
+			// we have to split it at the caret position.
+			if (toBeInserted.nodeType == 3) {
+				// do optimized insertion
+				node.insertData(pos, toBeInserted.data);
+				range = this._createRange();
+				range.setEnd(node, pos + toBeInserted.length);
+				range.setStart(node, pos + toBeInserted.length);
+				sel.addRange(range);
+			} else {
+				node = node.splitText(pos);
+				var selnode = toBeInserted;
+				if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) {
+					selnode = selnode.firstChild;
+				}
+				node.parentNode.insertBefore(toBeInserted, node);
+				this.selectNodeContents(selnode);
+				this.updateToolbar();
+			}
+			break;
+		    case 1: // Node.ELEMENT_NODE
+			var selnode = toBeInserted;
+			if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) {
+				selnode = selnode.firstChild;
+			}
+			node.insertBefore(toBeInserted, node.childNodes[pos]);
+			this.selectNodeContents(selnode);
+			this.updateToolbar();
+			break;
+		}
+	} else {
+		return null;	// this function not yet used for IE <FIXME>
+	}
+};
+
+// Returns the deepest node that contains both endpoints of the selection.
+HTMLArea.prototype.getParentElement = function() {
+	var sel = this._getSelection();
+	var range = this._createRange(sel);
+	if (HTMLArea.is_ie) {
+		switch (sel.type) {
+		    case "Text":
+		    case "None":
+			// It seems that even for selection of type "None",
+			// there _is_ a parent element and it's value is not
+			// only correct, but very important to us.  MSIE is
+			// certainly the buggiest browser in the world and I
+			// wonder, God, how can Earth stand it?
+			return range.parentElement();
+		    case "Control":
+			return range.item(0);
+		    default:
+			return this._doc.body;
+		}
+	} else try {
+		var p = range.commonAncestorContainer;
+		if (!range.collapsed && range.startContainer == range.endContainer &&
+		    range.startOffset - range.endOffset <= 1 && range.startContainer.hasChildNodes())
+			p = range.startContainer.childNodes[range.startOffset];
+		/*
+		alert(range.startContainer + ":" + range.startOffset + "\n" +
+		      range.endContainer + ":" + range.endOffset);
+		*/
+		while (p.nodeType == 3) {
+			p = p.parentNode;
+		}
+		return p;
+	} catch (e) {
+		return null;
+	}
+};
+
+// Returns an array with all the ancestor nodes of the selection.
+HTMLArea.prototype.getAllAncestors = function() {
+	var p = this.getParentElement();
+	var a = [];
+	while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
+		a.push(p);
+		p = p.parentNode;
+	}
+	a.push(this._doc.body);
+	return a;
+};
+
+// Selects the contents inside the given node
+HTMLArea.prototype.selectNodeContents = function(node, pos) {
+	this.focusEditor();
+	this.forceRedraw();
+	var range;
+	var collapsed = (typeof pos != "undefined");
+	if (HTMLArea.is_ie) {
+		range = this._doc.body.createTextRange();
+		range.moveToElementText(node);
+		(collapsed) && range.collapse(pos);
+		range.select();
+	} else {
+		var sel = this._getSelection();
+		range = this._doc.createRange();
+		range.selectNodeContents(node);
+		(collapsed) && range.collapse(pos);
+		sel.removeAllRanges();
+		sel.addRange(range);
+	}
+};
+
+/** Call this function to insert HTML code at the current position.  It deletes
+ * the selection, if any.
+ */
+HTMLArea.prototype.insertHTML = function(html) {
+	var sel = this._getSelection();
+	var range = this._createRange(sel);
+	if (HTMLArea.is_ie) {
+		range.pasteHTML(html);
+	} else {
+		// construct a new document fragment with the given HTML
+		var fragment = this._doc.createDocumentFragment();
+		var div = this._doc.createElement("div");
+		div.innerHTML = html;
+		while (div.firstChild) {
+			// the following call also removes the node from div
+			fragment.appendChild(div.firstChild);
+		}
+		// this also removes the selection
+		var node = this.insertNodeAtSelection(fragment);
+	}
+};
+
+/**
+ *  Call this function to surround the existing HTML code in the selection with
+ *  your tags.  FIXME: buggy!  This function will be deprecated "soon".
+ */
+HTMLArea.prototype.surroundHTML = function(startTag, endTag) {
+	var html = this.getSelectedHTML();
+	// the following also deletes the selection
+	this.insertHTML(startTag + html + endTag);
+};
+
+/// Retrieve the selected block
+HTMLArea.prototype.getSelectedHTML = function() {
+	var sel = this._getSelection();
+	var range = this._createRange(sel);
+	var existing = null;
+	if (HTMLArea.is_ie) {
+		existing = range.htmlText;
+	} else {
+		existing = HTMLArea.getHTML(range.cloneContents(), false, this);
+	}
+	return existing;
+};
+
+/// Return true if we have some selection
+HTMLArea.prototype.hasSelectedText = function() {
+	// FIXME: come _on_ mishoo, you can do better than this ;-)
+	return this.getSelectedHTML() != '';
+};
+
+HTMLArea.prototype._createLink = function(link) {
+	var editor = this;
+	var outparam = null;
+	if (typeof link == "undefined") {
+		link = this.getParentElement();
+		if (link && !/^a$/i.test(link.tagName))
+			link = null;
+	}
+	if (link) outparam = {
+		f_href   : HTMLArea.is_ie ? editor.stripBaseURL(link.href) : link.getAttribute("href"),
+		f_title  : link.title,
+		f_target : link.target
+	};
+	this._popupDialog("link.php", function(param) {
+		if (!param)
+			return false;
+		var a = link;
+		if (!a) {
+			editor._doc.execCommand("createlink", false, param.f_href);
+			a = editor.getParentElement();
+			var sel = editor._getSelection();
+			var range = editor._createRange(sel);
+			if (!HTMLArea.is_ie) {
+				a = range.startContainer;
+				if (!/^a$/i.test(a.tagName))
+					a = a.nextSibling;
+			}
+		} else a.href = param.f_href.trim();
+		if (!/^a$/i.test(a.tagName))
+			return false;
+		a.target = param.f_target.trim();
+		a.title = param.f_title.trim();
+		editor.selectNodeContents(a);
+		editor.updateToolbar();
+	}, outparam);
+};
+
+// Called when the user clicks on "InsertImage" button.  If an image is already
+// there, it will just modify it's properties.
+HTMLArea.prototype._insertImage = function(image) {
+	var editor = this;	// for nested functions
+	var outparam = null;
+	if (typeof image == "undefined") {
+		image = this.getParentElement();
+		if (image && !/^img$/i.test(image.tagName))
+			image = null;
+	}
+	if (image) outparam = {
+		f_url    : HTMLArea.is_ie ? editor.stripBaseURL(image.src) : image.getAttribute("src"),
+		f_alt    : image.alt,
+		f_border : image.border,
+		f_align  : image.align,
+		f_vert   : image.vspace,
+		f_horiz  : image.hspace
+	};
+	this._popupDialog("insert_image.php", function(param) {
+		if (!param) {	// user must have pressed Cancel
+			return false;
+		}
+		var img = image;
+		if (!img) {
+			var sel = editor._getSelection();
+			var range = editor._createRange(sel);
+			editor._doc.execCommand("insertimage", false, param.f_url);
+			if (HTMLArea.is_ie) {
+				img = range.parentElement();
+				// wonder if this works...
+				if (img.tagName.toLowerCase() != "img") {
+					img = img.previousSibling;
+				}
+			} else {
+				img = range.startContainer.previousSibling;
+			}
+		} else {
+			img.src = param.f_url;
+		}
+		for (field in param) {
+			var value = param[field];
+			switch (field) {
+			    case "f_alt"    : img.alt	 = value; break;
+			    case "f_border" : img.border = parseInt(value || "0"); break;
+			    case "f_align"  : img.align	 = value; break;
+			    case "f_vert"   : img.vspace = parseInt(value || "0"); break;
+			    case "f_horiz"  : img.hspace = parseInt(value || "0"); break;
+			}
+		}
+	}, outparam);
+};
+
+// Called when the user clicks the Insert Table button
+HTMLArea.prototype._insertTable = function() {
+	var sel = this._getSelection();
+	var range = this._createRange(sel);
+	var editor = this;	// for nested functions
+	this._popupDialog("insert_table.html", function(param) {
+		if (!param) {	// user must have pressed Cancel
+			return false;
+		}
+		var doc = editor._doc;
+		// create the table element
+		var table = doc.createElement("table");
+		// assign the given arguments
+		for (var field in param) {
+			var value = param[field];
+			if (!value) {
+				continue;
+			}
+			switch (field) {
+			    case "f_width"   : table.style.width = value + param["f_unit"]; break;
+			    case "f_align"   : table.align	 = value; break;
+			    case "f_border"  : table.border	 = parseInt(value); break;
+			    case "f_spacing" : table.cellspacing = parseInt(value); break;
+			    case "f_padding" : table.cellpadding = parseInt(value); break;
+			}
+		}
+		var tbody = doc.createElement("tbody");
+		table.appendChild(tbody);
+		for (var i = 0; i < param["f_rows"]; ++i) {
+			var tr = doc.createElement("tr");
+			tbody.appendChild(tr);
+			for (var j = 0; j < param["f_cols"]; ++j) {
+				var td = doc.createElement("td");
+				tr.appendChild(td);
+				// Mozilla likes to see something inside the cell.
+				(HTMLArea.is_gecko) && td.appendChild(doc.createElement("br"));
+			}
+		}
+		if (HTMLArea.is_ie) {
+			range.pasteHTML(table.outerHTML);
+		} else {
+			// insert the table
+			editor.insertNodeAtSelection(table);
+		}
+		return true;
+	}, null);
+};
+
+/***************************************************
+ *  Category: EVENT HANDLERS
+ ***************************************************/
+
+// el is reference to the SELECT object
+// txt is the name of the select field, as in config.toolbar
+HTMLArea.prototype._comboSelected = function(el, txt) {
+	this.focusEditor();
+	var value = el.options[el.selectedIndex].value;
+	switch (txt) {
+	    case "fontname":
+	    case "fontsize": this.execCommand(txt, false, value); break;
+	    case "formatblock":
+		(HTMLArea.is_ie) && (value = "<" + value + ">");
+		this.execCommand(txt, false, value);
+		break;
+	    default:
+		// try to look it up in the registered dropdowns
+		var dropdown = this.config.customSelects[txt];
+		if (typeof dropdown != "undefined") {
+			dropdown.action(this);
+		} else {
+			alert("FIXME: combo box " + txt + " not implemented");
+		}
+	}
+};
+
+// the execCommand function (intercepts some commands and replaces them with
+// our own implementation)
+HTMLArea.prototype.execCommand = function(cmdID, UI, param) {
+	var editor = this;	// for nested functions
+	this.focusEditor();
+	cmdID = cmdID.toLowerCase();
+	switch (cmdID) {
+	    case "htmlmode" : this.setMode(); break;
+	    case "hilitecolor":
+		(HTMLArea.is_ie) && (cmdID = "backcolor");
+	    case "forecolor":
+		this._popupDialog("select_color.html", function(color) {
+			if (color) { // selection not canceled
+				editor._doc.execCommand(cmdID, false, "#" + color);
+			}
+		}, HTMLArea._colorToRgb(this._doc.queryCommandValue(cmdID)));
+		break;
+	    case "createlink":
+		this._createLink();
+		break;
+	    case "popupeditor":
+		// this object will be passed to the newly opened window
+		HTMLArea._object = this;
+		if (HTMLArea.is_ie) {
+			//if (confirm(HTMLArea.I18N.msg["IE-sucks-full-screen"]))
+			{
+				window.open(this.popupURL("fullscreen.html"), "ha_fullscreen",
+					    "toolbar=no,location=no,directories=no,status=no,menubar=no," +
+					    "scrollbars=no,resizable=yes,width=640,height=480");
+			}
+		} else {
+			window.open(this.popupURL("fullscreen.html"), "ha_fullscreen",
+				    "toolbar=no,menubar=no,personalbar=no,width=640,height=480," +
+				    "scrollbars=no,resizable=yes");
+		}
+		break;
+	    case "undo":
+	    case "redo":
+		if (this._customUndo)
+			this[cmdID]();
+		else
+			this._doc.execCommand(cmdID, UI, param);
+		break;
+	    case "inserttable": this._insertTable(); break;
+	    case "insertimage": this._insertImage(); break;
+	    case "about"    : this._popupDialog("about.html", null, this); break;
+	    case "showhelp" : window.open(_editor_url + "reference.html", "ha_help"); break;
+
+	    case "killword": this._wordClean(); break;
+
+	    case "cut":
+	    case "copy":
+	    case "paste":
+		try {
+			if (this.config.killWordOnPaste)
+				this._wordClean();
+			this._doc.execCommand(cmdID, UI, param);
+		} catch (e) {
+			if (HTMLArea.is_gecko) {
+				if (confirm("Unprivileged scripts cannot access Cut/Copy/Paste programatically " +
+					    "for security reasons.  Click OK to see a technical note at mozilla.org " +
+					    "which shows you how to allow a script to access the clipboard."))
+					window.open("http://mozilla.org/editor/midasdemo/securityprefs.html");
+			}
+		}
+		break;
+	    case "lefttoright":
+	    case "righttoleft":
+		var dir = (cmdID == "righttoleft") ? "rtl" : "ltr";
+		var el = this.getParentElement();
+		while (el && !HTMLArea.isBlockElement(el))
+			el = el.parentNode;
+		if (el) {
+			if (el.style.direction == dir)
+				el.style.direction = "";
+			else
+				el.style.direction = dir;
+		}
+		break;
+	    default: this._doc.execCommand(cmdID, UI, param);
+	}
+	this.updateToolbar();
+	return false;
+};
+
+/** A generic event handler for things that happen in the IFRAME's document.
+ * This function also handles key bindings. */
+HTMLArea.prototype._editorEvent = function(ev) {
+	var editor = this;
+	var keyEvent = (HTMLArea.is_ie && ev.type == "keydown") || (ev.type == "keypress");
+	if (keyEvent) {
+		for (var i in editor.plugins) {
+			var plugin = editor.plugins[i].instance;
+			if (typeof plugin.onKeyPress == "function") plugin.onKeyPress(ev);
+		}
+	}
+	if (keyEvent && ev.ctrlKey) {
+		var sel = null;
+		var range = null;
+		var key = String.fromCharCode(HTMLArea.is_ie ? ev.keyCode : ev.charCode).toLowerCase();
+		var cmd = null;
+		var value = null;
+		switch (key) {
+		    case 'a':
+			if (!HTMLArea.is_ie) {
+				// KEY select all
+				sel = this._getSelection();
+				sel.removeAllRanges();
+				range = this._createRange();
+				range.selectNodeContents(this._doc.body);
+				sel.addRange(range);
+				HTMLArea._stopEvent(ev);
+			}
+			break;
+
+			// simple key commands follow
+
+		    case 'b': cmd = "bold"; break;
+		    case 'i': cmd = "italic"; break;
+		    case 'u': cmd = "underline"; break;
+		    case 's': cmd = "strikethrough"; break;
+		    case 'l': cmd = "justifyleft"; break;
+		    case 'e': cmd = "justifycenter"; break;
+		    case 'r': cmd = "justifyright"; break;
+		    case 'j': cmd = "justifyfull"; break;
+		    case 'z': cmd = "undo"; break;
+		    case 'y': cmd = "redo"; break;
+		    case 'v': cmd = "paste"; break;
+
+		    case '0': cmd = "killword"; break;
+
+			// headings
+		    case '1':
+		    case '2':
+		    case '3':
+		    case '4':
+		    case '5':
+		    case '6':
+			cmd = "formatblock";
+			value = "h" + key;
+			if (HTMLArea.is_ie) {
+				value = "<" + value + ">";
+			}
+			break;
+		}
+		if (cmd) {
+			// execute simple command
+			this.execCommand(cmd, false, value);
+			HTMLArea._stopEvent(ev);
+		}
+	}
+	/*
+	else if (keyEvent) {
+		// other keys here
+		switch (ev.keyCode) {
+		    case 13: // KEY enter
+			// if (HTMLArea.is_ie) {
+			this.insertHTML("<br />");
+			HTMLArea._stopEvent(ev);
+			// }
+			break;
+		}
+	}
+	*/
+	// update the toolbar state after some time
+	if (editor._timerToolbar) {
+		clearTimeout(editor._timerToolbar);
+	}
+	editor._timerToolbar = setTimeout(function() {
+		editor.updateToolbar();
+		editor._timerToolbar = null;
+	}, 50);
+};
+
+// retrieve the HTML
+HTMLArea.prototype.getHTML = function() {
+	switch (this._editMode) {
+	    case "wysiwyg"  :
+		if (!this.config.fullPage) {
+			return HTMLArea.getHTML(this._doc.body, false, this);
+		} else
+			return this.doctype + "\n" + HTMLArea.getHTML(this._doc.documentElement, true, this);
+	    case "textmode" : return this._textArea.value;
+	    default	    : alert("Mode <" + mode + "> not defined!");
+	}
+	return false;
+};
+
+// retrieve the HTML (fastest version, but uses innerHTML)
+HTMLArea.prototype.getInnerHTML = function() {
+	switch (this._editMode) {
+	    case "wysiwyg"  :
+		if (!this.config.fullPage)
+			return this._doc.body.innerHTML;
+		else
+			return this.doctype + "\n" + this._doc.documentElement.innerHTML;
+	    case "textmode" : return this._textArea.value;
+	    default	    : alert("Mode <" + mode + "> not defined!");
+	}
+	return false;
+};
+
+// completely change the HTML inside
+HTMLArea.prototype.setHTML = function(html) {
+	switch (this._editMode) {
+	    case "wysiwyg"  :
+		if (!this.config.fullPage)
+			this._doc.body.innerHTML = html;
+		else
+			// this._doc.documentElement.innerHTML = html;
+			this._doc.body.innerHTML = html;
+		break;
+	    case "textmode" : this._textArea.value = html; break;
+	    default	    : alert("Mode <" + mode + "> not defined!");
+	}
+	return false;
+};
+
+// sets the given doctype (useful when config.fullPage is true)
+HTMLArea.prototype.setDoctype = function(doctype) {
+	this.doctype = doctype;
+};
+
+/***************************************************
+ *  Category: UTILITY FUNCTIONS
+ ***************************************************/
+
+// browser identification
+
+HTMLArea.agt = navigator.userAgent.toLowerCase();
+HTMLArea.is_ie	   = ((HTMLArea.agt.indexOf("msie") != -1) && (HTMLArea.agt.indexOf("opera") == -1));
+HTMLArea.is_opera  = (HTMLArea.agt.indexOf("opera") != -1);
+HTMLArea.is_mac	   = (HTMLArea.agt.indexOf("mac") != -1);
+HTMLArea.is_mac_ie = (HTMLArea.is_ie && HTMLArea.is_mac);
+HTMLArea.is_win_ie = (HTMLArea.is_ie && !HTMLArea.is_mac);
+HTMLArea.is_gecko  = (navigator.product == "Gecko");
+
+// variable used to pass the object to the popup editor window.
+HTMLArea._object = null;
+
+// function that returns a clone of the given object
+HTMLArea.cloneObject = function(obj) {
+	var newObj = new Object;
+
+	// check for array objects
+	if (obj.constructor.toString().indexOf("function Array(") == 1) {
+		newObj = obj.constructor();
+	}
+
+	// check for function objects (as usual, IE is fucked up)
+	if (obj.constructor.toString().indexOf("function Function(") == 1) {
+		newObj = obj; // just copy reference to it
+	} else for (var n in obj) {
+		var node = obj[n];
+		if (typeof node == 'object') { newObj[n] = HTMLArea.cloneObject(node); }
+		else                         { newObj[n] = node; }
+	}
+
+	return newObj;
+};
+
+// FIXME!!! this should return false for IE < 5.5
+HTMLArea.checkSupportedBrowser = function() {
+	if (HTMLArea.is_gecko) {
+		if (navigator.productSub < 20021201) {
+			alert("You need at least Mozilla-1.3 Alpha.\n" +
+			      "Sorry, your Gecko is not supported.");
+			return false;
+		}
+		if (navigator.productSub < 20030210) {
+			alert("Mozilla < 1.3 Beta is not supported!\n" +
+			      "I'll try, though, but it might not work.");
+		}
+	}
+	return HTMLArea.is_gecko || HTMLArea.is_ie;
+};
+
+// selection & ranges
+
+// returns the current selection object
+HTMLArea.prototype._getSelection = function() {
+	if (HTMLArea.is_ie) {
+		return this._doc.selection;
+	} else {
+		return this._iframe.contentWindow.getSelection();
+	}
+};
+
+// returns a range for the current selection
+HTMLArea.prototype._createRange = function(sel) {
+	if (HTMLArea.is_ie) {
+		return sel.createRange();
+	} else {
+		this.focusEditor();
+		if (typeof sel != "undefined") {
+			try {
+				return sel.getRangeAt(0);
+			} catch(e) {
+				return this._doc.createRange();
+			}
+		} else {
+			return this._doc.createRange();
+		}
+	}
+};
+
+// event handling
+
+HTMLArea._addEvent = function(el, evname, func) {
+	if (HTMLArea.is_ie) {
+		el.attachEvent("on" + evname, func);
+	} else {
+		el.addEventListener(evname, func, true);
+	}
+};
+
+HTMLArea._addEvents = function(el, evs, func) {
+	for (var i in evs) {
+		HTMLArea._addEvent(el, evs[i], func);
+	}
+};
+
+HTMLArea._removeEvent = function(el, evname, func) {
+	if (HTMLArea.is_ie) {
+		el.detachEvent("on" + evname, func);
+	} else {
+		el.removeEventListener(evname, func, true);
+	}
+};
+
+HTMLArea._removeEvents = function(el, evs, func) {
+	for (var i in evs) {
+		HTMLArea._removeEvent(el, evs[i], func);
+	}
+};
+
+HTMLArea._stopEvent = function(ev) {
+	if (HTMLArea.is_ie) {
+		ev.cancelBubble = true;
+		ev.returnValue = false;
+	} else {
+		ev.preventDefault();
+		ev.stopPropagation();
+	}
+};
+
+HTMLArea._removeClass = function(el, className) {
+	if (!(el && el.className)) {
+		return;
+	}
+	var cls = el.className.split(" ");
+	var ar = new Array();
+	for (var i = cls.length; i > 0;) {
+		if (cls[--i] != className) {
+			ar[ar.length] = cls[i];
+		}
+	}
+	el.className = ar.join(" ");
+};
+
+HTMLArea._addClass = function(el, className) {
+	// remove the class first, if already there
+	HTMLArea._removeClass(el, className);
+	el.className += " " + className;
+};
+
+HTMLArea._hasClass = function(el, className) {
+	if (!(el && el.className)) {
+		return false;
+	}
+	var cls = el.className.split(" ");
+	for (var i = cls.length; i > 0;) {
+		if (cls[--i] == className) {
+			return true;
+		}
+	}
+	return false;
+};
+
+HTMLArea.isBlockElement = function(el) {
+	var blockTags = " body form textarea fieldset ul ol dl li div " +
+		"p h1 h2 h3 h4 h5 h6 quote pre table thead " +
+		"tbody tfoot tr td iframe address ";
+	return (blockTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
+};
+
+HTMLArea.needsClosingTag = function(el) {
+	var closingTags = " head script style div span tr td tbody table em strong font a title ";
+	return (closingTags.indexOf(" " + el.tagName.toLowerCase() + " ") != -1);
+};
+
+// performs HTML encoding of some given string
+HTMLArea.htmlEncode = function(str) {
+	// we don't need regexp for that, but.. so be it for now.
+	str = str.replace(/&/ig, "&amp;");
+	str = str.replace(/</ig, "&lt;");
+	str = str.replace(/>/ig, "&gt;");
+	str = str.replace(/\x22/ig, "&quot;");
+	// \x22 means '"' -- we use hex reprezentation so that we don't disturb
+	// JS compressors (well, at least mine fails.. ;)
+	return str;
+};
+
+// Retrieves the HTML code from the given node.	 This is a replacement for
+// getting innerHTML, using standard DOM calls.
+HTMLArea.getHTML = function(root, outputRoot, editor) {
+	var html = "";
+	switch (root.nodeType) {
+	    case 1: // Node.ELEMENT_NODE
+	    case 11: // Node.DOCUMENT_FRAGMENT_NODE
+		var closed;
+		var i;
+		var root_tag = (root.nodeType == 1) ? root.tagName.toLowerCase() : '';
+		if (HTMLArea.is_ie && root_tag == "head") {
+			if (outputRoot)
+				html += "<head>";
+			// lowercasize
+			var save_multiline = RegExp.multiline;
+			RegExp.multiline = true;
+			var txt = root.innerHTML.replace(HTMLArea.RE_tagName, function(str, p1, p2) {
+				return p1 + p2.toLowerCase();
+			});
+			RegExp.multiline = save_multiline;
+			html += txt;
+			if (outputRoot)
+				html += "</head>";
+			break;
+		} else if (outputRoot) {
+			closed = (!(root.hasChildNodes() || HTMLArea.needsClosingTag(root)));
+			html = "<" + root.tagName.toLowerCase();
+			var attrs = root.attributes;
+			for (i = 0; i < attrs.length; ++i) {
+				var a = attrs.item(i);
+				if (!a.specified) {
+					continue;
+				}
+				var name = a.nodeName.toLowerCase();
+				if (/_moz|contenteditable|_msh/.test(name)) {
+					// avoid certain attributes
+					continue;
+				}
+				var value;
+				if (name != "style") {
+					// IE5.5 reports 25 when cellSpacing is
+					// 1; other values might be doomed too.
+					// For this reason we extract the
+					// values directly from the root node.
+					// I'm starting to HATE JavaScript
+					// development.  Browser differences
+					// suck.
+					//
+					// Using Gecko the values of href and src are converted to absolute links
+					// unless we get them using nodeValue()
+					if (typeof root[a.nodeName] != "undefined" && name != "href" && name != "src") {
+						value = root[a.nodeName];
+					} else {
+						value = a.nodeValue;
+						// IE seems not willing to return the original values - it converts to absolute
+						// links using a.nodeValue, a.value, a.stringValue, root.getAttribute("href")
+						// So we have to strip the baseurl manually -/
+						if (HTMLArea.is_ie && (name == "href" || name == "src")) {
+							value = editor.stripBaseURL(value);
+						}
+					}
+				} else { // IE fails to put style in attributes list
+					// FIXME: cssText reported by IE is UPPERCASE
+					value = root.style.cssText;
+				}
+				if (/(_moz|^$)/.test(value)) {
+					// Mozilla reports some special tags
+					// here; we don't need them.
+					continue;
+				}
+				html += " " + name + '="' + value + '"';
+			}
+			html += closed ? " />" : ">";
+		}
+		for (i = root.firstChild; i; i = i.nextSibling) {
+			html += HTMLArea.getHTML(i, true, editor);
+		}
+		if (outputRoot && !closed) {
+			html += "</" + root.tagName.toLowerCase() + ">";
+		}
+		break;
+	    case 3: // Node.TEXT_NODE
+		// If a text node is alone in an element and all spaces, replace it with an non breaking one
+		// This partially undoes the damage done by moz, which translates '&nbsp;'s into spaces in the data element
+		if ( !root.previousSibling && !root.nextSibling && root.data.match(/^\s*$/i) ) html = '&nbsp;';
+		else html = HTMLArea.htmlEncode(root.data);
+		break;
+	    case 8: // Node.COMMENT_NODE
+		html = "<!--" + root.data + "-->";
+		break;		// skip comments, for now.
+	}
+	return html;
+};
+
+HTMLArea.prototype.stripBaseURL = function(string) {
+	var baseurl = this.config.baseURL;
+
+	// strip to last directory in case baseurl points to a file
+	baseurl = baseurl.replace(/[^\/]+$/, '');
+	var basere = new RegExp(baseurl);
+	string = string.replace(basere, "");
+
+	// strip host-part of URL which is added by MSIE to links relative to server root
+	baseurl = baseurl.replace(/^(https?:\/\/[^\/]+)(.*)$/, '$1');
+	basere = new RegExp(baseurl);
+	return string.replace(basere, "");
+};
+
+String.prototype.trim = function() {
+	a = this.replace(/^\s+/, '');
+	return a.replace(/\s+$/, '');
+};
+
+// creates a rgb-style color from a number
+HTMLArea._makeColor = function(v) {
+	if (typeof v != "number") {
+		// already in rgb (hopefully); IE doesn't get here.
+		return v;
+	}
+	// IE sends number; convert to rgb.
+	var r = v & 0xFF;
+	var g = (v >> 8) & 0xFF;
+	var b = (v >> 16) & 0xFF;
+	return "rgb(" + r + "," + g + "," + b + ")";
+};
+
+// returns hexadecimal color representation from a number or a rgb-style color.
+HTMLArea._colorToRgb = function(v) {
+	if (!v)
+		return '';
+
+	// returns the hex representation of one byte (2 digits)
+	function hex(d) {
+		return (d < 16) ? ("0" + d.toString(16)) : d.toString(16);
+	};
+
+	if (typeof v == "number") {
+		// we're talking to IE here
+		var r = v & 0xFF;
+		var g = (v >> 8) & 0xFF;
+		var b = (v >> 16) & 0xFF;
+		return "#" + hex(r) + hex(g) + hex(b);
+	}
+
+	if (v.substr(0, 3) == "rgb") {
+		// in rgb(...) form -- Mozilla
+		var re = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/;
+		if (v.match(re)) {
+			var r = parseInt(RegExp.$1);
+			var g = parseInt(RegExp.$2);
+			var b = parseInt(RegExp.$3);
+			return "#" + hex(r) + hex(g) + hex(b);
+		}
+		// doesn't match RE?!  maybe uses percentages or float numbers
+		// -- FIXME: not yet implemented.
+		return null;
+	}
+
+	if (v.substr(0, 1) == "#") {
+		// already hex rgb (hopefully :D )
+		return v;
+	}
+
+	// if everything else fails ;)
+	return null;
+};
+
+// modal dialogs for Mozilla (for IE we're using the showModalDialog() call).
+
+// receives an URL to the popup dialog and a function that receives one value;
+// this function will get called after the dialog is closed, with the return
+// value of the dialog.
+HTMLArea.prototype._popupDialog = function(url, action, init) {
+	Dialog(this.popupURL(url), action, init);
+};
+
+// paths
+
+HTMLArea.prototype.imgURL = function(file, plugin) {
+	if (typeof plugin == "undefined")
+		return _editor_url + file;
+	else
+		return _editor_url + "plugins/" + plugin + "/img/" + file;
+};
+
+HTMLArea.prototype.popupURL = function(file) {
+	var url = "";
+	if (file.match(/^plugin:\/\/(.*?)\/(.*)/)) {
+		var plugin = RegExp.$1;
+		var popup = RegExp.$2;
+		if (!/\.html$/.test(popup))
+			popup += ".html";
+		url = _editor_url + "plugins/" + plugin + "/popups/" + popup;
+	} else
+		url = _editor_url + this.config.popupURL + file;
+	return url;
+};
+
+/**
+ * FIX: Internet Explorer returns an item having the _name_ equal to the given
+ * id, even if it's not having any id.  This way it can return a different form
+ * field even if it's not a textarea.  This workarounds the problem by
+ * specifically looking to search only elements having a certain tag name.
+ */
+HTMLArea.getElementById = function(tag, id) {
+	var el, i, objs = document.getElementsByTagName(tag);
+	for (i = objs.length; --i >= 0 && (el = objs[i]);)
+		if (el.id == id)
+			return el;
+	return null;
+};
+
+
+
+// EOF
+// Local variables: //
+// c-basic-offset:8 //
+// indent-tabs-mode:t //
+// End: //
Index: trunk/wb/modules/htmlarea/htmlarea/release-notes.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/release-notes.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/release-notes.html	(revision 103)
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>HTMLArea-3.0-rc1 release notes</title>
+    <style>
+      .fixme { color: red; }
+    </style>
+  </head>
+
+  <body>
+
+    <h1>HTMLArea-3.0-rc1 release notes</h1>
+
+    <p>This release was compiled on Mar  1, 2004 [19:37] GMT.</p>
+
+    <h2>3.0-rc1</h2>
+
+    <p>Changes since 3.0-Beta:</p>
+
+    <ul>
+      <li>
+        <b>New plugins</b>
+        <ul>
+          <li>
+            ContextMenu plugin (provides a nice context menu with common
+            operations, including table ops, link ops, etc.)
+          </li>
+          <li>
+            CSS plugin (provides an easy way to insert/change CSS classes)
+          </li>
+          <li>
+            FullPage plugin (allows HTMLArea to edit a whole HTML file,
+            not only the content within &lt;body&gt;.)
+          </li>
+        </ul>
+      </li>
+      <li>
+        <b>Changes in the SpellChecker plugin</b>
+        <ul>
+          <li>
+            Many bugfixes: now it works ;-)  Fully Unicode-safe.
+          </li>
+          <li>
+            Speed and bandwidth optimization: reports the list of
+            suggestions only once for each mispelled word; this helps
+            in cases where you have, for instance, the word “HTMLArea”
+            in 10 places all over the document; the list of
+            suggestions for it--which is kind of huge--will only be
+            included <em>once</em>.
+          </li>
+          <li>
+            User interface improvements: the highlighted word will
+            remain in view; in cases where it's normally outside, the
+            window will be scrolled to it.
+          </li>
+          <li>
+            Added a "Revert" button for those that change their minds ;-)
+          </li>
+          <li>
+            Added a "Info" button which reports information about the
+            document, retrieved by the server-side spell checker:
+            total number of words, total number of mispelled words,
+            number of suggestions made, spell check time, etc.  More
+            can be easily added.  <span class="fixme">FIXME: this part
+            is not yet internationalized.</span>
+          </li>
+          <li>
+            The server-side spell checker now uses XML::DOM instead of
+            HTML::Parser, which means that it will be unable to parse
+            “tag-soup” HTML.  It needs valid code.  Usually HTMLArea
+            generates valid code, but on rare occasions it might fail
+            and the spell checker will report a gross error message.
+            This gonna have to be fixed, but instead of making the
+            spell checker accept invalid HTML I prefer to make
+            HTMLArea generate valid code, so changes are to be done in
+            other places ;-)
+          </li>
+        </ul>
+      </li>
+      <li>
+        <b>Changes in the core editor</b>
+        <ul>
+          <li>
+            Easier to setup: you only need to load
+            <tt>htmlarea.js</tt>; other scripts will be loaded
+            automatically.  <a href="reference.html">Documentation</a>
+            and <a href="examples/">examples</a> updated.
+          </li>
+          <li>
+            Better plugin support (they register information about
+            themselves with the editor; can register event handlers for
+            the editor, etc.)
+          </li>
+          <li>
+            New about box; check it out, it's cool ;-)
+          </li>
+          <li>
+            Word cleaner (can be enabled to automatically kill Word crap
+            on paste (see Config.killWordOnPaste); otherwise accessible by
+            pressing CTRL-0 in the editor; a toolbar button will come up
+            soon)
+          </li>
+          <li>
+            Image preview in "insert image" dialog.  Also allows
+            modification of current image, if selected.
+          </li>
+          <li>
+            New "insert link" dialog, allows target and title
+            specification, allows editing links.
+          </li>
+          <li>
+            Implemented support for text direction (left-to-right or
+            right-to-left).
+          </li>
+          <li>
+            Lots of bug fixes!  ... and more, I guess ;-) an
+            automatically generated <a href="ChangeLog">change log</a>
+            is now available.
+          </li>
+        </ul>
+      </li>
+    </ul>
+
+    <p>I don't have the power to go through the <a
+href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug
+system</a> at SourceForge
+    now.  Some of the bugs reported there may be fixed; I'll update
+    their status, some other time.  If you reported bugs there and now
+    find them to be fixed, please let me know.</p>
+
+    <h2>3.0-Beta</h2>
+
+    <p>Changes since 3.0-Alpha:</p>
+
+    <ul>
+
+      <li>Performance improvements.</li>
+
+      <li>Many bugs fixed.</li>
+
+      <li>Plugin infrastructure.</li>
+
+      <li>TableOperations plugin.</li>
+
+      <li>SpellChecker plugin.</li>
+
+      <li>Status bar.</li>
+
+      <li>API for registering custom buttons and drop-down boxes in the
+        toolbar.</li>
+
+      <li>Toolbar can contain text labels.</li>
+
+      <li>Cut, copy, paste, undo, redo buttons.</li>
+
+    </ul>
+    <hr />
+    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
+<!-- Created: Sun Aug  3 16:55:08 EEST 2003 -->
+<!-- hhmts start --> Last modified: Sun Feb  1 13:16:10 EET 2004 <!-- hhmts end -->
+<!-- doc-lang: English -->
+  </body>
+</html>
+
+
Index: trunk/wb/modules/htmlarea/htmlarea/dialog.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/dialog.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/dialog.js	(revision 103)
@@ -0,0 +1,72 @@
+// htmlArea 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.1.1 2005/01/30 10:31:05 rdjurovich 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) {
+	if (Dialog._modal && !Dialog._modal.closed) {
+		Dialog._modal.focus();
+		HTMLArea._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 dlg = window.open(url, "hadialog",
+			      "toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
+			      "scrollbars=no,resizable=yes");
+	Dialog._modal = dlg;
+	Dialog._arguments = init;
+
+	// capture some window's events
+	function capwin(w) {
+		HTMLArea._addEvent(w, "click", Dialog._parentEvent);
+		HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent);
+		HTMLArea._addEvent(w, "focus", Dialog._parentEvent);
+	};
+	// release the captured events
+	function relwin(w) {
+		HTMLArea._removeEvent(w, "click", Dialog._parentEvent);
+		HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent);
+		HTMLArea._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;
+	};
+};
Index: trunk/wb/modules/htmlarea/htmlarea/index.html
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/index.html	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/index.html	(revision 103)
@@ -0,0 +1,199 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
+<html>
+  <head>
+    <title>HTMLArea -- the free, customizable online editor</title>
+
+    <style type="text/css">
+      html, body { font-family: georgia,"times new roman",serif; background-color: #fff; color: #000; }
+      .label { text-align: right; padding-right: 0.3em; }
+      .bline { border-bottom: 1px solid #aaa; }
+    </style>
+  </head>
+
+  <body>
+    <div style="float: right; border: 1px solid #aaa; background-color: #eee; padding: 3px; margin-left: 10px; margin-bottom: 10px;">
+      <table cellspacing="0" cellpadding="0" border="0">
+        <tr>
+          <td class="label">Version:</td><td>3.0</td>
+        </tr>
+        <tr>
+          <td class="label">Release:</td><td>rc1 (<a href="release-notes.html">release notes</a>)</td>
+        </tr>
+        <tr>
+          <td class="label bline">Compiled at:</td><td class="bline">Mar  1, 2004 [19:37] GMT</td>
+        </tr>
+        <tr>
+          <td class="label">SourceForge page:</td><td><a href="http://sf.net/projects/itools-htmlarea/">http://sf.net/projects/itools-htmlarea/</a></td>
+      </table>
+    </div>
+    <h1>HTMLArea -- the free<br/>customizable online editor</h1>
+
+    <p>
+      HTMLArea is a free, customizable online editor.  It works inside your
+      browser.  It uses a non-standard feature implemented in Internet
+      Explorer 5.5 or better for Windows and Mozilla 1.3 or better (any
+      platform), therefore it will only work in one of these browsers.
+    </p>
+
+    <p>
+      HTMLArea is copyright <a
+      href="http://interactivetools.com">InteractiveTools.com</a> and <a
+      href="http://dynarch.com">Dynarch.com</a> and it is
+      released under a BSD-style license.  HTMLArea is created and developed
+      upto version 2.03 by InteractiveTools.com.  Version 3.0 developed by
+      <a href="http://dynarch.com/mishoo/">Mihai Bazon</a> for
+      InteractiveTools.  It contains code sponsored by third-party companies as well.
+      Please see our About Box for details about who sponsored what plugins.
+    </p>
+
+    <h2>Online demos</h2>
+
+    <ul>
+
+      <li><a href="examples/core.html">HTMLArea standard</a> -- contains the core
+        editor.</li>
+
+      <li><a href="examples/table-operations.html">HTMLArea + tables</a> --
+        loads the <tt>TableOperations</tt> plugin which provides some extra
+        editing features for tables.</li>
+
+      <li><a href="examples/spell-checker.html">HTMLArea + spell checher</a>
+        -- loads the <tt>SpellChecker</tt> plugin which provides what its
+        name says: a spell checker.  This one requires additional support on
+        the server-side.</li>
+
+      <li><a href="examples/full-page.html">HTMLArea Full HTML Editor</a> --
+        loads the <tt>FullPage</tt> plugin which allows you to edit a full
+        HTML page, including &lt;title&gt;, &lt;!DOCTYPE...&gt; and some
+        other options.</li>
+
+      <li><a href="examples/context-menu.html">HTMLArea with Context
+          Menu</a> -- this plugin provides a nice and useful context menu.</li>
+
+      <li><a href="examples/fully-loaded.html">HTMLArea fully loaded</a> --
+        all of the above. ;-)</li>
+
+    </ul>
+
+    <h2>Installation</h2>
+
+    <p>
+      Installation is (or should be) easy.  You need to unpack the ZIP file
+      in a directory accessible through your webserver.  Supposing you
+      unpack in your <tt>DocumentRoot</tt> and your <tt>DocumentRoot</tt> is
+      <tt>/var/www/html</tt> as in a standard RedHat installation, you need
+      to acomplish the following steps: (the example is for a Unix-like
+      operating system)
+    </p>
+
+    <pre style="margin-left: 2em"
+>
+cd /var/www/html
+unzip /path/to/archive/HTMLArea-3.0-rc1.zip
+mv HTMLArea-3.0-rc1 htmlarea
+find htmlarea/ -type f -exec chmod 644 {} \;
+find htmlarea/ -type d -exec chmod 755 {} \;
+find htmlarea/ -name "*.cgi" -exec chmod 755 {} \;</pre>
+
+    <p>
+      <strong>Notes.</strong> You may chose to symlink "htmlarea" to "HTMLArea-3.0-rc1", in which case your server needs to be configured to
+      "<tt>FollowSymLinks</tt>".  You need to make sure that *.cgi files are
+      interpreted as CGI scripts.  If you want to use the SpellChecker
+      plugin you need to have a recent version of Perl installed (I
+      recommend 5.8.0) on the server, and the module Text::Aspell, available
+      from CPAN.  More info in "<a
+      href="plugins/SpellChecker/readme-tech.html">plugins/SpellChecker/readme-tech.html</a>".
+    </p>
+
+    <p>About how to setup your pages to use the editor, please read the
+      [outdated yet generally valid] <a
+        href="reference.html">documentation</a>.</p>
+
+    <h2>Status and links</h2>
+
+    <p>HTMLArea has reached version 3.0.  As of this version, it
+      supports:</p>
+
+    <ul>
+
+      <li>Customizable toolbar</li>
+
+      <li>Easy internationalization</li>
+
+      <li>Plugin-based infrastructure</li>
+
+      <li>Delivers W3-compliant HTML (with few exceptions)</li>
+
+      <li>Has a subset of Microsoft Word's keyboard shortcuts</li>
+
+      <li>Full-screen editor</li>
+
+      <li>Advanced table operations (by external plugin
+        "TableOperations")</li>
+
+      <li>Spell checker (by external plugin "SpellChecker")</li>
+
+      <li>probably more... ;-)</li>
+
+    </ul>
+
+    <p>We have a <a
+    href="http://sourceforge.net/projects/itools-htmlarea/">project page</a>
+    at <a href="http://sourceforge.net">SourceForge.net</a>.  There you can
+    also find out <a href="http://sourceforge.net/cvs/?group_id=69750">how
+    to retrieve the code from CVS</a>, or you can <a
+    href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/itools-htmlarea">browse
+    the CVS online</a>.  We also have a <a
+    href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug
+    system</a>, a <a
+    href="http://sourceforge.net/tracker/?atid=525658&group_id=69750&func=browse">patch
+    tracking system</a> and a <a
+    href="http://sourceforge.net/tracker/?atid=525659&group_id=69750&func=browse">feature
+    request page</a>.</p>
+
+    <p>We invite you to say everything you want about HTMLArea <a
+    href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">on the
+    forums</a> at InteractiveTools.com.  There you should also find the
+    latest news.</p>
+
+    <p>Sometimes I post news about the latest developments on <a
+    href="http://dynarch.com/mishoo/">my personal homepage</a>.</p>
+
+    <h2>"It doesn't work, what's wrong?"</h2>
+
+    <p>If it doesn't work, you have several options:</p>
+
+    <ul>
+
+      <li>Post a message to the forum.  Describe your problem in as much
+      detail as possible.  Include errors you might find in the JavaScript
+      console (if you are a Mozilla user), or errors displayed by IE (though
+      they're most of the times useless).</li>
+
+      <li>If you're positive that you discovered a bug in HTMLArea then feel
+      free to fill a bug report in our bug system.  If you have the time you
+      should check to see if a similar bug was reported or not; it might be
+      fixed already in the CVS ;-) If you're positive that a similar bug was
+      not yet reported, do fill a bug report and please include as much
+      detail as possible, such as your browser, OS, errors from JavaScript
+      console, etc.</li>
+
+      <li>If you want a new feature to be implemented, post it on the
+      features request and someone will hopefully take care of it.</li>
+
+    </ul>
+
+    <p>You can <a href="mailto:mishoo@infoiasi.ro">contact me directly</a>
+    <em>only</em> if you want to pay me for implementing custom features to
+    HTMLArea.  If you want to sponsor these features (that is, allow them to
+    get back into the public HTMLArea distribution) I'll be cheaper. ;-)</p>
+
+    <hr />
+    <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
+<!-- Created: Sun Aug  3 14:11:26 EEST 2003 -->
+<!-- hhmts start --> Last modified: Wed Jan 28 11:54:47 EET 2004 <!-- hhmts end -->
+<!-- doc-lang: English -->
+  </body>
+</html>
+
+
Index: trunk/wb/modules/htmlarea/htmlarea/popupwin.js
===================================================================
--- trunk/wb/modules/htmlarea/htmlarea/popupwin.js	(nonexistent)
+++ trunk/wb/modules/htmlarea/htmlarea/popupwin.js	(revision 103)
@@ -0,0 +1,139 @@
+// (c) dynarch.com 2003-2004
+// Distributed under the same terms as HTMLArea itself.
+
+function PopupWin(editor, title, handler, initFunction) {
+	this.editor = editor;
+	this.handler = handler;
+	var dlg = window.open("", "__ha_dialog",
+			      "toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
+			      "scrollbars=no,resizable=no");
+	this.window = dlg;
+	var doc = dlg.document;
+	this.doc = doc;
+	var self = this;
+
+	var base = document.baseURI || document.URL;
+	if (base && base.match(/(.*)\/([^\/]+)/)) {
+		base = RegExp.$1 + "/";
+	}
+	if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
+		// _editor_url doesn't start with '/' which means it's relative
+		// FIXME: there's a problem here, it could be http:// which
+		// doesn't start with slash but it's not relative either.
+		base += _editor_url;
+	} else
+		base = _editor_url;
+	if (!/\/$/.test(base)) {
+		// base does not end in slash, add it now
+		base += '/';
+	}
+	this.baseURL = base;
+
+	doc.open();
+	var html = "<html><head><title>" + title + "</title>\n";
+	// html += "<base href='" + base + "htmlarea.js' />\n";
+	html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
+	html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
+	doc.write(html);
+	doc.close();
+
+	// sometimes I Hate Mozilla... ;-(
+	function init2() {
+		var body = doc.body;
+		if (!body) {
+			setTimeout(init2, 25);
+			return false;
+		}
+		dlg.title = title;
+		doc.documentElement.style.padding = "0px";
+		doc.documentElement.style.margin = "0px";
+		var content = doc.createElement("div");
+		content.className = "content";
+		self.content = content;
+		body.appendChild(content);
+		self.element = body;
+		initFunction(self);
+		dlg.focus();
+	};
+	init2();
+};
+
+PopupWin.prototype.callHandler = function() {
+	var tags = ["input", "textarea", "select"];
+	var params = new Object();
+	for (var ti in tags) {
+		var tag = tags[ti];
+		var els = this.content.getElementsByTagName(tag);
+		for (var j = 0; j < els.length; ++j) {
+			var el = els[j];
+			var val = el.value;
+			if (el.tagName.toLowerCase() == "input") {
+				if (el.type == "checkbox") {
+					val = el.checked;
+				}
+			}
+			params[el.name] = val;
+		}
+	}
+	this.handler(this, params);
+	return false;
+};
+
+PopupWin.prototype.close = function() {
+	this.window.close();
+};
+
+PopupWin.prototype.addButtons = function() {
+	var self = this;
+	var div = this.doc.createElement("div");
+	this.content.appendChild(div);
+	div.className = "buttons";
+	for (var i = 0; i < arguments.length; ++i) {
+		var btn = arguments[i];
+		var button = this.doc.createElement("button");
+		div.appendChild(button);
+		button.innerHTML = HTMLArea.I18N.buttons[btn];
+		switch (btn) {
+		    case "ok":
+			button.onclick = function() {
+				self.callHandler();
+				self.close();
+				return false;
+			};
+			break;
+		    case "cancel":
+			button.onclick = function() {
+				self.close();
+				return false;
+			};
+			break;
+		}
+	}
+};
+
+PopupWin.prototype.showAtElement = function() {
+	var self = this;
+	// Mozilla needs some time to realize what's goin' on..
+	setTimeout(function() {
+		var w = self.content.offsetWidth + 4;
+		var h = self.content.offsetHeight + 4;
+		// size to content -- that's fuckin' buggy in all fuckin' browsers!!!
+		// so that we set a larger size for the dialog window and then center
+		// the element inside... phuck!
+
+		// center...
+		var el = self.content;
+		var s = el.style;
+		// s.width = el.offsetWidth + "px";
+		// s.height = el.offsetHeight + "px";
+		s.position = "absolute";
+		s.left = (w - el.offsetWidth) / 2 + "px";
+		s.top = (h - el.offsetHeight) / 2 + "px";
+		if (HTMLArea.is_gecko) {
+			self.window.innerWidth = w;
+			self.window.innerHeight = h;
+		} else {
+			self.window.resizeTo(w + 8, h + 35);
+		}
+	}, 25);
+};
Index: trunk/wb/modules/htmlarea/uninstall.php
===================================================================
--- trunk/wb/modules/htmlarea/uninstall.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/uninstall.php	(revision 103)
@@ -0,0 +1,9 @@
+<?php
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Delete the editor directory
+rm_full_dir(WB_PATH.'/modules/htmlarea/htmlarea');
+
+?>
Index: trunk/wb/modules/htmlarea/info.php
===================================================================
--- trunk/wb/modules/htmlarea/info.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/info.php	(revision 103)
@@ -0,0 +1,11 @@
+<?php
+
+$module_directory = 'htmlarea';
+$module_name = 'HTMLArea';
+$module_type = 'WYSIWYG';
+$module_version = '0.1';
+$module_designed_for = '2.5.x';
+$module_author = 'Ryan Djurovich, Stefan Braunewell';
+$module_description = 'This module allows you to edit the contents of a page using HTMLArea Editor.';
+
+?>
Index: trunk/wb/modules/htmlarea/include.php
===================================================================
--- trunk/wb/modules/htmlarea/include.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/include.php	(revision 103)
@@ -0,0 +1,32 @@
+<?php
+      $WB_DIRECTORY = substr(WB_PATH, strlen($_SERVER['DOCUMENT_ROOT'])).'/media/';
+?>
+
+<script type="text/javascript">
+  _editor_url = "<?php echo WB_URL;?>/modules/htmlarea/htmlarea/";
+  _editor_lang = "en";
+</script>
+
+<script type="text/javascript" src="<?php echo WB_URL;?>/modules/htmlarea/htmlarea/htmlarea.js"></script>
+<script type="text/javascript">
+	HTMLArea.loadPlugin("ContextMenu");
+	HTMLArea.loadPlugin("TableOperations");
+	window.onload = function() {
+<?php
+	foreach($id_list AS $textarea_id)
+	{
+		echo 'var editor = new HTMLArea("'.$textarea_id.'"); '
+		.'editor.registerPlugin(ContextMenu);'
+		.'editor.registerPlugin(TableOperations);'
+		.'editor.config.pageStyle = "body { '.stripslashes(WYSIWYG_STYLE).' }";'
+		.'editor.generate();';
+	}
+?>
+}
+</script>
+
+<?php
+	function show_wysiwyg_editor($name,$id,$content,$width,$height) {
+		echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
+	}
+?>
Index: trunk/wb/modules/htmlarea/install.php
===================================================================
--- trunk/wb/modules/htmlarea/install.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/install.php	(revision 103)
@@ -0,0 +1,24 @@
+<?php
+
+if(defined('WB_URL')) {
+
+	// Set the filename of the actual editor file
+	$editor_file = $module_dir.'/htmlarea.zip';
+	
+	// Setup the PclZip object
+	$editor_archive = new PclZip($editor_file);
+
+	// Unzip FCKeditor to the module dir
+	$list = $editor_archive->extract(PCLZIP_OPT_PATH, $module_dir);
+	if(!$list) {
+		$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNZIP']);
+	}
+	// Delete the zip file
+	if(file_exists($editor_file)) { unlink($editor_file); }
+	
+	// Chmod all the editors files
+	chmod_directory_contents($module_dir.'/htmlarea', OCTAL_FILE_MODE);
+	
+}
+
+?>
Index: trunk/wb/modules/htmlarea/index.php
===================================================================
--- trunk/wb/modules/htmlarea/index.php	(nonexistent)
+++ trunk/wb/modules/htmlarea/index.php	(revision 103)
@@ -0,0 +1,5 @@
+<?php
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: trunk/wb/templates/allcss/info.php
===================================================================
--- trunk/wb/templates/allcss/info.php	(nonexistent)
+++ trunk/wb/templates/allcss/info.php	(revision 103)
@@ -0,0 +1,33 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$template_directory = 'allcss';
+$template_name = 'All CSS';
+$template_version = '2.5';
+$template_designed_for = '2.x';
+$template_author = 'Ryan Djurovich';
+$template_description = 'This template is designed with one goal in mind: to completely control lay-out with css. In case you were wondering, that is where the name came from.';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/templates/allcss/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/allcss/index.php
===================================================================
--- trunk/wb/templates/allcss/index.php	(nonexistent)
+++ trunk/wb/templates/allcss/index.php	(revision 103)
@@ -0,0 +1,110 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+?>
+<!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" xml:lang="en" lang="en">
+<head>
+<title><?php page_title(); ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="description" content="<?php page_description(); ?>" />
+<meta name="keywords" content="<?php page_keywords(); ?>" />
+<link href="<?php echo TEMPLATE_DIR; ?>/screen.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="<?php echo TEMPLATE_DIR; ?>/print.css" rel="stylesheet" type="text/css" media="print" />
+</head>
+<body>
+
+<div class="main">
+	
+	<div class="banner">
+		<a href="<?php echo WB_URL; ?>/" target="_top"><?php echo WEBSITE_TITLE; ?></a>
+		<font color="#D0D0D0">| <?php echo PAGE_TITLE; ?></font>
+	</div>
+	
+	<div class="search_box">
+		<?php if(SHOW_SEARCH) { ?>
+		<form name="search" action="<?php echo WB_URL.'/search/index'.PAGE_EXTENSION; ?>" method="post">
+		<input type="text" name="string" class="search_string" />
+		<input type="submit" name="submit" value="Search" class="search_submit" />
+		</form>
+		<?php } ?>
+	</div>
+	
+	<?php
+	// Only show menu items if we are supposed to
+	if(SHOW_MENU) {
+	?>	
+	<div class="menu">
+		<?php page_menu(0, 1, '<li class="menu_main"[class]>[a][menu_title][/a]</li>', '<ul>', '</ul>', '', ' style="font-weight: bold;"'); ?>
+		
+		<?php
+		if(FRONTEND_LOGIN == 'enabled' AND VISIBILITY != 'private' AND $admin->get_session('USER_ID') == '') {
+		?>
+		<form name="login" action="<?php echo LOGIN_URL; ?>" method="post" class="login_table">
+			<h1><?php echo $TEXT['LOGIN']; ?></h1>
+			<?php echo $TEXT['USERNAME']; ?>:
+			<input type="text" name="username" style="text-transform: lowercase;" />
+			<?php echo $TEXT['PASSWORD']; ?>:
+			<input type="password" name="password" />
+			<input type="submit" name="submit" value="<?php echo $TEXT['LOGIN']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
+			<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
+				<?php if(is_numeric(FRONTEND_SIGNUP)) { ?>
+					<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
+				<?php } ?>
+		</form>
+		<?php
+		} elseif(FRONTEND_LOGIN == 'enabled' AND is_numeric($admin->get_session('USER_ID'))) {
+		?>
+		<form name="logout" action="<?php echo LOGOUT_URL; ?>" method="post" class="login_table">
+			<h1><?php echo $TEXT['LOGGED_IN']; ?></h1>
+			<?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $admin->get_display_name(); ?>
+			<br />
+			<input type="submit" name="submit" value="<?php echo $MENU['LOGOUT']; ?>" />
+			<br />
+			<a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a>
+			<a href="<?php echo ADMIN_URL; ?>/index.php"><?php echo $TEXT['ADMINISTRATION']; ?></a>
+		</form>
+		<?php
+		}
+		?>
+	</div>
+	<?php } ?>
+	
+	<div class="content">
+		<?php page_content(); ?>
+	</div>
+	
+	<div class="footer">
+		<?php page_footer(); ?>
+	</div>
+	
+</div>
+
+<div class="powered_by">
+	Powered by <a href="http://www.websitebaker.org" target="_blank">Website Baker</a>
+</div>
+
+</body>
+</html>
\ No newline at end of file

Property changes on: trunk/wb/templates/allcss/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/allcss/print.css
===================================================================
--- trunk/wb/templates/allcss/print.css	(nonexistent)
+++ trunk/wb/templates/allcss/print.css	(revision 103)
@@ -0,0 +1,71 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #660033;
+	text-decoration: none;
+}
+a:hover {
+	color: #993366;
+	text-decoration: none;
+}
+hr {
+	margin: 15px 0px 15px 0px;
+	color: #660033;
+	height: 1px;
+	width: 100%;
+}
+h1 {
+	font-size: 15px;
+	color: #993366;
+	margin: 5px 0px 5px 0px;
+}
+form {
+	margin: 0;
+}
+.main {
+	width: 100%;
+	margin: 0;
+	padding: 0;
+}
+.banner {
+	font-size: 20px;
+	font-weight: bold;
+	color: #FFFFFF;
+	padding-bottom: 20px;
+	text-align: center;
+}
+.search_box {
+	display: none;
+}
+.menu {
+	display: none;
+}
+.menu ul, .menu li {
+	display: none;
+}
+.login_table {
+	display: none;
+}
+.content {
+	margin: 0;
+	text-align: justify;
+}
+.footer {
+	clear: both;
+	height: 20px;
+	background: #FFFFFF;
+	font-size: 10px;
+	color: #666666;
+	text-align: center;
+	padding-top: 20px;
+}
+.powered_by {
+	display: none;
+}
\ No newline at end of file

Property changes on: trunk/wb/templates/allcss/print.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/allcss/screen.css
===================================================================
--- trunk/wb/templates/allcss/screen.css	(nonexistent)
+++ trunk/wb/templates/allcss/screen.css	(revision 103)
@@ -0,0 +1,145 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #F0F0F0;
+	background-image: url(background.jpg);
+	margin: 0;
+}
+a:link, a:visited, a:active {
+	color: #660033;
+	text-decoration: none;
+}
+a:hover {
+	color: #993366;
+	text-decoration: none;
+}
+hr {
+	margin: 5px 0px 5px 0px;
+	color: #660033;
+	border: 0;
+	border-top: 1px solid #660033;
+	height: 1px;
+	width: 580px;
+}
+h1 {
+	font-size: 16px;
+	color: #993366;
+	text-align: left;
+	margin: 8px 2px 8px 2px;
+}
+form {
+	margin: 0;
+}
+.main {
+	width: 750px;
+	margin: auto;
+	padding: 0;
+	background-color: #FFFFFF;
+}
+.banner, .search_box {
+	height: 80px;
+	background-image: url(header.jpg);
+	background-repeat: repeat-x;
+	font-size: 20px;
+	font-weight: bold;
+	color: #FFFFFF;
+	text-align: center;
+	padding-top: 20px;
+}
+.banner {
+	width: 530px;
+	padding-left: 20px;
+	float: left;
+	text-align: left;
+}
+.search_box {
+	float: right;
+	clear: right;
+	width: 200px;
+}
+.search_string {
+	width: 100px;
+	height: 16px;
+	font-size: 10px;
+	vertical-align: middle;
+}
+.search_submit {
+	width: 50px;
+	height: 22px;
+	font-size: 10px;
+	vertical-align: middle;
+}
+.banner a {
+	color: #FFFFFF;
+}
+.menu {
+	float: left;
+	width: 140px;
+	margin: 10px;
+	margin-top: 3px;
+}
+.menu ul, .menu li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	margin-bottom: 5px;
+}
+.menu ul ul {
+	padding-left: 8px;
+}
+.menu a:link, .menu a:visited, .menu a:active, .menu a:hover {
+	display: block;
+	padding: 2px;
+}
+.menu_main a:link, .menu_main a:visited, .menu_main a:active {
+	border-bottom: 1px dashed #999999;
+}
+.menu_main a:hover {
+	border-bottom: 1px dashed #333333;
+}
+.login_table {
+	border: 1px solid #D0D0D0;
+	margin-top: 20px;
+	margin-bottom: 5px;
+	text-align: center;
+	padding-bottom: 3px;
+}
+.login_table h1 {
+	color: #660033;
+	font-size: 12px;
+	text-transform: uppercase;
+	font-weight: bold;
+	text-align: center;
+	margin: 5px 0px 5px 0px;
+}
+.login_table input {
+	text-transform: uppercase;
+	font-size: 10px;
+	margin: 5px 0px 1px 0px;
+	width: 100px;
+}
+.content {
+	margin-left: 150px;
+	padding: 4px 10px 14px 10px;
+	text-align: justify;
+	clear: right;
+}
+.footer {
+	background-color: #FFFFFF;
+	clear: both;
+	height: 20px;
+	background-image: url(footer.jpg);
+	background-repeat: repeat-x;
+	font-size: 10px;
+	color: #666666;
+	text-align: center;
+	line-height: 18px;
+}
+.powered_by {
+	text-align: center;
+	font-size: 10px;
+	padding-top: 2px;
+}
\ No newline at end of file

Property changes on: trunk/wb/templates/allcss/screen.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/allcss/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/allcss/header.jpg
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/allcss/footer.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/allcss/footer.jpg
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/allcss/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/allcss/background.jpg
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/round/info.php
===================================================================
--- trunk/wb/templates/round/info.php	(nonexistent)
+++ trunk/wb/templates/round/info.php	(revision 103)
@@ -0,0 +1,33 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$template_directory = 'round';
+$template_name = 'Round';
+$template_version = '2.5';
+$template_designed_for = '2.x';
+$template_author = 'Ryan Djurovich';
+$template_description = 'Default template for Website Baker 2.2.x. Simular to the box template, but with rounded edges.';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/templates/round/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/round/index.php
===================================================================
--- trunk/wb/templates/round/index.php	(nonexistent)
+++ trunk/wb/templates/round/index.php	(revision 103)
@@ -0,0 +1,227 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+?>
+<!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" xml:lang="en" lang="en">
+<head>
+<title><?php page_title(); ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="description" content="<?php page_description(); ?>" />
+<meta name="keywords" content="<?php page_keywords(); ?>" />
+<link href="<?php echo TEMPLATE_DIR; ?>/screen.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="<?php echo TEMPLATE_DIR; ?>/print.css" rel="stylesheet" type="text/css" media="print" />
+</head>
+<body>
+
+<table cellpadding="0" cellspacing="0" border="0" align="center" class="main" width="750">
+<tr>
+	<td colspan="2" class="header" height="80">
+		<a href="<?php echo WB_URL; ?>"><img src="<?php echo TEMPLATE_DIR; ?>/banner.jpg" border="0" width="750" height="80" alt="<?php page_title('', '[WEBSITE_TITLE]'); ?>" /></a>
+	</td>
+</tr>
+<tr>
+	<?php
+	// Only show menu items if we are supposed to
+	if(SHOW_MENU) {
+	?>	
+	<td style="padding: 10px; background-color: #FFFFFF;" valign="top">
+		<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" class="menu">
+		<tr>
+			<td class="border">
+				<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
+			</td>
+		</tr>
+		<tr>
+			<td width="170">
+				<?php page_menu(); ?>
+			</td>
+		</tr>
+		<tr>
+			<td class="border">
+				<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
+			</td>
+		</tr>
+		</table>
+		
+		<?php if(SHOW_SEARCH) { ?>
+		<form name="search" action="<?php echo WB_URL.'/search/index'.PAGE_EXTENSION; ?>" method="post">
+			<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
+				<tr>
+					<td class="border">
+						<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
+					</td>
+				</tr>
+				<tr>
+					<td class="login">
+						<input type="text" name="string" />
+					</td>
+				</tr>
+				<tr>
+					<td class="login">
+
+						<input type="submit" name="submit" value="<?php if(isset($TEXT['SUBMIT'])) { echo $TEXT['SEARCH']; } else { echo 'Search'; } ?>" />
+					</td>
+				</tr>
+				<tr>
+					<td class="border">
+						<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
+					</td>
+				</tr>
+			</table>
+		</form>
+		<?php } ?>
+		
+		<?php
+		if(FRONTEND_LOGIN AND !$admin->is_authenticated()) {
+		?>
+		<form name="login" action="<?php echo LOGIN_URL; ?>" method="post">
+			
+			<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-transform: uppercase;">
+					<b><?php echo $TEXT['LOGIN']; ?></b>
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-align: left;">
+					<?php echo $TEXT['USERNAME']; ?>:
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="text" name="username" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-align: left;">
+					<?php echo $TEXT['PASSWORD']; ?>:
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="password" name="password" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="submit" name="submit" value="<?php echo $TEXT['LOGIN']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
+					<?php if(is_numeric(FRONTEND_SIGNUP)) { ?>
+						<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
+					<?php } ?>
+				</td>
+			</tr>
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
+				</td>
+			</tr>
+			</table>
+		
+		</form>
+		<?php
+		} elseif(FRONTEND_LOGIN AND $admin->is_authenticated()) {
+		?>
+		<form name="logout" action="<?php echo LOGOUT_URL; ?>" method="post">
+			
+			<table cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/menu_top.gif" border="0" alt="" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-transform: uppercase;">
+					<b><?php echo $TEXT['LOGGED_IN']; ?></b>
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="padding-top: 15px; padding-bottom: 15px;">
+					<?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $admin->get_display_name(); ?>
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="submit" name="submit" value="<?php echo $MENU['LOGOUT']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a>
+				</td>
+			</tr>
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/menu_bottom.gif" border="0" alt="" />
+				</td>
+			</tr>
+			</table>
+		
+		</form>
+		<?php
+		}
+		?>
+	</td>
+	<?php } ?>
+	<td class="content" width="600" rowspan="2">
+		<?php page_content(); ?>
+	</td>
+</tr>
+<tr>
+	<?php
+	// Only show menu items if we are supposed to
+	if(defined('SHOW_MENU') AND SHOW_MENU == true) {
+	?>	
+	<td height="20" width="155" valign="bottom" class="powered_by">
+		<a href="http://www.websitebaker.org/" target="_blank">
+			<img src="<?php echo TEMPLATE_DIR; ?>/powered.jpg" border="0" alt="Powered By Website Baker" />
+		</a>
+	</td>
+	<?php } ?>
+</tr>
+<tr>
+	<td colspan="2" class="border">
+		<img src="<?php echo TEMPLATE_DIR; ?>/footer.png" border="0" alt="" />
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="footer">
+		<?php page_footer(); ?>
+	</td>
+</tr>
+</table>
+
+</body>
+</html>
\ No newline at end of file

Property changes on: trunk/wb/templates/round/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/round/footer.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/round/footer.png
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/round/print.css
===================================================================
--- trunk/wb/templates/round/print.css	(nonexistent)
+++ trunk/wb/templates/round/print.css	(revision 103)
@@ -0,0 +1,23 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+.header, .menu, .search, .powered_by, .footer {
+	display: none;
+}
+.content {
+	vertical-align: top;
+}
\ No newline at end of file

Property changes on: trunk/wb/templates/round/print.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/round/banner.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/round/banner.jpg
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/round/powered.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/round/powered.jpg
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/round/screen.css
===================================================================
--- trunk/wb/templates/round/screen.css	(nonexistent)
+++ trunk/wb/templates/round/screen.css	(revision 103)
@@ -0,0 +1,117 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #003366;
+	background-image: url(background.jpg);
+	background-repeat: repeat-x;
+	margin: 10px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+hr {
+	margin: 15px 0px 15px 0px;
+	color: #003366;
+	height: 1px;
+	width: 100%;
+}
+h1 {
+	font-size: 18px;
+	color: #003366;
+	margin: 5px 0px 5px 0px;
+}
+h2 {
+	font-size: 15px;
+	color: #336699;
+	margin: 15px 0px 5px 0px;
+}
+form {
+	margin: 0;
+}
+.header {
+	width: 750px;
+	height: 80px;
+	background-color: #FFFFFF;
+	vertical-align: top;
+}
+.menu {
+	vertical-align: top;
+	background-color: #FFFFFF;
+	width: 170px;
+	padding: 0px;
+}
+.menu ul, .menu li{
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+.menu ul {
+	border-bottom: 0px;
+	background-color: #003366;
+}
+.menu ul ul {
+	padding-left: 10px;
+}
+.menu a:link, .menu a:visited, .menu a:active {
+	padding: 4px 10px 4px 10px;
+	color: #FFFFFF;
+	display: block;
+	background-color: #003366;
+	text-decoration: none;
+}
+.menu a:hover {
+	background-color: #336699;
+	text-decoration: none;
+}
+.menu_current {
+	font-weight: bold;
+}
+.border {
+	font-size: 1px;
+	height: 10px;
+}
+.login {
+	padding: 2px 10px 2px 10px;
+	font-size: 10px;
+	background-color: #003366;
+	color: #FFFFFF;
+	text-align: center;
+}
+.login input {
+	width: 95%;
+	font-size: 10px;
+}
+.login a:link, .login a:visited, .login a:active {
+	color: #DDDDDD;
+	text-decoration: none;
+}
+.login a:hover {
+	color: #FFFFFF;
+	text-decoration: none;
+}
+.powered_by {
+	padding: 3px 0px 0px 15px;
+	background-color: #FFFFFF;
+}
+.content {
+	padding: 10px;
+	background-color: #FFFFFF;
+	height: 300px;
+	vertical-align: top;
+	text-align: left;
+}
+.footer {
+	padding: 5px;
+	height: 20px;
+	color: #FFFFFF;
+	vertical-align: middle;
+	text-align: center;
+}
\ No newline at end of file

Property changes on: trunk/wb/templates/round/screen.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/wb/templates/round/menu_top.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/round/menu_top.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/round/menu_bottom.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/round/menu_bottom.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/round/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: trunk/wb/templates/round/background.jpg
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/wb/templates/simple/index.php
===================================================================
--- trunk/wb/templates/simple/index.php	(nonexistent)
+++ trunk/wb/templates/simple/index.php	(revision 103)
@@ -0,0 +1,81 @@
+<?php
+
+// $Id: index.php,v 1.4 2005/04/15 06:38:13 rdjurovich Exp $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+?>
+<!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" xml:lang="en" lang="en">
+<head>
+<title><?php page_title(); ?></title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="description" content="<?php page_description(); ?>" />
+<meta name="keywords" content="<?php page_keywords(); ?>" />
+<link href="<?php echo TEMPLATE_DIR; ?>/screen.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="<?php echo TEMPLATE_DIR; ?>/print.css" rel="stylesheet" type="text/css" media="print" />
+</head>
+<body>
+
+<table cellpadding="5" cellspacing="0" border="0" width="750" align="center">
+<tr>
+	<td colspan="2" class="header">
+		<?php page_title('','[WEBSITE_TITLE]'); ?>
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="footer">
+		&nbsp;
+	</td>
+</tr>
+<tr>
+	<td class="menu">
+		<?php if(SHOW_MENU) { /* Only shown menu if we need to */ ?>	
+			Menu: <br />
+			<?php page_menu(); ?>
+		<?php } ?>
+		
+		<?php if(SHOW_SEARCH) { /* Only show search box if search is enabled */ ?>
+			<br />
+			Search: <br />
+			<form name="search" action="<?php echo WB_URL; ?>/search/index<?php echo PAGE_EXTENSION; ?>" method="post">
+				<input type="text" name="string" style="width: 100%;" />
+				<input type="submit" name="submit" value="Search" style="width: 100%;" />
+			</form>
+		<?php } ?>
+		
+		<br />
+		<a href="http://www.websitebaker.org" target="_blank">Powered by <br /> Website Baker</a>
+	</td>
+	<td class="content">
+		<?php page_content(); ?>
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="footer">
+		<?php page_footer(); ?>
+	</td>
+</tr>
+</table>
+
+</body>
+</html>
\ No newline at end of file

Property changes on: trunk/wb/templates/simple/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+""
\ No newline at end of property
Index: trunk/wb/templates/simple/info.php
===================================================================
--- trunk/wb/templates/simple/info.php	(nonexistent)
+++ trunk/wb/templates/simple/info.php	(revision 103)
@@ -0,0 +1,33 @@
+<?php
+
+// $Id: info.php,v 1.3 2005/04/08 09:58:32 rdjurovich Exp $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2005, Ryan Djurovich
+
+ Website Baker 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.
+
+ Website Baker 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 Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+$template_directory = 'simple';
+$template_name = 'Simple';
+$template_version = '2.5';
+$template_designed_for = '2.x';
+$template_author = 'Ryan Djurovich';
+$template_description = 'This template is designed for developers to learn how to make templates easily. Please note this template only supports 2 page levels.';
+
+?>
\ No newline at end of file

Property changes on: trunk/wb/templates/simple/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+""
\ No newline at end of property
Index: trunk/wb/templates/simple/print.css
===================================================================
--- trunk/wb/templates/simple/print.css	(nonexistent)
+++ trunk/wb/templates/simple/print.css	(revision 103)
@@ -0,0 +1,29 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+.header {
+	display: none;
+}
+.menu {
+	display: none;
+}
+.content {
+	vertical-align: top;
+}
+.footer {
+	display: none;
+}
\ No newline at end of file

Property changes on: trunk/wb/templates/simple/print.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+""
\ No newline at end of property
Index: trunk/wb/templates/simple/screen.css
===================================================================
--- trunk/wb/templates/simple/screen.css	(nonexistent)
+++ trunk/wb/templates/simple/screen.css	(revision 103)
@@ -0,0 +1,60 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #333333;
+	margin: 10px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+form {
+	margin: 0;
+}
+h1, h2, h3, h4, h5 {
+	margin: 5px 0px 5px 0px;
+}
+.header {
+	background-color: #336699;
+	vertical-align: middle;
+	text-align: center;
+	color: #FFFFFF;
+	height: 50px;
+	font-size: 20px;
+	font-weight: bold;
+}
+.menu {
+	background-color: #EEEEEE;
+	padding: 10px;
+	width: 150px;
+	vertical-align: top;
+}
+.menu ul, .menu li {
+	list-style-type: none;
+	display: block;
+	margin: 0;
+	padding: 0;
+	padding-left: 5px;
+}
+.current {
+	font-weight: bold;
+}
+.content {
+	background-color: #FFFFFF;
+	padding: 20px;
+	height: 400px;
+	vertical-align: top;
+}
+.footer {
+	background-color: #DDDDDD;
+	text-align: center;
+	font-size: 10px;
+	height: 10px;
+}
\ No newline at end of file

Property changes on: trunk/wb/templates/simple/screen.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+""
\ No newline at end of property
