]> source.dussan.org Git - redmine.git/commitdiff
Added svn:eol-style native property for various files
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 4 Apr 2007 18:20:45 +0000 (18:20 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 4 Apr 2007 18:20:45 +0000 (18:20 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@419 e93f8b46-1217-0410-a6f0-8f06a7374b81

14 files changed:
lang/zh.yml
public/javascripts/application.js
public/javascripts/calendar/lang/calendar-de.js
public/javascripts/calendar/lang/calendar-fr.js
public/javascripts/calendar/lang/calendar-it.js
public/javascripts/calendar/lang/calendar-zh.js
public/javascripts/jstoolbar.js
public/javascripts/menu.js
public/manual/en/html.css
public/manual/fr/html.css
public/stylesheets/application.css
public/stylesheets/jstoolbar.css
public/stylesheets/print.css
public/stylesheets/scm.css

index 5ffcb159b15b49b26252e7ea09ca18e01cea8315..6301b8235651b5c12782a3ea9edaed00ac63d9a0 100644 (file)
-# translated by andy wu\r
-# email:andywu.zh@gmail.com\r
-\r
-_gloc_rule_default: '|n| n==1 ? "" : "_plural" '\r
-\r
-actionview_datehelper_select_day_prefix:\r
-actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月\r
-actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二\r
-actionview_datehelper_select_month_prefix:\r
-actionview_datehelper_select_year_prefix:\r
-actionview_datehelper_time_in_words_day: 1 天\r
-actionview_datehelper_time_in_words_day_plural: %d 天\r
-actionview_datehelper_time_in_words_hour_about: 约1小时\r
-actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时\r
-actionview_datehelper_time_in_words_hour_about_single: 约1小时\r
-actionview_datehelper_time_in_words_minute: 1分钟\r
-actionview_datehelper_time_in_words_minute_half: 半分钟\r
-actionview_datehelper_time_in_words_minute_less_than: 1分钟以内\r
-actionview_datehelper_time_in_words_minute_plural: %d 分钟\r
-actionview_datehelper_time_in_words_minute_single: 1分钟\r
-actionview_datehelper_time_in_words_second_less_than: 1秒以内\r
-actionview_datehelper_time_in_words_second_less_than_plural:  %d 秒以内\r
-actionview_instancetag_blank_option: 请选择\r
-\r
-activerecord_error_inclusion: 未包含在列表中\r
-activerecord_error_exclusion: 保留的\r
-activerecord_error_invalid: 无效的\r
-activerecord_error_confirmation: 和确认输入不匹配\r
-activerecord_error_accepted: 必需被接受\r
-activerecord_error_empty: 不能为空\r
-activerecord_error_blank: 不能是空格\r
-activerecord_error_too_long: 太长\r
-activerecord_error_too_short: 太短\r
-activerecord_error_wrong_length: 长度有问题\r
-activerecord_error_taken: has already been taken\r
-activerecord_error_not_a_number: 不是数字\r
-activerecord_error_not_a_date: 不是有效的日期\r
-activerecord_error_greater_than_start_date: 必需大于开始日期\r
-\r
-general_fmt_age: %d yr\r
-general_fmt_age_plural: %d yrs\r
-general_fmt_date: %%m/%%d/%%Y\r
-general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p\r
-general_fmt_datetime_short: %%b %%d, %%I:%%M %%p\r
-general_fmt_time: %%I:%%M %%p\r
-general_text_No: '否'\r
-general_text_Yes: '是'\r
-general_text_no: '否'\r
-general_text_yes: '是'\r
-general_lang_zh: 'Chinese (简体中文)'\r
-general_csv_separator: ','\r
-general_csv_encoding: gb2312\r
-general_pdf_encoding: Big5\r
-general_day_names: 一,二,三,四,五,六,日\r
-\r
-notice_account_updated: 帐户更新成功。\r
-notice_account_invalid_creditentials: 用户名或密码不正确\r
-notice_account_password_updated: 成功更新口令\r
-notice_account_wrong_password: 错误的口令\r
-notice_account_register_done: 帐户已创建成功\r
-notice_account_unknown_email: 未知用户\r
-notice_can_t_change_password: 该帐户使用了外部认证。无法更改口令。\r
-notice_account_lost_email_sent: 邮件已被发送,邮件中有关于选择新口令的指导\r
-notice_account_activated: 您的帐号已被激活。您现在可以登录了。\r
-notice_successful_create: 创建成功\r
-notice_successful_update: 更新成功\r
-notice_successful_delete: 删除成功\r
-notice_successful_connection: 连接成功\r
-notice_file_not_found: 您访问的页面不存在或已被删除。\r
-notice_locking_conflict: 数据已被另一个用户更新\r
-notice_scm_error: 在版本库中不存在该条目或修订\r
-\r
-mail_subject_lost_password: 您的redMine口令\r
-mail_subject_register: redMine帐户激活\r
-\r
-gui_validation_error: 1 个错误\r
-gui_validation_error_plural: %d 个错误\r
-\r
-field_name: 名称\r
-field_description: 描述\r
-field_summary: 摘要\r
-field_is_required: 必填\r
-field_firstname: 名字\r
-field_lastname: 姓\r
-field_mail: 邮件地址\r
-field_filename: 文件\r
-field_filesize: 大小\r
-field_downloads: 下载次数\r
-field_author: 作者\r
-field_created_on: 创建于\r
-field_updated_on: 更新于\r
-field_field_format: 格式\r
-field_is_for_all: 应用于所有项目\r
-field_possible_values: 可能的值\r
-field_regexp: 正则表达式\r
-field_min_length: 最小长度\r
-field_max_length: 最大长度\r
-field_value: 值\r
-field_category: 分类\r
-field_title: 标题\r
-field_project: 项目\r
-field_issue: 任务\r
-field_status: 状态\r
-field_notes: 说明\r
-field_is_closed: 已关闭的任务\r
-field_is_default: 默认状态\r
-field_html_color: 颜色\r
-field_tracker: 跟踪\r
-field_subject: 主题\r
-field_due_date: 到期日\r
-field_assigned_to: 指派\r
-field_priority: 优先级\r
-field_fixed_version: 修订版本\r
-field_user: 用户\r
-field_role: 角色\r
-field_homepage: 主页\r
-field_is_public: 公开\r
-field_parent: 上级项目\r
-field_is_in_chlog: 在更新日志中显示任务\r
-field_is_in_roadmap: 在路线图中显示任务\r
-field_login: 登录名\r
-field_mail_notification: 邮件通知\r
-field_admin: 管理员\r
-field_last_login_on: 最后登录\r
-field_language: 语言\r
-field_effective_date: 日期\r
-field_password: 口令\r
-field_new_password: 新口令\r
-field_password_confirmation: 确认\r
-field_version: 版本\r
-field_type: 类别\r
-field_host: 主机\r
-field_port: 端口\r
-field_account: 帐号\r
-field_base_dn: Base DN\r
-field_attr_login: 登录名属性\r
-field_attr_firstname: 名字属性\r
-field_attr_lastname: 姓属性\r
-field_attr_mail: 邮件属性\r
-field_onthefly: On-the-fly user creation\r
-field_start_date: 开始\r
-field_done_ratio: %% 完成\r
-field_auth_source: 认证模式\r
-field_hide_mail: 隐藏我的邮件\r
-field_comment: 注释\r
-field_url: URL\r
-field_start_page: 起始页\r
-field_subproject: 子项目\r
-field_hours: Hours\r
-field_activity: 活动\r
-field_spent_on: 日期\r
-field_identifier: Identifier\r
-\r
-setting_app_title: 应用程序标题\r
-setting_app_subtitle: 应用程序子标题\r
-setting_welcome_text: 欢迎文字\r
-setting_default_language: 默认语言\r
-setting_login_required: 要求认证\r
-setting_self_registration: 允许自注册\r
-setting_attachment_max_size: 附件最大尺寸\r
-setting_issues_export_limit: Issues export limit\r
-setting_mail_from: Emission mail address\r
-setting_host_name: 主机名称\r
-setting_text_formatting: 文本格式\r
-setting_wiki_compression: Wiki history compression\r
-setting_feeds_limit: Feed content limit\r
-setting_autofetch_changesets: Autofetch SVN commits\r
-setting_sys_api_enabled: Enable WS for repository management\r
-\r
-label_user: 用户\r
-label_user_plural: 用户列表\r
-label_user_new: 新建用户\r
-label_project: 项目\r
-label_project_new: 新建项目\r
-label_project_plural: 项目列表\r
-label_project_latest: 最近的项目列表\r
-label_issue: 任务\r
-label_issue_new: 新建任务\r
-label_issue_plural: 任务列表\r
-label_issue_view_all: 查看所有任务\r
-label_document: 文档\r
-label_document_new: 新建文档\r
-label_document_plural: 文档列表\r
-label_role: 角色\r
-label_role_plural: 角色列表\r
-label_role_new: 新建角色\r
-label_role_and_permissions: 角色和权限\r
-label_member: 成员\r
-label_member_new: 新建成员\r
-label_member_plural: 成员列表\r
-label_tracker: 跟踪标签\r
-label_tracker_plural: 跟踪标签列表\r
-label_tracker_new: 新建跟踪标签\r
-label_workflow: 工作流\r
-label_issue_status: 任务状态列表\r
-label_issue_status_plural: 任务状态列表\r
-label_issue_status_new: 新建任务状态列表\r
-label_issue_category: 任务类别\r
-label_issue_category_plural: 任务类别列表\r
-label_issue_category_new: 新建任务类别\r
-label_custom_field: 自定义字段\r
-label_custom_field_plural: 自定义字段列表\r
-label_custom_field_new: 新建自定义字段\r
-label_enumerations: 枚举列表\r
-label_enumeration_new: 新建枚举值\r
-label_information: 信息\r
-label_information_plural: 信息\r
-label_please_login: 请登录\r
-label_register: 注册\r
-label_password_lost: 忘记口令\r
-label_home: 主页\r
-label_my_page: 我的工作台\r
-label_my_account: 我的帐号\r
-label_my_projects: 我的项目列表\r
-label_administration: 管理\r
-label_login: 登录\r
-label_logout: 退出\r
-label_help: 帮助\r
-label_reported_issues: 已报告的问题\r
-label_assigned_to_me_issues: 分配给我的任务\r
-label_last_login: 最后登录\r
-label_last_updates: 最后更新\r
-label_last_updates_plural: %d 最后更新\r
-label_registered_on: 注册于\r
-label_activity: 活动\r
-label_new: 新建\r
-label_logged_as: 登录为\r
-label_environment: 环境\r
-label_authentication: 认证\r
-label_auth_source: 认证模式\r
-label_auth_source_new: 新建认证模式\r
-label_auth_source_plural: 认证模式列表\r
-label_subproject_plural: 子项目列表\r
-label_min_max_length: 最小 - 最大 长度\r
-label_list: list\r
-label_date: Date\r
-label_integer: Integer\r
-label_boolean: Boolean\r
-label_string: Text\r
-label_text: Long text\r
-label_attribute: 属性\r
-label_attribute_plural: 属性\r
-label_download: %d 个下载次数\r
-label_download_plural: %d 个下载次数\r
-label_no_data: 没有数据用于显示\r
-label_change_status: 改变状态\r
-label_history: 历史记录\r
-label_attachment: 文件\r
-label_attachment_new: 新建文件\r
-label_attachment_delete: 删除文件\r
-label_attachment_plural: 文件列表\r
-label_report: 报表\r
-label_report_plural: 报表列表\r
-label_news: 新闻\r
-label_news_new: 增加新闻\r
-label_news_plural: 新闻列表\r
-label_news_latest: 最近的新闻\r
-label_news_view_all: 查看所有新闻\r
-label_change_log: 更新日志\r
-label_settings: 配置\r
-label_overview: 概述\r
-label_version: 版本\r
-label_version_new: 新建版本\r
-label_version_plural: 版本列表\r
-label_confirmation: 确认\r
-label_export_to: 导出\r
-label_read: 读取...\r
-label_public_projects: 公开的项目列表\r
-label_open_issues: 打开\r
-label_open_issues_plural: 打开\r
-label_closed_issues: 已关闭\r
-label_closed_issues_plural: 已关闭\r
-label_total: 合计\r
-label_permissions: 权限列表\r
-label_current_status: 当前状态\r
-label_new_statuses_allowed: New statuses allowed\r
-label_all: 全部\r
-label_none: 无\r
-label_next: 下一个\r
-label_previous: 上一个\r
-label_used_by: 使用中\r
-label_details: 详情...\r
-label_add_note: 添加说明\r
-label_per_page: 每面\r
-label_calendar: 日历\r
-label_months_from: months from\r
-label_gantt: 甘特图(Gantt)\r
-label_internal: 内部\r
-label_last_changes: 最近的 %d 次更改\r
-label_change_view_all: 查看所有更改\r
-label_personalize_page: 个性化定制本页\r
-label_comment: 注释\r
-label_comment_plural: 注释列表\r
-label_comment_add: 添加注释\r
-label_comment_added: 已加入注释\r
-label_comment_delete: 删除注释\r
-label_query: 自定义查询\r
-label_query_plural: 自定义查询列表\r
-label_query_new: 新建查询\r
-label_filter_add: 增加过滤器\r
-label_filter_plural: 过滤器列表\r
-label_equals: 等于\r
-label_not_equals: 不等于\r
-label_in_less_than: 剩余天数小于\r
-label_in_more_than: 剩余天数大于\r
-label_in: 剩余天数\r
-label_today: 今天\r
-label_less_than_ago: 之前天数少于\r
-label_more_than_ago: 之前天数大于\r
-label_ago: 之前天数\r
-label_contains: 包含\r
-label_not_contains: 不包含\r
-label_day_plural: 天数\r
-label_repository: SVN 版本库\r
-label_browse: 浏览\r
-label_modification: %d 个更新\r
-label_modification_plural: %d 个更新\r
-label_revision: 修订\r
-label_revision_plural: 修订\r
-label_added: 已增加\r
-label_modified: 已修改\r
-label_deleted: 已删除\r
-label_latest_revision: 最近的版本\r
-label_latest_revision_plural: 最近的版本列表\r
-label_view_revisions: 查看修订列表\r
-label_max_size: 最大尺寸\r
-label_on: 'on'\r
-label_sort_highest: 置顶\r
-label_sort_higher: 上移\r
-label_sort_lower: 下移\r
-label_sort_lowest: 置底\r
-label_roadmap: 路线图\r
-label_roadmap_due_in: Due in \r
-label_roadmap_no_issues: 该版本没有任务\r
-label_search: 查找\r
-label_result: %d 个结果\r
-label_result_plural: %d 个结果\r
-label_all_words: 所有单词\r
-label_wiki: Wiki\r
-label_wiki_edit: Wiki edit\r
-label_wiki_edit_plural: Wiki edits\r
-label_page_index: 索引\r
-label_current_version: 当前版本\r
-label_preview: 预览\r
-label_feed_plural: Feeds\r
-label_changes_details: 所有更改的详情\r
-label_issue_tracking: 任务跟踪\r
-label_spent_time: 耗时\r
-label_f_hour: %.2f 小时\r
-label_f_hour_plural: %.2f 小时\r
-label_time_tracking: 时间跟踪\r
-label_change_plural: 更改列表\r
-label_statistics: 统计\r
-label_commits_per_month: Commits per month\r
-label_commits_per_author: Commits per author\r
-label_view_diff: View differences\r
-label_diff_inline: inline\r
-label_diff_side_by_side: side by side\r
-label_options: Options\r
-label_copy_workflow_from: Copy workflow from\r
-\r
-button_login: 登录\r
-button_submit: 提交\r
-button_save: 保存\r
-button_check_all: 全选\r
-button_uncheck_all: 清除\r
-button_delete: 删除\r
-button_create: 创建\r
-button_test: 测试\r
-button_edit: 编辑\r
-button_add: 新增\r
-button_change: 修改\r
-button_apply: 应用\r
-button_clear: 清除\r
-button_lock: 锁定\r
-button_unlock: 解锁\r
-button_download: 下载\r
-button_list: 列表\r
-button_view: 查看\r
-button_move: 移动\r
-button_back: 返回\r
-button_cancel: 取消\r
-button_activate: 激活\r
-button_sort: 排序\r
-button_log_time: 登记工时\r
-\r
-status_active: 激活\r
-status_registered: 已注册\r
-status_locked: 已锁定\r
-\r
-text_select_mail_notifications: 选择需要发送邮件通知的动作。\r
-text_regexp_info: eg. ^[A-Z0-9]+$\r
-text_min_max_length_info: 0 表示没有限制\r
-text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗?\r
-text_workflow_edit: 选择一个角色和跟踪标签来编辑这个工作流\r
-text_are_you_sure: 您确定?\r
-text_journal_changed: 从 %s 更改为 %s\r
-text_journal_set_to: 设置为 %s\r
-text_journal_deleted: 已删除\r
-text_tip_task_begin_day: 开始于此\r
-text_tip_task_end_day: 在此结束\r
-text_tip_task_begin_end_day: 开始并结束于此\r
-text_project_identifier_info: 'Lower case letters (a-z), numbers and dashes allowed.<br />Once saved, the identifier can not be changed.'\r
-text_caracters_maximum: %d characters maximum.\r
-text_length_between: Length between %d and %d characters.\r
-\r
-default_role_manager: 管理员\r
-default_role_developper: 开发人员\r
-default_role_reporter: 报告人员\r
-default_tracker_bug: 问题\r
-default_tracker_feature: 功能\r
-default_tracker_support: 支持\r
-default_issue_status_new: 新建\r
-default_issue_status_assigned: 已分配\r
-default_issue_status_resolved: 已解决\r
-default_issue_status_feedback: 回复\r
-default_issue_status_closed: 已关闭\r
-default_issue_status_rejected: 已打回\r
-default_doc_category_user: 用户文档\r
-default_doc_category_tech: 技术文档\r
-default_priority_low: 低\r
-default_priority_normal: 普通\r
-default_priority_high: 高\r
-default_priority_urgent: 紧急\r
-default_priority_immediate: 立刻\r
-default_activity_design: 设计\r
-default_activity_development: 开发\r
-\r
-enumeration_issue_priorities: 任务优先级\r
-enumeration_doc_categories: 文档类别\r
-enumeration_activities: Activities (time tracking)\r
+# translated by andy wu
+# email:andywu.zh@gmail.com
+
+_gloc_rule_default: '|n| n==1 ? "" : "_plural" '
+
+actionview_datehelper_select_day_prefix:
+actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
+actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二
+actionview_datehelper_select_month_prefix:
+actionview_datehelper_select_year_prefix:
+actionview_datehelper_time_in_words_day: 1 天
+actionview_datehelper_time_in_words_day_plural: %d 天
+actionview_datehelper_time_in_words_hour_about: 约1小时
+actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时
+actionview_datehelper_time_in_words_hour_about_single: 约1小时
+actionview_datehelper_time_in_words_minute: 1分钟
+actionview_datehelper_time_in_words_minute_half: 半分钟
+actionview_datehelper_time_in_words_minute_less_than: 1分钟以内
+actionview_datehelper_time_in_words_minute_plural: %d 分钟
+actionview_datehelper_time_in_words_minute_single: 1分钟
+actionview_datehelper_time_in_words_second_less_than: 1秒以内
+actionview_datehelper_time_in_words_second_less_than_plural:  %d 秒以内
+actionview_instancetag_blank_option: 请选择
+
+activerecord_error_inclusion: 未包含在列表中
+activerecord_error_exclusion: 保留的
+activerecord_error_invalid: 无效的
+activerecord_error_confirmation: 和确认输入不匹配
+activerecord_error_accepted: 必需被接受
+activerecord_error_empty: 不能为空
+activerecord_error_blank: 不能是空格
+activerecord_error_too_long: 太长
+activerecord_error_too_short: 太短
+activerecord_error_wrong_length: 长度有问题
+activerecord_error_taken: has already been taken
+activerecord_error_not_a_number: 不是数字
+activerecord_error_not_a_date: 不是有效的日期
+activerecord_error_greater_than_start_date: 必需大于开始日期
+
+general_fmt_age: %d yr
+general_fmt_age_plural: %d yrs
+general_fmt_date: %%m/%%d/%%Y
+general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
+general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
+general_fmt_time: %%I:%%M %%p
+general_text_No: '否'
+general_text_Yes: '是'
+general_text_no: '否'
+general_text_yes: '是'
+general_lang_zh: 'Chinese (简体中文)'
+general_csv_separator: ','
+general_csv_encoding: gb2312
+general_pdf_encoding: Big5
+general_day_names: 一,二,三,四,五,六,日
+
+notice_account_updated: 帐户更新成功。
+notice_account_invalid_creditentials: 用户名或密码不正确
+notice_account_password_updated: 成功更新口令
+notice_account_wrong_password: 错误的口令
+notice_account_register_done: 帐户已创建成功
+notice_account_unknown_email: 未知用户
+notice_can_t_change_password: 该帐户使用了外部认证。无法更改口令。
+notice_account_lost_email_sent: 邮件已被发送,邮件中有关于选择新口令的指导
+notice_account_activated: 您的帐号已被激活。您现在可以登录了。
+notice_successful_create: 创建成功
+notice_successful_update: 更新成功
+notice_successful_delete: 删除成功
+notice_successful_connection: 连接成功
+notice_file_not_found: 您访问的页面不存在或已被删除。
+notice_locking_conflict: 数据已被另一个用户更新
+notice_scm_error: 在版本库中不存在该条目或修订
+
+mail_subject_lost_password: 您的redMine口令
+mail_subject_register: redMine帐户激活
+
+gui_validation_error: 1 个错误
+gui_validation_error_plural: %d 个错误
+
+field_name: 名称
+field_description: 描述
+field_summary: 摘要
+field_is_required: 必填
+field_firstname: 名字
+field_lastname: 姓
+field_mail: 邮件地址
+field_filename: 文件
+field_filesize: 大小
+field_downloads: 下载次数
+field_author: 作者
+field_created_on: 创建于
+field_updated_on: 更新于
+field_field_format: 格式
+field_is_for_all: 应用于所有项目
+field_possible_values: 可能的值
+field_regexp: 正则表达式
+field_min_length: 最小长度
+field_max_length: 最大长度
+field_value: 值
+field_category: 分类
+field_title: 标题
+field_project: 项目
+field_issue: 任务
+field_status: 状态
+field_notes: 说明
+field_is_closed: 已关闭的任务
+field_is_default: 默认状态
+field_html_color: 颜色
+field_tracker: 跟踪
+field_subject: 主题
+field_due_date: 到期日
+field_assigned_to: 指派
+field_priority: 优先级
+field_fixed_version: 修订版本
+field_user: 用户
+field_role: 角色
+field_homepage: 主页
+field_is_public: 公开
+field_parent: 上级项目
+field_is_in_chlog: 在更新日志中显示任务
+field_is_in_roadmap: 在路线图中显示任务
+field_login: 登录名
+field_mail_notification: 邮件通知
+field_admin: 管理员
+field_last_login_on: 最后登录
+field_language: 语言
+field_effective_date: 日期
+field_password: 口令
+field_new_password: 新口令
+field_password_confirmation: 确认
+field_version: 版本
+field_type: 类别
+field_host: 主机
+field_port: 端口
+field_account: 帐号
+field_base_dn: Base DN
+field_attr_login: 登录名属性
+field_attr_firstname: 名字属性
+field_attr_lastname: 姓属性
+field_attr_mail: 邮件属性
+field_onthefly: On-the-fly user creation
+field_start_date: 开始
+field_done_ratio: %% 完成
+field_auth_source: 认证模式
+field_hide_mail: 隐藏我的邮件
+field_comment: 注释
+field_url: URL
+field_start_page: 起始页
+field_subproject: 子项目
+field_hours: Hours
+field_activity: 活动
+field_spent_on: 日期
+field_identifier: Identifier
+
+setting_app_title: 应用程序标题
+setting_app_subtitle: 应用程序子标题
+setting_welcome_text: 欢迎文字
+setting_default_language: 默认语言
+setting_login_required: 要求认证
+setting_self_registration: 允许自注册
+setting_attachment_max_size: 附件最大尺寸
+setting_issues_export_limit: Issues export limit
+setting_mail_from: Emission mail address
+setting_host_name: 主机名称
+setting_text_formatting: 文本格式
+setting_wiki_compression: Wiki history compression
+setting_feeds_limit: Feed content limit
+setting_autofetch_changesets: Autofetch SVN commits
+setting_sys_api_enabled: Enable WS for repository management
+
+label_user: 用户
+label_user_plural: 用户列表
+label_user_new: 新建用户
+label_project: 项目
+label_project_new: 新建项目
+label_project_plural: 项目列表
+label_project_latest: 最近的项目列表
+label_issue: 任务
+label_issue_new: 新建任务
+label_issue_plural: 任务列表
+label_issue_view_all: 查看所有任务
+label_document: 文档
+label_document_new: 新建文档
+label_document_plural: 文档列表
+label_role: 角色
+label_role_plural: 角色列表
+label_role_new: 新建角色
+label_role_and_permissions: 角色和权限
+label_member: 成员
+label_member_new: 新建成员
+label_member_plural: 成员列表
+label_tracker: 跟踪标签
+label_tracker_plural: 跟踪标签列表
+label_tracker_new: 新建跟踪标签
+label_workflow: 工作流
+label_issue_status: 任务状态列表
+label_issue_status_plural: 任务状态列表
+label_issue_status_new: 新建任务状态列表
+label_issue_category: 任务类别
+label_issue_category_plural: 任务类别列表
+label_issue_category_new: 新建任务类别
+label_custom_field: 自定义字段
+label_custom_field_plural: 自定义字段列表
+label_custom_field_new: 新建自定义字段
+label_enumerations: 枚举列表
+label_enumeration_new: 新建枚举值
+label_information: 信息
+label_information_plural: 信息
+label_please_login: 请登录
+label_register: 注册
+label_password_lost: 忘记口令
+label_home: 主页
+label_my_page: 我的工作台
+label_my_account: 我的帐号
+label_my_projects: 我的项目列表
+label_administration: 管理
+label_login: 登录
+label_logout: 退出
+label_help: 帮助
+label_reported_issues: 已报告的问题
+label_assigned_to_me_issues: 分配给我的任务
+label_last_login: 最后登录
+label_last_updates: 最后更新
+label_last_updates_plural: %d 最后更新
+label_registered_on: 注册于
+label_activity: 活动
+label_new: 新建
+label_logged_as: 登录为
+label_environment: 环境
+label_authentication: 认证
+label_auth_source: 认证模式
+label_auth_source_new: 新建认证模式
+label_auth_source_plural: 认证模式列表
+label_subproject_plural: 子项目列表
+label_min_max_length: 最小 - 最大 长度
+label_list: list
+label_date: Date
+label_integer: Integer
+label_boolean: Boolean
+label_string: Text
+label_text: Long text
+label_attribute: 属性
+label_attribute_plural: 属性
+label_download: %d 个下载次数
+label_download_plural: %d 个下载次数
+label_no_data: 没有数据用于显示
+label_change_status: 改变状态
+label_history: 历史记录
+label_attachment: 文件
+label_attachment_new: 新建文件
+label_attachment_delete: 删除文件
+label_attachment_plural: 文件列表
+label_report: 报表
+label_report_plural: 报表列表
+label_news: 新闻
+label_news_new: 增加新闻
+label_news_plural: 新闻列表
+label_news_latest: 最近的新闻
+label_news_view_all: 查看所有新闻
+label_change_log: 更新日志
+label_settings: 配置
+label_overview: 概述
+label_version: 版本
+label_version_new: 新建版本
+label_version_plural: 版本列表
+label_confirmation: 确认
+label_export_to: 导出
+label_read: 读取...
+label_public_projects: 公开的项目列表
+label_open_issues: 打开
+label_open_issues_plural: 打开
+label_closed_issues: 已关闭
+label_closed_issues_plural: 已关闭
+label_total: 合计
+label_permissions: 权限列表
+label_current_status: 当前状态
+label_new_statuses_allowed: New statuses allowed
+label_all: 全部
+label_none: 无
+label_next: 下一个
+label_previous: 上一个
+label_used_by: 使用中
+label_details: 详情...
+label_add_note: 添加说明
+label_per_page: 每面
+label_calendar: 日历
+label_months_from: months from
+label_gantt: 甘特图(Gantt)
+label_internal: 内部
+label_last_changes: 最近的 %d 次更改
+label_change_view_all: 查看所有更改
+label_personalize_page: 个性化定制本页
+label_comment: 注释
+label_comment_plural: 注释列表
+label_comment_add: 添加注释
+label_comment_added: 已加入注释
+label_comment_delete: 删除注释
+label_query: 自定义查询
+label_query_plural: 自定义查询列表
+label_query_new: 新建查询
+label_filter_add: 增加过滤器
+label_filter_plural: 过滤器列表
+label_equals: 等于
+label_not_equals: 不等于
+label_in_less_than: 剩余天数小于
+label_in_more_than: 剩余天数大于
+label_in: 剩余天数
+label_today: 今天
+label_less_than_ago: 之前天数少于
+label_more_than_ago: 之前天数大于
+label_ago: 之前天数
+label_contains: 包含
+label_not_contains: 不包含
+label_day_plural: 天数
+label_repository: SVN 版本库
+label_browse: 浏览
+label_modification: %d 个更新
+label_modification_plural: %d 个更新
+label_revision: 修订
+label_revision_plural: 修订
+label_added: 已增加
+label_modified: 已修改
+label_deleted: 已删除
+label_latest_revision: 最近的版本
+label_latest_revision_plural: 最近的版本列表
+label_view_revisions: 查看修订列表
+label_max_size: 最大尺寸
+label_on: 'on'
+label_sort_highest: 置顶
+label_sort_higher: 上移
+label_sort_lower: 下移
+label_sort_lowest: 置底
+label_roadmap: 路线图
+label_roadmap_due_in: Due in 
+label_roadmap_no_issues: 该版本没有任务
+label_search: 查找
+label_result: %d 个结果
+label_result_plural: %d 个结果
+label_all_words: 所有单词
+label_wiki: Wiki
+label_wiki_edit: Wiki edit
+label_wiki_edit_plural: Wiki edits
+label_page_index: 索引
+label_current_version: 当前版本
+label_preview: 预览
+label_feed_plural: Feeds
+label_changes_details: 所有更改的详情
+label_issue_tracking: 任务跟踪
+label_spent_time: 耗时
+label_f_hour: %.2f 小时
+label_f_hour_plural: %.2f 小时
+label_time_tracking: 时间跟踪
+label_change_plural: 更改列表
+label_statistics: 统计
+label_commits_per_month: Commits per month
+label_commits_per_author: Commits per author
+label_view_diff: View differences
+label_diff_inline: inline
+label_diff_side_by_side: side by side
+label_options: Options
+label_copy_workflow_from: Copy workflow from
+
+button_login: 登录
+button_submit: 提交
+button_save: 保存
+button_check_all: 全选
+button_uncheck_all: 清除
+button_delete: 删除
+button_create: 创建
+button_test: 测试
+button_edit: 编辑
+button_add: 新增
+button_change: 修改
+button_apply: 应用
+button_clear: 清除
+button_lock: 锁定
+button_unlock: 解锁
+button_download: 下载
+button_list: 列表
+button_view: 查看
+button_move: 移动
+button_back: 返回
+button_cancel: 取消
+button_activate: 激活
+button_sort: 排序
+button_log_time: 登记工时
+
+status_active: 激活
+status_registered: 已注册
+status_locked: 已锁定
+
+text_select_mail_notifications: 选择需要发送邮件通知的动作。
+text_regexp_info: eg. ^[A-Z0-9]+$
+text_min_max_length_info: 0 表示没有限制
+text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗?
+text_workflow_edit: 选择一个角色和跟踪标签来编辑这个工作流
+text_are_you_sure: 您确定?
+text_journal_changed: 从 %s 更改为 %s
+text_journal_set_to: 设置为 %s
+text_journal_deleted: 已删除
+text_tip_task_begin_day: 开始于此
+text_tip_task_end_day: 在此结束
+text_tip_task_begin_end_day: 开始并结束于此
+text_project_identifier_info: 'Lower case letters (a-z), numbers and dashes allowed.<br />Once saved, the identifier can not be changed.'
+text_caracters_maximum: %d characters maximum.
+text_length_between: Length between %d and %d characters.
+
+default_role_manager: 管理员
+default_role_developper: 开发人员
+default_role_reporter: 报告人员
+default_tracker_bug: 问题
+default_tracker_feature: 功能
+default_tracker_support: 支持
+default_issue_status_new: 新建
+default_issue_status_assigned: 已分配
+default_issue_status_resolved: 已解决
+default_issue_status_feedback: 回复
+default_issue_status_closed: 已关闭
+default_issue_status_rejected: 已打回
+default_doc_category_user: 用户文档
+default_doc_category_tech: 技术文档
+default_priority_low: 低
+default_priority_normal: 普通
+default_priority_high: 高
+default_priority_urgent: 紧急
+default_priority_immediate: 立刻
+default_activity_design: 设计
+default_activity_development: 开发
+
+enumeration_issue_priorities: 任务优先级
+enumeration_doc_categories: 文档类别
+enumeration_activities: Activities (time tracking)
index c8a790472a85ac549367cb54d2a2bdf5d6ee63d7..a5d9de2926302ee45e25027a96976d5ea1402fae 100644 (file)
@@ -1,33 +1,33 @@
-function checkAll (id, checked) {\r
-       var el = document.getElementById(id);\r
-       for (var i = 0; i < el.elements.length; i++) {\r
-    if (el.elements[i].disabled==false) {\r
-      el.elements[i].checked = checked;\r
-    }\r
-       }\r
-}\r
-\r
-function addFileField() {\r
-    var f = document.createElement("input");\r
-    f.type = "file";\r
-    f.name = "attachments[]";\r
-    f.size = 30;\r
-        \r
-    p = document.getElementById("attachments_p");\r
-    p.appendChild(document.createElement("br"));\r
-    p.appendChild(f);\r
-}\r
-\r
-function showTab(name) {\r
-    var f = $$('div#content .tab-content');\r
-       for(var i=0; i<f.length; i++){\r
-               Element.hide(f[i]);\r
-       }\r
-    var f = $$('div.tabs a');\r
-       for(var i=0; i<f.length; i++){\r
-               Element.removeClassName(f[i], "selected");\r
-       }\r
-       Element.show('tab-content-' + name);\r
-       Element.addClassName('tab-' + name, "selected");\r
-       return false;\r
+function checkAll (id, checked) {
+       var el = document.getElementById(id);
+       for (var i = 0; i < el.elements.length; i++) {
+    if (el.elements[i].disabled==false) {
+      el.elements[i].checked = checked;
+    }
+       }
+}
+
+function addFileField() {
+    var f = document.createElement("input");
+    f.type = "file";
+    f.name = "attachments[]";
+    f.size = 30;
+        
+    p = document.getElementById("attachments_p");
+    p.appendChild(document.createElement("br"));
+    p.appendChild(f);
+}
+
+function showTab(name) {
+    var f = $$('div#content .tab-content');
+       for(var i=0; i<f.length; i++){
+               Element.hide(f[i]);
+       }
+    var f = $$('div.tabs a');
+       for(var i=0; i<f.length; i++){
+               Element.removeClassName(f[i], "selected");
+       }
+       Element.show('tab-content-' + name);
+       Element.addClassName('tab-' + name, "selected");
+       return false;
 }
\ No newline at end of file
index 59fb983bf9b1c7ec01c01a9f958afc3cd43b3533..c320699ca1edf3215ed52ea07d0c3c6243324137 100644 (file)
@@ -31,10 +31,10 @@ Calendar._DN = new Array
 // If N = 3 then this is not needed either since we assume a value of 3 if not
 // present, to be compatible with translation files that were written before
 // this feature.
-\r
+
 // First day of the week. "0" means display Sunday first, "1" means display
 // Monday first, etc.
-Calendar._FD = 1;\r
+Calendar._FD = 1;
 
 // short day names
 Calendar._SDN = new Array
index fb0cb2380c3563eeb281bce092ab1baebc0926dd..128355a290938ca4532a64c45aa372dd383f2d81 100644 (file)
@@ -44,10 +44,10 @@ Calendar._SDN = new Array
  "Ven",
  "Sam",
  "Dim");
-\r
+
 // First day of the week. "0" means display Sunday first, "1" means display
 // Monday first, etc.
-Calendar._FD = 1;\r
+Calendar._FD = 1;
 
 // full month names
 Calendar._MN = new Array
index d5315125f8267c140b632b694b1514e0542a7ee0..fbc80c935e036296cf504738d379d8422c07987e 100644 (file)
-// ** I18N\r
-\r
-// Calendar EN language\r
-// Author: Mihai Bazon, <mihai_bazon@yahoo.com>\r
-// Encoding: any\r
-// Distributed under the same terms as the calendar itself.\r
-\r
-// For translators: please use UTF-8 if possible.  We strongly believe that\r
-// Unicode is the answer to a real internationalized world.  Also please\r
-// include your contact information in the header, as can be seen above.\r
-\r
-// full day names\r
-Calendar._DN = new Array\r
-("Domenica",\r
- "Lunedì",\r
- "Martedì",\r
- "Mercoledì",\r
- "Giovedì",\r
- "Venerdì",\r
- "Sabato",\r
- "Domenica");\r
-\r
-// Please note that the following array of short day names (and the same goes\r
-// for short month names, _SMN) isn't absolutely necessary.  We give it here\r
-// for exemplification on how one can customize the short day names, but if\r
-// they are simply the first N letters of the full name you can simply say:\r
-//\r
-//   Calendar._SDN_len = N; // short day name length\r
-//   Calendar._SMN_len = N; // short month name length\r
-//\r
-// If N = 3 then this is not needed either since we assume a value of 3 if not\r
-// present, to be compatible with translation files that were written before\r
-// this feature.\r
-\r
-// short day names\r
-Calendar._SDN = new Array\r
-("Dom",\r
- "Lun",\r
- "Mar",\r
- "Mer",\r
- "Gio",\r
- "Ven",\r
- "Sab",\r
- "Dom");\r
-\r
-// First day of the week. "0" means display Sunday first, "1" means display\r
-// Monday first, etc.\r
-Calendar._FD = 1;\r
-\r
-// full month names\r
-Calendar._MN = new Array\r
-("Gennaio",\r
- "Febbraio",\r
- "Marzo",\r
- "Aprile",\r
- "Maggio",\r
- "Giugno",\r
- "Luglio",\r
- "Agosto",\r
- "Settembre",\r
- "Ottobre",\r
- "Novembre",\r
- "Dicembre");\r
-\r
-// short month names\r
-Calendar._SMN = new Array\r
-("Gen",\r
- "Feb",\r
- "Mar",\r
- "Apr",\r
- "Mag",\r
- "Giu",\r
- "Lug",\r
- "Ago",\r
- "Set",\r
- "Ott",\r
- "Nov",\r
- "Dic");\r
-\r
-// tooltips\r
-Calendar._TT = {};\r
-Calendar._TT["INFO"] = "Informazioni sul calendario";\r
-\r
-Calendar._TT["ABOUT"] =\r
-"DHTML Date/Time Selector\n" +\r
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)\r
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +\r
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +\r
-"\n\n" +\r
-"Date selection:\n" +\r
-"- Use the \xab, \xbb buttons to select year\n" +\r
-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +\r
-"- Hold mouse button on any of the above buttons for faster selection.";\r
-Calendar._TT["ABOUT_TIME"] = "\n\n" +\r
-"Time selection:\n" +\r
-"- Click on any of the time parts to increase it\n" +\r
-"- or Shift-click to decrease it\n" +\r
-"- or click and drag for faster selection.";\r
-\r
-Calendar._TT["PREV_YEAR"] = "Anno prec. (tieni premuto per menu)";\r
-Calendar._TT["PREV_MONTH"] = "Mese prec. (tieni premuto per menu)";\r
-Calendar._TT["GO_TODAY"] = "Oggi";\r
-Calendar._TT["NEXT_MONTH"] = "Mese succ. (tieni premuto per menu)";\r
-Calendar._TT["NEXT_YEAR"] = "Anno succ. (tieni premuto per menu)";\r
-Calendar._TT["SEL_DATE"] = "Seleziona data";\r
-Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostare";\r
-Calendar._TT["PART_TODAY"] = " (oggi)";\r
-\r
-// the following is to inform that "%s" is to be the first day of week\r
-// %s will be replaced with the day name.\r
-Calendar._TT["DAY_FIRST"] = "Mostra %s per primo";\r
-\r
-// This may be locale-dependent.  It specifies the week-end days, as an array\r
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1\r
-// means Monday, etc.\r
-Calendar._TT["WEEKEND"] = "0,6";\r
-\r
-Calendar._TT["CLOSE"] = "Chiudi";\r
-Calendar._TT["TODAY"] = "Oggi";\r
-Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per modificare";\r
-\r
-// date formats\r
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";\r
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";\r
-\r
-Calendar._TT["WK"] = "sett";\r
-Calendar._TT["TIME"] = "Ora:";\r
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domenica",
+ "Lunedì",
+ "Martedì",
+ "Mercoledì",
+ "Giovedì",
+ "Venerdì",
+ "Sabato",
+ "Domenica");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Lun",
+ "Mar",
+ "Mer",
+ "Gio",
+ "Ven",
+ "Sab",
+ "Dom");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 1;
+
+// full month names
+Calendar._MN = new Array
+("Gennaio",
+ "Febbraio",
+ "Marzo",
+ "Aprile",
+ "Maggio",
+ "Giugno",
+ "Luglio",
+ "Agosto",
+ "Settembre",
+ "Ottobre",
+ "Novembre",
+ "Dicembre");
+
+// short month names
+Calendar._SMN = new Array
+("Gen",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mag",
+ "Giu",
+ "Lug",
+ "Ago",
+ "Set",
+ "Ott",
+ "Nov",
+ "Dic");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Informazioni sul calendario";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "Anno prec. (tieni premuto per menu)";
+Calendar._TT["PREV_MONTH"] = "Mese prec. (tieni premuto per menu)";
+Calendar._TT["GO_TODAY"] = "Oggi";
+Calendar._TT["NEXT_MONTH"] = "Mese succ. (tieni premuto per menu)";
+Calendar._TT["NEXT_YEAR"] = "Anno succ. (tieni premuto per menu)";
+Calendar._TT["SEL_DATE"] = "Seleziona data";
+Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostare";
+Calendar._TT["PART_TODAY"] = " (oggi)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostra %s per primo";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Chiudi";
+Calendar._TT["TODAY"] = "Oggi";
+Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per modificare";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "sett";
+Calendar._TT["TIME"] = "Ora:";
index 23f51bb94669e2337857f225b4d59922385c2080..ddb092bfa9247d406d8768b1f64f1524937f9540 100644 (file)
-// ** I18N\r
-\r
-// Calendar Chinese language\r
-// Author: Andy Wu, <andywu.zh@gmail.com>\r
-// Encoding: any\r
-// Distributed under the same terms as the calendar itself.\r
-\r
-// For translators: please use UTF-8 if possible.  We strongly believe that\r
-// Unicode is the answer to a real internationalized world.  Also please\r
-// include your contact information in the header, as can be seen above.\r
-\r
-// full day names\r
-Calendar._DN = new Array\r
-("星期日",\r
- "星期一",\r
- "星期二",\r
- "星期三",\r
- "星期四",\r
- "星期五",\r
- "星期六",\r
- "星期日");\r
-\r
-// Please note that the following array of short day names (and the same goes\r
-// for short month names, _SMN) isn't absolutely necessary.  We give it here\r
-// for exemplification on how one can customize the short day names, but if\r
-// they are simply the first N letters of the full name you can simply say:\r
-//\r
-//   Calendar._SDN_len = N; // short day name length\r
-//   Calendar._SMN_len = N; // short month name length\r
-//\r
-// If N = 3 then this is not needed either since we assume a value of 3 if not\r
-// present, to be compatible with translation files that were written before\r
-// this feature.\r
-\r
-// short day names\r
-Calendar._SDN = new Array\r
-("日",\r
- "一",\r
- "二",\r
- "三",\r
- "四",\r
- "五",\r
- "六",\r
- "日");\r
-\r
-// First day of the week. "0" means display Sunday first, "1" means display\r
-// Monday first, etc.\r
-Calendar._FD = 0;\r
-\r
-// full month names\r
-Calendar._MN = new Array\r
-("1月",\r
- "2月",\r
- "3月",\r
- "4月",\r
- "5月",\r
- "6月",\r
- "7月",\r
- "8月",\r
- "9月",\r
- "10月",\r
- "11月",\r
- "12月");\r
-\r
-// short month names\r
-Calendar._SMN = new Array\r
-("1月",\r
- "2月",\r
- "3月",\r
- "4月",\r
- "5月",\r
- "6月",\r
- "7月",\r
- "8月",\r
- "9月",\r
- "10月",\r
- "11月",\r
- "12月");\r
-\r
-// tooltips\r
-Calendar._TT = {};\r
-Calendar._TT["INFO"] = "关于日历";\r
-\r
-Calendar._TT["ABOUT"] =\r
-"DHTML Date/Time Selector\n" +\r
-"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)\r
-"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +\r
-"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +\r
-"\n\n" +\r
-"Date selection:\n" +\r
-"- Use the \xab, \xbb buttons to select year\n" +\r
-"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +\r
-"- Hold mouse button on any of the above buttons for faster selection.";\r
-Calendar._TT["ABOUT_TIME"] = "\n\n" +\r
-"Time selection:\n" +\r
-"- Click on any of the time parts to increase it\n" +\r
-"- or Shift-click to decrease it\n" +\r
-"- or click and drag for faster selection.";\r
-\r
-Calendar._TT["PREV_YEAR"] = "上年 (hold for menu)";\r
-Calendar._TT["PREV_MONTH"] = "上月 (hold for menu)";\r
-Calendar._TT["GO_TODAY"] = "回到今天";\r
-Calendar._TT["NEXT_MONTH"] = "下月 (hold for menu)";\r
-Calendar._TT["NEXT_YEAR"] = "下年 (hold for menu)";\r
-Calendar._TT["SEL_DATE"] = "选择日期";\r
-Calendar._TT["DRAG_TO_MOVE"] = "拖动";\r
-Calendar._TT["PART_TODAY"] = " (今日)";\r
-\r
-// the following is to inform that "%s" is to be the first day of week\r
-// %s will be replaced with the day name.\r
-Calendar._TT["DAY_FIRST"] = "Display %s first";\r
-\r
-// This may be locale-dependent.  It specifies the week-end days, as an array\r
-// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1\r
-// means Monday, etc.\r
-Calendar._TT["WEEKEND"] = "0,6";\r
-\r
-Calendar._TT["CLOSE"] = "关闭";\r
-Calendar._TT["TODAY"] = "今天";\r
-Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";\r
-\r
-// date formats\r
-Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";\r
-Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";\r
-\r
-Calendar._TT["WK"] = "wk";\r
-Calendar._TT["TIME"] = "Time:";\r
+// ** I18N
+
+// Calendar Chinese language
+// Author: Andy Wu, <andywu.zh@gmail.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("星期日",
+ "星期一",
+ "星期二",
+ "星期三",
+ "星期四",
+ "星期五",
+ "星期六",
+ "星期日");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("日",
+ "一",
+ "二",
+ "三",
+ "四",
+ "五",
+ "六",
+ "日");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("1月",
+ "2月",
+ "3月",
+ "4月",
+ "5月",
+ "6月",
+ "7月",
+ "8月",
+ "9月",
+ "10月",
+ "11月",
+ "12月");
+
+// short month names
+Calendar._SMN = new Array
+("1月",
+ "2月",
+ "3月",
+ "4月",
+ "5月",
+ "6月",
+ "7月",
+ "8月",
+ "9月",
+ "10月",
+ "11月",
+ "12月");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "关于日历";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "上年 (hold for menu)";
+Calendar._TT["PREV_MONTH"] = "上月 (hold for menu)";
+Calendar._TT["GO_TODAY"] = "回到今天";
+Calendar._TT["NEXT_MONTH"] = "下月 (hold for menu)";
+Calendar._TT["NEXT_YEAR"] = "下年 (hold for menu)";
+Calendar._TT["SEL_DATE"] = "选择日期";
+Calendar._TT["DRAG_TO_MOVE"] = "拖动";
+Calendar._TT["PART_TODAY"] = " (今日)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "关闭";
+Calendar._TT["TODAY"] = "今天";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Time:";
index a381c3c2008cbed5fe49a2c326e5206a567519b9..bfafcdd09a5c8042d124904bd1e61660b4b40e81 100644 (file)
-/* ***** BEGIN LICENSE BLOCK *****\r
- * This file is part of DotClear.\r
- * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All\r
- * rights reserved.\r
- *\r
- * DotClear is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- * \r
- * DotClear is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License\r
- * along with DotClear; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- *\r
- * ***** END LICENSE BLOCK *****\r
-*/\r
-\r
-/* Modified by JP LANG for textile formatting */\r
-\r
-function jsToolBar(textarea) {\r
-       if (!document.createElement) { return; }\r
-       \r
-       if (!textarea) { return; }\r
-       \r
-       if ((typeof(document["selection"]) == "undefined")\r
-       && (typeof(textarea["setSelectionRange"]) == "undefined")) {\r
-               return;\r
-       }\r
-       \r
-       this.textarea = textarea;\r
-       \r
-       this.editor = document.createElement('div');\r
-       this.editor.className = 'jstEditor';\r
-       \r
-       this.textarea.parentNode.insertBefore(this.editor,this.textarea);\r
-       this.editor.appendChild(this.textarea);\r
-       \r
-       this.toolbar = document.createElement("div");\r
-       this.toolbar.className = 'jstElements';\r
-       this.editor.parentNode.insertBefore(this.toolbar,this.editor);\r
-       \r
-       // Dragable resizing (only for gecko)\r
-       if (this.editor.addEventListener)\r
-       {\r
-               this.handle = document.createElement('div');\r
-               this.handle.className = 'jstHandle';\r
-               var dragStart = this.resizeDragStart;\r
-               var This = this;\r
-               this.handle.addEventListener('mousedown',function(event) { dragStart.call(This,event); },false);\r
-               // fix memory leak in Firefox (bug #241518)\r
-               window.addEventListener('unload',function() { \r
-                               var del = This.handle.parentNode.removeChild(This.handle);\r
-                               delete(This.handle);\r
-               },false);\r
-               \r
-               this.editor.parentNode.insertBefore(this.handle,this.editor.nextSibling);\r
-       }\r
-       \r
-       this.context = null;\r
-       this.toolNodes = {}; // lorsque la toolbar est dessinée , cet objet est garni \r
-                                       // de raccourcis vers les éléments DOM correspondants aux outils.\r
-}\r
-\r
-function jsButton(title, fn, scope, className) {\r
-       this.title = title || null;\r
-       this.fn = fn || function(){};\r
-       this.scope = scope || null;\r
-       this.className = className || null;\r
-}\r
-jsButton.prototype.draw = function() {\r
-       if (!this.scope) return null;\r
-       \r
-       var button = document.createElement('button');\r
-       button.setAttribute('type','button');\r
-       if (this.className) button.className = this.className;\r
-       button.title = this.title;\r
-       var span = document.createElement('span');\r
-       span.appendChild(document.createTextNode(this.title));\r
-       button.appendChild(span);\r
-       \r
-       if (this.icon != undefined) {\r
-               button.style.backgroundImage = 'url('+this.icon+')';\r
-       }\r
-       if (typeof(this.fn) == 'function') {\r
-               var This = this;\r
-               button.onclick = function() { try { This.fn.apply(This.scope, arguments) } catch (e) {} return false; };\r
-       }\r
-       return button;\r
-}\r
-\r
-function jsSpace(id) {\r
-       this.id = id || null;\r
-       this.width = null;\r
-}\r
-jsSpace.prototype.draw = function() {\r
-       var span = document.createElement('span');\r
-       if (this.id) span.id = this.id;\r
-       span.appendChild(document.createTextNode(String.fromCharCode(160)));\r
-       span.className = 'jstSpacer';\r
-       if (this.width) span.style.marginRight = this.width+'px';\r
-       \r
-       return span;\r
-} \r
-\r
-function jsCombo(title, options, scope, fn, className) {\r
-       this.title = title || null;\r
-       this.options = options || null;\r
-       this.scope = scope || null;\r
-       this.fn = fn || function(){};\r
-       this.className = className || null;\r
-}\r
-jsCombo.prototype.draw = function() {\r
-       if (!this.scope || !this.options) return null;\r
-\r
-       var select = document.createElement('select');\r
-       if (this.className) select.className = className;\r
-       select.title = this.title;\r
-       \r
-       for (var o in this.options) {\r
-               //var opt = this.options[o];\r
-               var option = document.createElement('option');\r
-               option.value = o;\r
-               option.appendChild(document.createTextNode(this.options[o]));\r
-               select.appendChild(option);\r
-       }\r
-\r
-       var This = this;\r
-       select.onchange = function() {\r
-               try { \r
-                       This.fn.call(This.scope, this.value);\r
-               } catch (e) { alert(e); }\r
-\r
-               return false;\r
-       }\r
-\r
-       return select;\r
-}\r
-\r
-\r
-jsToolBar.prototype = {\r
-       base_url: '',\r
-       mode: 'wiki',\r
-       elements: {},\r
-       \r
-       getMode: function() {\r
-               return this.mode;\r
-       },\r
-       \r
-       setMode: function(mode) {\r
-               this.mode = mode || 'wiki';\r
-       },\r
-       \r
-       switchMode: function(mode) {\r
-               mode = mode || 'wiki';\r
-               this.draw(mode);\r
-       },\r
-       \r
-       button: function(toolName) {\r
-               var tool = this.elements[toolName];\r
-               if (typeof tool.fn[this.mode] != 'function') return null;\r
-               var b = new jsButton(tool.title, tool.fn[this.mode], this, 'jstb_'+toolName);\r
-               if (tool.icon != undefined) b.icon = tool.icon;\r
-               return b;\r
-       },\r
-       space: function(toolName) {\r
-               var tool = new jsSpace(toolName)\r
-               if (this.elements[toolName].width !== undefined)\r
-                       tool.width = this.elements[toolName].width;\r
-               return tool;\r
-       },\r
-       combo: function(toolName) {\r
-               var tool = this.elements[toolName];\r
-               var length = tool[this.mode].list.length;\r
-\r
-               if (typeof tool[this.mode].fn != 'function' || length == 0) {\r
-                       return null;\r
-               } else {\r
-                       var options = {};\r
-                       for (var i=0; i < length; i++) {\r
-                               var opt = tool[this.mode].list[i];\r
-                               options[opt] = tool.options[opt];\r
-                       }\r
-                       return new jsCombo(tool.title, options, this, tool[this.mode].fn);\r
-               }\r
-       },\r
-       draw: function(mode) {\r
-               this.setMode(mode);\r
-               \r
-               // Empty toolbar\r
-               while (this.toolbar.hasChildNodes()) {\r
-                       this.toolbar.removeChild(this.toolbar.firstChild)\r
-               }\r
-               this.toolNodes = {}; // vide les raccourcis DOM/**/\r
-               \r
-               // Draw toolbar elements\r
-               var b, tool, newTool;\r
-               \r
-               for (var i in this.elements) {\r
-                       b = this.elements[i];\r
-\r
-                       var disabled =\r
-                       b.type == undefined || b.type == ''\r
-                       || (b.disabled != undefined && b.disabled)\r
-                       || (b.context != undefined && b.context != null && b.context != this.context);\r
-                       \r
-                       if (!disabled && typeof this[b.type] == 'function') {\r
-                               tool = this[b.type](i);\r
-                               if (tool) newTool = tool.draw();\r
-                               if (newTool) {\r
-                                       this.toolNodes[i] = newTool; //mémorise l'accès DOM pour usage éventuel ultérieur\r
-                                       this.toolbar.appendChild(newTool);\r
-                               }\r
-                       }\r
-               }\r
-       },\r
-       \r
-       singleTag: function(stag,etag) {\r
-               stag = stag || null;\r
-               etag = etag || stag;\r
-               \r
-               if (!stag || !etag) { return; }\r
-               \r
-               this.encloseSelection(stag,etag);\r
-       },\r
-       \r
-       encloseSelection: function(prefix, suffix, fn) {\r
-               this.textarea.focus();\r
-               \r
-               prefix = prefix || '';\r
-               suffix = suffix || '';\r
-               \r
-               var start, end, sel, scrollPos, subst, res;\r
-               \r
-               if (typeof(document["selection"]) != "undefined") {\r
-                       sel = document.selection.createRange().text;\r
-               } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") {\r
-                       start = this.textarea.selectionStart;\r
-                       end = this.textarea.selectionEnd;\r
-                       scrollPos = this.textarea.scrollTop;\r
-                       sel = this.textarea.value.substring(start, end);\r
-               }\r
-               \r
-               if (sel.match(/ $/)) { // exclude ending space char, if any\r
-                       sel = sel.substring(0, sel.length - 1);\r
-                       suffix = suffix + " ";\r
-               }\r
-               \r
-               if (typeof(fn) == 'function') {\r
-                       res = (sel) ? fn.call(this,sel) : fn('');\r
-               } else {\r
-                       res = (sel) ? sel : '';\r
-               }\r
-               \r
-               subst = prefix + res + suffix;\r
-               \r
-               if (typeof(document["selection"]) != "undefined") {\r
-                       var range = document.selection.createRange().text = subst;\r
-                       this.textarea.caretPos -= suffix.length;\r
-               } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") {\r
-                       this.textarea.value = this.textarea.value.substring(0, start) + subst +\r
-                       this.textarea.value.substring(end);\r
-                       if (sel) {\r
-                               this.textarea.setSelectionRange(start + subst.length, start + subst.length);\r
-                       } else {\r
-                               this.textarea.setSelectionRange(start + prefix.length, start + prefix.length);\r
-                       }\r
-                       this.textarea.scrollTop = scrollPos;\r
-               }\r
-       },\r
-       \r
-       stripBaseURL: function(url) {\r
-               if (this.base_url != '') {\r
-                       var pos = url.indexOf(this.base_url);\r
-                       if (pos == 0) {\r
-                               url = url.substr(this.base_url.length);\r
-                       }\r
-               }\r
-               \r
-               return url;\r
-       }\r
-};\r
-\r
-/** Resizer\r
--------------------------------------------------------- */\r
-jsToolBar.prototype.resizeSetStartH = function() {\r
-       this.dragStartH = this.textarea.offsetHeight + 0;\r
-};\r
-jsToolBar.prototype.resizeDragStart = function(event) {\r
-       var This = this;\r
-       this.dragStartY = event.clientY;\r
-       this.resizeSetStartH();\r
-       document.addEventListener('mousemove', this.dragMoveHdlr=function(event){This.resizeDragMove(event);}, false);\r
-       document.addEventListener('mouseup', this.dragStopHdlr=function(event){This.resizeDragStop(event);}, false);\r
-};\r
-\r
-jsToolBar.prototype.resizeDragMove = function(event) {\r
-       this.textarea.style.height = (this.dragStartH+event.clientY-this.dragStartY)+'px';\r
-};\r
-\r
-jsToolBar.prototype.resizeDragStop = function(event) {\r
-       document.removeEventListener('mousemove', this.dragMoveHdlr, false);\r
-       document.removeEventListener('mouseup', this.dragStopHdlr, false);\r
-};\r
-\r
-// Elements definition ------------------------------------\r
-\r
-// strong\r
-jsToolBar.prototype.elements.strong = {\r
-       type: 'button',\r
-       title: 'Strong emphasis',\r
-       fn: {\r
-               wiki: function() { this.singleTag('*') }\r
-       }\r
-}\r
-\r
-// em\r
-jsToolBar.prototype.elements.em = {\r
-       type: 'button',\r
-       title: 'Emphasis',\r
-       fn: {\r
-               wiki: function() { this.singleTag("_") }\r
-       }\r
-}\r
-\r
-// ins\r
-jsToolBar.prototype.elements.ins = {\r
-       type: 'button',\r
-       title: 'Inserted',\r
-       fn: {\r
-               wiki: function() { this.singleTag('+') }\r
-       }\r
-}\r
-\r
-// del\r
-jsToolBar.prototype.elements.del = {\r
-       type: 'button',\r
-       title: 'Deleted',\r
-       fn: {\r
-               wiki: function() { this.singleTag('-') }\r
-       }\r
-}\r
-\r
-// quote\r
-jsToolBar.prototype.elements.quote = {\r
-       type: 'button',\r
-       title: 'Inline quote',\r
-       fn: {\r
-               wiki: function() { this.singleTag('??') }\r
-       }\r
-}\r
-\r
-// code\r
-jsToolBar.prototype.elements.code = {\r
-       type: 'button',\r
-       title: 'Code',\r
-       fn: {\r
-               wiki: function() { this.singleTag('@') }\r
-       }\r
-}\r
-\r
-// spacer\r
-jsToolBar.prototype.elements.space1 = {type: 'space'}\r
-\r
-// heading\r
-jsToolBar.prototype.elements.heading = {\r
-       type: 'button',\r
-       title: 'Heading',\r
-       fn: {\r
-               wiki: function() {\r
-                       this.encloseSelection('','',function(str) {\r
-                               str = str.replace(/\r/g,'');\r
-                               return 'h2. '+str.replace(/\n/g,"\n* ");\r
-                       });\r
-               }\r
-       }\r
-}\r
-\r
-// br\r
-//jsToolBar.prototype.elements.br = {\r
-//     type: 'button',\r
-//     title: 'Line break',\r
-//     fn: {\r
-//             wiki: function() { this.encloseSelection("%%%\n",'') }\r
-//     }\r
-//}\r
-\r
-// spacer\r
-jsToolBar.prototype.elements.space2 = {type: 'space'}\r
-\r
-// ul\r
-jsToolBar.prototype.elements.ul = {\r
-       type: 'button',\r
-       title: 'Unordered list',\r
-       fn: {\r
-               wiki: function() {\r
-                       this.encloseSelection('','',function(str) {\r
-                               str = str.replace(/\r/g,'');\r
-                               return '* '+str.replace(/\n/g,"\n* ");\r
-                       });\r
-               }\r
-       }\r
-}\r
-\r
-// ol\r
-jsToolBar.prototype.elements.ol = {\r
-       type: 'button',\r
-       title: 'Ordered list',\r
-       fn: {\r
-               wiki: function() {\r
-                       this.encloseSelection('','',function(str) {\r
-                               str = str.replace(/\r/g,'');\r
-                               return '# '+str.replace(/\n/g,"\n# ");\r
-                       });\r
-               }\r
-       }\r
-}\r
-\r
-// spacer\r
-jsToolBar.prototype.elements.space3 = {type: 'space'}\r
-\r
-// link\r
-/*\r
-jsToolBar.prototype.elements.link = {\r
-       type: 'button',\r
-       title: 'Link',\r
-       fn: {},\r
-       href_prompt: 'Please give page URL:',\r
-       hreflang_prompt: 'Language of this page:',\r
-       default_hreflang: '',\r
-       prompt: function(href,hreflang) {\r
-               href = href || '';\r
-               hreflang = hreflang || this.elements.link.default_hreflang;\r
-               \r
-               href = window.prompt(this.elements.link.href_prompt,href);\r
-               if (!href) { return false; }\r
-               \r
-               hreflang = ""\r
-               \r
-               return { href: this.stripBaseURL(href), hreflang: hreflang };\r
-       }\r
-}\r
-\r
-jsToolBar.prototype.elements.link.fn.wiki = function() {\r
-       var link = this.elements.link.prompt.call(this);\r
-       if (link) {\r
-               var stag = '"';\r
-               var etag = '":'+link.href;\r
-               this.encloseSelection(stag,etag);\r
-       }\r
-};\r
-*/\r
-// link or wiki page\r
-jsToolBar.prototype.elements.link = {\r
-       type: 'button',\r
-       title: 'Link',\r
-       fn: {\r
-               wiki: function() { this.encloseSelection("[[", "]]") }\r
-       }\r
-}\r
+/* ***** BEGIN LICENSE BLOCK *****
+ * This file is part of DotClear.
+ * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All
+ * rights reserved.
+ *
+ * DotClear 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.
+ * 
+ * DotClear 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 DotClear; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * ***** END LICENSE BLOCK *****
+*/
+
+/* Modified by JP LANG for textile formatting */
+
+function jsToolBar(textarea) {
+       if (!document.createElement) { return; }
+       
+       if (!textarea) { return; }
+       
+       if ((typeof(document["selection"]) == "undefined")
+       && (typeof(textarea["setSelectionRange"]) == "undefined")) {
+               return;
+       }
+       
+       this.textarea = textarea;
+       
+       this.editor = document.createElement('div');
+       this.editor.className = 'jstEditor';
+       
+       this.textarea.parentNode.insertBefore(this.editor,this.textarea);
+       this.editor.appendChild(this.textarea);
+       
+       this.toolbar = document.createElement("div");
+       this.toolbar.className = 'jstElements';
+       this.editor.parentNode.insertBefore(this.toolbar,this.editor);
+       
+       // Dragable resizing (only for gecko)
+       if (this.editor.addEventListener)
+       {
+               this.handle = document.createElement('div');
+               this.handle.className = 'jstHandle';
+               var dragStart = this.resizeDragStart;
+               var This = this;
+               this.handle.addEventListener('mousedown',function(event) { dragStart.call(This,event); },false);
+               // fix memory leak in Firefox (bug #241518)
+               window.addEventListener('unload',function() { 
+                               var del = This.handle.parentNode.removeChild(This.handle);
+                               delete(This.handle);
+               },false);
+               
+               this.editor.parentNode.insertBefore(this.handle,this.editor.nextSibling);
+       }
+       
+       this.context = null;
+       this.toolNodes = {}; // lorsque la toolbar est dessinée , cet objet est garni 
+                                       // de raccourcis vers les éléments DOM correspondants aux outils.
+}
+
+function jsButton(title, fn, scope, className) {
+       this.title = title || null;
+       this.fn = fn || function(){};
+       this.scope = scope || null;
+       this.className = className || null;
+}
+jsButton.prototype.draw = function() {
+       if (!this.scope) return null;
+       
+       var button = document.createElement('button');
+       button.setAttribute('type','button');
+       if (this.className) button.className = this.className;
+       button.title = this.title;
+       var span = document.createElement('span');
+       span.appendChild(document.createTextNode(this.title));
+       button.appendChild(span);
+       
+       if (this.icon != undefined) {
+               button.style.backgroundImage = 'url('+this.icon+')';
+       }
+       if (typeof(this.fn) == 'function') {
+               var This = this;
+               button.onclick = function() { try { This.fn.apply(This.scope, arguments) } catch (e) {} return false; };
+       }
+       return button;
+}
+
+function jsSpace(id) {
+       this.id = id || null;
+       this.width = null;
+}
+jsSpace.prototype.draw = function() {
+       var span = document.createElement('span');
+       if (this.id) span.id = this.id;
+       span.appendChild(document.createTextNode(String.fromCharCode(160)));
+       span.className = 'jstSpacer';
+       if (this.width) span.style.marginRight = this.width+'px';
+       
+       return span;
+} 
+
+function jsCombo(title, options, scope, fn, className) {
+       this.title = title || null;
+       this.options = options || null;
+       this.scope = scope || null;
+       this.fn = fn || function(){};
+       this.className = className || null;
+}
+jsCombo.prototype.draw = function() {
+       if (!this.scope || !this.options) return null;
+
+       var select = document.createElement('select');
+       if (this.className) select.className = className;
+       select.title = this.title;
+       
+       for (var o in this.options) {
+               //var opt = this.options[o];
+               var option = document.createElement('option');
+               option.value = o;
+               option.appendChild(document.createTextNode(this.options[o]));
+               select.appendChild(option);
+       }
+
+       var This = this;
+       select.onchange = function() {
+               try { 
+                       This.fn.call(This.scope, this.value);
+               } catch (e) { alert(e); }
+
+               return false;
+       }
+
+       return select;
+}
+
+
+jsToolBar.prototype = {
+       base_url: '',
+       mode: 'wiki',
+       elements: {},
+       
+       getMode: function() {
+               return this.mode;
+       },
+       
+       setMode: function(mode) {
+               this.mode = mode || 'wiki';
+       },
+       
+       switchMode: function(mode) {
+               mode = mode || 'wiki';
+               this.draw(mode);
+       },
+       
+       button: function(toolName) {
+               var tool = this.elements[toolName];
+               if (typeof tool.fn[this.mode] != 'function') return null;
+               var b = new jsButton(tool.title, tool.fn[this.mode], this, 'jstb_'+toolName);
+               if (tool.icon != undefined) b.icon = tool.icon;
+               return b;
+       },
+       space: function(toolName) {
+               var tool = new jsSpace(toolName)
+               if (this.elements[toolName].width !== undefined)
+                       tool.width = this.elements[toolName].width;
+               return tool;
+       },
+       combo: function(toolName) {
+               var tool = this.elements[toolName];
+               var length = tool[this.mode].list.length;
+
+               if (typeof tool[this.mode].fn != 'function' || length == 0) {
+                       return null;
+               } else {
+                       var options = {};
+                       for (var i=0; i < length; i++) {
+                               var opt = tool[this.mode].list[i];
+                               options[opt] = tool.options[opt];
+                       }
+                       return new jsCombo(tool.title, options, this, tool[this.mode].fn);
+               }
+       },
+       draw: function(mode) {
+               this.setMode(mode);
+               
+               // Empty toolbar
+               while (this.toolbar.hasChildNodes()) {
+                       this.toolbar.removeChild(this.toolbar.firstChild)
+               }
+               this.toolNodes = {}; // vide les raccourcis DOM/**/
+               
+               // Draw toolbar elements
+               var b, tool, newTool;
+               
+               for (var i in this.elements) {
+                       b = this.elements[i];
+
+                       var disabled =
+                       b.type == undefined || b.type == ''
+                       || (b.disabled != undefined && b.disabled)
+                       || (b.context != undefined && b.context != null && b.context != this.context);
+                       
+                       if (!disabled && typeof this[b.type] == 'function') {
+                               tool = this[b.type](i);
+                               if (tool) newTool = tool.draw();
+                               if (newTool) {
+                                       this.toolNodes[i] = newTool; //mémorise l'accès DOM pour usage éventuel ultérieur
+                                       this.toolbar.appendChild(newTool);
+                               }
+                       }
+               }
+       },
+       
+       singleTag: function(stag,etag) {
+               stag = stag || null;
+               etag = etag || stag;
+               
+               if (!stag || !etag) { return; }
+               
+               this.encloseSelection(stag,etag);
+       },
+       
+       encloseSelection: function(prefix, suffix, fn) {
+               this.textarea.focus();
+               
+               prefix = prefix || '';
+               suffix = suffix || '';
+               
+               var start, end, sel, scrollPos, subst, res;
+               
+               if (typeof(document["selection"]) != "undefined") {
+                       sel = document.selection.createRange().text;
+               } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") {
+                       start = this.textarea.selectionStart;
+                       end = this.textarea.selectionEnd;
+                       scrollPos = this.textarea.scrollTop;
+                       sel = this.textarea.value.substring(start, end);
+               }
+               
+               if (sel.match(/ $/)) { // exclude ending space char, if any
+                       sel = sel.substring(0, sel.length - 1);
+                       suffix = suffix + " ";
+               }
+               
+               if (typeof(fn) == 'function') {
+                       res = (sel) ? fn.call(this,sel) : fn('');
+               } else {
+                       res = (sel) ? sel : '';
+               }
+               
+               subst = prefix + res + suffix;
+               
+               if (typeof(document["selection"]) != "undefined") {
+                       var range = document.selection.createRange().text = subst;
+                       this.textarea.caretPos -= suffix.length;
+               } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") {
+                       this.textarea.value = this.textarea.value.substring(0, start) + subst +
+                       this.textarea.value.substring(end);
+                       if (sel) {
+                               this.textarea.setSelectionRange(start + subst.length, start + subst.length);
+                       } else {
+                               this.textarea.setSelectionRange(start + prefix.length, start + prefix.length);
+                       }
+                       this.textarea.scrollTop = scrollPos;
+               }
+       },
+       
+       stripBaseURL: function(url) {
+               if (this.base_url != '') {
+                       var pos = url.indexOf(this.base_url);
+                       if (pos == 0) {
+                               url = url.substr(this.base_url.length);
+                       }
+               }
+               
+               return url;
+       }
+};
+
+/** Resizer
+-------------------------------------------------------- */
+jsToolBar.prototype.resizeSetStartH = function() {
+       this.dragStartH = this.textarea.offsetHeight + 0;
+};
+jsToolBar.prototype.resizeDragStart = function(event) {
+       var This = this;
+       this.dragStartY = event.clientY;
+       this.resizeSetStartH();
+       document.addEventListener('mousemove', this.dragMoveHdlr=function(event){This.resizeDragMove(event);}, false);
+       document.addEventListener('mouseup', this.dragStopHdlr=function(event){This.resizeDragStop(event);}, false);
+};
+
+jsToolBar.prototype.resizeDragMove = function(event) {
+       this.textarea.style.height = (this.dragStartH+event.clientY-this.dragStartY)+'px';
+};
+
+jsToolBar.prototype.resizeDragStop = function(event) {
+       document.removeEventListener('mousemove', this.dragMoveHdlr, false);
+       document.removeEventListener('mouseup', this.dragStopHdlr, false);
+};
+
+// Elements definition ------------------------------------
+
+// strong
+jsToolBar.prototype.elements.strong = {
+       type: 'button',
+       title: 'Strong emphasis',
+       fn: {
+               wiki: function() { this.singleTag('*') }
+       }
+}
+
+// em
+jsToolBar.prototype.elements.em = {
+       type: 'button',
+       title: 'Emphasis',
+       fn: {
+               wiki: function() { this.singleTag("_") }
+       }
+}
+
+// ins
+jsToolBar.prototype.elements.ins = {
+       type: 'button',
+       title: 'Inserted',
+       fn: {
+               wiki: function() { this.singleTag('+') }
+       }
+}
+
+// del
+jsToolBar.prototype.elements.del = {
+       type: 'button',
+       title: 'Deleted',
+       fn: {
+               wiki: function() { this.singleTag('-') }
+       }
+}
+
+// quote
+jsToolBar.prototype.elements.quote = {
+       type: 'button',
+       title: 'Inline quote',
+       fn: {
+               wiki: function() { this.singleTag('??') }
+       }
+}
+
+// code
+jsToolBar.prototype.elements.code = {
+       type: 'button',
+       title: 'Code',
+       fn: {
+               wiki: function() { this.singleTag('@') }
+       }
+}
+
+// spacer
+jsToolBar.prototype.elements.space1 = {type: 'space'}
+
+// heading
+jsToolBar.prototype.elements.heading = {
+       type: 'button',
+       title: 'Heading',
+       fn: {
+               wiki: function() {
+                       this.encloseSelection('','',function(str) {
+                               str = str.replace(/\r/g,'');
+                               return 'h2. '+str.replace(/\n/g,"\n* ");
+                       });
+               }
+       }
+}
+
+// br
+//jsToolBar.prototype.elements.br = {
+//     type: 'button',
+//     title: 'Line break',
+//     fn: {
+//             wiki: function() { this.encloseSelection("%%%\n",'') }
+//     }
+//}
+
+// spacer
+jsToolBar.prototype.elements.space2 = {type: 'space'}
+
+// ul
+jsToolBar.prototype.elements.ul = {
+       type: 'button',
+       title: 'Unordered list',
+       fn: {
+               wiki: function() {
+                       this.encloseSelection('','',function(str) {
+                               str = str.replace(/\r/g,'');
+                               return '* '+str.replace(/\n/g,"\n* ");
+                       });
+               }
+       }
+}
+
+// ol
+jsToolBar.prototype.elements.ol = {
+       type: 'button',
+       title: 'Ordered list',
+       fn: {
+               wiki: function() {
+                       this.encloseSelection('','',function(str) {
+                               str = str.replace(/\r/g,'');
+                               return '# '+str.replace(/\n/g,"\n# ");
+                       });
+               }
+       }
+}
+
+// spacer
+jsToolBar.prototype.elements.space3 = {type: 'space'}
+
+// link
+/*
+jsToolBar.prototype.elements.link = {
+       type: 'button',
+       title: 'Link',
+       fn: {},
+       href_prompt: 'Please give page URL:',
+       hreflang_prompt: 'Language of this page:',
+       default_hreflang: '',
+       prompt: function(href,hreflang) {
+               href = href || '';
+               hreflang = hreflang || this.elements.link.default_hreflang;
+               
+               href = window.prompt(this.elements.link.href_prompt,href);
+               if (!href) { return false; }
+               
+               hreflang = ""
+               
+               return { href: this.stripBaseURL(href), hreflang: hreflang };
+       }
+}
+
+jsToolBar.prototype.elements.link.fn.wiki = function() {
+       var link = this.elements.link.prompt.call(this);
+       if (link) {
+               var stag = '"';
+               var etag = '":'+link.href;
+               this.encloseSelection(stag,etag);
+       }
+};
+*/
+// link or wiki page
+jsToolBar.prototype.elements.link = {
+       type: 'button',
+       title: 'Link',
+       fn: {
+               wiki: function() { this.encloseSelection("[[", "]]") }
+       }
+}
index bf5612dd5548d83bffc553be46a6fbd17cec806b..b3d3891be21e0858ac73f0f70163d324c2513da4 100644 (file)
-//*****************************************************************************\r
-// Do not remove this notice.\r
-//\r
-// Copyright 2000-2004 by Mike Hall.\r
-// See http://www.brainjar.com for terms of use.\r
-//*****************************************************************************\r
-\r
-//----------------------------------------------------------------------------\r
-// Emulation de la fonction push pour IE5.0\r
-//----------------------------------------------------------------------------\r
-if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i<arguments.length;i++)this[this.length]=arguments[i];};};\r
-\r
-//----------------------------------------------------------------------------\r
-// Code to determine the browser and version.\r
-//----------------------------------------------------------------------------\r
-\r
-function Browser() {\r
-\r
-  var ua, s, i;\r
-\r
-  this.isIE    = false;  // Internet Explorer\r
-  this.isOP    = false;  // Opera\r
-  this.isNS    = false;  // Netscape\r
-  this.version = null;\r
-  //-- debut ajout ci ----\r
-  this.isIE5mac    = false;  // Internet Explorer 5 mac\r
-  //-- fin ajout ci ----    \r
-\r
-  ua = navigator.userAgent;\r
-\r
-  //-- debut ajout ci ----\r
-  if (ua.indexOf("Opera")==-1 && ua.indexOf("MSIE 5")>-1 && ua.indexOf("Mac")>-1) {\r
-    this.isIE5mac = true;\r
-    this.version = "";\r
-    return;\r
-  }\r
-  //-- fin ajout ci ----    \r
-  \r
-  s = "Opera";\r
-  if ((i = ua.indexOf(s)) >= 0) {\r
-    this.isOP = true;\r
-    this.version = parseFloat(ua.substr(i + s.length));\r
-    return;\r
-  }\r
-\r
-  s = "Netscape6/";\r
-  if ((i = ua.indexOf(s)) >= 0) {\r
-    this.isNS = true;\r
-    this.version = parseFloat(ua.substr(i + s.length));\r
-    return;\r
-  }\r
-\r
-  // Treat any other "Gecko" browser as Netscape 6.1.\r
-\r
-  s = "Gecko";\r
-  if ((i = ua.indexOf(s)) >= 0) {\r
-    this.isNS = true;\r
-    this.version = 6.1;\r
-    return;\r
-  }\r
-  \r
-  s = "MSIE";\r
-  if ((i = ua.indexOf(s))) {\r
-    this.isIE = true;\r
-    this.version = parseFloat(ua.substr(i + s.length));\r
-    return;\r
-  }\r
-}\r
-\r
-var browser = new Browser();\r
-\r
-//----------------------------------------------------------------------------\r
-// Code for handling the menu bar and active button.\r
-//----------------------------------------------------------------------------\r
-\r
-var activeButton = null;\r
-\r
-\r
-function buttonClick(event, menuId) {\r
-\r
-  var button;\r
-\r
-  // Get the target button element.\r
-\r
-  if (browser.isIE)\r
-    button = window.event.srcElement;\r
-  else\r
-    button = event.currentTarget;\r
-\r
-  // Blur focus from the link to remove that annoying outline.\r
-\r
-  button.blur();\r
-\r
-  // Associate the named menu to this button if not already done.\r
-  // Additionally, initialize menu display.\r
-\r
-  if (button.menu == null) {\r
-    button.menu = document.getElementById(menuId);\r
-    if (button.menu.isInitialized == null)\r
-      menuInit(button.menu);\r
-  }\r
-\r
-  // Set mouseout event handler for the button, if not already done.\r
-\r
-  if (button.onmouseout == null)\r
-    button.onmouseout = buttonOrMenuMouseout;\r
-\r
-  // Exit if this button is the currently active one.\r
-\r
-  if (button == activeButton)\r
-    return false;\r
-\r
-  // Reset the currently active button, if any.\r
-\r
-  if (activeButton != null)\r
-    resetButton(activeButton);\r
-\r
-  // Activate this button, unless it was the currently active one.\r
-\r
-  if (button != activeButton) {\r
-    depressButton(button);\r
-    activeButton = button;\r
-  }\r
-  else\r
-    activeButton = null;\r
-\r
-  return false;\r
-}\r
-\r
-function buttonMouseover(event, menuId) {\r
-\r
-  var button;\r
-//-- debut ajout ci ----\r
-  if (!browser.isIE5mac) { \r
-  //-- fin ajout ci ----\r
-  \r
-//-- debut ajout ci ----\r
-       cicacheselect();\r
-//-- fin ajout ci ----    \r
-\r
-  // Activates this button's menu if no other is currently active.\r
-\r
-  if (activeButton == null) {\r
-    buttonClick(event, menuId);\r
-    return;\r
-  }\r
-\r
-  // Find the target button element.\r
-\r
-  if (browser.isIE)\r
-    button = window.event.srcElement;\r
-  else\r
-    button = event.currentTarget;\r
-\r
-  // If any other button menu is active, make this one active instead.\r
-\r
-  if (activeButton != null && activeButton != button)\r
-    buttonClick(event, menuId);\r
- //-- debut ajout ci ----\r
-  } \r
-  //-- fin ajout ci ----\r
-    \r
-}\r
-\r
-function depressButton(button) {\r
-\r
-  var x, y;\r
-\r
-  // Update the button's style class to make it look like it's\r
-  // depressed.\r
-\r
-  button.className += " menuButtonActive";\r
-\r
-  // Set mouseout event handler for the button, if not already done.\r
-\r
-  if (button.onmouseout == null)\r
-    button.onmouseout = buttonOrMenuMouseout;\r
-  if (button.menu.onmouseout == null)\r
-    button.menu.onmouseout = buttonOrMenuMouseout;\r
-\r
-  // Position the associated drop down menu under the button and\r
-  // show it.\r
-\r
-  x = getPageOffsetLeft(button);\r
-  y = getPageOffsetTop(button) + button.offsetHeight - 1;\r
-\r
-  // For IE, adjust position.\r
-\r
-  if (browser.isIE) {\r
-    x += button.offsetParent.clientLeft;\r
-    y += button.offsetParent.clientTop;\r
-  }\r
-\r
-  button.menu.style.left = x + "px";\r
-  button.menu.style.top  = y + "px";0\r
-  button.menu.style.visibility = "visible";\r
-}\r
-\r
-function resetButton(button) {\r
-\r
-  // Restore the button's style class.\r
-\r
-  removeClassName(button, "menuButtonActive");\r
-\r
-  // Hide the button's menu, first closing any sub menus.\r
-\r
-  if (button.menu != null) {\r
-    closeSubMenu(button.menu);\r
-    button.menu.style.visibility = "hidden";\r
-  }\r
-}\r
-\r
-//----------------------------------------------------------------------------\r
-// Code to handle the menus and sub menus.\r
-//----------------------------------------------------------------------------\r
-\r
-function menuMouseover(event) {\r
-\r
-  var menu;\r
- //-- debut ajout ci ----\r
-  if (!browser.isIE5mac) { \r
-  //-- fin ajout ci ----\r
-//-- debut ajout ci ----\r
-       cicacheselect();\r
-//-- fin ajout ci ----    \r
-\r
-  // Find the target menu element.\r
-  if (browser.isIE)\r
-    menu = getContainerWith(window.event.srcElement, "DIV", "menu");\r
-  else\r
-    menu = event.currentTarget;\r
-\r
-  // Close any active sub menu.\r
-\r
-  if (menu.activeItem != null)\r
-    closeSubMenu(menu);\r
- //-- debut ajout ci ----\r
-  } \r
-  //-- fin ajout ci ----\r
-}\r
-\r
-function menuItemMouseover(event, menuId) {\r
-\r
-  var item, menu, x, y;\r
-//-- debut ajout ci ----\r
-       cicacheselect();\r
-//-- fin ajout ci ----    \r
-\r
-  // Find the target item element and its parent menu element.\r
-\r
-  if (browser.isIE)\r
-    item = getContainerWith(window.event.srcElement, "A", "menuItem");\r
-  else\r
-    item = event.currentTarget;\r
-  menu = getContainerWith(item, "DIV", "menu");\r
-\r
-  // Close any active sub menu and mark this one as active.\r
-\r
-  if (menu.activeItem != null)\r
-    closeSubMenu(menu);\r
-  menu.activeItem = item;\r
-\r
-  // Highlight the item element.\r
-\r
-  item.className += " menuItemHighlight";\r
-\r
-  // Initialize the sub menu, if not already done.\r
-\r
-  if (item.subMenu == null) {\r
-    item.subMenu = document.getElementById(menuId);\r
-    if (item.subMenu.isInitialized == null)\r
-      menuInit(item.subMenu);\r
-  }\r
-\r
-  // Set mouseout event handler for the sub menu, if not already done.\r
-\r
-  if (item.subMenu.onmouseout == null)\r
-    item.subMenu.onmouseout = buttonOrMenuMouseout;\r
-\r
-  // Get position for submenu based on the menu item.\r
-\r
-  x = getPageOffsetLeft(item) + item.offsetWidth;\r
-  y = getPageOffsetTop(item);\r
-\r
-  // Adjust position to fit in view.\r
-\r
-  var maxX, maxY;\r
-\r
-  if (browser.isIE) {\r
-    maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) +\r
-      (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);\r
-    maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) +\r
-      (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);\r
-  }\r
-  if (browser.isOP) {\r
-    maxX = document.documentElement.scrollLeft + window.innerWidth;\r
-    maxY = document.documentElement.scrollTop  + window.innerHeight;\r
-  }\r
-  if (browser.isNS) {\r
-    maxX = window.scrollX + window.innerWidth;\r
-    maxY = window.scrollY + window.innerHeight;\r
-  }\r
-  maxX -= item.subMenu.offsetWidth;\r
-  maxY -= item.subMenu.offsetHeight;\r
-\r
-  if (x > maxX)\r
-    x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth\r
-      + (menu.offsetWidth - item.offsetWidth));\r
-  y = Math.max(0, Math.min(y, maxY));\r
-\r
-  // Position and show the sub menu.\r
-\r
-  item.subMenu.style.left = x + "px";\r
-  item.subMenu.style.top  = y + "px";\r
-  item.subMenu.style.visibility = "visible";\r
-\r
-  // Stop the event from bubbling.\r
-\r
-  if (browser.isIE)\r
-    window.event.cancelBubble = true;\r
-  else\r
-    event.stopPropagation();\r
-}\r
-\r
-function closeSubMenu(menu) {\r
-\r
-  if (menu == null || menu.activeItem == null)\r
-    return;\r
-\r
-  // Recursively close any sub menus.\r
-\r
-  if (menu.activeItem.subMenu != null) {\r
-    closeSubMenu(menu.activeItem.subMenu);\r
-    menu.activeItem.subMenu.style.visibility = "hidden";\r
-    menu.activeItem.subMenu = null;\r
-  }\r
-  removeClassName(menu.activeItem, "menuItemHighlight");\r
-  menu.activeItem = null;\r
-}\r
-\r
-\r
-function buttonOrMenuMouseout(event) {\r
-\r
-  var el;\r
-\r
-  // If there is no active button, exit.\r
-\r
-  if (activeButton == null)\r
-    return;\r
-\r
-  // Find the element the mouse is moving to.\r
-\r
-  if (browser.isIE)\r
-    el = window.event.toElement;\r
-  else if (event.relatedTarget != null)\r
-      el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);\r
-\r
-  // If the element is not part of a menu, reset the active button.\r
-\r
-  if (getContainerWith(el, "DIV", "menu") == null) {\r
-    resetButton(activeButton);\r
-    activeButton = null;\r
-//-- debut ajout ci ----\r
-       cimontreselect();\r
-//-- fin ajout ci ----    \r
-  }\r
-}\r
-\r
-\r
-//----------------------------------------------------------------------------\r
-// Code to initialize menus.\r
-//----------------------------------------------------------------------------\r
-\r
-function menuInit(menu) {\r
-\r
-  var itemList, spanList;\r
-  var textEl, arrowEl;\r
-  var itemWidth;\r
-  var w, dw;\r
-  var i, j;\r
-\r
-  // For IE, replace arrow characters.\r
-\r
-  if (browser.isIE) {\r
-    menu.style.lineHeight = "2.5ex";\r
-    spanList = menu.getElementsByTagName("SPAN");\r
-    for (i = 0; i < spanList.length; i++)\r
-      if (hasClassName(spanList[i], "menuItemArrow")) {\r
-        spanList[i].style.fontFamily = "Webdings";\r
-        spanList[i].firstChild.nodeValue = "4";\r
-      }\r
-  }\r
-\r
-  // Find the width of a menu item.\r
-\r
-  itemList = menu.getElementsByTagName("A");\r
-  if (itemList.length > 0)\r
-    itemWidth = itemList[0].offsetWidth;\r
-  else\r
-    return;\r
-\r
-  // For items with arrows, add padding to item text to make the\r
-  // arrows flush right.\r
-\r
-  for (i = 0; i < itemList.length; i++) {\r
-    spanList = itemList[i].getElementsByTagName("SPAN");\r
-    textEl  = null;\r
-    arrowEl = null;\r
-    for (j = 0; j < spanList.length; j++) {\r
-      if (hasClassName(spanList[j], "menuItemText"))\r
-        textEl = spanList[j];\r
-      if (hasClassName(spanList[j], "menuItemArrow"))\r
-        arrowEl = spanList[j];\r
-    }\r
-    if (textEl != null && arrowEl != null) {\r
-      textEl.style.paddingRight = (itemWidth \r
-        - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";\r
-      // For Opera, remove the negative right margin to fix a display bug.\r
-      if (browser.isOP)\r
-        arrowEl.style.marginRight = "0px";\r
-    }\r
-  }\r
-\r
-  // Fix IE hover problem by setting an explicit width on first item of\r
-  // the menu.\r
-\r
-  if (browser.isIE) {\r
-    w = itemList[0].offsetWidth;\r
-    itemList[0].style.width = w + "px";\r
-    dw = itemList[0].offsetWidth - w;\r
-    w -= dw;\r
-    itemList[0].style.width = w + "px";\r
-  }\r
-\r
-  // Mark menu as initialized.\r
-\r
-  menu.isInitialized = true;\r
-}\r
-\r
-//----------------------------------------------------------------------------\r
-// General utility functions.\r
-//----------------------------------------------------------------------------\r
-\r
-function getContainerWith(node, tagName, className) {\r
-\r
-  // Starting with the given node, find the nearest containing element\r
-  // with the specified tag name and style class.\r
-\r
-  while (node != null) {\r
-    if (node.tagName != null && node.tagName == tagName &&\r
-        hasClassName(node, className))\r
-      return node;\r
-    node = node.parentNode;\r
-  }\r
-\r
-  return node;\r
-}\r
-\r
-function hasClassName(el, name) {\r
-\r
-  var i, list;\r
-\r
-  // Return true if the given element currently has the given class\r
-  // name.\r
-\r
-  list = el.className.split(" ");\r
-  for (i = 0; i < list.length; i++)\r
-    if (list[i] == name)\r
-      return true;\r
-\r
-  return false;\r
-}\r
-\r
-function removeClassName(el, name) {\r
-\r
-  var i, curList, newList;\r
-\r
-  if (el.className == null)\r
-    return;\r
-\r
-  // Remove the given class name from the element's className property.\r
-\r
-  newList = new Array();\r
-  curList = el.className.split(" ");\r
-  for (i = 0; i < curList.length; i++)\r
-    if (curList[i] != name)\r
-      newList.push(curList[i]);\r
-  el.className = newList.join(" ");\r
-}\r
-\r
-function getPageOffsetLeft(el) {\r
-\r
-  var x;\r
-\r
-  // Return the x coordinate of an element relative to the page.\r
-\r
-  x = el.offsetLeft;\r
-  if (el.offsetParent != null)\r
-    x += getPageOffsetLeft(el.offsetParent);\r
-\r
-  return x;\r
-}\r
-\r
-function getPageOffsetTop(el) {\r
-\r
-  var y;\r
-\r
-  // Return the x coordinate of an element relative to the page.\r
-\r
-  y = el.offsetTop;\r
-  if (el.offsetParent != null)\r
-    y += getPageOffsetTop(el.offsetParent);\r
-\r
-  return y;\r
-}\r
-\r
-//-- debut ajout ci ----\r
-function cicacheselect(){\r
-  if (browser.isIE) {\r
-        oSelects = document.getElementsByTagName('SELECT');\r
-        if (oSelects.length > 0) {\r
-         for (i = 0; i < oSelects.length; i++) {\r
-          oSlt = oSelects[i];\r
-           if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';}\r
-         }\r
-        }  \r
-        oSelects = document.getElementsByName('masquable');\r
-        if (oSelects.length > 0) {\r
-         for (i = 0; i < oSelects.length; i++) {\r
-          oSlt = oSelects[i];\r
-           if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';}\r
-         }\r
-        }  \r
-  }\r
-}      \r
-\r
-function cimontreselect(){\r
-  if (browser.isIE) {\r
-        oSelects = document.getElementsByTagName('SELECT');\r
-        if (oSelects.length > 0) {\r
-         for (i = 0; i < oSelects.length; i++) {\r
-          oSlt = oSelects[i];\r
-           if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';}\r
-         }\r
-        }  \r
-        oSelects = document.getElementsByName('masquable');\r
-        if (oSelects.length > 0) {\r
-         for (i = 0; i < oSelects.length; i++) {\r
-          oSlt = oSelects[i];\r
-           if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';}\r
-         }\r
-        }  \r
-  }\r
-}      \r
-\r
-//-- fin ajout ci ----    \r
+//*****************************************************************************
+// Do not remove this notice.
+//
+// Copyright 2000-2004 by Mike Hall.
+// See http://www.brainjar.com for terms of use.
+//*****************************************************************************
+
+//----------------------------------------------------------------------------
+// Emulation de la fonction push pour IE5.0
+//----------------------------------------------------------------------------
+if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i<arguments.length;i++)this[this.length]=arguments[i];};};
+
+//----------------------------------------------------------------------------
+// Code to determine the browser and version.
+//----------------------------------------------------------------------------
+
+function Browser() {
+
+  var ua, s, i;
+
+  this.isIE    = false;  // Internet Explorer
+  this.isOP    = false;  // Opera
+  this.isNS    = false;  // Netscape
+  this.version = null;
+  //-- debut ajout ci ----
+  this.isIE5mac    = false;  // Internet Explorer 5 mac
+  //-- fin ajout ci ----    
+
+  ua = navigator.userAgent;
+
+  //-- debut ajout ci ----
+  if (ua.indexOf("Opera")==-1 && ua.indexOf("MSIE 5")>-1 && ua.indexOf("Mac")>-1) {
+    this.isIE5mac = true;
+    this.version = "";
+    return;
+  }
+  //-- fin ajout ci ----    
+  
+  s = "Opera";
+  if ((i = ua.indexOf(s)) >= 0) {
+    this.isOP = true;
+    this.version = parseFloat(ua.substr(i + s.length));
+    return;
+  }
+
+  s = "Netscape6/";
+  if ((i = ua.indexOf(s)) >= 0) {
+    this.isNS = true;
+    this.version = parseFloat(ua.substr(i + s.length));
+    return;
+  }
+
+  // Treat any other "Gecko" browser as Netscape 6.1.
+
+  s = "Gecko";
+  if ((i = ua.indexOf(s)) >= 0) {
+    this.isNS = true;
+    this.version = 6.1;
+    return;
+  }
+  
+  s = "MSIE";
+  if ((i = ua.indexOf(s))) {
+    this.isIE = true;
+    this.version = parseFloat(ua.substr(i + s.length));
+    return;
+  }
+}
+
+var browser = new Browser();
+
+//----------------------------------------------------------------------------
+// Code for handling the menu bar and active button.
+//----------------------------------------------------------------------------
+
+var activeButton = null;
+
+
+function buttonClick(event, menuId) {
+
+  var button;
+
+  // Get the target button element.
+
+  if (browser.isIE)
+    button = window.event.srcElement;
+  else
+    button = event.currentTarget;
+
+  // Blur focus from the link to remove that annoying outline.
+
+  button.blur();
+
+  // Associate the named menu to this button if not already done.
+  // Additionally, initialize menu display.
+
+  if (button.menu == null) {
+    button.menu = document.getElementById(menuId);
+    if (button.menu.isInitialized == null)
+      menuInit(button.menu);
+  }
+
+  // Set mouseout event handler for the button, if not already done.
+
+  if (button.onmouseout == null)
+    button.onmouseout = buttonOrMenuMouseout;
+
+  // Exit if this button is the currently active one.
+
+  if (button == activeButton)
+    return false;
+
+  // Reset the currently active button, if any.
+
+  if (activeButton != null)
+    resetButton(activeButton);
+
+  // Activate this button, unless it was the currently active one.
+
+  if (button != activeButton) {
+    depressButton(button);
+    activeButton = button;
+  }
+  else
+    activeButton = null;
+
+  return false;
+}
+
+function buttonMouseover(event, menuId) {
+
+  var button;
+//-- debut ajout ci ----
+  if (!browser.isIE5mac) { 
+  //-- fin ajout ci ----
+  
+//-- debut ajout ci ----
+       cicacheselect();
+//-- fin ajout ci ----    
+
+  // Activates this button's menu if no other is currently active.
+
+  if (activeButton == null) {
+    buttonClick(event, menuId);
+    return;
+  }
+
+  // Find the target button element.
+
+  if (browser.isIE)
+    button = window.event.srcElement;
+  else
+    button = event.currentTarget;
+
+  // If any other button menu is active, make this one active instead.
+
+  if (activeButton != null && activeButton != button)
+    buttonClick(event, menuId);
+ //-- debut ajout ci ----
+  } 
+  //-- fin ajout ci ----
+    
+}
+
+function depressButton(button) {
+
+  var x, y;
+
+  // Update the button's style class to make it look like it's
+  // depressed.
+
+  button.className += " menuButtonActive";
+
+  // Set mouseout event handler for the button, if not already done.
+
+  if (button.onmouseout == null)
+    button.onmouseout = buttonOrMenuMouseout;
+  if (button.menu.onmouseout == null)
+    button.menu.onmouseout = buttonOrMenuMouseout;
+
+  // Position the associated drop down menu under the button and
+  // show it.
+
+  x = getPageOffsetLeft(button);
+  y = getPageOffsetTop(button) + button.offsetHeight - 1;
+
+  // For IE, adjust position.
+
+  if (browser.isIE) {
+    x += button.offsetParent.clientLeft;
+    y += button.offsetParent.clientTop;
+  }
+
+  button.menu.style.left = x + "px";
+  button.menu.style.top  = y + "px";0
+  button.menu.style.visibility = "visible";
+}
+
+function resetButton(button) {
+
+  // Restore the button's style class.
+
+  removeClassName(button, "menuButtonActive");
+
+  // Hide the button's menu, first closing any sub menus.
+
+  if (button.menu != null) {
+    closeSubMenu(button.menu);
+    button.menu.style.visibility = "hidden";
+  }
+}
+
+//----------------------------------------------------------------------------
+// Code to handle the menus and sub menus.
+//----------------------------------------------------------------------------
+
+function menuMouseover(event) {
+
+  var menu;
+ //-- debut ajout ci ----
+  if (!browser.isIE5mac) { 
+  //-- fin ajout ci ----
+//-- debut ajout ci ----
+       cicacheselect();
+//-- fin ajout ci ----    
+
+  // Find the target menu element.
+  if (browser.isIE)
+    menu = getContainerWith(window.event.srcElement, "DIV", "menu");
+  else
+    menu = event.currentTarget;
+
+  // Close any active sub menu.
+
+  if (menu.activeItem != null)
+    closeSubMenu(menu);
+ //-- debut ajout ci ----
+  } 
+  //-- fin ajout ci ----
+}
+
+function menuItemMouseover(event, menuId) {
+
+  var item, menu, x, y;
+//-- debut ajout ci ----
+       cicacheselect();
+//-- fin ajout ci ----    
+
+  // Find the target item element and its parent menu element.
+
+  if (browser.isIE)
+    item = getContainerWith(window.event.srcElement, "A", "menuItem");
+  else
+    item = event.currentTarget;
+  menu = getContainerWith(item, "DIV", "menu");
+
+  // Close any active sub menu and mark this one as active.
+
+  if (menu.activeItem != null)
+    closeSubMenu(menu);
+  menu.activeItem = item;
+
+  // Highlight the item element.
+
+  item.className += " menuItemHighlight";
+
+  // Initialize the sub menu, if not already done.
+
+  if (item.subMenu == null) {
+    item.subMenu = document.getElementById(menuId);
+    if (item.subMenu.isInitialized == null)
+      menuInit(item.subMenu);
+  }
+
+  // Set mouseout event handler for the sub menu, if not already done.
+
+  if (item.subMenu.onmouseout == null)
+    item.subMenu.onmouseout = buttonOrMenuMouseout;
+
+  // Get position for submenu based on the menu item.
+
+  x = getPageOffsetLeft(item) + item.offsetWidth;
+  y = getPageOffsetTop(item);
+
+  // Adjust position to fit in view.
+
+  var maxX, maxY;
+
+  if (browser.isIE) {
+    maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) +
+      (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);
+    maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) +
+      (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
+  }
+  if (browser.isOP) {
+    maxX = document.documentElement.scrollLeft + window.innerWidth;
+    maxY = document.documentElement.scrollTop  + window.innerHeight;
+  }
+  if (browser.isNS) {
+    maxX = window.scrollX + window.innerWidth;
+    maxY = window.scrollY + window.innerHeight;
+  }
+  maxX -= item.subMenu.offsetWidth;
+  maxY -= item.subMenu.offsetHeight;
+
+  if (x > maxX)
+    x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
+      + (menu.offsetWidth - item.offsetWidth));
+  y = Math.max(0, Math.min(y, maxY));
+
+  // Position and show the sub menu.
+
+  item.subMenu.style.left = x + "px";
+  item.subMenu.style.top  = y + "px";
+  item.subMenu.style.visibility = "visible";
+
+  // Stop the event from bubbling.
+
+  if (browser.isIE)
+    window.event.cancelBubble = true;
+  else
+    event.stopPropagation();
+}
+
+function closeSubMenu(menu) {
+
+  if (menu == null || menu.activeItem == null)
+    return;
+
+  // Recursively close any sub menus.
+
+  if (menu.activeItem.subMenu != null) {
+    closeSubMenu(menu.activeItem.subMenu);
+    menu.activeItem.subMenu.style.visibility = "hidden";
+    menu.activeItem.subMenu = null;
+  }
+  removeClassName(menu.activeItem, "menuItemHighlight");
+  menu.activeItem = null;
+}
+
+
+function buttonOrMenuMouseout(event) {
+
+  var el;
+
+  // If there is no active button, exit.
+
+  if (activeButton == null)
+    return;
+
+  // Find the element the mouse is moving to.
+
+  if (browser.isIE)
+    el = window.event.toElement;
+  else if (event.relatedTarget != null)
+      el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);
+
+  // If the element is not part of a menu, reset the active button.
+
+  if (getContainerWith(el, "DIV", "menu") == null) {
+    resetButton(activeButton);
+    activeButton = null;
+//-- debut ajout ci ----
+       cimontreselect();
+//-- fin ajout ci ----    
+  }
+}
+
+
+//----------------------------------------------------------------------------
+// Code to initialize menus.
+//----------------------------------------------------------------------------
+
+function menuInit(menu) {
+
+  var itemList, spanList;
+  var textEl, arrowEl;
+  var itemWidth;
+  var w, dw;
+  var i, j;
+
+  // For IE, replace arrow characters.
+
+  if (browser.isIE) {
+    menu.style.lineHeight = "2.5ex";
+    spanList = menu.getElementsByTagName("SPAN");
+    for (i = 0; i < spanList.length; i++)
+      if (hasClassName(spanList[i], "menuItemArrow")) {
+        spanList[i].style.fontFamily = "Webdings";
+        spanList[i].firstChild.nodeValue = "4";
+      }
+  }
+
+  // Find the width of a menu item.
+
+  itemList = menu.getElementsByTagName("A");
+  if (itemList.length > 0)
+    itemWidth = itemList[0].offsetWidth;
+  else
+    return;
+
+  // For items with arrows, add padding to item text to make the
+  // arrows flush right.
+
+  for (i = 0; i < itemList.length; i++) {
+    spanList = itemList[i].getElementsByTagName("SPAN");
+    textEl  = null;
+    arrowEl = null;
+    for (j = 0; j < spanList.length; j++) {
+      if (hasClassName(spanList[j], "menuItemText"))
+        textEl = spanList[j];
+      if (hasClassName(spanList[j], "menuItemArrow"))
+        arrowEl = spanList[j];
+    }
+    if (textEl != null && arrowEl != null) {
+      textEl.style.paddingRight = (itemWidth 
+        - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
+      // For Opera, remove the negative right margin to fix a display bug.
+      if (browser.isOP)
+        arrowEl.style.marginRight = "0px";
+    }
+  }
+
+  // Fix IE hover problem by setting an explicit width on first item of
+  // the menu.
+
+  if (browser.isIE) {
+    w = itemList[0].offsetWidth;
+    itemList[0].style.width = w + "px";
+    dw = itemList[0].offsetWidth - w;
+    w -= dw;
+    itemList[0].style.width = w + "px";
+  }
+
+  // Mark menu as initialized.
+
+  menu.isInitialized = true;
+}
+
+//----------------------------------------------------------------------------
+// General utility functions.
+//----------------------------------------------------------------------------
+
+function getContainerWith(node, tagName, className) {
+
+  // Starting with the given node, find the nearest containing element
+  // with the specified tag name and style class.
+
+  while (node != null) {
+    if (node.tagName != null && node.tagName == tagName &&
+        hasClassName(node, className))
+      return node;
+    node = node.parentNode;
+  }
+
+  return node;
+}
+
+function hasClassName(el, name) {
+
+  var i, list;
+
+  // Return true if the given element currently has the given class
+  // name.
+
+  list = el.className.split(" ");
+  for (i = 0; i < list.length; i++)
+    if (list[i] == name)
+      return true;
+
+  return false;
+}
+
+function removeClassName(el, name) {
+
+  var i, curList, newList;
+
+  if (el.className == null)
+    return;
+
+  // Remove the given class name from the element's className property.
+
+  newList = new Array();
+  curList = el.className.split(" ");
+  for (i = 0; i < curList.length; i++)
+    if (curList[i] != name)
+      newList.push(curList[i]);
+  el.className = newList.join(" ");
+}
+
+function getPageOffsetLeft(el) {
+
+  var x;
+
+  // Return the x coordinate of an element relative to the page.
+
+  x = el.offsetLeft;
+  if (el.offsetParent != null)
+    x += getPageOffsetLeft(el.offsetParent);
+
+  return x;
+}
+
+function getPageOffsetTop(el) {
+
+  var y;
+
+  // Return the x coordinate of an element relative to the page.
+
+  y = el.offsetTop;
+  if (el.offsetParent != null)
+    y += getPageOffsetTop(el.offsetParent);
+
+  return y;
+}
+
+//-- debut ajout ci ----
+function cicacheselect(){
+  if (browser.isIE) {
+        oSelects = document.getElementsByTagName('SELECT');
+        if (oSelects.length > 0) {
+         for (i = 0; i < oSelects.length; i++) {
+          oSlt = oSelects[i];
+           if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';}
+         }
+        }  
+        oSelects = document.getElementsByName('masquable');
+        if (oSelects.length > 0) {
+         for (i = 0; i < oSelects.length; i++) {
+          oSlt = oSelects[i];
+           if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';}
+         }
+        }  
+  }
+}      
+
+function cimontreselect(){
+  if (browser.isIE) {
+        oSelects = document.getElementsByTagName('SELECT');
+        if (oSelects.length > 0) {
+         for (i = 0; i < oSelects.length; i++) {
+          oSlt = oSelects[i];
+           if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';}
+         }
+        }  
+        oSelects = document.getElementsByName('masquable');
+        if (oSelects.length > 0) {
+         for (i = 0; i < oSelects.length; i++) {
+          oSlt = oSelects[i];
+           if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';}
+         }
+        }  
+  }
+}      
+
+//-- fin ajout ci ----    
index 1c4e949f72a19380ea01c52b9577c12747677323..c5eb0ef9672fb730432d86b2b7dc944a0e99ab39 100644 (file)
@@ -1,39 +1,39 @@
 body  { 
-    background: #FFFFFF;\r
+    background: #FFFFFF;
     font: 0.8em Verdana,Tahoma,Arial,sans-serif;
 }
 
 h1, h2, h3, h4, h5 { 
     color: #800000; 
     font-family: sans-serif; 
-}\r
-\r
-table {\r
-  font-size: 1em;\r
 }
-\r
-a{\r
-color:#467aa7;\r
-font-weight:bold;\r
-text-decoration:none;\r
-background-color:inherit;\r
-}\r
-\r
-a:hover{\r
-  color: #800000; \r
-  text-decoration:underline;\r
-  background-color:inherit;\r
-}\r
-\r
-a img{border:none;}\r
-\r
-.screenshot {\r
-  text-align: center;\r
-}\r
-\r
-.guilabel {\r
-  font-weight: bold;\r
-}\r
+
+table {
+  font-size: 1em;
+}
+
+a{
+color:#467aa7;
+font-weight:bold;
+text-decoration:none;
+background-color:inherit;
+}
+
+a:hover{
+  color: #800000; 
+  text-decoration:underline;
+  background-color:inherit;
+}
+
+a img{border:none;}
+
+.screenshot {
+  text-align: center;
+}
+
+.guilabel {
+  font-weight: bold;
+}
 
 span.term { 
     font-weight: bold; 
index 1c4e949f72a19380ea01c52b9577c12747677323..c5eb0ef9672fb730432d86b2b7dc944a0e99ab39 100644 (file)
@@ -1,39 +1,39 @@
 body  { 
-    background: #FFFFFF;\r
+    background: #FFFFFF;
     font: 0.8em Verdana,Tahoma,Arial,sans-serif;
 }
 
 h1, h2, h3, h4, h5 { 
     color: #800000; 
     font-family: sans-serif; 
-}\r
-\r
-table {\r
-  font-size: 1em;\r
 }
-\r
-a{\r
-color:#467aa7;\r
-font-weight:bold;\r
-text-decoration:none;\r
-background-color:inherit;\r
-}\r
-\r
-a:hover{\r
-  color: #800000; \r
-  text-decoration:underline;\r
-  background-color:inherit;\r
-}\r
-\r
-a img{border:none;}\r
-\r
-.screenshot {\r
-  text-align: center;\r
-}\r
-\r
-.guilabel {\r
-  font-weight: bold;\r
-}\r
+
+table {
+  font-size: 1em;
+}
+
+a{
+color:#467aa7;
+font-weight:bold;
+text-decoration:none;
+background-color:inherit;
+}
+
+a:hover{
+  color: #800000; 
+  text-decoration:underline;
+  background-color:inherit;
+}
+
+a img{border:none;}
+
+.screenshot {
+  text-align: center;
+}
+
+.guilabel {
+  font-weight: bold;
+}
 
 span.term { 
     font-weight: bold; 
index 1233231f9b6a08d22f071eb093c87ab9f0defc98..185cfa87eab61f3235ef6320b9079fc41ff583ea 100644 (file)
-/* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */\r
-/* Edited by Jean-Philippe Lang *>\r
-/**************** Body and tag styles ****************/\r
-\r
-#header * {margin:0; padding:0;}\r
-p, ul, ol, li {margin:0; padding:0;}\r
-\r
-body{\r
-font:76% Verdana,Tahoma,Arial,sans-serif;\r
-line-height:1.4em;\r
-text-align:center;\r
-color:#303030;\r
-background:#e8eaec;\r
-margin:0;\r
-}\r
-\r
-a{color:#467aa7;font-weight:bold;text-decoration:none;background-color:inherit;}\r
-a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;}\r
-a img{border:none;}\r
-\r
-p{margin:0 0 1em 0;}\r
-p form{margin-top:0; margin-bottom:20px;}\r
-\r
-img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;}\r
-img.left{float:left; margin:0 12px 5px 0;}\r
-img.center{display:block; margin:0 auto 5px auto;}\r
-img.right{float:right; margin:0 0 5px 12px;}\r
-\r
-/**************** Header and navigation styles ****************/\r
-\r
-#container{\r
-width:100%;\r
-min-width: 800px;\r
-margin:0;\r
-padding:0;\r
-text-align:left;\r
-background:#ffffff;\r
-color:#303030;\r
-}\r
-\r
-#header{\r
-height:4.5em;\r
-margin:0;\r
-background:#467aa7;\r
-color:#ffffff;\r
-margin-bottom:1px;\r
-}\r
-\r
-#header h1{\r
-padding:10px 0 0 20px;\r
-font-size:2em;\r
-background-color:inherit;\r
-color:#fff;\r
-letter-spacing:-1px;\r
-font-weight:bold;\r
-font-family: Trebuchet MS,Georgia,"Times New Roman",serif;\r
-}\r
-\r
-#header h2{\r
-margin:3px 0 0 40px;\r
-font-size:1.5em;\r
-background-color:inherit;\r
-color:#f0f2f4;\r
-letter-spacing:-1px;\r
-font-weight:normal;\r
-font-family: Trebuchet MS,Georgia,"Times New Roman",serif;\r
-}\r
-\r
-#navigation{\r
-height:2.2em;\r
-line-height:2.2em;\r
-margin:0;\r
-background:#578bb8;\r
-color:#ffffff;\r
-}\r
-\r
-#navigation li{\r
-float:left;\r
-list-style-type:none;\r
-border-right:1px solid #ffffff;\r
-white-space:nowrap;\r
-}\r
-\r
-#navigation li.right {\r
- float:right;\r
-list-style-type:none;\r
-border-right:0;\r
-border-left:1px solid #ffffff;\r
-white-space:nowrap;\r
-}\r
-\r
-#navigation li a{\r
-display:block;\r
-padding:0px 10px 0px 22px;\r
-font-size:0.8em;\r
-font-weight:normal;\r
-text-decoration:none;\r
-background-color:inherit;\r
-color: #ffffff;\r
-}\r
-\r
-#navigation li.submenu {background:url(../images/arrow_down.png) 96% 80% no-repeat;}\r
-#navigation li.submenu a {padding:0px 16px 0px 22px;}\r
-* html #navigation a {width:1%;}\r
-\r
-#navigation .selected,#navigation a:hover{\r
-color:#ffffff;\r
-text-decoration:none;\r
-background-color: #80b0da;\r
-}\r
-\r
-/**************** Icons *******************/\r
-.icon {\r
-background-position: 0% 40%;\r
-background-repeat: no-repeat;\r
-padding-left: 20px;\r
-padding-top: 2px;\r
-padding-bottom: 3px;\r
-vertical-align: middle;\r
-}\r
-\r
-#navigation .icon {\r
-background-position: 4px 50%;\r
-}\r
-\r
-.icon22 {\r
-background-position: 0% 40%;\r
-background-repeat: no-repeat;\r
-padding-left: 26px;\r
-line-height: 22px;\r
-vertical-align: middle;\r
-}\r
-\r
-.icon-add { background-image: url(../images/add.png); }\r
-.icon-edit { background-image: url(../images/edit.png); }\r
-.icon-del { background-image: url(../images/delete.png); }\r
-.icon-move { background-image: url(../images/move.png); }\r
-.icon-save { background-image: url(../images/save.png); }\r
-.icon-cancel { background-image: url(../images/cancel.png); }\r
-.icon-pdf { background-image: url(../images/pdf.png); }\r
-.icon-csv { background-image: url(../images/csv.png); }\r
-.icon-html { background-image: url(../images/html.png); }\r
-.icon-txt { background-image: url(../images/txt.png); }\r
-.icon-file { background-image: url(../images/file.png); }\r
-.icon-folder { background-image: url(../images/folder.png); }\r
-.icon-package { background-image: url(../images/package.png); }\r
-.icon-home { background-image: url(../images/home.png); }\r
-.icon-user { background-image: url(../images/user.png); }\r
-.icon-mypage { background-image: url(../images/user_page.png); }\r
-.icon-admin { background-image: url(../images/admin.png); }\r
-.icon-projects { background-image: url(../images/projects.png); }\r
-.icon-logout { background-image: url(../images/logout.png); }\r
-.icon-help { background-image: url(../images/help.png); }\r
-.icon-attachment  { background-image: url(../images/attachment.png); }\r
-.icon-index  { background-image: url(../images/index.png); }\r
-.icon-history  { background-image: url(../images/history.png); }\r
-.icon-feed  { background-image: url(../images/feed.png); }\r
-.icon-time  { background-image: url(../images/time.png); }\r
-.icon-stats  { background-image: url(../images/stats.png); }\r
-\r
-.icon22-projects { background-image: url(../images/22x22/projects.png); }\r
-.icon22-users { background-image: url(../images/22x22/users.png); }\r
-.icon22-tracker { background-image: url(../images/22x22/tracker.png); }\r
-.icon22-role { background-image: url(../images/22x22/role.png); }\r
-.icon22-workflow { background-image: url(../images/22x22/workflow.png); }\r
-.icon22-options { background-image: url(../images/22x22/options.png); }\r
-.icon22-notifications { background-image: url(../images/22x22/notifications.png); }\r
-.icon22-authent { background-image: url(../images/22x22/authent.png); }\r
-.icon22-info { background-image: url(../images/22x22/info.png); }\r
-.icon22-comment { background-image: url(../images/22x22/comment.png); }\r
-.icon22-package { background-image: url(../images/22x22/package.png); }\r
-.icon22-settings { background-image: url(../images/22x22/settings.png); }\r
-\r
-/**************** Content styles ****************/\r
-\r
-html>body #content {\r
-height: auto;\r
-min-height: 500px;\r
-} \r
-\r
-#content{\r
-width: auto;\r
-height:500px;\r
-font-size:0.9em;\r
-padding:20px 10px 10px 20px;\r
-margin-left: 120px;\r
-border-left: 1px dashed #c0c0c0;\r
-\r
-}\r
-\r
-#content h2, #content div.wiki h1 {\r
-display:block;\r
-margin:0 0 16px 0;\r
-font-size:1.7em;\r
-font-weight:normal;\r
-letter-spacing:-1px;\r
-color:#606060;\r
-background-color:inherit;\r
-font-family: Trebuchet MS,Georgia,"Times New Roman",serif;\r
-}\r
-\r
-#content h2 a{font-weight:normal;}\r
-#content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;}\r
-#content h4{font-size: 1em; margin-bottom: 12px; margin-top: 20px; font-weight: normal; border-bottom: dotted 1px #c0c0c0;} \r
-#content a:hover,#subcontent a:hover{text-decoration:underline;}\r
-#content ul,#content ol{margin:0 5px 16px 35px;}\r
-#content dl{margin:0 5px 10px 25px;}\r
-#content dt{font-weight:bold; margin-bottom:5px;}\r
-#content dd{margin:0 0 10px 15px;}\r
-\r
-#content .tabs{height: 2.6em;}\r
-#content .tabs ul{margin:0;}\r
-#content .tabs ul li{\r
-float:left;\r
-list-style-type:none;\r
-white-space:nowrap;\r
-margin-right:8px;\r
-background:#fff;\r
-}\r
-#content .tabs ul li a{\r
-display:block;\r
-font-size: 0.9em;\r
-text-decoration:none;\r
-line-height:1em;\r
-padding:4px;\r
-border: 1px solid #c0c0c0;\r
-}\r
-\r
-#content .tabs ul li a.selected, #content .tabs ul li a:hover{\r
-background-color: #80b0da;\r
-border: 1px solid #80b0da;\r
-color: #fff;\r
-text-decoration:none;\r
-}\r
-\r
-/***********************************************/\r
-\r
-form {display: inline;}\r
-blockquote {padding-left: 6px; border-left: 2px solid #ccc;}\r
-input, select {vertical-align: middle; margin-bottom: 4px;}\r
-\r
-input.button-small {font-size: 0.8em;}\r
-textarea.wiki-edit { width: 99.5%; }\r
-.select-small {font-size: 0.8em;}\r
-label {font-weight: bold; font-size: 1em; color: #505050;}\r
-fieldset {border:1px solid #c0c0c0; padding: 6px;}\r
-legend {color: #505050;}\r
-.required {color: #bb0000;}\r
-.odd {background-color:#f6f7f8;}\r
-.even {background-color: #fff;}\r
-hr { border:0; border-top: dotted 1px #fff; border-bottom: dotted 1px #c0c0c0; }\r
-table p {margin:0; padding:0;}\r
-\r
-.highlight { background-color: #FCFD8D;}\r
-\r
-div.square {\r
- border: 1px solid #999;\r
- float: left;\r
- margin: .4em .5em 0 0;\r
- overflow: hidden;\r
- width: .6em; height: .6em;\r
-}\r
-\r
-ul.documents {\r
-list-style-type: none;\r
-padding: 0;\r
-margin: 0;\r
-}\r
-\r
-ul.documents li {\r
-background-image: url(../images/32x32/file.png);\r
-background-repeat: no-repeat;\r
-background-position: 0 1px;\r
-padding-left: 36px;\r
-margin-bottom: 10px;\r
-margin-left: -37px;\r
-}\r
-\r
-/********** Table used to display lists of things ***********/\r
-\r
-table.list {\r
-    width:100%;\r
-    border-collapse: collapse;\r
-    border: 1px dotted #d0d0d0;\r
-    margin-bottom: 6px;\r
-}\r
-\r
-table.with-cells td {\r
-    border: 1px solid #d7d7d7;\r
-}\r
-\r
-table.list td {\r
-    padding:2px;\r
-}\r
-\r
-table.list thead th {\r
-    text-align: center;\r
-    background: #eee;\r
-    border: 1px solid #d7d7d7;\r
-    color: #777;\r
-}\r
-\r
-table.list tbody th {\r
-       font-weight: normal;\r
-    background: #eed;\r
-    border: 1px solid #d7d7d7;\r
-}\r
-\r
-/********** Validation error messages *************/\r
-#errorExplanation {\r
-  width: 400px;\r
-  border: 0;\r
-  padding: 7px;\r
-  padding-bottom: 3px;\r
-  margin-bottom: 0px;\r
-}\r
-\r
-#errorExplanation h2 {\r
-  text-align: left;\r
-  font-weight: bold;\r
-  padding: 5px 5px 10px 26px;\r
-  font-size: 1em;\r
-  margin: -7px;\r
-  background: url(../images/alert.png) no-repeat 6px 6px;\r
-}\r
-\r
-#errorExplanation p {\r
-  color: #333;\r
-  margin-bottom: 0;\r
-  padding: 5px;\r
-}\r
-\r
-#errorExplanation ul li {\r
-  font-size: 1em;\r
-  list-style: none;\r
-  margin-left: -16px;\r
-}\r
-\r
-/*==========  Drop down menu  ==============*/\r
-div.menu {\r
-  background-color: #FFFFFF;\r
-  border-style: solid;\r
-  border-width: 1px;\r
-  border-color: #7F9DB9;\r
-  position: absolute;\r
-  top: 0px;\r
-  left: 0px;\r
-  padding: 0;\r
-  visibility: hidden;\r
-  z-index: 101;\r
-}\r
-\r
-div.menu a.menuItem {\r
-  font-size: 10px;\r
-  font-weight: normal;\r
-  line-height: 2em;\r
-  color: #000000;\r
-  background-color: #FFFFFF;\r
-  cursor: default;\r
-  display: block;\r
-  padding: 0 1em;\r
-  margin: 0;\r
-  border: 0;\r
-  text-decoration: none;\r
-  white-space: nowrap;\r
-}\r
-\r
-div.menu a.menuItem:hover, div.menu a.menuItemHighlight {\r
-  background-color: #80b0da;\r
-  color: #ffffff;\r
-}\r
-\r
-div.menu a.menuItem span.menuItemText {}\r
-\r
-div.menu a.menuItem span.menuItemArrow {\r
-  margin-right: -.75em;\r
-}\r
-\r
-/**************** Sidebar styles ****************/\r
-\r
-#subcontent{\r
-position: absolute;\r
-left: 0px;\r
-width:110px;\r
-padding:20px 20px 10px 5px;\r
-}\r
-\r
-#subcontent h2{\r
-display:block;\r
-margin:0 0 5px 0;\r
-font-size:1.0em;\r
-font-weight:bold;\r
-text-align:left;\r
-color:#606060;\r
-background-color:inherit;\r
-font-family: Trebuchet MS,Georgia,"Times New Roman",serif;\r
-}\r
-\r
-#subcontent p{margin:0 0 16px 0; font-size:0.9em;}\r
-\r
-/**************** Menublock styles ****************/\r
-\r
-.menublock{margin:0 0 20px 8px; font-size:0.8em;}\r
-.menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;}\r
-.menublock li a{font-weight:bold; text-decoration:none;}\r
-.menublock li a:hover{text-decoration:none;}\r
-.menublock li ul{margin:0; font-size:1em; font-weight:normal;}\r
-.menublock li ul li{margin-bottom:0;}\r
-.menublock li ul a{font-weight:normal;}\r
-\r
-/**************** Footer styles ****************/\r
-\r
-#footer{\r
-clear:both;\r
-padding:5px 0;\r
-margin:0;\r
-font-size:0.9em;\r
-color:#f0f0f0;\r
-background:#467aa7;\r
-}\r
-\r
-#footer p{padding:0; margin:0; text-align:center;}\r
-#footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;}\r
-#footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;}\r
-\r
-/**************** Misc classes and styles ****************/\r
-\r
-.splitcontentleft{float:left; width:49%;}\r
-.splitcontentright{float:right; width:49%;}\r
-.clear{clear:both;}\r
-.small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;}\r
-.hide{display:none;}\r
-.textcenter{text-align:center;}\r
-.textright{text-align:right;}\r
-.important{color:#f02025; background-color:inherit; font-weight:bold;}\r
-\r
-.box{\r
-margin:0 0 20px 0;\r
-padding:10px;\r
-border:1px solid #c0c0c0;\r
-background-color:#fafbfc;\r
-color:#505050;\r
-line-height:1.5em;\r
-}\r
-\r
-a.close-icon {\r
-display:block;\r
-margin-top:3px;\r
-overflow:hidden;\r
-width:12px;\r
-height:12px;\r
-background-repeat: no-repeat;\r
-cursor:pointer;\r
-background-image:url('../images/close.png');\r
-}\r
-\r
-a.close-icon:hover {\r
-background-image:url('../images/close_hl.png');\r
-}\r
-\r
-.rightbox{\r
-background: #fafbfc;\r
-border: 1px solid #c0c0c0;\r
-float: right;\r
-padding: 8px;\r
-position: relative;\r
-margin: 0 5px 5px;\r
-}\r
-\r
-.overlay{ \r
-position: absolute;\r
-margin-left:0;\r
-z-index: 50;\r
-}\r
-\r
-.layout-active {\r
-background: #ECF3E1;\r
-}\r
-\r
-.block-receiver {\r
-border:1px dashed #c0c0c0;\r
-margin-bottom: 20px;\r
-padding: 15px 0 15px 0;\r
-}\r
-\r
-.mypage-box {\r
-margin:0 0 20px 0;\r
-color:#505050;\r
-line-height:1.5em;\r
-}\r
-\r
-.handle {\r
-cursor: move;\r
-}\r
-\r
-.login {\r
-width: 50%;\r
-text-align: left;\r
-}\r
-\r
-img.calendar-trigger {\r
-    cursor: pointer;\r
-    vertical-align: middle;\r
-    margin-left: 4px;\r
-}\r
-\r
-#history p {\r
-    margin-left: 34px;\r
-}\r
-\r
-.progress {\r
-    border: 1px solid #D7D7D7;\r
-    border-collapse: collapse;\r
-    border-spacing: 0pt;\r
-    empty-cells: show;\r
-    padding: 3px;\r
-    width: 40em;\r
-    text-align: center;\r
-}\r
-\r
-.progress td { height: 1em; }\r
-.progress .closed { background: #BAE0BA none repeat scroll 0%; }\r
-.progress .open { background: #FFF none repeat scroll 0%; }\r
-\r
-/***** Contextual links div *****/\r
-.contextual {\r
-float: right;\r
-font-size: 0.8em;\r
-line-height: 16px;\r
-padding: 2px;\r
-}\r
-\r
-.contextual select, .contextual input {\r
-font-size: 1em;\r
-}\r
-\r
-/***** Gantt chart *****/\r
-.gantt_hdr {\r
-  position:absolute;\r
-  top:0;\r
-  height:16px;\r
-  border-top: 1px solid #c0c0c0;\r
-  border-bottom: 1px solid #c0c0c0;\r
-  border-right: 1px solid #c0c0c0;\r
-  text-align: center;\r
-  overflow: hidden;\r
-}\r
-\r
-.task {\r
-  position: absolute;\r
-  height:8px;\r
-  font-size:0.8em;\r
-  color:#888;\r
-  padding:0;\r
-  margin:0;\r
-  line-height:0.8em;\r
-}\r
-\r
-.task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }\r
-.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }  \r
-.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }\r
-\r
-/***** Tooltips ******/\r
-.tooltip{position:relative;z-index:24;}\r
-.tooltip:hover{z-index:25;color:#000;}\r
-.tooltip span.tip{display: none; text-align:left;}\r
-\r
-div.tooltip:hover span.tip{\r
-display:block;\r
-position:absolute;\r
-top:12px; left:24px; width:270px;\r
-border:1px solid #555;\r
-background-color:#fff;\r
-padding: 4px;\r
-font-size: 0.8em;\r
-color:#505050;\r
-}\r
-\r
-/***** CSS FORM ******/\r
-.tabular p{\r
-margin: 0;\r
-padding: 5px 0 8px 0;\r
-padding-left: 180px; /*width of left column containing the label elements*/\r
-height: 1%;\r
-}\r
-\r
-.tabular label{\r
-font-weight: bold;\r
-float: left;\r
-margin-left: -180px; /*width of left column*/\r
-width: 175px; /*width of labels. Should be smaller than left column to create some right \r
-margin*/\r
-}\r
-\r
-.error {\r
-color: #cc0000;\r
-}\r
-\r
-#settings .tabular p{ padding-left: 250px; }\r
-#settings .tabular label{ margin-left: -250px; width: 245px; }\r
-\r
-/*.threepxfix class below:\r
-Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.\r
-to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html\r
-*/\r
-\r
-* html .threepxfix{\r
-margin-left: 3px;\r
-}\r
-\r
-/***** Wiki sections ****/\r
-#content div.wiki { font-size: 110%}\r
-\r
-#content div.wiki h2, div.wiki h3 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; color:#606060; }\r
-#content div.wiki h2 { font-size: 1.4em;}\r
-#content div.wiki h3 { font-size: 1.2em;}\r
-\r
-div.wiki table {\r
-    border: 1px solid #505050;\r
-    border-collapse: collapse;\r
-}\r
-\r
-div.wiki table, div.wiki td {\r
-    border: 1px solid #bbb;\r
-    padding: 4px;\r
-}\r
-\r
-div.wiki code {\r
-    font-size: 1.2em;\r
-}\r
-\r
-#preview .preview { background: #fafbfc url(../images/draft.png); }\r
+/* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */
+/* Edited by Jean-Philippe Lang *>
+/**************** Body and tag styles ****************/
+
+#header * {margin:0; padding:0;}
+p, ul, ol, li {margin:0; padding:0;}
+
+body{
+font:76% Verdana,Tahoma,Arial,sans-serif;
+line-height:1.4em;
+text-align:center;
+color:#303030;
+background:#e8eaec;
+margin:0;
+}
+
+a{color:#467aa7;font-weight:bold;text-decoration:none;background-color:inherit;}
+a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;}
+a img{border:none;}
+
+p{margin:0 0 1em 0;}
+p form{margin-top:0; margin-bottom:20px;}
+
+img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;}
+img.left{float:left; margin:0 12px 5px 0;}
+img.center{display:block; margin:0 auto 5px auto;}
+img.right{float:right; margin:0 0 5px 12px;}
+
+/**************** Header and navigation styles ****************/
+
+#container{
+width:100%;
+min-width: 800px;
+margin:0;
+padding:0;
+text-align:left;
+background:#ffffff;
+color:#303030;
+}
+
+#header{
+height:4.5em;
+margin:0;
+background:#467aa7;
+color:#ffffff;
+margin-bottom:1px;
+}
+
+#header h1{
+padding:10px 0 0 20px;
+font-size:2em;
+background-color:inherit;
+color:#fff;
+letter-spacing:-1px;
+font-weight:bold;
+font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
+}
+
+#header h2{
+margin:3px 0 0 40px;
+font-size:1.5em;
+background-color:inherit;
+color:#f0f2f4;
+letter-spacing:-1px;
+font-weight:normal;
+font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
+}
+
+#navigation{
+height:2.2em;
+line-height:2.2em;
+margin:0;
+background:#578bb8;
+color:#ffffff;
+}
+
+#navigation li{
+float:left;
+list-style-type:none;
+border-right:1px solid #ffffff;
+white-space:nowrap;
+}
+
+#navigation li.right {
+ float:right;
+list-style-type:none;
+border-right:0;
+border-left:1px solid #ffffff;
+white-space:nowrap;
+}
+
+#navigation li a{
+display:block;
+padding:0px 10px 0px 22px;
+font-size:0.8em;
+font-weight:normal;
+text-decoration:none;
+background-color:inherit;
+color: #ffffff;
+}
+
+#navigation li.submenu {background:url(../images/arrow_down.png) 96% 80% no-repeat;}
+#navigation li.submenu a {padding:0px 16px 0px 22px;}
+* html #navigation a {width:1%;}
+
+#navigation .selected,#navigation a:hover{
+color:#ffffff;
+text-decoration:none;
+background-color: #80b0da;
+}
+
+/**************** Icons *******************/
+.icon {
+background-position: 0% 40%;
+background-repeat: no-repeat;
+padding-left: 20px;
+padding-top: 2px;
+padding-bottom: 3px;
+vertical-align: middle;
+}
+
+#navigation .icon {
+background-position: 4px 50%;
+}
+
+.icon22 {
+background-position: 0% 40%;
+background-repeat: no-repeat;
+padding-left: 26px;
+line-height: 22px;
+vertical-align: middle;
+}
+
+.icon-add { background-image: url(../images/add.png); }
+.icon-edit { background-image: url(../images/edit.png); }
+.icon-del { background-image: url(../images/delete.png); }
+.icon-move { background-image: url(../images/move.png); }
+.icon-save { background-image: url(../images/save.png); }
+.icon-cancel { background-image: url(../images/cancel.png); }
+.icon-pdf { background-image: url(../images/pdf.png); }
+.icon-csv { background-image: url(../images/csv.png); }
+.icon-html { background-image: url(../images/html.png); }
+.icon-txt { background-image: url(../images/txt.png); }
+.icon-file { background-image: url(../images/file.png); }
+.icon-folder { background-image: url(../images/folder.png); }
+.icon-package { background-image: url(../images/package.png); }
+.icon-home { background-image: url(../images/home.png); }
+.icon-user { background-image: url(../images/user.png); }
+.icon-mypage { background-image: url(../images/user_page.png); }
+.icon-admin { background-image: url(../images/admin.png); }
+.icon-projects { background-image: url(../images/projects.png); }
+.icon-logout { background-image: url(../images/logout.png); }
+.icon-help { background-image: url(../images/help.png); }
+.icon-attachment  { background-image: url(../images/attachment.png); }
+.icon-index  { background-image: url(../images/index.png); }
+.icon-history  { background-image: url(../images/history.png); }
+.icon-feed  { background-image: url(../images/feed.png); }
+.icon-time  { background-image: url(../images/time.png); }
+.icon-stats  { background-image: url(../images/stats.png); }
+
+.icon22-projects { background-image: url(../images/22x22/projects.png); }
+.icon22-users { background-image: url(../images/22x22/users.png); }
+.icon22-tracker { background-image: url(../images/22x22/tracker.png); }
+.icon22-role { background-image: url(../images/22x22/role.png); }
+.icon22-workflow { background-image: url(../images/22x22/workflow.png); }
+.icon22-options { background-image: url(../images/22x22/options.png); }
+.icon22-notifications { background-image: url(../images/22x22/notifications.png); }
+.icon22-authent { background-image: url(../images/22x22/authent.png); }
+.icon22-info { background-image: url(../images/22x22/info.png); }
+.icon22-comment { background-image: url(../images/22x22/comment.png); }
+.icon22-package { background-image: url(../images/22x22/package.png); }
+.icon22-settings { background-image: url(../images/22x22/settings.png); }
+
+/**************** Content styles ****************/
+
+html>body #content {
+height: auto;
+min-height: 500px;
+} 
+
+#content{
+width: auto;
+height:500px;
+font-size:0.9em;
+padding:20px 10px 10px 20px;
+margin-left: 120px;
+border-left: 1px dashed #c0c0c0;
+
+}
+
+#content h2, #content div.wiki h1 {
+display:block;
+margin:0 0 16px 0;
+font-size:1.7em;
+font-weight:normal;
+letter-spacing:-1px;
+color:#606060;
+background-color:inherit;
+font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
+}
+
+#content h2 a{font-weight:normal;}
+#content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;}
+#content h4{font-size: 1em; margin-bottom: 12px; margin-top: 20px; font-weight: normal; border-bottom: dotted 1px #c0c0c0;} 
+#content a:hover,#subcontent a:hover{text-decoration:underline;}
+#content ul,#content ol{margin:0 5px 16px 35px;}
+#content dl{margin:0 5px 10px 25px;}
+#content dt{font-weight:bold; margin-bottom:5px;}
+#content dd{margin:0 0 10px 15px;}
+
+#content .tabs{height: 2.6em;}
+#content .tabs ul{margin:0;}
+#content .tabs ul li{
+float:left;
+list-style-type:none;
+white-space:nowrap;
+margin-right:8px;
+background:#fff;
+}
+#content .tabs ul li a{
+display:block;
+font-size: 0.9em;
+text-decoration:none;
+line-height:1em;
+padding:4px;
+border: 1px solid #c0c0c0;
+}
+
+#content .tabs ul li a.selected, #content .tabs ul li a:hover{
+background-color: #80b0da;
+border: 1px solid #80b0da;
+color: #fff;
+text-decoration:none;
+}
+
+/***********************************************/
+
+form {display: inline;}
+blockquote {padding-left: 6px; border-left: 2px solid #ccc;}
+input, select {vertical-align: middle; margin-bottom: 4px;}
+
+input.button-small {font-size: 0.8em;}
+textarea.wiki-edit { width: 99.5%; }
+.select-small {font-size: 0.8em;}
+label {font-weight: bold; font-size: 1em; color: #505050;}
+fieldset {border:1px solid #c0c0c0; padding: 6px;}
+legend {color: #505050;}
+.required {color: #bb0000;}
+.odd {background-color:#f6f7f8;}
+.even {background-color: #fff;}
+hr { border:0; border-top: dotted 1px #fff; border-bottom: dotted 1px #c0c0c0; }
+table p {margin:0; padding:0;}
+
+.highlight { background-color: #FCFD8D;}
+
+div.square {
+ border: 1px solid #999;
+ float: left;
+ margin: .4em .5em 0 0;
+ overflow: hidden;
+ width: .6em; height: .6em;
+}
+
+ul.documents {
+list-style-type: none;
+padding: 0;
+margin: 0;
+}
+
+ul.documents li {
+background-image: url(../images/32x32/file.png);
+background-repeat: no-repeat;
+background-position: 0 1px;
+padding-left: 36px;
+margin-bottom: 10px;
+margin-left: -37px;
+}
+
+/********** Table used to display lists of things ***********/
+
+table.list {
+    width:100%;
+    border-collapse: collapse;
+    border: 1px dotted #d0d0d0;
+    margin-bottom: 6px;
+}
+
+table.with-cells td {
+    border: 1px solid #d7d7d7;
+}
+
+table.list td {
+    padding:2px;
+}
+
+table.list thead th {
+    text-align: center;
+    background: #eee;
+    border: 1px solid #d7d7d7;
+    color: #777;
+}
+
+table.list tbody th {
+       font-weight: normal;
+    background: #eed;
+    border: 1px solid #d7d7d7;
+}
+
+/********** Validation error messages *************/
+#errorExplanation {
+  width: 400px;
+  border: 0;
+  padding: 7px;
+  padding-bottom: 3px;
+  margin-bottom: 0px;
+}
+
+#errorExplanation h2 {
+  text-align: left;
+  font-weight: bold;
+  padding: 5px 5px 10px 26px;
+  font-size: 1em;
+  margin: -7px;
+  background: url(../images/alert.png) no-repeat 6px 6px;
+}
+
+#errorExplanation p {
+  color: #333;
+  margin-bottom: 0;
+  padding: 5px;
+}
+
+#errorExplanation ul li {
+  font-size: 1em;
+  list-style: none;
+  margin-left: -16px;
+}
+
+/*==========  Drop down menu  ==============*/
+div.menu {
+  background-color: #FFFFFF;
+  border-style: solid;
+  border-width: 1px;
+  border-color: #7F9DB9;
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  padding: 0;
+  visibility: hidden;
+  z-index: 101;
+}
+
+div.menu a.menuItem {
+  font-size: 10px;
+  font-weight: normal;
+  line-height: 2em;
+  color: #000000;
+  background-color: #FFFFFF;
+  cursor: default;
+  display: block;
+  padding: 0 1em;
+  margin: 0;
+  border: 0;
+  text-decoration: none;
+  white-space: nowrap;
+}
+
+div.menu a.menuItem:hover, div.menu a.menuItemHighlight {
+  background-color: #80b0da;
+  color: #ffffff;
+}
+
+div.menu a.menuItem span.menuItemText {}
+
+div.menu a.menuItem span.menuItemArrow {
+  margin-right: -.75em;
+}
+
+/**************** Sidebar styles ****************/
+
+#subcontent{
+position: absolute;
+left: 0px;
+width:110px;
+padding:20px 20px 10px 5px;
+}
+
+#subcontent h2{
+display:block;
+margin:0 0 5px 0;
+font-size:1.0em;
+font-weight:bold;
+text-align:left;
+color:#606060;
+background-color:inherit;
+font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
+}
+
+#subcontent p{margin:0 0 16px 0; font-size:0.9em;}
+
+/**************** Menublock styles ****************/
+
+.menublock{margin:0 0 20px 8px; font-size:0.8em;}
+.menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;}
+.menublock li a{font-weight:bold; text-decoration:none;}
+.menublock li a:hover{text-decoration:none;}
+.menublock li ul{margin:0; font-size:1em; font-weight:normal;}
+.menublock li ul li{margin-bottom:0;}
+.menublock li ul a{font-weight:normal;}
+
+/**************** Footer styles ****************/
+
+#footer{
+clear:both;
+padding:5px 0;
+margin:0;
+font-size:0.9em;
+color:#f0f0f0;
+background:#467aa7;
+}
+
+#footer p{padding:0; margin:0; text-align:center;}
+#footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;}
+#footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;}
+
+/**************** Misc classes and styles ****************/
+
+.splitcontentleft{float:left; width:49%;}
+.splitcontentright{float:right; width:49%;}
+.clear{clear:both;}
+.small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;}
+.hide{display:none;}
+.textcenter{text-align:center;}
+.textright{text-align:right;}
+.important{color:#f02025; background-color:inherit; font-weight:bold;}
+
+.box{
+margin:0 0 20px 0;
+padding:10px;
+border:1px solid #c0c0c0;
+background-color:#fafbfc;
+color:#505050;
+line-height:1.5em;
+}
+
+a.close-icon {
+display:block;
+margin-top:3px;
+overflow:hidden;
+width:12px;
+height:12px;
+background-repeat: no-repeat;
+cursor:pointer;
+background-image:url('../images/close.png');
+}
+
+a.close-icon:hover {
+background-image:url('../images/close_hl.png');
+}
+
+.rightbox{
+background: #fafbfc;
+border: 1px solid #c0c0c0;
+float: right;
+padding: 8px;
+position: relative;
+margin: 0 5px 5px;
+}
+
+.overlay{ 
+position: absolute;
+margin-left:0;
+z-index: 50;
+}
+
+.layout-active {
+background: #ECF3E1;
+}
+
+.block-receiver {
+border:1px dashed #c0c0c0;
+margin-bottom: 20px;
+padding: 15px 0 15px 0;
+}
+
+.mypage-box {
+margin:0 0 20px 0;
+color:#505050;
+line-height:1.5em;
+}
+
+.handle {
+cursor: move;
+}
+
+.login {
+width: 50%;
+text-align: left;
+}
+
+img.calendar-trigger {
+    cursor: pointer;
+    vertical-align: middle;
+    margin-left: 4px;
+}
+
+#history p {
+    margin-left: 34px;
+}
+
+.progress {
+    border: 1px solid #D7D7D7;
+    border-collapse: collapse;
+    border-spacing: 0pt;
+    empty-cells: show;
+    padding: 3px;
+    width: 40em;
+    text-align: center;
+}
+
+.progress td { height: 1em; }
+.progress .closed { background: #BAE0BA none repeat scroll 0%; }
+.progress .open { background: #FFF none repeat scroll 0%; }
+
+/***** Contextual links div *****/
+.contextual {
+float: right;
+font-size: 0.8em;
+line-height: 16px;
+padding: 2px;
+}
+
+.contextual select, .contextual input {
+font-size: 1em;
+}
+
+/***** Gantt chart *****/
+.gantt_hdr {
+  position:absolute;
+  top:0;
+  height:16px;
+  border-top: 1px solid #c0c0c0;
+  border-bottom: 1px solid #c0c0c0;
+  border-right: 1px solid #c0c0c0;
+  text-align: center;
+  overflow: hidden;
+}
+
+.task {
+  position: absolute;
+  height:8px;
+  font-size:0.8em;
+  color:#888;
+  padding:0;
+  margin:0;
+  line-height:0.8em;
+}
+
+.task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
+.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }  
+.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
+
+/***** Tooltips ******/
+.tooltip{position:relative;z-index:24;}
+.tooltip:hover{z-index:25;color:#000;}
+.tooltip span.tip{display: none; text-align:left;}
+
+div.tooltip:hover span.tip{
+display:block;
+position:absolute;
+top:12px; left:24px; width:270px;
+border:1px solid #555;
+background-color:#fff;
+padding: 4px;
+font-size: 0.8em;
+color:#505050;
+}
+
+/***** CSS FORM ******/
+.tabular p{
+margin: 0;
+padding: 5px 0 8px 0;
+padding-left: 180px; /*width of left column containing the label elements*/
+height: 1%;
+}
+
+.tabular label{
+font-weight: bold;
+float: left;
+margin-left: -180px; /*width of left column*/
+width: 175px; /*width of labels. Should be smaller than left column to create some right 
+margin*/
+}
+
+.error {
+color: #cc0000;
+}
+
+#settings .tabular p{ padding-left: 250px; }
+#settings .tabular label{ margin-left: -250px; width: 245px; }
+
+/*.threepxfix class below:
+Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.
+to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html
+*/
+
+* html .threepxfix{
+margin-left: 3px;
+}
+
+/***** Wiki sections ****/
+#content div.wiki { font-size: 110%}
+
+#content div.wiki h2, div.wiki h3 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; color:#606060; }
+#content div.wiki h2 { font-size: 1.4em;}
+#content div.wiki h3 { font-size: 1.2em;}
+
+div.wiki table {
+    border: 1px solid #505050;
+    border-collapse: collapse;
+}
+
+div.wiki table, div.wiki td {
+    border: 1px solid #bbb;
+    padding: 4px;
+}
+
+div.wiki code {
+    font-size: 1.2em;
+}
+
+#preview .preview { background: #fafbfc url(../images/draft.png); }
index cf51c48c7aae177944a5eabf01e01054fdc8c461..37c3a2510b241f89a50f4a875cc29b82c86851e8 100644 (file)
@@ -1,81 +1,81 @@
-.jstEditor {\r
-       padding-left: 0px;\r
-}\r
-.jstEditor textarea, .jstEditor iframe {\r
-  margin: 0;\r
-}\r
-\r
-.jstHandle {\r
-       height: 16px;\r
-       font-size: 0.1em;\r
-       cursor: s-resize;\r
-       /*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/\r
-}\r
-\r
-.jstElements {\r
-       padding: 3px 3px;\r
-}\r
-\r
-.jstElements button {\r
-       margin-right : 6px;\r
-       width : 24px;\r
-       height: 24px;\r
-       padding: 4px;\r
-       border-style: solid;\r
-       border-width: 1px;\r
-       border-color: #ddd;\r
-       background-color : #f7f7f7;\r
-       background-position : 50% 50%;\r
-       background-repeat: no-repeat;\r
-}\r
-.jstElements button:hover {\r
-       border-color : #000;\r
-}\r
-.jstElements button span {\r
-       display : none; \r
-}\r
-.jstElements span {\r
-       display : inline;\r
-}\r
-\r
-.jstSpacer {\r
-       width : 0px;\r
-       font-size: 1px;\r
-       margin-right: 4px;\r
-}\r
-\r
-/* Buttons\r
--------------------------------------------------------- */\r
-.jstb_strong {\r
-       background-image: url(../images/jstoolbar/bt_strong.png);\r
-}\r
-.jstb_em {\r
-       background-image: url(../images/jstoolbar/bt_em.png);\r
-}\r
-.jstb_ins {\r
-       background-image: url(../images/jstoolbar/bt_ins.png);\r
-}\r
-.jstb_del {\r
-       background-image: url(../images/jstoolbar/bt_del.png);\r
-}\r
-.jstb_quote {\r
-       background-image: url(../images/jstoolbar/bt_quote.png);\r
-}\r
-.jstb_code {\r
-       background-image: url(../images/jstoolbar/bt_code.png);\r
-}\r
-.jstb_br {\r
-       background-image: url(../images/jstoolbar/bt_br.png);\r
-}\r
-.jstb_heading {\r
-       background-image: url(../images/jstoolbar/bt_heading.png);\r
-}\r
-.jstb_ul {\r
-       background-image: url(../images/jstoolbar/bt_ul.png);\r
-}\r
-.jstb_ol {\r
-       background-image: url(../images/jstoolbar/bt_ol.png);\r
-}\r
-.jstb_link {\r
-       background-image: url(../images/jstoolbar/bt_link.png);\r
-}\r
+.jstEditor {
+       padding-left: 0px;
+}
+.jstEditor textarea, .jstEditor iframe {
+  margin: 0;
+}
+
+.jstHandle {
+       height: 16px;
+       font-size: 0.1em;
+       cursor: s-resize;
+       /*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/
+}
+
+.jstElements {
+       padding: 3px 3px;
+}
+
+.jstElements button {
+       margin-right : 6px;
+       width : 24px;
+       height: 24px;
+       padding: 4px;
+       border-style: solid;
+       border-width: 1px;
+       border-color: #ddd;
+       background-color : #f7f7f7;
+       background-position : 50% 50%;
+       background-repeat: no-repeat;
+}
+.jstElements button:hover {
+       border-color : #000;
+}
+.jstElements button span {
+       display : none; 
+}
+.jstElements span {
+       display : inline;
+}
+
+.jstSpacer {
+       width : 0px;
+       font-size: 1px;
+       margin-right: 4px;
+}
+
+/* Buttons
+-------------------------------------------------------- */
+.jstb_strong {
+       background-image: url(../images/jstoolbar/bt_strong.png);
+}
+.jstb_em {
+       background-image: url(../images/jstoolbar/bt_em.png);
+}
+.jstb_ins {
+       background-image: url(../images/jstoolbar/bt_ins.png);
+}
+.jstb_del {
+       background-image: url(../images/jstoolbar/bt_del.png);
+}
+.jstb_quote {
+       background-image: url(../images/jstoolbar/bt_quote.png);
+}
+.jstb_code {
+       background-image: url(../images/jstoolbar/bt_code.png);
+}
+.jstb_br {
+       background-image: url(../images/jstoolbar/bt_br.png);
+}
+.jstb_heading {
+       background-image: url(../images/jstoolbar/bt_heading.png);
+}
+.jstb_ul {
+       background-image: url(../images/jstoolbar/bt_ul.png);
+}
+.jstb_ol {
+       background-image: url(../images/jstoolbar/bt_ol.png);
+}
+.jstb_link {
+       background-image: url(../images/jstoolbar/bt_link.png);
+}
index dad350842972cac069ec515c052c5814534f93be..bd5f006f20501363f2ddb1eefd942adcb66597a8 100644 (file)
@@ -1,3 +1,3 @@
-#header, #navigation, #subcontent, #footer { display:none; }\r
-.menu { display:none; }\r
+#header, #navigation, #subcontent, #footer { display:none; }
+.menu { display:none; }
 .contextual, .rightbox { display:none; }
\ No newline at end of file
index 4df3398e297ff6171337c518928eaa8fd0d5df9e..4a9655a52172b5ab3c15132cd442278eef9eec46 100644 (file)
@@ -1,36 +1,36 @@
-\r
-div.action_M { background: #fd8 }\r
-div.action_D { background: #f88 }\r
-div.action_A { background: #bfb }\r
-\r
-\r
-tr.spacing {\r
-    border: 1px solid #d7d7d7;\r
-}\r
-\r
-.line-num {\r
-    border: 1px solid #d7d7d7;\r
-       font-size: 0.8em;\r
-       text-align: right;\r
-       width: 3em;\r
-       padding-right: 3px;\r
-}\r
-\r
-.line-code {\r
-       font-family: "Courier New", monospace;\r
-       font-size: 1em;\r
-}\r
-\r
-table.list thead th.list-filename {\r
-       background-color: #ddc;\r
-       font-weight: bolder;\r
-       text-align: left;\r
-}\r
-\r
-.diff_out{\r
-  background: #fdd;\r
-}\r
-\r
-.diff_in{\r
-  background: #dfd;\r
-}\r
+
+div.action_M { background: #fd8 }
+div.action_D { background: #f88 }
+div.action_A { background: #bfb }
+
+
+tr.spacing {
+    border: 1px solid #d7d7d7;
+}
+
+.line-num {
+    border: 1px solid #d7d7d7;
+       font-size: 0.8em;
+       text-align: right;
+       width: 3em;
+       padding-right: 3px;
+}
+
+.line-code {
+       font-family: "Courier New", monospace;
+       font-size: 1em;
+}
+
+table.list thead th.list-filename {
+       background-color: #ddc;
+       font-weight: bolder;
+       text-align: left;
+}
+
+.diff_out{
+  background: #fdd;
+}
+
+.diff_in{
+  background: #dfd;
+}