summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-04-04 18:20:45 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-04-04 18:20:45 +0000
commitf7d51412516533d058a1b9cd3d0762e6ea4c3247 (patch)
tree8d6c46f1b27c4ad66a2d0130c1c8f77f30981ad3
parent8e11dac375fe23cba1f10789953a839cdd14d47c (diff)
downloadredmine-f7d51412516533d058a1b9cd3d0762e6ea4c3247.tar.gz
redmine-f7d51412516533d058a1b9cd3d0762e6ea4c3247.zip
Added svn:eol-style native property for various files
git-svn-id: http://redmine.rubyforge.org/svn/trunk@419 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lang/zh.yml862
-rw-r--r--public/javascripts/application.js64
-rw-r--r--public/javascripts/calendar/lang/calendar-de.js4
-rw-r--r--public/javascripts/calendar/lang/calendar-fr.js4
-rw-r--r--public/javascripts/calendar/lang/calendar-it.js254
-rw-r--r--public/javascripts/calendar/lang/calendar-zh.js254
-rw-r--r--public/javascripts/jstoolbar.js928
-rw-r--r--public/javascripts/menu.js1112
-rw-r--r--public/manual/en/html.css56
-rw-r--r--public/manual/fr/html.css56
-rw-r--r--public/stylesheets/application.css1264
-rw-r--r--public/stylesheets/jstoolbar.css162
-rw-r--r--public/stylesheets/print.css4
-rw-r--r--public/stylesheets/scm.css72
14 files changed, 2548 insertions, 2548 deletions
diff --git a/lang/zh.yml b/lang/zh.yml
index 5ffcb159b..6301b8235 100644
--- a/lang/zh.yml
+++ b/lang/zh.yml
@@ -1,431 +1,431 @@
-# 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)
+# 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)
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index c8a790472..a5d9de292 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -1,33 +1,33 @@
-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;
+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
diff --git a/public/javascripts/calendar/lang/calendar-de.js b/public/javascripts/calendar/lang/calendar-de.js
index 59fb983bf..c320699ca 100644
--- a/public/javascripts/calendar/lang/calendar-de.js
+++ b/public/javascripts/calendar/lang/calendar-de.js
@@ -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.
-
+
// First day of the week. "0" means display Sunday first, "1" means display
// Monday first, etc.
-Calendar._FD = 1;
+Calendar._FD = 1;
// short day names
Calendar._SDN = new Array
diff --git a/public/javascripts/calendar/lang/calendar-fr.js b/public/javascripts/calendar/lang/calendar-fr.js
index fb0cb2380..128355a29 100644
--- a/public/javascripts/calendar/lang/calendar-fr.js
+++ b/public/javascripts/calendar/lang/calendar-fr.js
@@ -44,10 +44,10 @@ Calendar._SDN = new Array
"Ven",
"Sam",
"Dim");
-
+
// First day of the week. "0" means display Sunday first, "1" means display
// Monday first, etc.
-Calendar._FD = 1;
+Calendar._FD = 1;
// full month names
Calendar._MN = new Array
diff --git a/public/javascripts/calendar/lang/calendar-it.js b/public/javascripts/calendar/lang/calendar-it.js
index d5315125f..fbc80c935 100644
--- a/public/javascripts/calendar/lang/calendar-it.js
+++ b/public/javascripts/calendar/lang/calendar-it.js
@@ -1,127 +1,127 @@
-// ** 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:";
+// ** 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:";
diff --git a/public/javascripts/calendar/lang/calendar-zh.js b/public/javascripts/calendar/lang/calendar-zh.js
index 23f51bb94..ddb092bfa 100644
--- a/public/javascripts/calendar/lang/calendar-zh.js
+++ b/public/javascripts/calendar/lang/calendar-zh.js
@@ -1,127 +1,127 @@
-// ** 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:";
+// ** 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:";
diff --git a/public/javascripts/jstoolbar.js b/public/javascripts/jstoolbar.js
index a381c3c20..bfafcdd09 100644
--- a/public/javascripts/jstoolbar.js
+++ b/public/javascripts/jstoolbar.js
@@ -1,464 +1,464 @@
-/* ***** 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("[[", "]]") }
- }
-}
+/* ***** 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("[[", "]]") }
+ }
+}
diff --git a/public/javascripts/menu.js b/public/javascripts/menu.js
index bf5612dd5..b3d3891be 100644
--- a/public/javascripts/menu.js
+++ b/public/javascripts/menu.js
@@ -1,556 +1,556 @@
-//*****************************************************************************
-// 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 ----
+//*****************************************************************************
+// 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 ----
diff --git a/public/manual/en/html.css b/public/manual/en/html.css
index 1c4e949f7..c5eb0ef96 100644
--- a/public/manual/en/html.css
+++ b/public/manual/en/html.css
@@ -1,39 +1,39 @@
body {
- background: #FFFFFF;
+ background: #FFFFFF;
font: 0.8em Verdana,Tahoma,Arial,sans-serif;
}
h1, h2, h3, h4, h5 {
color: #800000;
font-family: sans-serif;
-}
-
-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;
-}
+
+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;
diff --git a/public/manual/fr/html.css b/public/manual/fr/html.css
index 1c4e949f7..c5eb0ef96 100644
--- a/public/manual/fr/html.css
+++ b/public/manual/fr/html.css
@@ -1,39 +1,39 @@
body {
- background: #FFFFFF;
+ background: #FFFFFF;
font: 0.8em Verdana,Tahoma,Arial,sans-serif;
}
h1, h2, h3, h4, h5 {
color: #800000;
font-family: sans-serif;
-}
-
-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;
-}
+
+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;
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 1233231f9..185cfa87e 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -1,632 +1,632 @@
-/* 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); }
+/* 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); }
diff --git a/public/stylesheets/jstoolbar.css b/public/stylesheets/jstoolbar.css
index cf51c48c7..37c3a2510 100644
--- a/public/stylesheets/jstoolbar.css
+++ b/public/stylesheets/jstoolbar.css
@@ -1,81 +1,81 @@
-.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);
-}
+.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);
+}
diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css
index dad350842..bd5f006f2 100644
--- a/public/stylesheets/print.css
+++ b/public/stylesheets/print.css
@@ -1,3 +1,3 @@
-#header, #navigation, #subcontent, #footer { display:none; }
-.menu { display:none; }
+#header, #navigation, #subcontent, #footer { display:none; }
+.menu { display:none; }
.contextual, .rightbox { display:none; } \ No newline at end of file
diff --git a/public/stylesheets/scm.css b/public/stylesheets/scm.css
index 4df3398e2..4a9655a52 100644
--- a/public/stylesheets/scm.css
+++ b/public/stylesheets/scm.css
@@ -1,36 +1,36 @@
-
-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;
-}
+
+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;
+}