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